基于权限提升矩阵的攻击图生成方法

2019-02-22 02:49秦虎王建利彭逍遥
北京理工大学学报 2019年1期
关键词:复杂度攻击者漏洞

秦虎, 王建利, 彭逍遥

(中国信息安全测评中心,北京 100085)

在风险评估和渗透测试过程中,漏洞扫描是一项非常重要的工作. 然而,传统的漏洞扫描仅单独报告每个漏洞的名称、类型、危害、修复建议等信息,对于目标系统之间、各个漏洞之间的关系却难以分辨,因而无法凸显整个信息系统最薄弱的环节. 为了解决该问题,学术界提出了许多尝试对网络攻击进行模型描述的安全评估模型,其中攻击图是最为常用的模型之一[1]. 攻击图分析模型加入了攻击行为模拟和过程执行[2],能够直观地展示攻击者可能的攻击路径,进一步揭示各个漏洞之间的关联性以及综合利用所有漏洞可能造成的危害. 利用攻击图,可以对信息系统进行风险分析、可靠性分析、最短攻击路径分析等[3]更加深入的分析.

最初,Phillips和Swiler等[4-5]提出了攻击图的概念,但构建模型过于复杂,且只能由渗透测试人员手工绘制;Ritchey等[6]提出了模型检测的方法用于分析网络的脆弱点,但模型过于简单,无法表现某些复杂的攻击行为. Sheyner等[3]同样使用了模型检测的方法,首次自动构建攻击图;冯慧萍等[7]提出基于可靠性理论的脆弱性分析模型,使用模型检验迭代算法搜索状态集合的技术自动构建攻击图;Bhattacharya等[8]提出利用智能规划技术自动构建攻击图. 以上3种方法虽然可以自动构建攻击图,但由于需要对目标网络和攻击者的状态之间的相互作用关系进行综合分析,因此不可避免地存在状态爆炸的问题[9],无法应用于大规模的目标网络. 为了解决该问题,Ammann等[10]首次提出攻击者能力的单调性假设,即假设攻击者在攻击过程中的攻击能力是不断增长的,且已经获得的能力在每次原子攻击中都不会失去,并在该假设的基础上将攻击图构建的复杂度由指数复杂度降为多项式复杂度;Ou等[11]基于逻辑编程技术生成逻辑攻击图的方法,进一步降低了生成攻击图的复杂度,并用实验验证了该方法可以在20 min以内生成1 000台主机规模的网络攻击图;陈峰[12]在提出AGML建模语言的基础上,使用攻击模式过滤技术、属性压缩技术和实例化检查技术3中优化技术对攻击模式和属性进行预处理,从而降低算法复杂度;叶云等[13]采用了陈峰提出的AGML建模语言,通过预先将目标环境属性按照主机和谓词分类,从而减少匹配次数,降低算法复杂度.

本文对攻击图构建过程进行研究,提出一种基于权限提升矩阵的攻击图生成方法. 该方法在攻击模式库和目标环境描述基础上,将权限提升作为攻击者攻击能力提升的判断标准,以矩阵描述目标网络中主机之间的关系,根据目标环境描述生成权限提升矩阵,并以权限提升矩阵为依据生成攻击图.

1 攻击图生成方法建模

1.1 攻击图的定义

攻击图采用有向图的方式表示攻击者如何逐步获取目标网络控制权限的攻击路径,通常由节点和边组成. 在过去的研究中,研究者先后提出状态攻击图、属性攻击图、渗透依赖攻击图、属性依赖攻击图、逻辑攻击图、聚合攻击图等多种攻击图表示方法[14]. Ammann提出的属性依赖攻击图[10]可清晰地显示属性转换前后的依赖关系. 本文参考属性依赖攻击图,现将攻击图定义如下.

定义1攻击图AG=(A0∪Ad,E),其中,A0表示攻击者和目标网络在攻击逐步实施后可达的属性节点集合,Ad表示攻击者和目标网络的初始属性节点集合,E为有向边集合,表示所有的原子攻击.

1.2 攻击模式库

攻击模式是指攻击者利用一类软件漏洞进行的攻击方式的抽象描述,可以由具体的属性实例化为原子攻击. 本文采用攻击模式库存储攻击者可以采取的攻击模式,且以面向漏洞的方式描述攻击模式. 攻击模式可以形式化地描述为三元组AttackPattern=〈Pre,Vuls,Eff〉,其中,Vuls为目标主机存在的安全漏洞,可包括一个或多个安全漏洞,当Vuls数目为两个或两个以上时表示须结合多个漏洞实现该攻击模式;Pre为攻击的前提条件,包括针对主机进行攻击所需的权限、Vuls对应的服务及其运行权限;Eff为攻击产生的结果,包括获取权限、拒绝服务、非身份信息泄露.

