一种指定目标结点集合的K最大概率攻击路径的渐进式求解方法与流程

文档序号:13808239阅读:198来源:国知局
一种指定目标结点集合的K最大概率攻击路径的渐进式求解方法与流程

本发明涉及一种网络安全分析方法,特别涉及一种指定目标结点集合的k最大概率攻击路径的渐进式求解方法。



背景技术:

网络安全是企业关注的重要问题,给定一个网络系统,分析系统内部潜在的攻击路径对于了解一个网络的安全状况非常有价值。网络系统中的结点包括服务器、计算机、防火墙、路由器和交换机等网络设备。网络系统中通常存在关键结点,关键结点上运行企业的核心服务或存储着机密数据,是攻击者攻击的重要目标,管理员对这类目标结点的安全状况尤其关注。对于网络中无法直接攻击的目标结点,攻击者会寻找并利用网络中多个中间结点上的漏洞,逐步提升攻击者的访问权限,最终形成攻击目标结点的多步攻击路径。所述中间结点指为达到攻击目标结点的目的而被攻击和利用的网络系统中的结点。在给定各漏洞的可用性概率值的情况下,可以计算出各条攻击路径的漏洞可用性累积概率值。在管理员指定了目标结点集合后,希望快速求解出攻击各目标结点的k最大概率攻击路径,即漏洞可用性累积概率值最大的前k条攻击路径。管理员可以根据各目标结点需要求解的攻击路径数量而为各目标结点分别设定k的不同取值。在考虑攻击路径输出实时性的同时,也需要考虑各目标结点输出攻击路径的均衡性,使漏洞可用性累积概率值较小的攻击路径所对应的目标结点也有较快输出攻击路径的机会。

现有技术中,如毕坤等人在发明专利《一种渐进式求解k最大概率攻击路径的方法》(cn107135221a,2017.09.05,以下简称专利1)中,提出了一种能够渐进式求解攻击网络中各结点的概率最大的前k条攻击路径的方法,该方法通过设定可用漏洞信息表的访问标记,实现了各结点攻击路径的分轮次的输出,在每一轮次中,各结点都有输出攻击路径的机会,解决了漏洞可用性累积概率值较小的攻击路径所对应的结点可能在很长时间内都无法输出一条攻击路径的问题,该方法也能够分轮次输出攻击目标结点集合中各目标结点的k最大概率攻击路径,但该方法是针对网络中的每一个结点分别计算出k最大概率攻击路径,在目标结点集合中的结点数量少于网络结点总数量的情况下,该方法仍会为不在目标结点集合中的各结点分别计算k最大概率攻击路径,增加了很多不必要的计算,从而增加了计算时间,影响了攻击路径输出的实时性,在目标结点数量远少于网络结点总数量的情况下,该问题将更加严重;另一方面,该方法是分轮次输出攻击各结点的攻击路径,各结点输出攻击路径的数量k的取值是统一的,如果需要为各目标结点分别求解出不同数量的攻击路径,则根据所有目标结点需要求解的攻击路径数量的最大值设定k的取值,浪费了计算资源,增加了计算时间。

现有技术中,如毕坤等人在发明专利《一种求解k最大概率攻击图的网络安全分析方法》(cn102724210b,2015.02.11,以下简称专利2)中,提出了一种能够求解攻击网络中各结点的概率最大的前k条攻击路径的方法,该方法不需要计算生成完整的攻击图,便能够直接计算出攻击网络中各结点的概率最大的前k条攻击路径,但该方法也是针对网络中的每一个结点分别计算出k最大概率攻击路径,无法利用指定目标结点集合的信息有效减少计算量,也无法实现攻击路径分轮次输出。

因此,在指定目标结点集合和为各目标结点分别设定不同数量攻击路径的情况下,需要设计新的、更高效的k最大概率攻击路径求解方法,在保证各目标结点输出攻击路径的均衡性基础上,减少不必要的计算,从而减少计算时间,提高攻击路径输出的实时性。



技术实现要素:

为了克服上述现有技术存在的缺陷,本发明提供一种指定目标结点集合的k最大概率攻击路径的渐进式求解方法,在指定目标结点集合和各目标结点需要求解的k最大概率攻击路径的数量、给定网络系统的拓扑结构和访问关系、给定各结点上存在的漏洞的原始信息和攻击者的初始位置信息后,该方法能够高效的分轮次计算并输出攻击各目标结点的k最大概率攻击路径,其中各目标结点设定的k取值可以不同,所述漏洞的原始信息包括漏洞编号、漏洞所在结点、漏洞利用的前提条件、漏洞利用的后果信息和漏洞的可用性概率值。

为了实现上述目的,本发明提供一种指定目标结点集合的k最大概率攻击路径的渐进式求解方法,该方法包含以下步骤:

步骤1、为网络中每个结点分别建立l个可用漏洞信息表,其中l为漏洞利用的后果分类的数量,每个可用漏洞信息表对应一种类型的漏洞利用的后果;所述可用漏洞信息包含结点编号、漏洞编号、从攻击者开始的具体攻击路径和漏洞可用性累积概率值;所述漏洞可用性累积概率值的计算方法为:将从攻击者开始的漏洞利用路径上各漏洞的可用性概率值相乘得出;设定目标结点集合,并分别设定每个目标结点需要求解的k最大概率攻击路径的数量,每个目标结点设定的k的取值可以不同;建立单轮次攻击路径集合,并初始化为空集;建立待求解结点集合,并初始化为目标结点集合中的所有结点;

