APP下载

一种基于攻击树的渗透测试模型

2016-10-12刘棣华毛忠亮

长春工业大学学报 2016年4期
关键词:子目标实现目标结点

刘棣华,毛忠亮

(长春工业大学 计算机科学与工程学院, 吉林 长春 130012)



一种基于攻击树的渗透测试模型

刘棣华,毛忠亮

(长春工业大学 计算机科学与工程学院, 吉林 长春130012)

借鉴攻击树理论,设计了一种基于攻击树的渗透测试模型,并给出了基于攻击树的渗透测试流程。

网络安全; 渗透测试; 攻击树; 攻击模型

0 引 言

渗透测试是近年来新兴的一种网络安全方法。大多数人认为渗透测试的目的是入侵某个网络或某台计算机,这是一种不全面的认识。渗透测试的真正目的是发现目标网络中不安全因素,从而对网络安全性进行评估,并提出相应的应对策略。渗透测试是通过模拟恶意黑客的攻击方法来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个位置有条件的主动利用安全漏洞。测试人员需要向目标网络管理员提供网络安全状态分析结果,而网络管理员根据分析结果找到网络的脆弱性和薄弱环节,并制定相应的安全计划。

随着网络安全漏洞种类的不断增多,导致渗透测试技术、工具和框架变得越来越复杂,一次有效而全面的渗透测试需要运用多种攻击技术,这就需要一个渗透测试模型来指导测试。但现有的渗透测试模型主要是采用线性遍历漏洞进行测试,如OSSTMM、NISTSP-800-42。这些渗透测试模型往往会忽略漏洞之间的逻辑关系,孤立地看待网络的安全性,很难体现出多阶段网络攻击和协同攻击。这与现实中的黑客攻击过程有很大的区别,很难模拟实际的网络攻击,并且过度依赖测试人员的专业能力。因此,为弥补现有渗透测试模型的不足,渗透测试需要一种既能够模拟网络攻击过程,又可以有效组织测试项目的测试模型。研究人员借鉴成熟的攻击建模思想来构造渗透测试模型。周晓俊[1]等通过对渗透测试流程和渗透测试技术的优缺点分析,改进了渗透测试流程;陈国栋[2]等基于网络攻击图在自动渗透测试中的应用中提出了一种新的网络攻击图自动生成及优化方法;周伟[3]等提出了一种基于树结构的网络渗透测试系统。杨涛[4]等提出基于有色Petri网的渗透测试模型。

文中借鉴BruceSchneier提出的攻击树的概念对其进行优化,提出一种基于攻击树的渗透测试模型。该模型简化了一些测试前不必要的网络扫描,节省了资源(如时间、带宽等),并考虑到了目标网络信息的不完整性和具体的网络环境,使渗透测试过程更符合现实的网络攻击。

1 基于攻击树的渗透测试模型的设计

1.1攻击树概念

BruceSchneier[5]在1999年首次提出了攻击树的概念。攻击树提供了一种正式而条理清晰的方法来描述系统所面临的安全威胁和系统可能受到的多种攻击。攻击树具有多级节点,其中包括根节点、非叶节点、叶节点。

在攻击树模型中,用一种树状结构描述系统面临的安全威胁和可能受到的安全攻击。其中根节点表示最终的目标,非叶节点表示攻击的子目标,叶节点表示达到目标的不同方法,叶节点可根据具体的网络环境实例化为具体事件或方法。节点之间的关系有“或”、“与”、“顺序与”三种关系。“或”关系表示任一子结点目标的取得都可以导致父结点目标的取得。“与”关系表示所有子结点目标的取得才可以导致父结点目标的取得。“顺序与”关系表示所有子结点目标的按顺序取得才可以导致父结点目标的取得[6-9]。

攻击树模型中的节点关系表示方法如图1所示。

图1 攻击树模型中的节点关系表示方法