需要特别说明的是,相较于其他文献中的攻击模式,本文的攻击模式库模型做了必要的简化,不再将攻击者可能实施的正常操作行为列为单独的攻击模式,如远程登陆等. 例如,本文不将“通过远程FTP写入漏洞修改.rhosts文件,并远程SSH登录”这种攻击行为描述为“通过远程FTP写入漏洞修改.rhosts文件”和“远程SSH登录”两种攻击模式,而是合并为一种,其攻击前提条件Pre中的服务合并为“FTP服务及SSH服务”. 同样,在攻击图中也表示为一种原子攻击.

1.3 目标环境描述

目标环境描述是对目标网络环境中的主机配置、网络配置、存在漏洞等信息的形式化描述. 目标环境可以形式化地描述为二元组Scenario=〈Hosts,Connections〉,其中Hosts为主机信息集合,以〈HostID,Vuls,InitPriv〉描述,意为主机HostID存在漏洞Vuls,攻击者在该主机上拥有初始权限InitPriv;Connections为连接信息集合,以〈HostSrc,HostDst,Services〉描述,意为主机HostSrc可以访问主机HostDst的Services服务.

1.4 攻击图生成算法

绝大部分情况下,攻击者攻击能力的提升都可以归结为权限的提升,当攻击者获得某台主机的攻击权限后,即获得了攻击与该主机相连的其他主机的能力. 在某些特殊情况下,攻击者在攻击过程中可能获取改变网络连接情况的能力,例如攻击者获取防火墙或网闸的控制权限并可以随意更改网络配置的情况,但是由于与具体网络配置结合过于紧密,导致攻击后果难以预测,这些特殊情况很难抽象为通用的攻击模式. 因此,在本文的攻击图生成方法中,仅考虑通用情况下的攻击图生成,即本文假设网络连接情况在攻击过程中是不会发生改变的. 同样,目标网络中主机的服务运行情况和存在漏洞情况也不会随着攻击者的攻击而发生改变. 可见,网络连接情况、服务及其运行权限仅可作为攻击模式的前提属性,拒绝服务、非身份信息获取尽可作为攻击模式的结果属性,而攻击者的权限既可作为前提属性,也可作为结果属性. 因此,本文将攻击者权限的提升作为攻击图构建的接力点.

本文以矩阵描述各主机之间的关系,下面给出几个矩阵的定义.

定义2网络连接矩阵C={Cij},当i=j时,Cij=0;当i≠j时,Cij=1表示第i个主机可以访问第j个主机存在漏洞的服务,Cij=0表示第i个主机无法访问第j个主机存在漏洞的服务.

定义3主机远程漏洞矩阵V={vij},当i≠j时,vij=0;当i=j时,vij为第i个主机存在的远程漏洞ID列表.

定义4权限提升矩阵R={rij},当i=j时,rij=0;当i≠j时,rij为漏洞列表表示攻击者可以由第i个主机利用相关漏洞获取第j个主机的控制权限,rij=0表示攻击者无法由第i个主机获取第j个主机的控制权限.

给定一个n台主机的目标网络,其目标环境描述为Scenario,所有主机按照0~n标号,那么攻击图的生成过程可分为权限提升矩阵计算和攻击图生成2个过程. 权限提升矩阵计算的步骤如下:

① 设置一个n维主机权限记录向量d={di},di=0表示攻击者未获得第i个主机的控制权限,di=1表示攻击者获得了第i个主机的user权限,di=2表示攻击者获得了第i个主机的root权限. 攻击者不会重复获取已经获取过的控制权限[15],主机权限记录向量可用于记录权限获取情况,避免重复计算攻击路径,从而降低运算量;

② 遍历目标环境描述Scenario中的Hosts集合,生成主机远程漏洞矩阵V,同时初始化权限记录向量d;

③ 在遍历的同时,根据其中的Vuls查询攻击模式库,匹配相应的攻击模式,得到部分实例化[11]攻击模式集合PartialAP,并将PartialAP按照漏洞的远程或本地属性分为远程攻击模式集合rPartialAP和本地攻击模式集合lPartialAP,即PartialAP=rPartialAP∪lPartialAP;

④ 遍历rPartialAP,根据其中的Vuls对应服务遍历目标环境描述Scenario中的Connections集合,以“源主机是否可访问目标主机存在漏洞的服务”为标准生成网络连接矩阵C;

