«上一篇 下一篇»
  计算机工程  2019, Vol. 45 Issue (9): 128-135, 142  DOI: 10.19678/j.issn.1000-3428.0052317
0

引用本文  

王辉, 娄亚龙, 戴田旺, 等. 基于BNAG模型的脆弱性评估算法[J]. 计算机工程, 2019, 45(9), 128-135, 142. DOI: 10.19678/j.issn.1000-3428.0052317.
WANG Hui, LOU Yalong, DAI Tianwang, et al. Vulnerability Evaluation Algorithm Based on BNAG Model[J]. Computer Engineering, 2019, 45(9), 128-135, 142. DOI: 10.19678/j.issn.1000-3428.0052317.

基金项目

国家自然科学基金(61300216)

通信作者

刘琨(通信作者), 副教授

作者简介

王辉(1975-), 男, 副教授、博士, 主研方向为网络安全, E-mail:892825026@qq.com;
娄亚龙, 硕士研究生;
戴田旺, 硕士研究生;
茹鑫鑫, 硕士研究生

文章历史

收稿日期:2018-08-06
修回日期:2018-09-26
基于BNAG模型的脆弱性评估算法
王辉 , 娄亚龙 , 戴田旺 , 茹鑫鑫 , 刘琨     
河南理工大学 计算机科学与技术学院, 河南 焦作 454000
摘要:为准确评估计算机网络的脆弱性,结合贝叶斯网络与攻击图提出一种新的评估算法。构建攻击图模型RSAG,在消除攻击图中环路的基础上,将模型转换成贝叶斯网络攻击图模型BNAG,引入节点攻击难度和节点状态变迁度量指标计算节点可达概率。实例分析结果表明,该算法对网络脆弱性的评估结果真实有效,能够体现每个节点被攻击的差异性,并且对于混合结构攻击图的计算量较少,可准确凸显混乱关系下漏洞的危害程度。
关键词攻击图    贝叶斯网络    状态变迁    可达概率    脆弱性    
Vulnerability Evaluation Algorithm Based on BNAG Model
WANG Hui , LOU Yalong , DAI Tianwang , RU Xinxin , LIU Kun     
School of Computer Science and Technology, Henan Polytechnic University, Jiaozuo, Henan 454000, China
Abstract: In order to accurately evaluate the vulnerability of computer network, a new evaluation algorithm is proposed by combining Bayesian network with attack graph.An attack graph model is constructed, which is named RSAG.On the basis of eliminating the loop in the attack graph, the model is transformed into a Bayesian network attack graph model, which is named BNAG, and the node accessibility probability is calculated by introducing the node attack difficulty and node state transition measurement index.The analysis results of an example show that the evaluation results of network vulnerability by this algorithm are true and effective, which can fully reflect the difference between attacked node.Meanwhile, the calculation of attack graph with mixed structure is less, which can accurately highlight the harm degree of vulnerability in the chaotic relationship.
Key words: attack graph    Bayesian network    state accessdibility    accessibility probability    vulnerability    
0 概述

计算机网络在改变人们生产和生活方式的同时, 也面临着各类网络攻击。其中, 大部分的网络攻击都具有较强的传染性和破坏性, 会给社会以及计算机网络的安全带来较大的危害[1]。根据中国互联网协会发布的《中国互联网站发展状况及其安全报告(2017)》[2]可知, 截至2016年年底, 国家互联网应急中心CNCERT共发现2 526台服务器攻击并控制了125.4万台物联网智能设备, 对计算机网络的安全形成了严重的威胁。

近年来, 研究人员将贝叶斯网络和攻击图相结合[3], 提出了风险管理框架[4]、安全威胁识别及分析方法[5]和混合路径攻击图模型[6]等, 并引入贝叶斯概率来评估攻击图的脆弱性。相对于攻击图, 贝叶斯网络具备处理非确定性关系的能力, 而且能够量化攻击图中的对应关系。因此, 如何在网络脆弱性评估中将贝叶斯网络和攻击图更好地相结合, 是目前亟待解决的问题。

本文提出一种基于BNAG模型的脆弱性评估算法。在资源状态攻击图模型RSAG中引入贝叶斯概率, 将其转换成贝叶斯网络攻击图模型BNAG, 并通过节点攻击难度、节点状态变迁等指标计算各节点的可达概率, 得到网络中各攻击路径的最终可达概率, 从而提高对网络安全评估的有效性。