所述漏洞利用的后果包括访问权限的变化和非访问权限类的后果,所述访问权限包括普通用户访问权限、root或管理员用户访问权限,其中普通用户访问权限又可细分为普通用户读权限、普通用户写权限、普通用户执行权限,root或管理员用户访问权限又可细分为root或管理员用户读权限、root或管理员用户写权限、root或管理员用户执行权限,所述非访问权限类的后果指除访问权限外的其它所有的漏洞利用的后果,包括服务停止工作、系统停止工作、服务响应变慢、系统响应变慢、数据丢失、数据被删除、数据被窃取等;所述漏洞利用的后果分类可以由安全管理人员根据系统安全关注的目标进行定义;

步骤2、将所有可用漏洞信息表初始化为空表;

步骤3、设置所有可用漏洞信息表的访问标记为“未访问”;将待求解结点集合中的所有结点标记为“未求解”;

步骤4、从攻击者位置开始,查询并判断所有能被攻击者直接访问的结点上的漏洞,若漏洞利用的前提条件已满足,则根据该漏洞利用的后果信息将该漏洞放入漏洞所在结点的相对应的可用漏洞信息表中;

所述“根据该漏洞利用的后果信息将该漏洞放入漏洞所在结点的相对应的可用漏洞信息表”的具体规则包括:若同一漏洞有多个漏洞利用的后果,则按照漏洞利用的后果危害性高低关系,依据漏洞利用的后果中的最高危害性,将该漏洞放入漏洞所在结点的相对应的可用漏洞信息表中,漏洞利用的后果危害性的高低关系可以由安全管理人员根据系统安全关注的目标进行定义,通常情况下,获取访问权限的后果危害性高于获取非访问权限类的后果危害性,获取root或管理员用户访问权限的后果危害性高于获取普通用户访问权限的后果危害性,获取执行权限的后果危害性高于获取写权限的后果危害性,获取写权限的后果危害性高于获取读权限的后果危害性;

步骤5、判断是否所有的可用漏洞信息表均为空表,若是,转步骤16,若否,转步骤6;

步骤6、查询所有非空的可用漏洞信息表的访问标记,判断是否存在访问标记为“未访问”的可用漏洞信息表,若是,转步骤7,若否,转步骤16;

步骤7、从所有访问标记为“未访问”的可用漏洞信息表中,选出漏洞可用性累积概率值最大的一条可用漏洞信息,将该可用漏洞信息从可用漏洞信息表中移除,并将该可用漏洞信息表的访问标记设置为“已访问”,查询该漏洞利用的后果信息,更新攻击者在该结点上的访问权限和非访问权限类的后果,设定该结点为当前结点,设定该攻击路径为当前攻击路径,查询并判断所有能被该结点直接访问的结点上的漏洞,若该结点本次有变化的访问权限是漏洞攻击的必要条件且相应漏洞利用的前提条件已满足且不存在攻击环路,则根据漏洞利用的后果信息将相应漏洞放入漏洞所在结点的相对应的可用漏洞信息表中;所述攻击环路指攻击路径中存在重复出现的结点且在重复出现的结点上的攻击目的相同;

步骤8、判断当前结点是否属于目标结点集合,若是,转步骤9,若否,转步骤5;

步骤9、判断当前结点已经输出的攻击路径的数量是否已满足要求,若是,转步骤10,若否,转步骤11;

步骤10、判断是否目标结点集合中所有目标结点已经输出的攻击路径的数量均已满足要求,若是,转步骤16,若否,转步骤5;

步骤11、将当前攻击路径写入当前结点的攻击路径信息集合并输出;

步骤12、判断当前结点已经输出的攻击路径的数量是否已满足要求,若是,将当前结点从待求解结点集合中删除,若否,将当前攻击路径记录于单轮次攻击路径集合,在待求解结点集合中将当前结点标记为“已求解”;

步骤13、判断待求解结点集合是否为空集,若是,转步骤16,若否,转步骤14;

步骤14、判断待求解结点集合中可用漏洞信息表非空的各结点的标记是否均为“已求解”,若是,转步骤15,若否,转步骤5;

步骤15、依次读取单轮次攻击路径集合中的各条攻击路径,分别将各条攻击路径上相应的可用漏洞信息表的访问标记设置为“未访问”;将待求解结点集合中的各结点标记为“未求解”;清空单轮次攻击路径集合;转步骤5;

步骤16、汇总输出计算结果,在算法运行过程中,已经陆续输出了攻击指定目标结点集合中各个目标结点的多条攻击路径,其相关信息也已经记录在各个结点的数据结构中,在该步骤中,可以根据实际需要,汇总输出需要查看的计算结果。

