面向大规模网络的攻击图分布式构建方法、系统和介质

文档序号:25045319发布日期:2021-05-14 12:00阅读:228来源:国知局
面向大规模网络的攻击图分布式构建方法、系统和介质

1.本发明属于网络安全的技术领域,具体涉及一种面向大规模网络的攻击图分布式构建方 法、系统和介质。


背景技术:

2.随着信息技术的发展,网络的安全问题层出不穷,网络攻击行为向着复杂化、多步化、 协同化发展,网络安全形势愈发严峻。
3.攻击者往往利用漏洞之间的关联性达到攻击的目的,传统的防御方法难以发现这种潜在 的存在关联关系的攻击行为,而攻击图能够以攻击者的视角建模,直观地描述了网络中漏洞 之间的依赖关联关系,展示攻击者的攻击路径,可以帮助网络管理员准确识别攻击行为,量 化攻击对系统的影响,从而加固网络防护,提升网络防护水平,降低网络防护成本。因此, 研究如何构建攻击图是非常有必要的。
4.起初,攻击图的构建是基于手动的,然而,随着网络规模的变大,手动构建攻击图的工 作变得繁杂且准确率较低。因此,目前对攻击图的研究都是基于自动化构建的。
5.2006年,ou提出了一种攻击图构建方法,采用datalog的语言对攻击模型进行描述并且 开发出mulval软件自动生成攻击图,时间复杂度近似为o(n3)。
6.2014年,陈小军为了衡量攻击的不确定性,在ou的基础上进行改进,引入了三种条件 概率转移表,以此表示攻击发生的可能性,攻击成功的可能性,安全系统的异常告警的置信 度,有效推断出攻击意图和攻击路径,减少了错误告警的次数。
7.2016年,高妮提出了基于贝叶斯攻击图的动态安全风险评估模型,首先基于网络拓扑和 漏洞信息等生成静态攻击图,然后在此基础上根据snort观测到的实时入侵时间修改入侵发 生的概率,生成动态的攻击图,实时评估网络的安全态势。
8.2019年,秦虎等人采用矩阵去描述攻击过程中攻击者权限提升的过程,以权限提升矩阵来 生成攻击图,算法的时间复杂度约为o(n3)。
9.上面描述的几种方法时间复杂度较高,通常都是对整个网络建立攻击图模型,从攻击者 所处的起始状态面向整个网络不断提权,从而构建攻击图。在网络规模较小的时候,这种方 法是可行的,而面对大规模网络的时候,构建攻击图所需要的时间复杂度比较高,时间成本 难以接受。


技术实现要素:

10.本发明的主要目的在于克服现有技术的缺点与不足,提供一种面向大规模网络的攻击图 分布式构建方法、系统和介质,通过分布式构建子网络的攻击图,从而大大减少面向整个网 络构建攻击图的时间。
11.为了达到上述目的,本发明采用以下技术方案:
12.本发明提供了一种面向大规模网络的攻击图分布式构建方法,包括下述步骤:
13.采用社区发现算法将大规模网络划分成为一个个子网络,各子网络内部连接紧
密,子网 络之间连接稀疏;
14.在各个子网络上根据子网络内部的漏洞的依赖关系建立子攻击图;
15.通过子网络之间的漏洞依赖关系将各个子网络的子攻击图融合成为整个网络的攻击图。
16.优先的,所述社区规划算法为fastnewman算法,采用fastnewman算法进行大规模网络 划分具体为:
17.对网络的拓扑结构进行建模,模型中的节点表示主机的ip,节点之间连接的有向边表示 为<sourceip,destip>,表示由sourceip指向destip,
18.对fastnewman算法模块度的公式进行改进,采用将有向图转化为加权图的方法,加权图 的模块度计算方法如下:
[0019][0020]
其中w
ij
表示节点i和节点j的权重,w表示网络的总权重;
[0021]
探测到的网络拓扑结构抽象为图结构,输入到fastnewman算法中,获取模块度最大时的 社区划分结果,得到了各个子网络的拓扑结构。
[0022]
优先的,所述在各个子网络上根据子网络内部的漏洞的依赖关系建立攻击图,具体为:
[0023]
网络元素模型化,分别对攻击行为和主机信息进行建模;
[0024]
获取主机漏洞信息,得到各个子图上的每个主机的漏洞、前提集和后果集;
[0025]
各子网络构依据子网络的拓扑结构、漏洞集合、漏洞的前提集和后果集够建子攻击图,
[0026]
优先的,所述网络元素模型化,具体为:
[0027]
攻击行为建模,首先要对攻击者的攻击行为进行建立模型,采用三元组的形式表示攻击 行为,三元组为<cveid,precondition,postcondition>,其中cveid表示此次攻击利用的 漏洞的编号集合,precondition表示利用此漏洞集合的前提条件集合,postcondition表示 此漏洞集合利用成功后产生的后果集合;
[0028]
主机信息建模,利针对网络中配置的主机信息进行建立模型,采用二元组 <ipaddress,cveid>描述主机信息,其中ipaddress表示的是主机的ip地址,cveid表示主 机上的漏洞集合。
[0029]
优先的,采用基于oval的漏洞扫描器扫描主机上存在的漏洞集合,选用nessus漏洞扫 描软件对各主机进行扫描,获得各个主机的漏洞集合,并根据在公开中获取漏洞的前提集合 和造成的后果集合,采用统一的语言来描述漏洞的前提集和后果集,获取各个子图上的每个 主机的漏洞以及其前提集和后果集。
[0030]
优先的,所述子网络的拓扑结构g
i
={v,e},其中v表示子网络所有主机的ip地址集合, e表示ip地址之间连接的边集合,除此之外还获取了g
i
图中每个节点v
ij
的漏洞集合以及漏 洞的cveid
ij
以及的cveid
ij
前提集pre
ij
和后果集post
ij

[0031]
算法输入:子图集合{g1,g2,...,g
i
,...,g
n
},子图g
i
={v
i
,e
i
}上各节点的漏洞集合 {cveid
i1
,cveid
i2
,...,cveid
ij
,...,cveid
im
,}以及前提集{pre
i1
,pre
i2
,...,pre
ij
,...,pre
im
}和 后果集{post
i1
,post
i2
,...,post
ij
,...,post
im
}
[0032]
算法输出:子攻击图集合{ag
11
,...,ag
1k
,ag
21
,...,ag
2k
,...,ag
n1
,...,ag
nk
}。
[0033]
优先的,所述建立子攻击图的步骤为:
[0034]
获取gi中所有与外部子图相连的节点集合v
io
={v
i1
,v
i2
,...,v
ij
,...,v
ik
};
[0035]
假定v
io
中所有节点的漏洞集合的前提条件都被满足,v
io
中的每一个节点都分别作为攻击 图的起点,建立k张子攻击图,由于k张图的建立过程是一致的,在此选用以v
ij
为起点,建 立攻击图ag
ij