1 相关研究

近年来, 众多学者运用攻击图技术分析网络的脆弱性。文献[7]分析状态攻击图、属性攻击图和贝叶斯攻击图的基本构成, 同时阐述攻击图技术的研究现状, 介绍几种攻击图的生成方法和分析工具。虽然文中指出了现有攻击图技术面临的挑战, 但并未给出具体的解决方法。

文献[8]构建一种基于贝叶斯攻击图的动态风险评估模型, 利用公共漏洞评分系统的索引计算攻击者成功执行的漏洞概率, 通过引入局部条件概率表评估属性节点的静态安全风险。在此基础上, 结合入侵检测系统观察到的实时攻击事件, 利用贝叶斯推理预测攻击行为, 动态计算后验概率。但该模型在计算节点概率时考虑的节点属性单一, 得到的最大累积概率路径参考价值较小。

文献[9]提出基于推理规则的攻击图构建和分析技术, 运用推理规则组合推算出新的攻击, 从而做出对攻击图脆弱性的评估。但该文在实验中未考虑具体的度量值, 准确率较低。

文献[10]建立一个面向内部攻击意图推断的概率攻击图模型, 并在其中引入了转移概率表来刻画单步攻击的结果, 在推测攻击意图的过程中设计一种推断内部攻击的算法和攻击路径最大概率的计算方法。但该文在进行路径分析及攻击意图推测时, 未考虑节点间状态转移的影响。

文献[11]提出一种基于风险流攻击图的风险评估方法, 采用攻击图来描述网络和攻击场景, 然后将这些场景输入到网络流模型中。但该文未提及成本和转移概率等因素对网络脆弱性评估的影响。

文献[12]建立针对内部威胁的贝叶斯网络攻击图模型, 在分析攻击行为时将似然加权法作为评估抽样的方法对内部威胁进行预测分析。但该文未考虑内部节点间的互相影响。

文献[13]依据要素之间的融合来评估攻击事件进行中攻击者的能力和漏洞利用率, 设计基于动态贝叶斯攻击图的攻击预测算法, 但在实验中并未考虑节点间状态转移的影响。

文献[14]构建一种可扩展的风险攻击图模型, 给出全新的以风险流为对象的模糊风险评估机制, 以及面向组合漏洞攻击的基于人工免疫的多目标风险评估方法, 但未提及因素之间的互相影响的问题。

本文把贝叶斯概率引入资源状态攻击图模型RSAG中, 将其转换成贝叶斯网络攻击图模型BNAG, 通过引入节点攻击难度、节点状态变迁等指标计算各节点的可达概率, 得到网络中各攻击路径的最终可达概率。

2 资源状态攻击图模型

攻击图技术是根据网络状态和脆弱性信息, 分析出攻击者在攻击网络时对网络脆弱性的利用序列, 并将这些序列组成一张有向图。本文构造资源状态攻击图的目的是找出网络中存在的攻击序列, 并通过贝叶斯概率计算推测出攻击者的意图, 帮助网络管理人员更好地了解网络安全状况。本文构造的资源状态攻击图模型如下:

定义1  资源状态攻击图

资源状态攻击图RSAG=(S, S0, A, E, Γ, L, O)是一个有向图, 其中:

1) S={si|i=1, 2, …, N}表示资源状态节点集合。

2) S0S表示资源状态节点的初始状态, 即最初攻击者占有的资源。

3) A={ai|i=1, 2, …, N}表示攻击行为节点集合。

4) E={E1E2}表示为连接各节点的有向边集合。

5) E1S×A表示只有当攻击者占有某些资源, 攻击行为才能发生; E2A×S表示攻击行为可能使攻击者占有某些资源; 通常节点m的父节点集合表示为Pre(m), 节点m的孩子节点集合表示为Nex(m)。

6) Γ表示节点状态判断函数。函数Γ(x)代表节点的当前状态, Γ(x)∈{1, 0}。其中, Γ(si)代表资源状态节点的当前状态, Γ(si)=1表示当前攻击者已经占有资源si; Γ(ai)代表攻击行为节点的当前状态, Γ(ai)=1表示攻击行为ai已经发生, 反之则没有。