本发明提供的一种指定目标结点集合的k最大概率攻击路径的渐进式求解方法和现有技术相比,其优点在于:(1)在指定目标结点集合的情况下,该方法能够分轮次输出攻击每一个目标结点的攻击路径,在每一轮中,各目标结点都有输出攻击路径的机会;(2)在指定目标结点集合的情况下,该方法针对各目标结点求解攻击路径,大量减少不在目标结点集合中的各结点的攻击路径的求解运算,从而降低计算量,减少计算时间,提高攻击路径的计算实时性,尤其是在网络规模较大时,若指定目标结点集合中目标结点的数量远小于网络结点总数量,该方法能够极大降低计算量和减少计算时间;(3)该方法可以为不同的目标结点分别设定不同数量的攻击路径,并且针对各目标结点设定的攻击路径数量进行求解,大量减少其它不相关结点的攻击路径的计算,从而降低计算量和减少计算时间。

与专利1公开的方法相比,本发明解决了以下两个问题:(1)解决了在指定目标结点集合的情况下如何降低计算量的问题。专利1公开的方法是分轮次求解攻击网络系统中所有结点的k最大概率攻击路径,在指定目标结点集合后,上述方法可以输出针对各目标结点的攻击路径,但在计算量方面,上述方法仍然需要计算攻击网络中每一个结点的k最大概率攻击路径,对于不在目标结点集合中的结点,计算其相应的k最大概率攻击路径并不总是必要的。但是考虑到攻击目标结点的攻击路径通常是多步攻击路径,为达到攻击目标结点的目的,通常需要利用网络中多个中间结点上的漏洞,通过对中间结点实施攻击从而逐步提升攻击者的访问权限,最终形成攻击目标结点的多步攻击路径,针对中间结点的攻击路径是攻击目标结点的多步攻击路径的重要组成部分,因此,为求解攻击目标结点的k最大概率攻击路径而计算攻击中间结点的攻击路径是需要的,但通常不需要对所有中间结点都分别计算k最大概率攻击路径。该问题的难点在于如何设计各结点的漏洞选取和利用策略,在计算过程中动态分析哪些中间结点的攻击路径需要计算和保存,从而减少不必要的攻击路径的计算,降低计算量。专利1公开的方法无法解决该问题。为解决该问题,本发明设计了新的漏洞选取和利用策略,在计算过程中对各结点相应的可用漏洞信息表的访问标记进行设置,从而有效减少了大量不必要的攻击路径的计算。(2)解决了在各目标结点分别设定不同数量攻击路径的情况下如何降低计算量的问题。专利1公开的方法是对网络中所有结点求解相同数量的k最大概率攻击路径,在各目标结点分别设定不同数量攻击路径的情况下,则根据所有目标结点需要求解的攻击路径数量的最大值设定k的取值,增加了大量不必要的计算。本发明设计了新的漏洞选取和利用策略,根据各目标结点设定的攻击路径的数量和已经计算出的攻击路径的信息进行漏洞选取和利用,从而有效减少了大量不必要的攻击路径的计算。

本发明与专利1公开的方法不同,在漏洞选取和利用策略方面,专利1公开的方法是在计算过程中对各结点相应的可用漏洞信息表的访问标记进行设置,仅从所有访问标记为“未访问”的可用漏洞信息表中进行漏洞选取和利用,若所有非空的可用漏洞信息表的访问标记均为“已访问”,则将所有可用漏洞信息表的访问标记全部重置为“未访问”,并继续进行漏洞选取和利用,从而实现了分轮次输出攻击各结点的攻击路径的目标,在每一轮中,各个结点都有输出攻击路径的机会,在指定目标结点集合和各目标结点需要求解的k最大概率攻击路径数量的情况下,专利1公开的方法因其漏洞选取和利用策略的限制而无法有效利用该信息减少计算量;本发明在计算过程中对各结点相应的可用漏洞信息表的访问标记进行设置,仅从所有访问标记为“未访问”的可用漏洞信息表中进行漏洞选取和利用,在求解出攻击目标结点的攻击路径后,会根据情况把该攻击路径记录于单轮次攻击路径集合,在待求解结点集合中将该目标结点标记为“已求解”,若待求解结点集合中可用漏洞信息表非空的各结点的标记均为“已求解”,则依次读取单轮次攻击路径集合中的各条攻击路径,分别将各条攻击路径上相应的可用漏洞信息表的访问标记设置为“未访问”,将待求解结点集合中的各结点标记为“未求解”,清空单轮次攻击路径集合,进行下一轮计算,只有与攻击目标结点集合有关的攻击路径所对应的可用漏洞信息表的访问标记会被重新设置为“未访问”,而访问标记为“已访问”的可用漏洞信息表,在漏洞选取时不会被选中,所以该方法能够有效减少计算量,若某目标结点已求解的攻击路径的数量已满足要求,则将该目标结点从待求解结点集合中删除,该方法能很好的适应各目标结点需要求解不同数量攻击路径的需求。