对一棵给定的攻击树,通过对各个节点的赋值和计算,可以从树的某一个叶节点开始找到一条能够实现攻击目的路径。文中对攻击树模型进行了优化,针对树中的或结点,假设G是目标节点,而{A1,A2,…,An}是可以独立地实现目标节点G的子节点,Pk、Tk分别是子节点Ak的执行成功的概率和预期的开销。这些子节点按照Tk/Pk的比值,以从小到大的顺序排列,然后按排完序的顺序依次执行这些子节点相应的攻击动作,直到获得目标节点G或者这些攻击动作执行失败;针对树中的与节点,假设G是目标,子节点 {A1,A2,…,An}是需要全部执行完毕才可以实现目标G的一组子节点,Pk、Tk分别是子节点Ak的执行成功的概率和预期的开销,这些攻击动作按Tk/Pk的比值,以从大到小的顺序排列,然后按排完序的顺序依次执行这些子节点的攻击动作,直到有一个子节点执行失败或者这些子节点攻击动作执行全部成功,实现目标G。按照Tk/Pk从大到小的顺序执行,如果有一个子节点Ak执行失败,其后的攻击动作就不用执行了,从而减少了不必要的开销[10-11]。

1.2设计思想

基于攻击树的渗透测试模型以攻击树理论为基础,并以优化的攻击树作为模型指导测试[12]。设计思路是树的根节点表示渗透测试的最终目标,非叶节点表示渗透测试的子目标,叶节点表示达到目标的不同方法,测试人员根据所了解的目标网络信息,并可依据这些信息进行从叶节点进行测试。这样通过对各个节点的赋值和计算,可以从树的某一个叶节点开始找到一条能够实现攻击目的,同时成功概率又比较大或开销较低的攻击路径。根据以上思路,基于攻击树的渗透测试模型可分为3个步骤:

1)以渗透测试的最终目标作为根节点,依据相应的攻击树生成算法构造出攻击树。

2)根据生成的攻击树,生成相应的攻击路径。

3)执行相应的测试过程。

1.3攻击树的构造

攻击树是一个树状结构,由根节点、非叶节点、叶节点组成。根节点是攻击目标,达到目标的不同方法则用叶节点表示,非叶节点表示各个子目标。节点之间的关系有“或”、“与”、“顺序与”三种关系。将渗透测试的最终目标作为根节点,根据要实现的最终目标,按照1.1中所述的针对与节点、或节点的策略,依次地添加完成最终目标所需的子目标,然后递归地添加实现子目标所需的方法,以自顶向下的方式构造出一棵攻击树。我们可以归纳出构建攻击树的一般步骤:

1)确定目标,每个目标都是单独的攻击树。

2)添加实现目标所需的子节点,这些子节点可以是“或”、“与”、“顺序与”的关系,也可以是用直接实现目标的攻击方法作为子节点。

3)添加实现子节点的攻击方法。

我们以取得一个WebServer最高管理权限为例,来说明攻击树的构建。

G0获取WebServer最高管理权限

G1确定WebServer

G2确定防火墙、IP地址

G21查询域名服务器

G22扫描防火墙

G23通过防火墙追踪WebServer

G3确定防火墙的访问权限

G31搜寻特定的缺省的监听端

G32广泛的扫描所有开放端口

G4确定WebServer所使用的操作系统

G41通过扫描操作系统的BANNER来确定

G42探测TCP/IP栈来确定操作系统的特征信息

G5利用WebServer系统的脆弱性进行攻

G51直接根据局域网内敏感共享信息

G52通过WebServer特权账号取得特定数据的

WebServer的攻击树如图2所示。

图2WebServer的攻击树

通过图2可以看出,取得目标G0需要实现子目标G1、G2、G3、G4、G5,而实现子目标又需要添加相应的分支节点,这样就可递归地构造出攻击树。

1.4攻击路径的生成

依据生成的攻击树,通过对各个节点的赋值和计算按照深度优先的策略,从叶节点开始,以自底向上的方式寻找出可以获得最终目标的最佳路径。节点的属性值包括取得上层目标的预期开销和成功的概率。开销包括时间、带宽等。

针对树中的或结点,假设G是目标节点,而{A1,A2,…,An}是可以独立地实现目标G的子节点,Pk、Ck分别是子节点Ak的执行成功的概率和预期的开销。这些子节点按Ck/Pk的比值,以从小到大的顺序排列,然后按排完序的顺序依次执行这些攻击动作,直到获得目标G或者这些攻击动作执行失败。

例如或节点G1有两个子节点A1,A2。A1的预期开销(假设仅包括时间)为C1,成功概率为P2;A2的预期开销为C2,成功概率为P2。由于两个子节点是相互独立的,所以预期的运行时间为C1+(1-P1)C2或者 C2+(1-P2)C1。