7) L表示父节点之间的逻辑关系集。L={AND, OR, BLE}, 攻击行为节点ai的前提条件全部满足后, 攻击行为ai才可能发生, 所以Pre(ai)之间存在AND关系; 任何攻击行为成功后都会使Γ(si)=1, 即攻击者已占有资源si, 所以当资源状态节点si作为2个或2个以上攻击行为的孩子节点时, 这些攻击行为节点之间存在OR的关系; BLE是指父节点之间的混乱逻辑关系。

8) O={oi|i=1, 2, …, N}表示已经监测到攻击成功的资源状态节点集。对于∀oiS, oi表示攻击行为ai发生时被人侵检测系统观测到的攻击事件。

定义2  攻击路径

在资源状态攻击图中, 若存在一组状态序列s0, a0, s1, a1, …, an-1, sn(s0是初始资源状态节点, sn是目标资源状态节点), 则定义攻击路径Pathk=<s0a0s1a1→…→an-1sn>。其中:∀siS, ∀ajA(0≤in, 0≤jn-1);Pathk表示攻击图中第k条攻击路径。

定义3  攻击行为

攻击行为用如下四元组表示:(Src_id, Dst_id, Add_code, Res)。其中, Src_id是发动攻击的主机id, Dst_id是遭受攻击的主机id, Add_code是攻击行为编号, Res此次攻击的结果。

定义4  状态变迁

在攻击图中, 状态变迁用三元组(sid, vid, r)表示。其中, sid是状态变迁编号, vid是攻击行为利用的脆弱点编号, r是攻击行为利用脆弱点造成的状态变迁结果。

3 环路消除E-Loop算法 3.1 度量指标及计算方法

为消除攻击图中的环路, 本文引入攻击难度度量指标, 并给出相应的计算方法。在脆弱性评分系统CVSS[15]中用访问矢量、访问复杂度和认证3个指标来描述脆弱点的可用性, 本文分别用Acc_vecAcc_comAuth来表示。3个指标的度量等级如表 1所示。

下载CSV 表 1 攻击难度度量等级

CVSS中脆弱点的可用性指标定义为:

$ Exp = 20 \times Acc\_vec \times Acc\_com \times Auth,0 \le Exp \le 10 $ (1)

Exp的值越小, 表示攻击行为发生的难度越大。因为可用性与攻击难度成反比, 所以可以根据这3个指标计算节点的攻击难度。用Aga_Dif表示节点攻击难度度量指标, Aga_Dif值越大, 攻击难度越大, 由此可判断出最难攻击节点, 计算公式为:

$ Aga\_Dif = \frac{1}{{2 \times Acc\_vec \times Acc\_com \times Auth}},Aga\_Dif \ge 1 $ (2)
3.2 环路消除算法

在资源状态攻击图的生成中, 会有出现环路的情况, 导致遍历节点时重复, 对网络安全评估尤其是贝叶斯概率计算造成很大影响。为解决这一问题, 本文提出了E-Loop算法用于消除资源状态攻击图RSAG中的环路, 算法具体步骤如下:

算法1  环路消除算法E-Loop(RSAG)

输入  资源状态攻击图RSAG

输出  无环资源状态攻击图Ac_RSAG

步骤1  将攻击图的开始节点加入到根节点队列中。

步骤2  初始化一个堆栈来存放找到的环路Init()。

步骤3  从入口节点开始进行深度优先遍历, 依次访问各个节点root=GetRoot()。

步骤4  把访问节点压入到堆栈中, 进行以下操作:PushStack(root), 直到遍历完所有节点或者堆栈中已经存在遍历到的节点, 此时堆栈中已经存储了一个环路。

步骤5  计算环路中各节点的攻击度量Aga_Difi, 找出最难攻击节点Sm=max(Aga_Difi)。

步骤6  删除节点消除环路Delete(Sm)。

步骤7  重复步骤3~步骤6, 直到所测攻击图中不存在环路。

步骤8  输出无环资源状态攻击图Ac_RSAG。

图 1是根据上述模型搭建的资源状态攻击图RSAG。其中存在Path1=<s2a3s5a5s2>和Path2=<a9s11a12s12a9>两条环路。对于Path1, 通过E-Loop算法可去除节点a5达到消除环路的目的; 对于Path2, 因为a9节点永远无法到达, 其Aga_Dif(a9)→∞, 所以去除a9节点达到消除环路的目的。图 2是用E-Loop算法消除环路后的无环资源状态攻击图Ac_RSAG。