专利1公开的方法对各结点相应的可用漏洞信息表的访问标记进行设置是为了实现分轮次输出攻击各结点的攻击路径的目标,在所有非空的可用漏洞信息表的访问标记均为“已访问”时,则将所有可用漏洞信息表的访问标记全部重置为“未访问”;本发明为了实现分轮次输出针对目标结点集合的攻击路径的目标,采用了完全不同的方法,首先建立待求解结点集合用于记录各目标结点,根据各目标结点攻击路径的生成情况标记待求解结点集合中各目标结点的状态,若待求解结点集合中可用漏洞信息表非空的各结点的标记均为“已求解”,则表示该轮次的攻击路径求解已完成,接下来将进行下一轮的求解,而对各结点相应的可用漏洞信息表的访问标记进行设置是为了在指定目标结点集合和各目标结点需要求解的k最大概率攻击路径数量的情况下有效减少攻击路径求解过程中的计算量,在新一轮计算开始前,只有与攻击目标结点集合有关的攻击路径所对应的可用漏洞信息表的访问标记会被重新设置为“未访问”,而访问标记为“已访问”的可用漏洞信息表,在漏洞选取时不会被选中,因此该方法能够有效减少计算量。

本发明与专利2公开的方法不同,在漏洞选取和利用策略方面,专利2公开的方法是将网络系统内部所有可用漏洞按照漏洞可用性累积概率值从大到小的顺序排列、选取和利用,在指定目标结点集合和各目标结点需要求解的k最大概率攻击路径数量的情况下,专利2公开的方法因其漏洞选取和利用策略的限制而无法有效利用该信息减少计算量,也无法实现各目标结点攻击路径的分轮次输出。

附图说明

图1为本发明方法流程图;

图2为网络拓扑图;

图3为访问关系图;

图4为各结点漏洞的原始信息图;

图5为可用漏洞信息表一;

图6为可用漏洞信息表二;

图7为可用漏洞信息表三;

图8为可用漏洞信息表四;

图9为可用漏洞信息表五;

图10为可用漏洞信息表六;

图11为可用漏洞信息表七;

图12为可用漏洞信息表八;

图13为可用漏洞信息表九;

图14为可用漏洞信息表十;

图15为可用漏洞信息表十一;

具体实施方式

为了使本发明的技术手段、创作特征与达成目的易于明白理解,以下结合具体实施例进一步阐述本发明。

网络拓扑图如图2所示,结点a代表攻击者,结点b、c、d、e、f和g代表一个给定的网络系统中的结点,结点间的有向箭头代表结点间的访问关系,访问关系如图3所示,从第二行开始,每一行代表一个结点能够访问的结点集合,“√”表示可以直接访问,“x”表示不可以直接访问,例如第二行表示攻击者能直接访问结点b、c和d,但不能直接访问结点e、f和g,第三行表示结点b能直接访问结点b、e和f,但不能直接访问结点c、d和g,同理,其它结点间的访问关系见图3。本实施例中,定义访问关系为单向,但在具体实施中,可以根据情况定义访问关系为单向或双向。

各结点上存在的漏洞的原始信息如图4所示,其中漏洞利用的前提条件说明利用该漏洞需要具备的前提条件,漏洞利用的后果信息说明该漏洞被成功利用后产生的后果,在该举例中,漏洞利用的后果信息均为“攻击者获取该结点上的管理员用户执行权限”,漏洞的可用性概率值说明每个漏洞能够被成功利用的可能性,在获取结点上的管理员用户执行权限后,攻击者就能够在该结点上执行程序,从该结点发起新的攻击。

在该实施例中,指定目标结点集合为“{结点e,结点g}”,设定目标结点e和g需要求解的k最大概率攻击路径的数量分别为2和3。

给定上述输入信息后,如图1所示,本发明的具体步骤如下:

步骤(1).为每个结点分别建立一个可用漏洞信息表。在该实施例中,漏洞利用的后果信息均为“攻击者获取该结点上的管理员用户执行权限”,因此为每个结点分别建立一个可用漏洞信息表即可。若有多种类别的漏洞利用的后果,则根据实际情况,可以为每个结点分别建立多个可用漏洞信息表;设定目标结点集合为“{结点e,结点g}”,设定目标结点e和g需要求解的k最大概率攻击路径的数量分别为2和3;建立单轮次攻击路径集合,并初始化为空集;建立待求解结点集合,并初始化为目标结点集合中的所有结点,即待求解结点集合的初始值为“{结点e,结点g}”;

步骤(2).将所有可用漏洞信息表初始化为空表;

步骤(3).设置所有可用漏洞信息表的访问标记为“未访问”;将待求解结点集合中的所有结点标记为“未求解”;

步骤(4).从攻击者位置开始,查询并判断所有能被攻击者直接访问的结点上的漏洞,发现攻击者能够攻击结点b上的漏洞v1、结点c上的漏洞v2和结点d上的漏洞v3,且漏洞利用的前提条件均已满足,所以将漏洞v1、v2和v3相对应的可用漏洞信息分别放入结点b、结点c和结点d的可用漏洞信息表中,如图5所示,结点b的可用漏洞信息表中新增了一条可用漏洞信息:“[b,v1,ab(v1),0.9]”,每条可用漏洞信息包含结点编号、漏洞编号、从攻击者开始的具体攻击路径和漏洞可用性累积概率值,例如可用漏洞信息“[b,v1,ab(v1),0.9]”说明在结点b上存在漏洞编号为v1的可用漏洞,从攻击者开始的具体攻击路径为从攻击者a可以直接攻击结点b上的漏洞v1,漏洞可用性累积概率值为0.9;结点c的可用漏洞信息表中新增了一条可用漏洞信息:“[c,v2,ac(v2),0.8]”;结点d的可用漏洞信息表中新增了一条可用漏洞信息:“[d,v3,ad(v3),0.7]”;

