法律状态公告日
法律状态信息
法律状态
2019-09-20
授权
授权
2017-07-07
实质审查的生效 IPC(主分类):H04L29/06 申请日:20170120
实质审查的生效
2017-06-13
公开
公开
技术领域
本发明涉及一种基于攻击图的网络安全态势的量化评估方法,属于信息安全技术领域。
背景技术
随着计算机网络的迅猛发展,网络信息系统中的安全漏洞和隐患也层出不穷,网络攻击的种类和数量成倍增长,基础网络和信息系统面临着严峻的安全威胁。在此背景下研究网络安全态势的量化评估具有重要的意义。
近年来,在评估网络安全态势方面逐渐从单机、局部、定性分析逐向分布式、全局、客观分析方向发展。目前大多数的网络安全评估方法多是定性评估,其缺点在于由于研究者对网络安全的定义标准各有不同,给评估、应急响应等带来了不确定性,评估的结果也就带有主观性。已有的定量评估研究方案,主要问题是:操作性上的困难和不可扩展性。如Lian YiFeng等人提出的应用贝叶斯网络定量评估网络的漏洞,该方法为量化评估计算方法,其缺点是无法克服贝叶斯网络在计算过程中大量先验概率的获取问题。
本发明中使用到了CVE(Common Vulnerabilities&Exposures,公共漏洞和暴露)兼容的数据库。所谓CVE就是一个字典表,为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。帮助用户在各自独立的各种漏洞数据库中和漏洞评估工具中共享数据。这样就使得CVE成为了安全信息共享的“关键字”。使用漏洞的CVE名称,可以快速地在任何其它CVE兼容的数据库中找到相应的信息。
发明内容
本发明的目的是提出一种基于攻击图的网络安全态势的量化评估方法,通过分析网络中的主机信息、拓扑信息、漏洞信息以及攻击者信息等,得到网络中所有可能的攻击路径,生成攻击图;然后,对攻击图进行图论以及概率论等方面的分析,得出网络安全评估的结果,从而使得安全管理员更加有针对性的进行网络安全加固措施。
本发明的目的是通过以下技术方案实现的。
本发明的一种基于攻击图的网络安全态势的量化评估方法,具体操作为:
步骤一、生成攻击图。具体为:
步骤1.1:通过扫描工具获取网络中的漏洞CVE名称,在CVE兼容的数据库中查找漏洞信息,形成漏洞信息列表,用符号VulExploitList表示。然后,针对漏洞信息列表VulExploitList中的每一个漏洞,在CVE兼容的数据库中寻找攻击者能够采用的攻击动作,形成漏洞攻击动作列表,用符号VulExploitDB表示。
所述漏洞信息列表VulExploitList包括:漏洞名称、漏洞分类、通用漏洞评分系统(Common Vulnerability Scoring System,CVSS)分值、攻击复杂度值、受影响的平台与产品以及受影响的程序版本。
步骤1.2:定义攻击图为G,G=(C0∪Cd,T,E),其中,C0表示初始节点集合,Cd表示中间节点集合,T表示目标节点集合,E表示连接节点之间的有相弧集合。C0初始化为攻击者可直接利用的漏洞主机节点,
步骤1.3:依次对漏洞攻击动作列表VulExploitDB中的每一条数据,查找网络中存在的漏洞以及与该漏洞对应的攻击动作,将所述攻击动作涉及的节点添加到中间节点集合Cd和目标节点集合T中,将节点间的有向弧添加到有相弧集合E中,完成攻击图G如图所示。
步骤二、评估攻击图G中节点的重要度。
在步骤一操作的基础上,通过节点的网页等级(PageRank)评分以及中介中心性评分评估节点的重要度。具体为:
步骤2.1:用符号N表示攻击图G中的节点个数;用符号T表示迭代次数,T为人为设定值,T≥50。用变量t表示当前的迭代次数,t∈[1,T]。用符号PR(pi,t)表示第t次迭代中第i个节点pi的PageRank评分,i∈[1,N]。当t=1时,令
步骤2.2:按照公式(1)进行迭代,当公式(2)满足条件时,停止迭代,得到各个节点的PageRank评分。
其中,PR(pi,t+1)表示第t+1次迭代中第i个节点pi的PageRank评分;d表示阻尼系数,d=0.85;pj表示第j个节点,j∈[1,N];M(pi)表示指向节点pi的节点的个数,L(pi)表示节点pi指向其他节点的个数;PR(pj,t)表示第t次迭代中第j个节点pj的PageRank评分。
|PR(pi,t+1)-PR(pi,t)|<ε(2)
其中,ε表示收敛值,ε为人为设定值,ε≤0.1。
步骤2.3:通过公式(3)对PageRank评分进行标准化处理。
其中,PR(pi)表示第i个节点pi的PageRank评分;min(PR)表示所有节点中PageRank评分的最小值,max(PR)表示所有节点中PageRank评分的最大值。
步骤2.4:用符号g(i)来表示节点i的中介中心性,根据公式(4)来计算所有节点的中介中心性。
其中,s,t,i∈[1,N];σst代表所有从节点s到节点t的最短路径的条数,而σst(i)代表所有经过节点i的从节点s到节点t的最短路径的条数。
步骤2.5:通过公式(5)对中介中心性进行标准化处理。
其中,符号min(g)表示所有节点中介中心性评分的最小值,符号max(g)表示所有节点中介中心性评分的最大值。
步骤2.6:综合考虑节点的PageRank评分和中介中心性评分,对其两项评分值取平均加权得到节点的重要度评估值。
步骤三、在步骤一操作的基础上,计算攻击图G中节点被渗透成功的最大概率。
网络安全问题遵循木桶原理,即木桶的容量是由最短的那块木板的长度决定的,网络的安全强度取决于它最薄弱环节的防护强度,因此可以用节点在所有攻击序列下被渗透成功的最大概率评估节点的安全程度。
攻击者在攻击到中间节点时,选择最容易渗透的路径时节点被渗透成功的概率最大,那么中间节点被渗透成功的最大概率用公式(6)计算。当攻击者攻击目标节点时,其父节点之间存在“与”的关系,所有父节点的条件必须同时满足,因此目标节点被渗透成功的最大概率用公式(7)计算。
p(t)=d(t)*Max{p(e)|e∈Pre(t)}(6)
其中,t、e是攻击图G中的节点;p(t)表示攻击图G中节点t被渗透成功的最大概率;d(t)表示攻击图G中节点t自身被渗透成功的概率;p(e)表示攻击图G中节点e被渗透成功的最大概率;Pre(t)表示攻击图G中节点t的父节点的集合。
步骤3.1:给临时变量flag(i)、p(i)和n(i)赋初值为0。其中,flag(i)为节点i的计算完成标识;p(i)为节点i的被渗透成功的最大概率;n(i)为节点i的父节点计算完成的数量。
步骤3.2:给变量d(i)赋初值。d(i)为节点i自身被渗透成功的概率。如果节点i不涉及对漏洞的渗透而是代表攻击者的网络操作行为,将节点i被渗透成功的概率d(i)赋初值为1;否则,将节点i被渗透成功的概率d(i)赋初值为漏洞信息列表VulExploitList中的攻击复杂度值对应的数值。
步骤3.3:对攻击图G=(C0∪Cd,T,E)中的节点t,若flag(t)=0成立,则获取父节点集合Pre(t)和子节点集合,用符号Post(t)表示,计算父节点集合Pre(t)中节点的数量,用符号Count(t)表示。遍历节点t的子节点集合Post(t)。
用符号m表示节点t的子节点,即m∈Post(t);用符号n(m)表示节点m的父节点计算完成的数量;用符号Count(m)表示父节点集合Pre(m)中节点的数量;用符号Pre(m)表示攻击图G中节点m的父节点的集合;flag(m)表示节点m的计算完成标识。
情况1:如果节点m是中间节点,即m∈Cd,首先使变量n(m)的值自增1。
如果p(m)<p(t),则按照公式(8)更新节点m的被渗透成功的最大概率。
p(m)=p(t)(8)
其中,p(m)表示节点m的被渗透成功的最大概率;p(t)表示节点t的被渗透成功的最大概率。
如果n(m)=Count(m),表示节点m的父节点已经全部计算完成,则按照公式(9)更新节点m的被渗透成功的最大概率p(m)。此时,节点m的被渗透成功的最大概率p(m)计算完毕,将计算完成标识flag(m)的值更新为1。
p(m)=p(m)*d(m)(9)
其中,d(m)表示节点m自身被渗透成功的概率。
如果0<n(m)<Count(m),表示节点m的父节点中存在被渗透成功的最大概率未计算完毕的节点,则跳转到步骤3.4,执行步骤3.4的操作。
情况2:如果节点m是目标节点,即m∈T,首先使变量n(m)的值自增1。然后,通过公式(10)更新节点m的被渗透成功的最大概率。
p(m)=p(m)*p(t)(10)
如果n(m)=Count(m),表示节点m的父节点已经全部计算完成,按照公式(11)更新节点m的被渗透成功的最大概率p(m)。此时,节点m的被渗透成功的最大概率p(m)计算完毕,将计算完成标识flag(m)的值更新为1。
p(m)=p(m)*d(m)(11)
如果0<n(m)<Count(m),表示节点m的父节点中存在被渗透成功的最大概率未计算完毕的节点,则跳转到步骤3.4,执行步骤3.4的操作。
步骤3.4:用符号a表示节点m的父节点,即a∈Pre(m);flag(a)表示节点a的计算完成标识;p(a)表示节点a的被渗透成功的最大概率。
情况1:如果节点m是中间节点即m∈Cd,考虑到有多条攻击序列的情况,因此需要遍历节点m的父节点,将其父节点的最大被渗透概率全部计算完毕。
若flag(a)=0成立,则对节点a执行步骤3.4。当节点m的父节点全部计算完成时,用公式(12)更新m节点的被渗透成功的最大概率,然后将节点m的计算完成标识置为1。
p(m)=d(m)*Max(p(a))(12)
情况2:如果节点m是目标节点,即m∈T,需要遍历节点m的父节点,将父节点的被渗透成功的最大概率全部计算完毕。
若flag(a)=0成立,则对节点a执行步骤3.4。当节点m的父节点全部计算完成时,用公式(13)更新m节点的被渗透成功的最大概率,然后将节点m的计算完成标识置为1。
步骤3.5:当所有节点的计算完成表示都等于1,则结束操作,得出所有节点的被渗透成功的最大概率。
步骤四、得到网络安全态势评估值。
根据步骤二得到的攻击图G中各节点的重要度评估值以及步骤三得到的攻击图G中各节点的被渗透成功的最大概率,通过公式(14)计算得出攻击图G的网络安全态势评估值,用符号V表示。
其中N表示攻击图G中节点的个数;mi、pi分别表示第i个节点的重要度评估值和被渗透成功的最大概率。
有益效果
本发明提出的基于攻击图的网络安全态势的量化评估方法与已有技术相比较,具有以下优点:
①基于攻击图的评估方法能够反映出攻击者利用网络中的漏洞进行多步攻击的意图。
②评估方法中使用的数据易于采集,具有可操作性。
③评估过程中可以得到网络中各节点的防护情况,反映网络中各节点的防护情况。
④评估方法综合考虑了网络的拓扑信息、漏洞关联信息和攻击者的攻击意图,评估结果精度高。
附图说明
图1为本发明具体实施方式中基于攻击图的网络安全态势的量化评估方法的操作流程图;
图2为本发明具体实施方式中的网络架构图;
图3为本发明具体实施方式中的攻击图。
具体实施方式
根据上述技术方案,下面结合附图和实施实例对本发明技术方案进行详细说明。
采用本发明提出的基于攻击图的网络安全态势的量化评估方法对网络进行网络安全态势评估,其操作流程如图1所示,具体操作步骤为:
步骤一、生成攻击图。具体为:
步骤1.1:实验采用的网络架构图如图2所示,通过X-san扫描工具获取网络中的漏洞CVE名称,在CVE兼容的数据库中查找漏洞信息,形成漏洞信息列表,用符号VulExploitList表示,如表1所示。然后,针对漏洞信息列表VulExploitList中的每一个漏洞,在CVE兼容的数据库中寻找攻击者能够采用的攻击动作,形成漏洞攻击动作列表,用符号VulExploitDB表示,如表2所示。
所述CVE兼容的数据库采用的是中国国家信息安全漏洞库(CNNVD)。
表1漏洞信息列表VulExploitList
表2漏洞攻击动作列表VulExploitDB
所述漏洞信息列表VulExploitList包括:漏洞名称、漏洞分类、通用漏洞评分系统CVSS分值、攻击复杂度值以及受影响的平台与产品。
步骤1.2:定义攻击图为G,G=(C0∪Cd,T,E),其中,C0表示初始节点集合,Cd表示中间节点集合,T表示目标节点集合,E表示连接节点之间的有相弧集合。C0初始化为攻击者可直接利用的漏洞主机节点,
步骤1.3:依次对漏洞攻击动作列表VulExploitDB中的每一条数据,查找网络中存在的漏洞以及与该漏洞对应的攻击动作,将所述攻击动作涉及的节点添加到中间节点集合Cd中,将节点间的有向弧添加到有相弧集合E中;然后,将中间节点集合Cd中没有子节点的节点转移到目标节点集合T中,完成攻击图G如图3所示。图3能够直观的表现出攻击者利用网络漏洞进行多步攻击的攻击路径。图中以C开头的节点代表攻击者的远程攻击动作和当前的网络状态,以E开头的节点代表攻击者对漏洞的渗透。其中初始节点集合C0={C1,C2},中间节点集合Cd={C3,C4,C5,C6,C8,C9,C11,E1,E2,E3,E4,E5,E6},目标节点集合T={C7,C11,C12},有向弧集合为图中所有节点之间的弧形成的集合。
步骤二、评估攻击图G中节点的重要度。
在步骤一操作的基础上,通过节点的网页等级PageRank评分以及中介中心性评分评估节点的重要度。具体为:
步骤2.1:用符号N表示攻击图G中的节点个数,N=18;用符号T表示迭代次数,T=100。用变量t表示当前的迭代次数,t∈[1,T]。用符号PR(pi,t)表示第t次迭代中第i个节点pi的PageRank评分,i∈[1,N]。当t=1时,令
步骤2.2:按照公式(1)进行迭代,当公式(2)满足条件时,停止迭代,得到各个节点的PageRank评分。
其中,PR(pi,t+1)表示第t+1次迭代中第i个节点pi的PageRank评分;d表示阻尼系数,d=0.85;pj表示第j个节点,j∈[1,N];M(pi)表示指向节点pi的节点的个数,L(pi)表示节点pi指向其他节点的个数;PR(pj,t)表示第t次迭代中第j个节点pj的PageRank评分。
|PR(pi,t+1)-PR(pi,t)|<ε(2)
其中,ε表示收敛值,ε=0.01。
步骤2.3:通过公式(3)对PageRank评分进行标准化处理,处理结果如表3所示。
其中,PR(pi)表示第i个节点pi的PageRank评分;min(PR)表示所有节点中PageRank评分的最小值,max(PR)表示所有节点中PageRank评分的最大值。
表3各节点的PageRank评分
步骤2.4:用符号g(i)来表示节点i的中介中心性,根据公式(4)来计算所有节点的中介中心性。
其中,s,t,i∈[1,N];σst代表所有从节点s到节点t的最短路径的条数,而σst(i)代表所有经过节点i的从节点s到节点t的最短路径的条数。
两点之间的最短路径通过Dijkstra算法算法来计算。得出图中经过节点i的所有节点对之间的最短路径的条数。得到σst和σst(i)之后,将其带入公式(4)得到节点i的中介中心性评分。
步骤2.5:通过公式(5)对中介中心性进行标准化处理,处理结果如表4所示。
其中,符号min(g)表示所有节点中介中心性评分的最小值,符号max(g)表示所有节点中介中心性评分的最大值。
表4各节点的中介中心性评分
步骤2.6:综合考虑节点的PageRank评分和中介中心性评分,对其两项评分值取平均加权得到节点的重要度评估值,如表5所示。
表5各节点的重要度评估值
步骤三、在步骤一操作的基础上,计算攻击图G中节点被渗透成功的最大概率。
网络安全问题遵循木桶原理,即木桶的容量是由最短的那块木板的长度决定的,网络的安全强度取决于它最薄弱环节的防护强度,因此可以用节点在所有攻击序列下被渗透成功的最大概率评估节点的安全程度。
攻击者在攻击到中间节点时,选择最容易渗透的路径时节点被渗透成功的概率最大,那么中间节点被渗透成功的最大概率用公式(6)计算。当攻击者攻击目标节点时,其父节点之间存在“与”的关系,所有父节点的条件必须同时满足,因此目标节点被渗透成功的最大概率用公式(7)计算。
p(t)=d(t)*Max{p(e)|e∈Pre(t)}(6)
其中,t、e是攻击图G中的节点;p(t)表示攻击图G中节点t被渗透成功的最大概率;d(t)表示攻击图G中节点t自身被渗透成功的概率;p(e)表示攻击图G中节点e被渗透成功的最大概率;Pre(t)表示攻击图G中节点t的父节点的集合。
步骤3.1:给临时变量flag(i)、p(i)和n(i)赋初值为0。其中,flag(i)为节点i的计算完成标识;p(i)为节点i的被渗透成功的最大概率;n(i)为节点i的父节点计算完成的数量。
步骤3.2:给变量d(i)赋初值。d(i)为节点i自身被渗透成功的概率。如果节点i不涉及对漏洞的渗透而是代表攻击者的网络操作行为,将节点i被渗透成功的概率d(i)赋初值为1;否则,将节点i被渗透成功的概率d(i)赋初值为漏洞信息列表VulExploitList中的攻击复杂度值对应的数值。
节点被渗透成功的概率d(i)与节点上的漏洞的攻击复杂度值的对应情况如表6所示。
表6节点被渗透成功的概率d(i)与节点上的漏洞的攻击复杂度值的对应表
步骤3.3:对攻击图G=(C0∪Cd,T,E)中的节点t,若flag(t)=0成立,则获取父节点集合Pre(t)和子节点集合,用符号Post(t)表示,计算父节点集合Pre(t)中节点的数量,用符号Count(t)表示。遍历节点t的子节点集合Post(t)。
用符号m表示节点t的子节点,即m∈Post(t);用符号n(m)表示节点m的父节点计算完成的数量;用符号Count(m)表示父节点集合Pre(m)中节点的数量;用符号Pre(m)表示攻击图G中节点m的父节点的集合;flag(m)表示节点m的计算完成标识。
情况1:如果节点m是中间节点,即m∈Cd,首先使变量n(m)的值自增1。
如果p(m)<p(t),则按照公式(8)更新节点m的被渗透成功的最大概率。
p(m)=p(t)(8)
其中,p(m)表示节点m的被渗透成功的最大概率;p(t)表示节点t的被渗透成功的最大概率。
如果n(m)=Count(m),表示节点m的父节点已经全部计算完成,则按照公式(9)更新节点m的被渗透成功的最大概率p(m)。此时,节点m的被渗透成功的最大概率p(m)计算完毕,将计算完成标识flag(m)的值更新为1。
p(m)=p(m)*d(m)(9)
其中,d(m)表示节点m自身被渗透成功的概率。
如果0<n(m)<Count(m),表示节点m的父节点中存在被渗透成功的最大概率未计算完毕的节点,则跳转到步骤3.4,执行步骤3.4的操作。
情况2:如果节点m是目标节点,即m∈T,首先使变量n(m)的值自增1。然后,通过公式(10)更新节点m的被渗透成功的最大概率。
p(m)=p(m)*p(t)(10)
如果n(m)=Count(m),表示节点m的父节点已经全部计算完成,按照公式(11)更新节点m的被渗透成功的最大概率p(m)。此时,节点m的被渗透成功的最大概率p(m)计算完毕,将计算完成标识flag(m)的值更新为1。
p(m)=p(m)*d(m)(11)
如果0<n(m)<Count(m),表示节点m的父节点中存在被渗透成功的最大概率未计算完毕的节点,则跳转到步骤3.4,执行步骤3.4的操作。
步骤3.4:用符号a表示节点m的父节点,即a∈Pre(m);flag(a)表示节点a的计算完成标识;p(a)表示节点a的被渗透成功的最大概率。
情况1:如果节点m是中间节点即m∈Cd,考虑到有多条攻击序列的情况,因此需要遍历节点m的父节点,将其父节点的最大被渗透概率全部计算完毕。
若flag(a)=0成立,则对节点a执行步骤3.4。当节点m的父节点全部计算完成时,用公式(12)更新m节点的被渗透成功的最大概率,然后将节点m的计算完成标识置为1。
p(m)=d(m)*Max(p(a))(12)
情况2:如果节点m是目标节点,即m∈T,需要遍历节点m的父节点,将父节点的被渗透成功的最大概率全部计算完毕。
若flag(a)=0成立,则对节点a执行步骤3.4。当节点m的父节点全部计算完成时,用公式(13)更新m节点的被渗透成功的最大概率,然后将节点m的计算完成标识置为1。
步骤3.5:当所有节点的计算完成表示都等于1,则结束操作,得出所有节点的被渗透成功的最大概率,如表7所示。
表7各节点被渗透成功的最大概率
步骤四、得到网络安全态势评估值。
根据步骤二得到的攻击图G中各节点的重要度评估值以及步骤三得到的攻击图G中各节点的被渗透成功的最大概率,通过公式(14)计算得出攻击图G的网络安全态势评估值,用符号V表示。
其中,N表示攻击图G中节点的个数;mi、pi分别表示第i个节点的重要度评估值和被渗透成功的最大概率。
网络安全的态势评估值与网络安全状态的对应情况如表8所示,本示例中计算得出V=0.73,表明网络中存在严重的漏洞,这些漏洞造成的损失可能比较大,会对网络的正常运行造成比较大的影响,应引起网络安全管理人员的注意,查找原因,并采取有效的安全措施确保网络的正常运行。
表8网络安全的态势评估值与网络安全状态的对应表
机译: 基于攻击图预测攻击目标的方法和装置
机译: 基于攻击图预测攻击目标的方法和装置
机译: 基于攻击和防御对抗的电子邮件系统安全评估方法和装置