Download:
图 1 资源状态攻击图RSAG
Download:
图 2 无环资源状态攻击图Ac_RSAG
4 基于BNAG模型的可达概率计算

在贝叶斯网络中, 节点的概率只与其父节点有关, 与其他节点保持条件独立。在资源状态攻击图中状态的转移只与相应的资源是否被占用有关, 且父节点的资源被占用是状态变迁到子节点的必要条件。因此, 可以将无环资源状态攻击图中的状态转移过程与贝叶斯网络中的条件独立性相对应。表 2给出了无环资源状态攻击图Ac_RSAG与贝叶斯网络攻击图BNAG结构上的对应关系。

下载CSV 表 2 攻击图与贝叶斯网络对应关系

无环资源状态攻击图Ac_RSAG和贝叶斯网络攻击图BNAG虽然在结构上有所对应, 但具体到各个节点仍存在差异, 下文将给出贝叶斯网络攻击图BNAG的具体实现方法。

4.1 贝叶斯网络攻击图BNAG的实现

定义5  条件资源状态节点和结果资源状态节点:为满足攻击行为发生的条件, 所需要的资源状态节点称为条件资源状态节点; 攻击行为到达的资源状态节点称为结果资源状态节点。

定义6   W={wij|i, j=1, 2, …, N}表示资源状态节点之间的权重集, 其由二元组(depcoef, cost)表示, 其中:depcoef表示资源状态节点间的关联程度系数; cost表示从一个资源状态节点到另一个资源状态节点攻击花费的代价; wij表示资源状态节点sisj之间有向边的权重。

图 2所示, 资源状态攻击图包含4种基本结构, 分别是串联结构、并联AND结构、并联OR结构和混合结构。在转化为贝叶斯网络攻击图BNAG时, 对各结构的处理方法如下:

1) 串联结构:把攻击行为节点删除, 用资源状态节点s1到资源状态节点s2的有向边表示攻击行为, 具体表示为:(s1a1s2)⇒(s1s2)。

2) 并联AND结构:攻击行为节点a3的父节点s2s3之间是AND关系, 只有当资源状态全部满足时攻击行为才会发生。将攻击行为节点删除, 条件资源状态节点和结果资源状态节点之间用1条有向边连接, 用该有向边表示攻击行为。转换后的贝叶斯网络攻击图中, 资源状态节点之间仍为AND关系, 具体表示为:(s2s3a3s5)⇒(s2s3s5)。

3) 并联OR结构:攻击行为节点a10a11之间是OR关系, 攻击行为节点的父节点s9s10中只要有一个满足, 攻击行为就会发生。将攻击行为节点删除, 将条件资源状态节点和结果资源状态节点之间用有向边连接。转换后在贝叶斯网络攻击图中, 资源状态节点之间仍为OR关系:(s9a10, s10a11, a10a11s12)⇒(s9s10s12)。

4) 混合结构:攻击行为节点a6的父节点s6s4之间是AND关系, 到达结果资源状态节点的2个攻击行为节点a6a7之间是OR关系, 如果直接删除攻击行为节点a6, 会造成资源状态攻击图的结构混乱, 不便于条件概率的计算。为解决此问题, 本文引入一个临时混合节点blend, 即把a6节点抽象为一个临时混合节点blend, 具体表示为:(s6s4a6, a6a7s9)⇒(s6s4blend, blends7s9)。

在攻击图转换过程中, 因为每条边代表了攻击行为, 所以在转换后的贝叶斯网络攻击图中每条边都有一个权重W, 用于描述2个资源状态节点关联关系。转换后的贝叶斯网络攻击图BNAG如图 3所示。

Download:
图 3 贝叶斯网络攻击图BNAG

由转化后的贝叶斯网络攻击图可知, blends4s6的混合资源状态, 则s4s6blend的有向边一定成立, 即P(blend|s4, s6)=1。因此, 转化为贝叶斯网络后各节点之间的关系不会改变, 且其中只含有资源状态节点, 攻击行为体现在贝叶斯网络攻击图的有向边上, 有向边之间只有AND和OR的关系。为了更清楚地描述转换的过程, 本文设计攻击图转换算法Alg-AGTrans, 具体描述如下:

算法2  攻击图转换算法Alg-AGTrans(RSAG)

输入  无环资源状态攻击图Ac_RSAG

输出  贝叶斯网络攻击图BNAG

1.For each si∈S AND ai∈A