步骤(5).判断是否所有的可用漏洞信息表均为空表,因为结点b、c和d的可用漏洞信息表不为空,所以判断结果为“否”;

步骤(6).查询所有非空的可用漏洞信息表的访问标记,判断是否存在访问标记为“未访问”的可用漏洞信息表,因为结点b、c和d的可用漏洞信息表均为“未访问”,所以判断结果为“是”;

步骤(7).从所有访问标记为“未访问”的可用漏洞信息表中,选出漏洞可用性累积概率值最大的一条可用漏洞信息,因此选择可用漏洞信息“[b,v1,ab(v1),0.9]”,将该可用漏洞信息从可用漏洞信息表中移除,并将该可用漏洞信息表的访问标记设置为“已访问”,查询漏洞v1的漏洞利用的后果信息为“攻击者获取该结点上的管理员用户执行权限”,更新攻击者在结点b上的访问权限,设定结点b为当前结点,设定该攻击路径“ab(v1)”为当前攻击路径,查询并判断所有能被结点b直接访问的结点上的漏洞,发现从结点b能够攻击结点e上的漏洞v4和结点f上的漏洞v5,且不存在攻击环路,因此将可用漏洞信息“[e,v4,ab(v1)e(v4),0.63]”放入结点e的可用漏洞信息表中,其中攻击路径“ab(v1)e(v4)”说明从攻击者开始的具体攻击路径为“从攻击者a开始,首先攻击结点b上的漏洞v1,获取权限后再从结点b开始攻击结点e上的漏洞v4”,漏洞可用性累积概率值为0.9*0.7=0.63;将可用漏洞信息“[f,v5,ab(v1)f(v5),0.54]”放入结点f的可用漏洞信息表中,其中漏洞可用性累积概率值为0.9*0.6=0.54,各结点的可用漏洞信息表中的具体内容和访问标记如图6所示;

步骤(8).判定当前结点b不属于目标结点集合“{结点e,结点g}”;

步骤(9).判断是否所有的可用漏洞信息表均为空表,判断结果为“否”;

步骤(10).查询所有非空的可用漏洞信息表的访问标记,判断是否存在访问标记为“未访问”的可用漏洞信息表,判断结果为“是”;

步骤(11).从所有访问标记为“未访问”的可用漏洞信息表中,选出漏洞可用性累积概率值最大的一条可用漏洞信息,因此选择可用漏洞信息“[c,v2,ac(v2),0.8]”,将该可用漏洞信息从可用漏洞信息表中移除,并将该可用漏洞信息表的访问标记设置为“已访问”,查询漏洞v2的漏洞利用的后果信息为“攻击者获取该结点上的管理员用户执行权限”,更新攻击者在结点c上的访问权限,设定结点c为当前结点,设定该攻击路径“ac(v2)”为当前攻击路径,查询并判断所有能被结点c直接访问的结点上的漏洞,发现从结点c能够攻击结点e上的漏洞v4和结点f上的漏洞v5,且不存在攻击环路,因此将可用漏洞信息“[e,v4,ac(v2)e(v4),0.56]”放入结点e的可用漏洞信息表中,漏洞可用性累积概率值为0.8*0.7=0.56;将可用漏洞信息“[f,v5,ac(v2)f(v5),0.48]”放入结点f的可用漏洞信息表中,其中漏洞可用性累积概率值为0.8*0.6=0.48,各结点的可用漏洞信息表中的具体内容和访问标记如图7所示;

步骤(12).判定当前结点c不属于目标结点集合“{结点e,结点g}”;

步骤(13).判断是否所有的可用漏洞信息表均为空表,判断结果为“否”;

步骤(14).查询所有非空的可用漏洞信息表的访问标记,判断是否存在访问标记为“未访问”的可用漏洞信息表,判断结果为“是”;

步骤(15).从所有访问标记为“未访问”的可用漏洞信息表中,选出漏洞可用性累积概率值最大的一条可用漏洞信息,因此选择可用漏洞信息“[d,v3,ad(v3),0.7]”,将该可用漏洞信息从可用漏洞信息表中移除,并将该可用漏洞信息表的访问标记设置为“已访问”,查询漏洞v3的漏洞利用的后果信息为“攻击者获取该结点上的管理员用户执行权限”,更新攻击者在结点d上的访问权限,设定结点d为当前结点,设定该攻击路径“ad(v3)”为当前攻击路径,查询并判断所有能被结点d直接访问的结点上的漏洞,发现从结点d能够攻击结点e上的漏洞v4和结点f上的漏洞v5,且不存在攻击环路,因此将可用漏洞信息“[e,v4,ad(v3)e(v4),0.49]”放入结点e的可用漏洞信息表中;将可用漏洞信息“[f,v5,ad(v3)f(v5),0.42]”放入结点f的可用漏洞信息表中,各结点的可用漏洞信息表中的具体内容和访问标记如图8所示;

步骤(16).判定当前结点d不属于目标结点集合“{结点e,结点g}”;