⑤ 计算权限提升矩阵R,R=CV;

攻击图生成的步骤如下:

① 设置一个n维主机遍历记录向量t={ti}并初始化为零向量,ti=0表示攻击图未遍历至该主机,否则反之;

② 计算g=d⊕t,其中⊕为自定义运算,表示两向量对应值进行异或运算,即gi=di⊕ti. 若g为零向量,则转到步骤⑥;若g非零向量,则进行步骤③;

③ 遍历向量g中不为0的值,对于gi≠0,首先设置ti=1,然后遍历权限提升矩阵R的行向量rj={rj0,rj1,…rjn},根据dj和rjk的值设置dk为相应的权限值,并生成相应的记录语句用于生成攻击图,若tk=1,则忽略该攻击路径,以避免在攻击图中产生环;

④ 更新dk的值后,根据dk的值遍历本地攻击模式集合lPartialAP,查询是否存在可本地提权的原子攻击,若存在,则继续更新dk和tk的值并生成相应的记录语句;

⑤ 转到步骤②继续执行循环;

⑥ 循环结束,根据记录语句生成攻击图.

1.5 算法复杂度分析

在权限提升矩阵计算过程中,由于攻击模式库中的攻击模式数量是一定的,因此步骤②和步骤③的复杂度O(aN),其中a为常数;目标环境描述Scenario中的Connections集合元素的最大数量可能为N2,因此步骤④的复杂度为O(N3);步骤⑤的复杂度为O(N2). 攻击图生成过程的实质是遍历所有可以获得控制权限的主机,尝试能否以其作为跳板获取其他主机的权限,因此该过程的复杂度为O(N2). 因此算法整体的复杂度约为O(N3).

2 实 验

本文搭建实验网络验证了本文中的攻击图生成算法,如图1所示.

实验网络中共有6台计算机,分别以数字1~6作为标号. 1号计算机为攻击主机,攻击者拥有其完全控制权限;1号主机通过互联网可访问2号主机,由于中间有防火墙拦截,仅可访问其Web服务;2号主机可访问3、4、5号主机,3号和5号主机为个人计算机,4号主机为服务器,运行Windows 2003操作系统和Internet Information Services 6.0服务;4号主机可访问6号个人主机. 本文引用CVE(common vulnerabilities exposures)漏洞编号. 目标网络中所有主机的漏洞信息如表1所示.

图1 实验网络环境Fig.1 Experimental network environment

表1 实验网络漏洞信息

根据目标网络信息描述,可以按照本文算法分别得出网络连接矩阵C、主机远程漏洞矩阵V如下:

经计算可得,权限提升矩阵R如下:

作为一种新兴市场营销模式的低碳市场营销模式,在现实生活中还是会面临很多意想不到的挑战。从企业来说,如果想要真正实施低碳市场营销模式,势必会要彻底改变传统的生产模式,将低碳的优势和理念融入到企业发展的每一个细节中。从实践来说,要探讨企业在碳关税、碳交易等多方面所要克服的困难,进而积极改进发展思路,为企业的长远发展奠定坚实的基础。

主机权限记录向量初始化为

d=[200000],

主机遍历记录向量初始化为

t=[000000].

按照本文算法的攻击图生成步骤,可生成攻击图如图2所示.

图2 实验网络攻击图Fig.2 Attack graph of experimental network

其中包含4种原子攻击:

① struts_exe:Struts2远程代码执行攻击;

② local_bof:本地缓冲区溢出(local buffer overflow)提权攻击;

④ iis_bof:IIS远程缓冲区溢出攻击.

3 结 论

对攻击图构建过程进行了研究,提出了网络连接矩阵、主机远程漏洞矩阵和权限提升矩阵,并通过对攻击模式库和目标环境描述的模型化分析,提出了基于权限提升矩阵的攻击图生成方法,可以实现以O(N3)算法复杂度生成攻击图. 由于在本文的算法模型中,对攻击者能力提升模型进行了一定程度的简化,因此仅适用于通用的网络攻击图生成. 在下一步的工作中,可继续丰富本文算法中的矩阵模型,从而能够适用于更多的网络攻击场景.

猜你喜欢
复杂度攻击者漏洞
漏洞
基于贝叶斯博弈的防御资源调配模型研究
数字经济对中国出口技术复杂度的影响研究
毫米波MIMO系统中一种低复杂度的混合波束成形算法
Kerr-AdS黑洞的复杂度
非线性电动力学黑洞的复杂度
正面迎接批判
正面迎接批判
侦探推理游戏(二)
漏洞在哪儿