2.If DPre(si)≠∅ AND IF DPre(ai)≠∅

3.Else If Num(DPre(ai))=1 AND

Num(DPre(DNex(ai)))=1

4.eij=<si, DNex(ai)>;

5.eij←W(i, j);

6.Delete(ai); //删除攻击行为节点

7.Else If Num(DPre(ai))>1

8.eij=<DPre(ai), DNex(ai)>;

9.eij←W(i, j);

10.Delete(ai);

11.∀ eij之间都是AND关系;

12.Else If Num(DPre(si))>1

13.eij=<DPre(DPre(si)), si>;

14.eij←W(i, j);

15.Delete(DPre(si));

16.∀ eij之间都是OR关系;

17.Else If DPre(ai)>1 AND Num(DPre(Nex(ai)))>1

18.ai∈Ble; ai=blent;

19.eij=<DPre(blent), blent>;

20.eij←W(i, j);

21.∀ eij之间都是AND关系;

22.eij=<blent, DNex(blent)>;

23.eij←W(i, j);

24.∀eij之间都是OR关系;

25.End If;

26.Go to For;

27.Return BNAG;

4.2 基于BNAG的节点可达概率计算

本文定义节点S的直接父节点为DPre(S), 根据贝叶斯网络中节点间概率的独立性可以得出目标所受到攻击的概率Pa(S)为:

$ \begin{array}{l} {P_a}\left( S \right) = P\left( {S\left| {\mathit{Pre}\left( S \right)} \right.} \right)P\left( {\mathit{Pre}\left( S \right)} \right) = \\ \;\;\;\;\;\;\;\;\;\;\;\;P\left( {S\left| {\mathit{DPre}\left( S \right)} \right.} \right)P\left( {\mathit{DPre}\left( S \right)} \right) \end{array} $ (3)

状态变迁指标Pm(costi)定义为状态Si-1变迁到状态Si的概率。因为资源状态节点与其父节点之间存在关联, 所以在计算其状态变迁指标时需要把节点间的权重W考虑进去。如果花费足够的代价, 其攻击目的一定能达到, 即当cost→∞时, Pm(cost)=1;若不付出任何代价, 其不可能成功攻击任一目标, 即当cost=0时, Pm(cost)=0;若对应节点攻击没有成功, 节点的状态保持不变。状态变迁指标Pm(costi)的取值符合指数分布的特点。所以, 定义Pm(costi)的计算公式如式(4)所示。

$ {P_m}\left( {\mathit{cos}{\mathit{t}_i}} \right) = P\left( {\mathit{cos}{\mathit{t}_i} < \mathit{cost}} \right) = 1 - {{\rm{e}}^{ - depcoef \times \mathit{cos}{\mathit{t}_i}}} $ (4)

其中:costi是攻击所花费的代价, 指攻击者完成一次攻击所需要花费的经验知识和所需要的资源权限等; cost为完成最后目标攻击后总的平均攻击代价, 是一个预设值, 平均攻击代价取决于攻击者的知识水平、利用资源、攻击时间和工具等; depcoef是资源状态节点间的关联程度系数, 计算公式如式(5)所示。

$ depcoef = \frac{1}{{Aga\_Dif}},0 < depcoef < 1 $ (5)

因此, 状态变迁指标Pm(costi)的计算公式如下:

$ {P_m}\left( {\mathit{cos}{\mathit{t}_i}} \right) = 1 - {{\rm{e}}^{ - \frac{{\mathit{cos}{\mathit{t}_i}}}{{Aga\_Dif}}}} $ (6)

由上文可知, 贝叶斯网络攻击图中资源状态节点间存在相互影响关系, 在进行攻击图脆弱性分析时, 不能仅通过传统的贝叶斯推理对节点可达概率进行分析, 还应该考虑节点间状态变迁。为解决该问题, 本文在此基础上引入状态变迁指标, 在脆弱性研究的过程中加入对节点的状态变迁的考虑。定义Pend表示目标节点可达概率, 计算公式如式(7)所示。

$ \begin{array}{*{20}{c}} {{P_{{\rm{end}}}}\left( {{s_i}} \right) = {P_m}\left( {\mathit{cos}{\mathit{t}_i}} \right) \times {P_a}\left( {{\mathit{s}_i}} \right) = \left( {1 - {{\rm{e}}^{ - \frac{{\mathit{cos}{\mathit{t}_i}}}{{Aga\_Dif}}}}} \right) \times }\\ {P\left( {{s_i}\left| {\mathit{DPre}\left( {{s_i}} \right)} \right.} \right)P\left( {\mathit{DPre}\left( {{s_i}} \right)} \right)} \end{array} $ (7)