步骤(17).判断是否所有的可用漏洞信息表均为空表,判断结果为“否”;

步骤(18).查询所有非空的可用漏洞信息表的访问标记,判断是否存在访问标记为“未访问”的可用漏洞信息表,判断结果为“是”;

步骤(19).从所有访问标记为“未访问”的可用漏洞信息表中,选出漏洞可用性累积概率值最大的一条可用漏洞信息,因此选择可用漏洞信息“[e,v4,ab(v1)e(v4),0.63]”,将该可用漏洞信息从可用漏洞信息表中移除,并将该可用漏洞信息表的访问标记设置为“已访问”,查询漏洞v4的漏洞利用的后果信息为“攻击者获取该结点上的管理员用户执行权限”,更新攻击者在结点e上的访问权限,设定结点e为当前结点,设定该攻击路径“ab(v1)e(v4)”为当前攻击路径,查询并判断所有能被结点e直接访问的结点上的漏洞,发现从结点e能够攻击结点g上的漏洞v6,且不存在攻击环路,因此将可用漏洞信息“[g,v6,ab(v1)e(v4)g(v6),0.315]”放入结点g的可用漏洞信息表中;

步骤(20).判定当前结点e属于目标结点集合“{结点e,结点g}”;

步骤(21).判断当前结点e已经输出的攻击路径的数量是否已满足要求,判断结果为“否”;

步骤(22).将当前攻击路径“ab(v1)e(v4)”写入当前结点e的攻击路径信息集合并输出;

步骤(23).判断当前结点e已经输出的攻击路径的数量是否已满足要求,判断结果为“否”,因此把当前攻击路径“ab(v1)e(v4)”记录于单轮次攻击路径集合,在待求解结点集合中将当前结点e标记为“已求解”;判定待求解结点集合不是空集并且该集合中元素“结点g”的标记为“未求解”;各结点的可用漏洞信息表中的具体内容和访问标记如图9所示;

步骤(24).判断是否所有的可用漏洞信息表均为空表,判断结果为“否”;

步骤(25).查询所有非空的可用漏洞信息表的访问标记,判断是否存在访问标记为“未访问”的可用漏洞信息表,判断结果为“是”;

步骤(26).从所有访问标记为“未访问”的可用漏洞信息表中,选出漏洞可用性累积概率值最大的一条可用漏洞信息,因此选择可用漏洞信息“[f,v5,ab(v1)f(v5),0.54]”,将该可用漏洞信息从可用漏洞信息表中移除,并将该可用漏洞信息表的访问标记设置为“已访问”,查询漏洞v5的漏洞利用的后果信息为“攻击者获取该结点上的管理员用户执行权限”,更新攻击者在结点f上的访问权限,设定结点f为当前结点,设定该攻击路径“ab(v1)f(v5)”为当前攻击路径,查询并判断所有能被结点f直接访问的结点上的漏洞,发现从结点f能够攻击结点g上的漏洞v6,且不存在攻击环路,因此将可用漏洞信息“[g,v6,ab(v1)f(v5)g(v6),0.27]”放入结点g的可用漏洞信息表中;各结点的可用漏洞信息表中的具体内容和访问标记如图10所示;

步骤(27).判定当前结点f不属于目标结点集合“{结点e,结点g}”;

步骤(28).判断是否所有的可用漏洞信息表均为空表,判断结果为“否”;

步骤(29).查询所有非空的可用漏洞信息表的访问标记,判断是否存在访问标记为“未访问”的可用漏洞信息表,判断结果为“是”;

步骤(30).从所有访问标记为“未访问”的可用漏洞信息表中,选出漏洞可用性累积概率值最大的一条可用漏洞信息,因此选择可用漏洞信息“[g,v6,ab(v1)e(v4)g(v6),0.315]”,将该可用漏洞信息从可用漏洞信息表中移除,并将该可用漏洞信息表的访问标记设置为“已访问”,查询漏洞v6的漏洞利用的后果信息为“攻击者获取该结点上的管理员用户执行权限”,更新攻击者在结点g上的访问权限,设定结点g为当前结点,设定该攻击路径“ab(v1)e(v4)g(v6)”为当前攻击路径,查询并判断所有能被结点g直接访问的结点上的漏洞,发现从结点g不能够攻击任何其它结点;

步骤(31).判定当前结点g属于目标结点集合“{结点e,结点g}”;

步骤(32).判断当前结点g已经输出的攻击路径的数量是否已满足要求,判断结果为“否”;

步骤(33).将当前攻击路径“ab(v1)e(v4)g(v6)”写入当前结点g的攻击路径信息集合并输出;