假设

则可推出

C1/P1

推导过程如下:

所以子节点按Ck/Pk的比值,以从小到大的顺序排列,按照这个顺序执行相应渗透测试步骤。拥有4个子节点的“与节点”,这4个子节点的执行顺序见表1。

表1 4个子节点的执行顺序

针对树中的与节点,假设G是目标,子节点{A1,A2,…,An}是需要全部执行完毕才可以实现目标G,Pk、Ck分别是子节点Ak的执行成功的概率和预期的开销,这些子节点按Ck/Pk的比值,以从大到小的顺序排列,然后按排完序的顺序依次执行这些攻击动作,直到有一个子节点执行失败或者这些子节点执行全部成功,实现目标G。由于需要全部子节点执行成功,才能取得上层目标,所以按照Ck/Pk从大到小的顺序执行,如果有一个子节点Ak执行失败,其后的攻击动作就不用执行了,从而减少了不必要的开销。

依据上述关于或节点和与节点的策略,从叶节点开始,以自底向上的方式寻找出可以获得最终目标的最佳路径。

1.5执行相应的渗透测试

根据测试者对被测试网络的了解程度,分为零知识测试(zero-knowledgetest)和全知识测试(full-knowledgetest),分别表示测试者对被测网络的情况完全不了解和有一定了解。在执行渗透测试之前,应该采集目标网络的信息。由此可见,信息采集对于保证渗透测试的准确性至关重要。信息采集包括端口扫描、远程操作系统扫描、漏洞扫描和数据预处理。将采集到的基本信息如开放端口、存在的漏洞等通过数据预处理形成一种结构化数据。例如要执行LSASS缓冲区溢出测试,则要确定目标主机h的139端口是否开放、主机h是否存在LSASS漏洞和主机h的权限。而前两者的数据类型可用布尔值表示,后者的数据类型可用枚举类型值表示。依据生成的最佳攻击路径和采集到的基本信息执行相应的渗透测试。

1.6基于攻击树的渗透测试模型结构

由上述的3个步骤可构建出攻击树模型的基本结构。主要包括4个模块:构建攻击树、生成攻击路径、信息采集和数据预处理、执行渗透测试。如图3所示。

图3 基于攻击树的渗透测试模型结构

基于攻击树的渗透测试模型流程如下:

1)将最终的目标作为根节点,构建攻击树。

2)基于或节点和与节点策略,生成最佳攻击路径。

3)采集目标网络信息并进行数据预处理,然后按照生成的最佳路径执行渗透测试。如果执行成功,报告攻击成功并退出;如果执行不成功,从攻击树中找到次最佳攻击路径,继续执行渗透测试。如果遍历了攻击树中的所有路径都没有执行成功,则根据渗透测试所得到信息重新构造攻击树,重复执行上述流程。

1.7以基于攻击树的渗透测试模型实施IP-Spoofing攻击

网络中的一些攻击一般都是利用一些系统、软件、协议的不完善之处或漏洞发起的。下面是一个典型的IP-Spoofing攻击。

当主机A需要访问主机B时,要用到TCP协议与主机B通过3次握手建立连接,入侵者要冒充主机A与主机B进行连接。以G0:对B的IP-Spoofing攻击为根节点,要实现目标G0,则首先要使主机A瘫痪,不能回应主机B的SYN-ACK包,然后猜测主机B的连接初始值y,发送ACK(Y+1)来冒充主机A与主机B连接,最后进行访问主机B。由此可由根节点G0扩展出子节点G1(使主机A瘫痪)、G2(冒充主机A与主机B进行连接)、G3(访问主机B),并且子节点G1、G2、G3是“顺序与”的关系。要实现G1(使主机A瘫痪),则可通过一些DOS攻击,如Land、SYN-FLOODING、DDOS等,有节点G1又可扩展出G4(Land攻击)、G5(SYN-FLOODING攻击)、G6(DDOS攻击),节点G4、G5、G6是“或”的关系,按1.1所述的针对或节点的策略,对G4、G5、G6进行排序,假设顺序为G4、G5、G6;要实现G2,通过当前的一些IP-Spoofing工具即可。由以上分析构造出攻击树,如图4所示。

图4IP-Spoofing的攻击树