[0036]
以v
ij
为起点,获取v
ij
的邻居节点集合,如果v
ij
的后果集能满足邻居节点集合中的任一 节点v
ia
的前提集,那么就建立一条由cveid
ij
指向cveid
ia
的边,再从这些建立边关系的邻居 v
ia
出发,获取其邻居节点集合,判断其后果集是否满足其邻居节点的前提集,若满足v
ib
的前 提集,则建立一条漏洞集合cveid
ia
指向cveid
ib
的边,这样,采用广度优先的方式遍历g
i
的 所有节点,一边遍历一边建立漏洞集合之间的连接。遍历完成后,子攻击图ag
ij
构建完成;
[0037]
采用同样的方式获取子攻击图集合{ag
11
,...,ag
1k
,ag
21
,...,ag
2k
,...,ag
n1
,...,ag
nk
}。
[0038]
优先的,攻击者最开始处于的网络的节点称为攻击者的起始状态节点,起始节点所在的 网络称为起始子网络;现有子网络{g1,g2,...,g
i
,...,g
n
},其中g
i
为起始子网络;
[0039]
则所述子攻击图融合的具体方法为:
[0040]
获取与起始子网络g
i
相连的子网络集合g
neighbor1
={g1,g2,...,g
k
},若g1与g
i
相连,相连的 边集合为e
i1
,(v
ia
,v
1b
)是其中的一条边,判断v
ia
的后果集是否满足v
1b
前提集,若满足,则 在ag
ia
和ag
1b
之间建立一条由cveid
ia
指向cveid
1b
的边,即合并了ag
ia
和ag
1b
,然后将子网络 g1与g
i
合并起来;依照这样的方式,判断g
i
与它所有的邻居子网络的关系,合并子攻击图和 网络;
[0041]
获得了合并后的网络g
{1,...,j,...,i}
,g
{1,...,j,...,i}
表示合并g1,g
j
,g
i
子网络的网络,再获取此 网络的邻居网络集合g
neighbor2
,按照相同方式来合并子攻击图和网络;
[0042]
按照这种广度优先的方式合并子攻击图和子网络,一直到合并后的网络与其相连的所有 子网络不能再合并为止。
[0043]
本发明另一方面提供了一种面向大规模网络的攻击图分布式构建系统,应用于所述的面 向大规模网络的攻击图分布式构建方法,包括网络划分模块、子网络构建模块以及子攻击图 融合模块;
[0044]
所述网络划分模块,用于采用社区发现算法将大规模网络划分成为一个个子网络,各子 网络内部连接紧密,子网络之间连接稀疏;
[0045]
所述子网络构建模块,用于在各个子网络上根据子网络内部的漏洞的依赖关系建立子攻 击图;
[0046]
所述子攻击图融合模块,用于通过子网络之间的漏洞依赖关系将各个子网络的子攻击图 融合成为整个网络的攻击图。
[0047]
本发明的又一方面提供了一种存储介质,存储有程序,所述程序被处理器执行时,实现 所述的面向大规模网络的攻击图分布式构建方法。
[0048]
本发明与现有技术相比,具有如下优点和有益效果:
[0049]
本发明在面对大规模网络建立攻击图的时候,首先使用社区发现的方法将大网络
划分为 多个子网络,然后并行构建攻击图,最后在合并的过程中,由于社区结构的特性,子网络之 间连接较少,所以合并子攻击图更快,这样大大减少了构建大规模网络攻击图所用的时间。
附图说明
[0050]
图1是本发明实施例面向大规模网络的攻击图分布式构建方法的流程图;
[0051]
图2是本发明实施例面向大规模网络的攻击图分布式构建系统的结构示意图;
[0052]
图3是本发明实施例的存储介质的结构示意图。
具体实施方式
[0053]
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图, 对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请 一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出 创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0054]
实施例
[0055]
本实施例面向大规模网络的攻击图分布式构建方法,采用分布式构建大规模网络攻击图 的方法,该方法通过采用社区发现的算法将大规模网络划分成为一个个子网络,这些子网络 内部连接紧密,子网络之间连接稀疏;然后同时在各个子网络上根据漏洞之间的关联关系建 立各子网络的攻击图;最后通过子网络之间的漏洞依赖关系将各个子网络的攻击图融合成为 整个网络的攻击图。
[0056]
如图1所示,本实施例面向大规模网络的攻击图分布式构建方法,包括下述步骤:
[0057]
s1、采用社区发现算法将大规模网络划分成为一个个子网络,各子网络内部连接紧密, 子网络之间连接稀疏。
[0058]
社区发现算法有很多种,根据层次划分可分为基于分裂式的和基于凝聚式的关系,基于 分裂式划分的经典算法是gn算法,但是面对大规模网络的时候耗时较长,并不适用,基于 凝聚式划分的经典算法是fastnewman算法,该算法是基于模块度的最大化的贪心算法,能 够在大规模网络中快速划分社区。因此,本实施例选用fastnewman算法为大规模网络划分 社区。
[0059]
fastnewman算法是基于模块度最大化的贪心算法,模块度大小是衡量社区发现结果的标 准之一。社区内部连接越紧密,社区间连接越稀疏,模块度越大,模块度的计算公式如下:
[0060][0061]
其中,k
i
表示节点i的度数,k
j
表示节点j的度数,m表示网络中的总边数,a
ij
表示节 点i与节点j的连接关系,若有连接,其值为1,反之则为0;δ(c
i
,c
j
)表示节点i与节点j 是否在同一社区,若在同一社区,其值为1,反之则为0。
[0062]
fastnewman算法的核心思想是起初将网路中的每一个节点都看作一个单独的社区,然后 选择让模块度增值最大或者减小最少的的点进行社区合并,一直到整个网络的节点都被合并 到同一社区,这个过程中,模块度最大的那一次合并结果被认为是最佳的社区
划分结果。
[0063]
进一步的,本实施例将上述fastnewman算法应用到本发明的技术方案,来进行大规模网 络的划分,具体如下:
[0064]
首选需要对网络的拓扑结构进行建模,模型中节点表示主机的ip,节点之间连接的有向 边表示为<sourceip,destip>,表示由sourceip指向destip。由于网络拓扑是有向图,因 此需要模块度的计算公式进行改进,采用将有向图转化为加权图的方法,加权图的模块度计 算方法如下:
[0065][0066]
其中w
ij
表示节点i和节点j的权重,w表示网络的总权重。
[0067]
在此,本实施例将探测到的网络拓扑结构抽象为图结构,输入到fastnewman算法中,获 取模块度最大时的社区划分结果,得到了各个子网络的拓扑结构。
[0068]
s2、在各个子网络上根据子网络内部的漏洞的依赖关系建立子攻击图;
[0069]
s2.1、网络元素模型化:
[0070]
(a)攻击行为建模
[0071]
首先要对攻击者的攻击行为进行建立模型,在此本实施例采用三元组的形式表示攻击行 为,三元组为<cveid,precondition,postcondition>,其中cveid表示此次攻击利用的漏 洞的编号集合,precondition表示利用此漏洞集合的前提条件集合,postcondition表示此 漏洞集合利用成功后产生的后果集合。
[0072]
(b)主机信息建模:
[0073]
本实施例针对网络中配置的主机信息进行建立模型,本专利采用二元组 <ipaddress,cveid>描述主机信息,其中ipaddress表示的是主机的ip地址,cveid表示主 机上的漏洞集合。
[0074]
s2.2、获取主机漏洞信息;
[0075]
可采用基于oval的漏洞扫描器扫描主机上存在的漏洞集合,本实施例在此选用nessus 漏洞扫描软件对各主机进行扫描,获得各个主机的漏洞集合。
[0076]
根据通用漏洞披露cve、国家信息安全漏洞共享平台cvnd、美国国家漏洞库nvd等中获 取漏洞的前提集合和造成的后果集合,并采用统一的语言来描述漏洞的前提集和后果集。在 此就可以获取各个子图上的每个主机的漏洞以及其前提集和后果集。
[0077]
s2.3、各子网络构建子攻击图:
[0078]
在此,已经获取了子网络的拓扑结构g
i
={v,e},其中v表示子网络所有主机的ip地 址集合,e表示ip地址之间连接的边集合。除此之外还获取了g
i
图中每个节点v
ij
的漏洞集 合以及漏洞的cveid
ij
以及的cveid
ij
前提集pre
ij
和后果集post
ij