步骤(34).判断当前结点g已经输出的攻击路径的数量是否已满足要求,判断结果为“否”,因此把当前攻击路径“ab(v1)e(v4)g(v6)”也记录于单轮次攻击路径集合,在待求解结点集合中将当前结点g标记为“已求解”;判定待求解结点集合不是空集并且该集合中所有结点的标记均为“已求解”,依次读取单轮次攻击路径集合中的各条攻击路径,目前单轮次攻击路径集合中有两条攻击路径“ab(v1)e(v4)”和“ab(v1)e(v4)g(v6)”,攻击路径“ab(v1)e(v4)”上相应的可用漏洞信息表包括结点b上漏洞v1对应的可用漏洞信息表和结点e上漏洞v4对应的可用漏洞信息表,攻击路径“ab(v1)e(v4)g(v6)”上相应的可用漏洞信息表包括结点b上漏洞v1对应的可用漏洞信息表、结点e上漏洞v4对应的可用漏洞信息表和结点g上漏洞v6对应的可用漏洞信息表,分别将各条攻击路径上相应的可用漏洞信息表的访问标记设置为“未访问”;将待求解结点集合中的各结点标记为“未求解”;清空单轮次攻击路径集合;至此,指定目标结点集合中的各目标结点都已经输出了攻击路径,该轮次计算结束,下一轮次的计算开始;各结点的可用漏洞信息表中的具体内容和访问标记如图11所示;

步骤(35).判断是否所有的可用漏洞信息表均为空表,判断结果为“否”;

步骤(36).查询所有非空的可用漏洞信息表的访问标记,判断是否存在访问标记为“未访问”的可用漏洞信息表,判断结果为“是”;

步骤(37).从所有访问标记为“未访问”的可用漏洞信息表中,选出漏洞可用性累积概率值最大的一条可用漏洞信息,因此选择可用漏洞信息“[e,v4,ac(v2)e(v4),0.56]”,将该可用漏洞信息从可用漏洞信息表中移除,并将该可用漏洞信息表的访问标记设置为“已访问”,查询漏洞v4的漏洞利用的后果信息为“攻击者获取该结点上的管理员用户执行权限”,更新攻击者在结点e上的访问权限,设定结点e为当前结点,设定该攻击路径“ac(v2)e(v4)”为当前攻击路径,查询并判断所有能被结点e直接访问的结点上的漏洞,发现从结点e能够攻击结点g上的漏洞v6,且不存在攻击环路,因此将可用漏洞信息“[g,v6,ac(v2)e(v4)g(v6),0.28]”放入结点g的可用漏洞信息表中;

步骤(38).判定当前结点e属于目标结点集合“{结点e,结点g}”;

步骤(39).判断当前结点e已经输出的攻击路径的数量是否已满足要求,判断结果为“否”;

步骤(40).将当前攻击路径“ac(v2)e(v4)”写入当前结点e的攻击路径信息集合并输出;

步骤(41).判断当前结点e已经输出的攻击路径的数量是否已满足要求,因为结点e已经输出了两条攻击路径,判断结果为“是”,因此将当前结点e从待求解结点集合中删除,待求解结点集合中只剩下“结点g”;判定待求解结点集合不是空集并且该集合中元素“结点g”的标记为“未求解”;各结点的可用漏洞信息表中的具体内容和访问标记如图12所示;

步骤(42).判断是否所有的可用漏洞信息表均为空表,判断结果为“否”;

步骤(43).查询所有非空的可用漏洞信息表的访问标记,判断是否存在访问标记为“未访问”的可用漏洞信息表,判断结果为“是”;

步骤(44).从所有访问标记为“未访问”的可用漏洞信息表中,选出漏洞可用性累积概率值最大的一条可用漏洞信息,因此选择可用漏洞信息“[g,v6,ac(v2)e(v4)g(v6),0.28]”,将该可用漏洞信息从可用漏洞信息表中移除,并将该可用漏洞信息表的访问标记设置为“已访问”,查询漏洞v6的漏洞利用的后果信息为“攻击者获取该结点上的管理员用户执行权限”,更新攻击者在结点g上的访问权限,设定结点g为当前结点,设定该攻击路径“ac(v2)e(v4)g(v6)”为当前攻击路径,查询并判断所有能被结点g直接访问的结点上的漏洞,发现从结点g不能够攻击任何其它结点;

步骤(45).判定当前结点g属于目标结点集合“{结点e,结点g}”;

步骤(46).判断当前结点g已经输出的攻击路径的数量是否已满足要求,判断结果为“否”;

步骤(47).将当前攻击路径“ac(v2)e(v4)g(v6)”写入当前结点g的攻击路径信息集合并输出;

步骤(48).判断当前结点g已经输出的攻击路径的数量是否已满足要求,判断结果为“否”,将当前攻击路径“ac(v2)e(v4)g(v6)”记录于单轮次攻击路径集合,在待求解结点集合中将当前结点g标记为“已求解”;判定待求解结点集合不是空集并且该集合中的“结点g”的标记为“已求解”,依次读取单轮次攻击路径集合中的各条攻击路径,目前单轮次攻击路径集合中的攻击路径是“ac(v2)e(v4)g(v6)”,该攻击路径上相应的可用漏洞信息表包括结点c上漏洞v2对应的可用漏洞信息表、结点e上漏洞v4对应的可用漏洞信息表和结点g上漏洞v6对应的可用漏洞信息表,将该攻击路径上相应的可用漏洞信息表的访问标记设置为“未访问”;将待求解结点集合中的各结点标记为“未求解”;清空单轮次攻击路径集合;至此,在新一轮计算中,指定目标结点集合中的各目标结点都已经输出了攻击路径,该轮次计算结束,下一轮次的计算开始;各结点的可用漏洞信息表中的具体内容和访问标记如图13所示;