其中:Pm(costi)为目标节点si状态变迁的指标, depcoef为节点si与其直接父节点的关联程度系数; cost为从节点si到下一个节点攻击所花费的代价; Pa(si)为目标节点si所受到攻击的贝叶斯概率。

式(7)为目标节点可达概率的计算方法, 迭代式(7)就可以得出整条路径的可达概率。迭代算法IterAlg-AccPro具体描述如下:

算法3  迭代算法IterAlg-AccPro(BNAG, W)

输入  转换后的贝叶斯网络攻击图BNAG, 节点间的权重W=(depcoef, cost)

输出  整条路径下最终攻击可达概率Pend(si)

1.For each si∈S

2.Count=DPre(si)的数目;

3.InitStack(&q); //构造一个空栈, 用于存储父节点

4.For each DPre(si)∈S and DPre(si)≠∅

5.root=DPre(si); //获取目标节点的直接父节点

6.PushStack(root)→q; //把目标节点的父节点压入栈q

7.End for

8.End for

9.For q≠∅

10.si=PopStack(root); //从栈中取出节点元素

11.Pa=Pa(si);

12.Pa=Pa(costdpre(si));

13.Pend=Pa×Pm;

14.End for;

15.Return Pend;

IterAlg-AccPro算法首先遍历了所有节点, 根据目标节点si的直接父节点DPre(si)的个数, 把所有的父节点Pre(si)依次压入到各自的堆栈q中, 保证每个直接父节点DPre(si)所在路径的开始节点最后压入堆栈; 然后利用堆栈后进先出的特点依次取出其中的节点并计算其可达概率; 最后得出整条路径的可达概率。在计算中引入节点间的状态变迁指标, 提高了计算效率和准确性。

假设要攻击的节点为s12, 由图 3可知共有3条攻击路径可以到达攻击目标, 分别为:

$ {\rm{Path1}}: < {s_1} \to {s_2} \to {s_6} \to blend\left( {{s_6} \wedge {s_4}} \right) \to {s_9} \to {s_{12}} > $
$ {\rm{Path2}}: < {s_4} \to {s_7} \to {s_9} \to {s_{12}} > $
$ {\rm{Path3}}: < {s_4} \to {s_7} \to {s_{10}} \to {s_{12}} > $

若考虑节点间的权重W, 其中资源状态节点间关联程度系数depcoef和攻击花费代价costi的取值以图 3标注为准, s1s4的先验概率为0.2、0.3。以路径Path1为例, 具体的运算步骤如下:

$ \begin{array}{l} P\left( {{s_2}} \right) = {P_m}\left( {\mathit{cos}{\mathit{t}_1}} \right) \times P\left( {{\rm{\Gamma }}\left( {{s_2}} \right) = 1\left| {{\rm{\Gamma }}\left( {{s_1}} \right) = 1} \right.} \right) \times \\ \;\;\;\;\;\;\;\;\;\;\;\;P\left( {{s_1}} \right) = 0.086\;6 \end{array} $
$ \begin{array}{l} P\left( {{s_6}} \right) = {P_m}\left( {\mathit{cos}{\mathit{t}_2}} \right) \times P\left( {{\rm{\Gamma }}\left( {{s_6}} \right) = 1\left| {{\rm{\Gamma }}\left( {{s_2}} \right) = 1} \right.} \right) \times \\ \;\;\;\;\;\;\;\;\;\;\;\;P\left( {{s_2}} \right) = 0.068\;4 \end{array} $
$ \begin{array}{l} P\left( {blend} \right) = {P_m}\left( {\mathit{cos}{\mathit{t}_6}} \right) \times P\left( {\Gamma \left( {blend} \right) = } \right.\\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\left. {1\left| {{\rm{\Gamma }}\left( {{s_6}} \right) = 1} \right.,{\rm{\Gamma }}\left( {{s_4}} \right) = 1} \right) \times \\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;P\left( {{s_6}} \right) \times P\left( {{s_4}} \right) = 0.038\;2 \end{array} $