[0079]
算法的输入:子图集合{g1,g2,...,g
i
,...,g
n
},子图g
i
={v
i
,e
i
}上各节点的漏洞集合 {cveid
i1
,cveid
i2
,...,cveid
ij
,...,cveid
im
,}以及前提集{pre
i1
,pre
i2
,...,pre
ij
,...,pre
im
}和 后果集{post
i1
,post
i2
,...,post
ij
,...,post
im
}
[0080]
算法输出:子攻击图集合{ag
11
,...,ag
1k
,ag
21
,...,ag
2k
,...,ag
n1
,...,ag
nk
}
[0081]
由于本实施例对于所有的子图建立攻击图的步骤是统一且同时进行的,因此本实施例在 此仅给出子图g
i
的构建子攻击图的过程,其他子图的步骤与其是一致的,具体如
下:
[0082]
(a)获取gi中所有与外部子图相连的节点集合v
io
={v
i1
,v
i2
,...,v
ij
,...,v
ik
};
[0083]
(b)假定v
io
中所有节点的漏洞集合的前提条件都被满足,v
io
中的每一个节点都分别作 为攻击图的起点,建立k张子攻击图,由于k张图的建立过程是一致的,在此选用以v
ij
为起 点,建立攻击图ag
ij

[0084]
(c)以v
ij
为起点,获取v
ij
的邻居节点集合,如果v
ij
的后果集能满足邻居节点集合中的 任一节点v
ia
的前提集,那么就建立一条由cveid
ij
指向cveid
ia
的边,再从这些建立边关系的 邻居v
ia
出发,获取其邻居节点集合,判断其后果集是否满足其邻居节点的前提集,若满足v
ib
的前提集,则建立一条漏洞集合cveid
ia
指向cveid
ib
的边,这样,采用广度优先的方式遍历 g
i
的所有节点,一边遍历一边建立漏洞集合之间的连接;遍历完成后,子攻击图ag
ij
构建完 成。
[0085]
采取(a)(b)(c)的方式获取子攻击图集合{ag
11
,...,ag
1k
,ag
21
,...,ag
2k
,...,ag
n1
, ...,ag
nk
}。
[0086]
s3、通过子网络之间的漏洞依赖关系将各个子网络的子攻击图融合成为整个网络的攻击 图。
[0087]
攻击者最开始处于的网络的节点称为攻击者的起始状态节点,起始节点所在的网络称为 起始子网络;现有子网络{g1,g2,...,g
i
,...,g
n
},其中g
i
为起始子网络。
[0088]
(a)获取与起始子网络g
i
相连的子网络集合g
neighbor1
={g1,g2,...,g
k
},若g1与g
i
相连, 他们相连的边集合为e
i1
,(v
ia
,v
1b
)是其中的一条边,判断v
ia
的后果集是否满足v
1b
前提集, 若满足,则在ag
ia
和ag
1b
之间建立一条由cveid
ia
指向cveid
1b
的边,即合并了ag
ia
和ag
1b
,然 后将子网络g1与g
i
合并起来。依照这样的方式,将判断g
i
与它所有的邻居子网络的关系,按 照上述方式合并子攻击图和网络。
[0089]
(b)通过步骤(a),获得了合并后的网络g
{1,...,j,...,i}
,g
{1,...,j,...,i}
表示合并g1,g
j
,g
i
等 子网络的网络,再获取此网络的邻居网络集合g
neighbor2
,按照(a)中的方式来合并子攻击图和 网络。
[0090]
(c)就这样,按照(a)(b)步骤中这种广度优先的方式合并子攻击图和子网络,一直 到合并后的网络与其相连的所有子网络不能再合并为止。
[0091]
如图2所示,在另一个实施例中,提供了一种面向大规模网络的攻击图分布式构建系统, 该系统包括网络划分模块、子网络构建模块以及子攻击图融合模块;
[0092]
所述网络划分模块,用于采用社区发现算法将大规模网络划分成为一个个子网络,各子 网络内部连接紧密,子网络之间连接稀疏;
[0093]
所述子网络构建模块,用于在各个子网络上根据子网络内部的漏洞的依赖关系建立子攻 击图;
[0094]
所述子攻击图融合模块,用于通过子网络之间的漏洞依赖关系将各个子网络的子攻击图 融合成为整个网络的攻击图。
[0095]
在此需要说明的是,上述实施例提供的系统仅以上述各功能模块的划分进行举例说明, 在实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将内部结构划分 成不同的功能模块,以完成以上描述的全部或者部分功能,该系统是应用于上述实施例的基 于同源性分析的apt攻击识别及归属方法。
[0096]
如图3所示,在本申请的另一个实施例中,还提供了一种存储介质,存储有程序,所述 程序被处理器执行时,实现面向大规模网络的攻击图分布式构建方法,具体为:
[0097]
采用社区发现算法将大规模网络划分成为一个个子网络,各子网络内部连接紧密,子网 络之间连接稀疏;
[0098]
在各个子网络上根据子网络内部的漏洞的依赖关系建立子攻击图;
[0099]
通过子网络之间的漏洞依赖关系将各个子网络的子攻击图融合成为整个网络的攻击图。
[0100]
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施 方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件 来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术 中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻 辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门 阵列(fpga)等。
[0101]
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制, 其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应 为等效的置换方式,都包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1