跳到内容

neu-nds2/网络可靠性

文件夹和文件

姓名姓名
上次提交消息
上次提交日期

最新提交

 

历史

9承诺
 
 
 
 
 
 
 
 
 
 
 
 
 
 

网络抵御自我传播恶意软件攻击的弹性

这是论文的代码:

A.Chernikova、N.Gozzi、S.Boboila、P.Angadi、J.Loughner、M.Wilden、N.Perra、T.Eliassi-Rad和A.Oprea,《网络抵御自我传播恶意软件攻击的能力》,第27届欧洲计算机安全研究会(ESORICS)2022年会议记录。

项目目标:通过设计利用网络拓扑的防御策略来提高网络弹性。该拓扑源自网络通信流量。

样本数据和结果

示例数据和结果可以在“Sample_data_and_results”目录中找到。我们举例说明了“http://snap.stanford.edu/data/index.html".

代码结构

辅助文件:

  • constants.py-路径目录。

目录:

  • 准备数据
  • 防守
  • 攻击
准备数据(prepare_Data目录)
  • 构造图.py:使用igraph API构造通信图,并将其保存为Pickle格式(.pkl)

  • 分析.py:计算图形的一些拓扑度量,例如节点/边数、平均路径长度、平均度数、直径、密度等。请参阅“sample_data_and_results/graph_metrics”中俄勒冈州数据集的图形属性

  • 绘图_度.py:绘制图形的度分布,并将分布拟合为幂律和指数分布。请参阅“sample_data_and_results/plots/degrees_distribution”中俄勒冈州数据集的度分布

  • 计算机_人.py:计算通信图中每个节点的有效网络大小度量(ENS)。

防御(防御目录)

预算需要在每个脚本本身中设置。默认值已经存在。在每个方法的目录中,每个防御都可以使用绘图脚本。

  • NodeSplit(NodeSplit目录)

    • 节点split.py:将顶部节点迭代拆分为两个,将其一半的边移动到新创建的节点。
  • 边缘硬化(rm_edges目录)

    • rm_edges_随机.py:随机删除预算中给定的一些边缘。

    • met无向.py:运行Le等人在“MET:最小化具有小特征映射的大型图中传播的快速算法”中描述的MET算法。

  • 节点加固(rm_nodes目录)

    • rm_兰德.py:随机删除预算给定的多个节点。

    • rm _ top _ degree _ iterative.py(复制副本):逐步删除程度最高的节点,直到达到预算。

    • rm_操作_输入.py:删除具有最高有效网络大小的顶部节点。

  • 隔离(隔离目录)

    • 隔离社区.py:使用Leiden、Infomap或Leading Eigenvector算法提取社区,然后硬化其边界,例如,硬化所有社区间的边缘,以分离社区。
攻击(攻击目录)

SPM_with_real_params.py:

  • 在Simulation类中实现四个SPM模型——SI、SIS、SIR、SIIDR。

  • 它提供了使用同一文件中给定的攻击参数运行SPM攻击的功能,例如SIIDR。这些参数表示感染概率(β)、恢复率(mu)、γ1、γ2。

  • 攻击的起点是随机选择的。

  • 这里设置了其他几个参数,包括实验次数(默认为500)、模拟过程中的时间步数、用于构建弹性图的预算等。

运行_攻击.sh:它通过设置一些命令行参数来运行攻击:

  • 防御索引:对其进行攻击的图形,例如,索引0是带有“无防御”的图形,索引1是应用nodesplit后的结果图形,等等。这是主脚本中名为“防御”的列表中的索引,即。,SPM_with_real_params.py

  • param index:攻击传播参数,例如,param_index 2是与wannacry跟踪wc_1_5s等相对应的参数集。该对应关系是在siidr_params数据结构中建立的SPM_带_参数.py.

运行代码

我们将代码作为常规python脚本运行。以下是一个示例:

光盘防御/节点屏蔽

python-u节点拆分.py&>out.txt

为了运行攻击,我们按如下方式运行bash脚本:

cd攻击

sh运行攻击.sh

示例结果

  • sample_data_and_results/plots目录中有多个图,用于比较俄勒冈州样本数据上各种防御的性能。

关于

网络抵御自我传播恶意软件攻击的弹性

资源

许可证

星星

观察者

叉子

发布

未发布版本

包装

未发布包