同理, 通过式(7)可依次得到:路径Path1下攻击者到达s9s12的概率分别为P(s9)=0.027 2和Pend(s12)=0.020 1;路径Path2下攻击者到达s12的概率为Pend(s12)=0.064 8;路径Path3下攻击者到达s12的概率为Pend(s12)=0.057 3。如果管理员已经知道a1已经被攻击, 即P(s1)=1, 则再次计算路径Path1下攻击者到达s12的概率Pend(s12)=0.063 1, 因此, 当资源状态s1确定满足后, s12受到攻击的概率明显增大, 与预期的结果一致。

5 实验与结果分析 5.1 实验网络环境

为了验证本文方法的可行性和有效性, 笔者在研究河南理工大学校园网的基础上搭建了如图 4所示的实验环境, 其中主机与服务器均有多台, 在模拟仿真实验网络拓扑图中只列出具有代表性的服务器和主机。

Download:
图 4 实验网络拓扑

实验网络中共有5台主机, 分别是入侵者机器、通信服务器、文件服务器、管理服务器、数据库服务器。为了方便描述, 分别用字母I、C、F、M和D表示。其中:通信服务器C开放了Telnet服务; 文件服务器F开放了FTP服务; 管理服务器M开放了FTP和HTTP服务; 数据库服务器D开放为Oracle服务; 入侵者Ⅰ的最终目的是要获得主机D的root权限, 防火墙只允许外部主机I访问主机C上的Telnet服务, 其他的外部访问均被阻止; 内部主机只允许主机M访问主机D上的Oracle服务, 其他3个主机之间可以互相访问; 主机C直接访问主机M, 且同时获取了主机M开放的2个服务的访问权限时, 主机C就可以通过这2个服务直接访问主机D上的Oracle服务。内部主机信息如表 3所示。

下载CSV 表 3 内部主机信息
5.2 结果分析

根据本文的攻击图模型和实验网络拓扑图, 在生成资源状态攻击图的过程中, 通过E-Loop算法去除环路后, 存在的攻击行为节点对应的攻击行为编号Att_code表 4所示, 其与主机开放的服务和脆弱性编号有关。

下载CSV 表 4 攻击图实例中攻击行为信息

在实验网络拓扑图的基础上, 利用攻击图转换算法Alg-AGTrans消去表 4中的攻击行为节点后, 得到的贝叶斯网络攻击图如图 5所示。

Download:
图 5 贝叶斯网络攻击图

图 5所示, 贝叶斯网络攻击图实例中, 各主机节点必须通过另外一台主机开放的服务来获取其信任, 所以在结构上是AND关系; 当一台主机开放2个服务时, 获取其中一个服务的权限就可以得到该主机的信任, 因此其攻击主机之间是OR关系; 特殊情况下的混合关系节点, 是攻击主机同时获取到目标主机开放的2个服务时, 就可以直接越过该主机直接访问下一个主机开放的服务, 在此引入blend节点来处理攻击图实例中的混乱关系。

图 5中的路径可到达目标主机D, 其攻击路径信息和路径可达概率如表 5所示。其中:Src_id是攻击者主机; Dst_id And Service是被攻击主机id和被利用的漏洞编号; Len是攻击路径总长度; P1是根据本文提出的算法引入状态变迁指标后得出的整条路径的可达概率; P2是未引入状态变迁指标时得出的整条路径的可达概率。

下载CSV 表 5 实例图攻击路径信息

表 5的基础上, 本文给出每个主机节点的可达概率, 具体的概率分布如图 6图 7所示。

Download:
图 6 P1下Path1~Path4概率
Download:
图 7 P2下Path1~Path4概率

图 8图 9所示, 对于Path1和Path2路径, 其路径中攻击主机都相同, 唯一的区别是访问主机M的服务不同, Path1访问的是主机M的ftp服务, Path2访问的是主机M的http服务。通过本文提出的算法引入状态变迁指标后计算得到的Path1和Path2的最终路径可达概率为0.032 47和0.057 84, 在主机F到主机M上有明显的变化, 如图 8所示; 而对于未引入状态变迁指标的方法计算Path1和Path2最终路径的可达概率分别为0.476 8和0.478 9, 在主机F到主机M没有明显变化, 如图 9所示。本文算法虽然使单个节点的概率参考值变小, 但充分体现了攻击每个节点时的差异性, 更利于网络安全管理员的分析。