由构造好的攻击树,根据1.1中针对与节点、或节点的策略,生成最佳攻击路径Path1:G4、G1、G2、G3、G0。根据生成的最佳路径,进行信息采集和数据预处理,执行相应的渗透测试;如果路径Path1执行不成功,根据攻击树生成次最佳路径Path2:G5、G1、G2、G3、G0,继续执行相应的渗透测试;如果Path2执行不成功,根据攻击树生成路径Path3:G6、G1、G2、G3、G0,继续执行相应的渗透测试。如果遍历了攻击树中的所有路径都没有执行成功,则根据渗透测试所得到信息,重新构造攻击树,重复执行上述流程。根据此模型生成的路径实施SYN-FLOODING攻击,可使与目标主机B建立连接,并且避免了一些不必要的网络扫描,节约了带宽和时间。

2 结 语

借鉴攻击树理论设计了一个基于攻击树的渗透测试模型,并给出了基于攻击树的渗透测试流程。攻击树模型利用攻击树组织渗透测试,能够实现对攻击过程的模拟和测试过程的控制。在今后的研究中,还需要根据这个模型的思想构建基于攻击树模型渗透测试系统。

[1]周晓俊,刘向东.网络渗透测试技术研究[J].计算机安全,2007,24(4):285-288.

[2]陈国栋,杨光临,段晓辉.网络攻击图在自动渗透测试中的应用[J].计算机工程,2008(7):115-118.

[3]周伟,王丽娜,张焕国.一种基于树结构的网络渗透测试系统[J].计算机与数字工程,2006,12:15-18.

[4]杨涛,郭义喜,张弘.有色Petri网在渗透测试中的应用[J].计算机工程,2009,35(1):156-185.

[5]Schneier,Bruce.Attacktrees[J].Dr.Dobb'sJournalofSoftwareTools.,1999,24(12):21-29.

[6]JLucangeli,CSarraute,GRicharte.Attackplanningintherealworld[C]//WorkshoponIntelligentSecurity,2010.

[7]KevinPHaubris,JoshuaJPauli.ImprovingtheEfficiencyandEffectivenessofPenetrationTestAutomation[C]//2013 10thInternationalConferenceonInformationTechnology,2013.

[8]BruceSehncier.SecretsandLies:Digitalsecurityinanetworkedworld[J].JohnWiley&Sons,2000,34:521-526.

[9]CynthiaPhillips,LauraSwiler.Agraph-basedsystemfornetwork-vulnerabilityanalysis[J].ACM,1998:71-79.

[10]MGunter,TBraun.Internetservicemonitoringwithmobileagents[J].IEEENetwork,2002,16(3):22-29.

[11]LuShen,XiaoYanLiang,YangBo,etal.AutomaticGenerationforPenetrationTestingSchemeAnalysisModelforNetwork[C]//2011ComputationalandInformationSciences(ICCIS),2011.

[12]廖晓勇,连一峰,戴英侠.网络安全检测的攻击树模型研究[J].计算机工程与应用,2005(3):108-110.

An attack tree based model of penetration testing

LIU Dihua,MAO Zhongliang

(School of Computer Science & Engineering, Changchun University of Technology, Changchun 130012, China)

Withattack-treetheory,wedesignapenetrationtestingmodelbasedontheattack-treeandprovidethepenetrationtestingprocess.

networksecurity;penetrationtesting;attack-tree;attackmodel.

2016-05-07

刘棣华(1957-),男,汉族,黑龙江哈尔滨人,长春工业大学教授,博士,主要从事计算机网络安全方向研究,E-mail:liudihua@ccut.edu.cn.

10.15923/j.cnki.cn22-1382/t.2016.4.11

TN915.08

A

1674-1374(2016)04-0367-05

猜你喜欢

子目标实现目标结点
稀疏奖励环境中的分层强化学习①
基于八数码问题的搜索算法的研究
雷达群目标跟踪条件下的弹道预报方法
浅谈测绘手段与实现耕地保护动态平衡的关系
两次求导 实现目标
基于子目标进化算法的要地防空武器系统优化部署
高中语文课堂教学中的师生互动探究
基于Raspberry PI为结点的天气云测量网络实现
船舶修理企业信息化管理系统浅析
企业经营决策方案评价的敏感度分析