步骤(49).判断是否所有的可用漏洞信息表均为空表,判断结果为“否”;

步骤(50).查询所有非空的可用漏洞信息表的访问标记,判断是否存在访问标记为“未访问”的可用漏洞信息表,判断结果为“是”;

步骤(51).从所有访问标记为“未访问”的可用漏洞信息表中,选出漏洞可用性累积概率值最大的一条可用漏洞信息,因此选择可用漏洞信息“[e,v4,ad(v3)e(v4),0.49]”,将该可用漏洞信息从可用漏洞信息表中移除,并将该可用漏洞信息表的访问标记设置为“已访问”,查询漏洞v4的漏洞利用的后果信息为“攻击者获取该结点上的管理员用户执行权限”,更新攻击者在结点e上的访问权限,设定结点e为当前结点,设定该攻击路径“ad(v3)e(v4)”为当前攻击路径,查询并判断所有能被结点e直接访问的结点上的漏洞,发现从结点e能够攻击结点g上的漏洞v6,且不存在攻击环路,因此将可用漏洞信息“[g,v6,ad(v3)e(v4)g(v6),0.245]”放入结点g的可用漏洞信息表中;

步骤(52).判定当前结点e属于目标结点集合“{结点e,结点g}”;

步骤(53).判断当前结点e已经输出的攻击路径的数量是否已满足要求,判断结果为“是”;

步骤(54).判断是否目标结点集合中所有目标结点已经输出的攻击路径的数量均已满足要求,判断结果为“否”,因为目标结点g已经输出的攻击路径的数量小于设定值,各结点的可用漏洞信息表中的具体内容和访问标记如图14所示;

步骤(55).判断是否所有的可用漏洞信息表均为空表,判断结果为“否”;

步骤(56).查询所有非空的可用漏洞信息表的访问标记,判断是否存在访问标记为“未访问”的可用漏洞信息表,判断结果为“是”;

步骤(57).从所有访问标记为“未访问”的可用漏洞信息表中,选出漏洞可用性累积概率值最大的一条可用漏洞信息,因此选择可用漏洞信息“[g,v6,ab(v1)f(v5)g(v6),0.27]”,将该可用漏洞信息从可用漏洞信息表中移除,并将该可用漏洞信息表的访问标记设置为“已访问”,查询漏洞v6的漏洞利用的后果信息为“攻击者获取该结点上的管理员用户执行权限”,更新攻击者在结点g上的访问权限,设定结点g为当前结点,设定该攻击路径“ab(v1)f(v5)g(v6)”为当前攻击路径,查询并判断所有能被结点g直接访问的结点上的漏洞,发现从结点g不能够攻击任何其它结点;

步骤(58).判定当前结点g属于目标结点集合“{结点e,结点g}”;

步骤(59).判断当前结点g已经输出的攻击路径的数量是否已满足要求,判断结果为“否”;

步骤(60).将当前攻击路径“ab(v1)f(v5)g(v6)”写入当前结点g的攻击路径信息集合并输出;

步骤(61).判断当前结点g已经输出的攻击路径的数量是否已满足要求,因为结点g已经输出的攻击路径的数量为3,已满足要求,将当前结点g从待求解结点集合中删除,至此,判定待求解结点集合已经为空集,各结点的可用漏洞信息表中的具体内容和访问标记如图15所示;

步骤(62).汇总输出计算结果。在算法运行过程中,已经陆续输出了攻击指定目标结点集合中各个结点的多条攻击路径,其相关信息也已经记录在各个结点的数据结构中,在该步骤中,可以根据实际需要,汇总输出需要查看的计算结果。

对于该实施例,若采用专利1公开的方法求解,因为该方法采用分轮次求解的策略,在求解攻击结点g的前3条最大概率攻击路径的同时,也会计算并输出攻击结点f的前3条最大概率攻击路径,所以结点f所对应的可用漏洞信息表中的两条可用漏洞信息“[f,v5,ac(v2)f(v5),0.48]”和“[f,v5,ad(v3)f(v5),0.42]”会被选择和计算;本发明提供的方法能够根据指定目标结点集合的信息有选择的对各结点的可用漏洞信息表进行标记和选取,在计算过程中判断出结点f所对应的可用漏洞信息表中的两条可用漏洞信息“[f,v5,ac(v2)f(v5),0.48]”和“[f,v5,ad(v3)f(v5),0.42]”不影响最终计算结果,所以不选取上述两条可用漏洞信息,从而减少了计算量,在网络规模较大且指定目标结点集合中的结点数量较少的情况下,本发明提供的方法能够极大的减少计算量,从而减少计算时间,提高攻击路径输出的实时性,另一方面,本发明提供的方法也能够分轮次输出攻击指定目标结点集合中各目标结点的攻击路径,对于不属于目标结点集合的结点f,则不会在每个轮次中都输出攻击路径。

在该实施例中,漏洞利用的后果信息均为“攻击者获取该结点上的管理员用户执行权限”,因此为每个结点建立了一个可用漏洞信息表,在具体实施过程中,可以根据具体情况和需要对多种漏洞利用的后果信息进行分类,为每个结点建立多个可用漏洞信息表。

以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等同物界定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1