Download:
图 8 P1下Path1、Path2概率
Download:
图 9 P2下Path1、Path2概率

图 10图 11所示, 对于有混乱关系的路径Path5, 传统的计算方法是把AND和OR节点分开计算来处理混乱关系, 不仅计算量大, 而且忽视了其中的关联关系, 本文引入混合节点的方法, 不仅减小了计算量, 而且计算结果具有更高的参考价值。

Download:
图 10 P1下Path5概率
Download:
图 11 P2下Path5概率

对于主机C访问主机M时出现的混乱关系, 加入状态变迁指标后得到的概率分布更能凸显出混乱关系下漏洞的危害程度, 更能引起网络安全管理员的注意。

6 结束语

如何提高网络脆弱性评估的准确性是网络安全领域研究的热点。本文提出一种基于BNAG模型的脆弱性评估算法, 同时给出E-Loop算法用于消除攻击图中的环路。在贝叶斯网络攻击图BNAG的转换过程中, 设计Alg-AGTrans算法解决节点关系混乱的问题。本文在推导节点可达概率的计算公式时, 引入节点攻击难度指标和节点状态变迁指标, 提出IterAlg-AccPro算法。实验结果表明, 该算法对网络脆弱性的评估真实、有效, 但在计算节点可达概率时没有考虑到风险成本等因素的影响, 下一步将对此加以改进。

参考文献
[1]
穆雪峰. 网络型病毒传播与计算机网络安全[J]. 信息与电脑(理论版), 2017(12): 200-202. (0)
[2]
中国互联网站发展状况及其安全报告(2017)[EB/OL].[2018-07-05].http://www.isc.org.cn/zxzx/xhdt/listinfo-35526.html. (0)
[3]
李艳, 黄光球. 动态攻击网络演化分析模型[J]. 计算机应用研究, 2016, 33(1): 266-270. DOI:10.3969/j.issn.1001-3695.2016.01.062 (0)
[4]
POOLSAPPASIT N, DEWRI R, RAY I. Dynamic security risk management using Bayesian attack graphs[M]. Washington D.C., USA: IEEE Computer Society Press, 2012. (0)
[5]
吴迪, 连一峰, 陈恺, 等. 一种基于攻击图的安全威胁识别和分析方法[J]. 计算机学报, 2012, 35(9): 1938-1950. (0)
[6]
余洋, 夏春和, 胡潇云. 采用混和路径攻击图的防御方案生成方法[J]. 浙江大学学报(工学版), 2017, 51(9): 1745-1759. (0)
[7]
叶子维, 郭渊博, 王宸东, 等. 攻击图技术应用研究综述[J]. 通信学报, 2017, 38(11): 121-132. DOI:10.11959/j.issn.1000-436x.2017213 (0)
[8]
高妮, 高岭, 贺毅岳, 等. 基于贝叶斯攻击图的动态安全风险评估模型[J]. 四川大学学报(工程科学报), 2016, 48(1): 111-118. (0)
[9]
KRAUTSEVICH L. Parametric attack graph construction and analysis[J]. Organometallics, 2015, 30(12): 98-101. (0)
[10]
陈小军, 方滨兴, 谭庆丰, 等. 基于概率攻击图的内部攻击意图推断算法研究[J]. 计算机学报, 2014, 37(1): 62-72. (0)
[11]
DAI Fangfang, HU Ying, ZHENG Kangfeng, et al. Exploring risk flow attack graph for security risk assessment[J]. IET Information Security, 2015, 9(6): 344-353. DOI:10.1049/iet-ifs.2014.0272 (0)
[12]
王辉, 亢凯航, 刘淑芬. 基于贝叶斯推理的PASG计算模型[J]. 计算机工程, 2016, 42(11): 158-164. (0)
[13]
胡浩, 叶润国, 张红旗. 基于攻击预测的网络安全态势量化方法[J]. 通信学报, 2017, 38(10): 122-134. DOI:10.11959/j.issn.1000-436x.2017204 (0)
[14]
戴方芳.基于攻击图理论的网络安全风险评估技术研究[D].北京: 北京邮电大学, 2015. http://cdmd.cnki.com.cn/Article/CDMD-10013-1016015678.htm (0)
[15]
TRIPATHI A, SINGH U K. Analyzing trends in vulnerability classes across CVSS metrics[J]. International Journal of Computer Applications, 2011(3): 38-40. (0)