当前位置: 查字典论文网 >> 面向自动化建模的软件攻击技术分类分析

面向自动化建模的软件攻击技术分类分析

格式:DOC 上传日期:2016-10-14 12:57:45
面向自动化建模的软件攻击技术分类分析
时间:2016-10-14 12:57:45     小编:

对软件攻击过程进行建模可以形象化描述复杂的攻击过程。目前对软件攻击过程建模的研究很少,文献提出基于攻击经验的软件攻击建模方法,整个建模过程靠手工完成,但手工建模方法效率低不具有通用性,即相同攻击者对不同攻击过程或不同攻击者对相同攻击过程的建模结果有差异。通过自动化创建攻击模型,规范建模过程可以解决该问题。

对软件攻击过程进行自动化建模实际上就是用模型化的语言自动描述一个软件攻击过程。因此,首先需要深入了解软件攻击过程,而软件攻击技术作为描述攻击过程的重要属性,在整个攻击过程中起到了主要的作用,对其进行研究有助于了解软件攻击过程,且为实现自动化创建攻击模型奠定基础。

看雪论坛、吾爱破解论坛和国外Tuts4 You 上提出了多种软件的攻击技术,但是这些攻击技术复杂多变,不成体系,研究人员难以深入理解和分析。通过对软件攻击技术进行分类有助于理解软件攻击过程。目前对软件攻击技术分类的研究主要是基于技术性质、攻击目的、保护方法和经验术语。此外,文献对常用的软件攻击工具进行分类研究。但上述方法存在以下缺点: 1) 分类结果不清晰; 2) 软件攻击技术的属性信息描述不完整; 3) 不能满足自动化创建攻击模型的需求。

另外,对网络攻击技术的分类研究已经进行多年,其中包括不同的分类体系和基于分类结果的攻击建模。分类体系主要包括单属性分类体系、多维分类体系、列表性分类体系和树形分类体系。基于分类结果的攻击建模主要包括文献和DetectClass 分类方法。但软件攻击过程与网络攻击过程不同,软件攻击过程没有明确的攻击阶段,相同的攻击技术可以被使用到不同的攻击过程中。因此传统的网络攻击技术分类方法不适用于软件攻击技术的分类。

提出面向自动化建模的软件攻击技术分类方法,该方法分析并获取软件攻击技术在自动化建模时所必须的特征属性信息,对软件攻击技术进行描述、分类,实现自动化建模,并根据Amoroso 分类标准对POPDDA 做出评价。

1 面向自动化建模的软件攻击技术分类

1. 1 软件攻击自动化建模过程及需求

软件攻击自动化建模过程包括: 一是确定攻击目标和分析可利用资源,在攻击实施前收集对攻击可以起到帮助作用的资源信息; 二是确定可用攻击技术; 三是利用自动化模型构建算法实现高效、全面、简洁的模型构建; 四是利用数据结构有效地表示攻击模型。其中,在确定可用攻击技术部分,需要根据攻击技术在自动化建模过程中的属性信息,确定其是否为可用技术,为进一步实现自动化建模奠定基础。

根据软件攻击自动化建模的一般过程分析得出,自动化建模应具备以下特征: 1) 在建模过程中结合攻击目的,根据不同攻击目标和攻击对象( 或针对不同的保护方法) ,在不同攻击阶段,自动化确定攻击技术; 2) 在建模过程中,结合可利用资源,根据攻击技术之间的依赖关系,自动化的创建攻击模型; 3) 在同一个攻击阶段的不同攻击技术之间应该有不同的优先级之分。

软件攻击技术是攻击过程中一个重要的内在属性,攻击者在攻击过程中的不同阶段,为实现不同的攻击子目的而使用不同的攻击技术,从而实现最终的攻击目标。因此以自动化建模的一般过程和实现自动化建模应该满足的条件为依据,从软件攻击技术角度出发分析其为满足自动化建模的需求应该具备的属性特征。

考虑以下情形: 一是对攻击者而言,每次攻击都具有明确的攻击目的。为实现最终的攻击目的,需要将整个攻击过程分解为不同的阶段,每个攻击阶段有其具体的攻击子目的,攻击子目的按照一定的顺序逐个实现就达到了最终的攻击目的。那么为实现攻击子目的就要依靠具体的软件攻击技术。因此攻击目的就是软件攻击技术在自动化建模过程中的一个重要属性。二是在攻击过程中,不是所有的攻击技术都针对于整个软件结构,而是根据不同的攻击目的有其明确的攻击对象。明确的攻击对象在一定程度上有助于提高攻击效率,因此攻击对象也是软件攻击技术在自动化建模过程中的一个重要属性。三是攻击技术不是独立存在的,而是互相之间存在一定的依赖关系。例如,在对虚拟机进行攻击的过程中,首先需要对虚拟机结构进行正确的定位与提取,然后才能对虚拟机中的handler 进行分析。在该类攻击过程中,定位关键代码段攻击技术和代码分析技术是存在依赖关系的。因此,攻击技术的依赖关系属性也为自动化建模起到了关键作用。四是软件攻击技术的一个特别重要的属性则是其对应的软件保护方法,针对于每种软件保护方法有着相对固定的攻击过程。在自动化建模过程中,若已知软件的保护方法,便可以直接根据该属性确定应该采用的攻击技术实现自动化建模。

利用以上属性信息表示的攻击技术结合自动化模型构建算法则可以实现初步的自动化建模过程。但是在该模型中,每类攻击技术之间没有优先级别之分。为满足自动化建模的第3 个要求,就需要对软件攻击技术进行难易程度与自动化级别的划分。

1. 2 软件攻击技术分类方法POPDDA

结合1. 1 节对软件攻击技术在满足自动化建模过程中特征属性的研究分析,提出利用以下称之为POPDDA 的6 元组对软件攻击技术进行描述{Pu,Ob,Pr,De,Di,Au}。其中,Pu表示攻击目的( attackpurposes) ,Ob表示攻击对象( attack objects) ,Pr表示对应的保护方法( protection) ,De表示攻击技术的依赖关系( dependency) ,Di表示攻击技术的难易程度( difficulty) ,Au表示攻击技术的自动化级别( automation) 。POPDDA 6 元组中各元素间存在如下关系: Pu、Ob、Pr 3 个元素用来实现对攻击技术的分类,De、Di、Au 3 个元素用来在自动化建模过程中进一步对攻击技术的优先级进行描述。如式( 1) ,C( n) 表示第n 类攻击技术是由第i 种攻击目的、第j 种攻击对象和第k 种保护方法组成:

C( n) = {Pu( i) ,Ob( j) ,Pr( k) } ( 1)

如式( 2) 用 表示分类的总类别, 表示攻击目的总数, 表示攻击对象总数, 表示保护方法总数,则有:

= ( 2)

对于攻击技术而言,根据以上6 元组进行分类描述的结果,就可以满足在建模过程中,自动地根据每种攻击技术的特征属性来判断其所适合的攻击阶段,实现自动化创建攻击模型。在1. 3 节将分别进行描述。

1. 3 POPDDA 的具体分析

1) 攻击目的( Pu)

攻击者基于一定的攻击意图对软件实施攻击。软件攻击的最终意图或是为获取软件资产,或是为分析保护机制,或是进行逆向分析等。攻击者为实现不同的攻击意图,使用的攻击技术也不尽相同。不同的攻击技术以某种顺序依次执行,便可以实现最终的攻击意图。也就是说每种攻击技术的攻击目的按照一定的顺序组织起来就实现了软件攻击的最终意图。

定义1 攻击目的指的是对于一个受保护软件采用某些技术攻击后所希望达到预期收益的实现。P_S 为一个受保护的软件,T 为一个集合,用于表示为达到某种攻击目的所使用的攻击技术的集合。S为被攻击后的软件,I 为攻击者的最终攻击意图,G为每种攻击技术的攻击目的。如图2 所示,一个受保护的软件P_S,经过T 攻击后,获得攻击后的软件S 的同时实现其攻击意图I。其中,攻击技术T1的攻击目的为G1,技术T2的攻击目的为G2,以此类推。攻击目的在攻击过程中依次实现便达到了最终的攻击意图I。因此每种攻击技术的攻击目的则是软件攻击技术在基于攻击过程自动化建模中的重要属性之一。基于攻击目的的分类结果。

2) 攻击对象( Ob)

定义2 攻击对象是指攻击者利用软件资产对软件造成破坏的直接对象。攻击过程中明确每种攻击技术的攻击对象是整个攻击过程的必要因素。软件资产包括: 可计算的数据( computable data)、程序的控制流( control flow) 、数据流( dataflow) 、程序代码( code) 、程序使用的函数( method) 、程序的模块( module) 和程序的相关库( library) 。可以从不同的资产角度提取出有可能被攻击者利用的攻击对象,并将其作为攻击技术的属性之一。

针对软件容易复制拷贝的特性,软件开发者采用各种保护方法来保护自己的软件。攻击者要想得到软件的资产就必须先攻破层层保护。因此就需要从攻击者需要攻击的保护方法的角度对软件攻击技术进行分类。常见的软件保护方法包括以下几种: 加壳保护方法( packer) 、序列号保护方法( serial number) 、时间限制保护方法( time limitation) 、注册验证保护方法( verify registration) 、反反汇编保护方法( anti-disassembling)、反跟踪保护方法( anti tracing) 、软件防篡改保护方法( tamper proofing) 、软件水印保护方法( watermarking) 、软件加密保护方法( encryption) 。

3) 攻击技术的依赖关系( De)

软件攻击技术包括2 种依赖关系,一种是强依赖,另一种是弱依赖。

定义3 强依赖( strong dependence) 关系指的是必须在满足必要的前提技术下才能完成的技术与必要的前提技术之间的依赖关系,如图3 所示。依靠Technique_A 技术独自得到Result 结果是不能成功的。只有在强依赖技术Technique_B 将Technique_A 所需要的中间结果Result_1 传递给Technique_A后,Technique_B 和Technique_A 才能共同作用得到Result 结果。Technique_B 和Technique_A 之间的关系就成为强依赖关系。

定义4 弱依赖( little dependence) 关系指的是需要执行的技术在某些前提技术执行之后再执行该技术,该技术的执行效率最优,如图4 所示。Technique_A 技术独自是可以得到Result 结果的,但是相对相率比较低,而在Technique_B 技术的帮助下同样得到Result 结果的时候效率有所提高。因此Technique_B 和Technique_A 技术是弱依赖关系。该属性主要用于在自动化建模过程中,为模型自动生成算法提供参考依据。参考攻击技术之间的依赖关系,确定攻击技术的执行顺序。

4) 攻击技术的难易程度( Di)

定义5 难易程度( difficulty) 在可理解为技术方面复杂、困难的、简单或是容易的程度。复杂度是构成难度的因素之一,技术的难度起因于技术本身的复杂性之外,还包括解决问题所需要的个性特征、知识量或技能等方面的因素。因此将知识和技术的难度特征具体化可分为: 技术复杂度( techniquecomplexity) 、技术操作复杂度( operation complexity)、脑力消耗( cost) 和操作时间( operation time) 4项指标。该属性信息是作用与在自动化建模过程中对攻击技术优先级的确定。按照高级中级和低级3 个级别将难易程度划分为不同的等级。

5) 攻击技术的自动化级别( Au)

根据攻击技术是否有完全自动的攻击工具,是否有可使用的脚本或插件,或者是否是完全需要人工参与这几个指标来对攻击技术进行自动化级别分层。

文献中提到了对攻击技术进行自动化级别的划分。该属性信息与攻击技术难易程度一样是作用与在自动化建模过程中对攻击技术优先级的确定。

1. 4 POPDDA 攻击技术分类实例分别对若干攻击实例的攻击技术从多个属性进行描述。

由于不涉及到具体模型的构建,所以攻击技术的依赖关系不做讨论。使用的实例包括dump 技术、API hook 技术、控制流提取技术、解除完整性校验技术、敏感字符串定位、关键API 定位、内存监视定位、保护特征定位、依签名侦壳技术、内核级Hook、内联Hook、陷阱追踪、纠正映像大小、反汇编地址分析、修改内存属性等。

针对以上攻击技术,按照POPDDA 方法对其进行描述,可以得出( 根据优先级从高到低的序列) :保护特征定位、内存监视定位、关键API 定位、敏感字符串定位同属于一类,可以用来定位关键代码段;API Hook 技术、内联Hook 技术和内核级Hook 技术同属于一类,可以用来获取函数调用API; APIHook、反汇编地址分析和陷阱追踪属于IAT 修复一类,依签名侦壳和依熵检测壳属于查壳技术,纠正印象大小和修改内存属性属于Anti-dump 技术。此例中的其他技术各属于一类。

1. 5 POPDDA 分类方法的评价

从20 世纪90 年代后期,已经开始对攻击技术的分类展开研究。Amoroso提出一种网络攻击分类方法应该满足的分类标准: 互斥性、完备性、非二义性、可重复性、可接受性和实用性。该标准已被广泛接受。互斥性( exclusivity) 指分类结果之间无交叉,无覆盖; 完备性( completeness) 指分类结果能够包含所有可能性; 非二义性( non-ambiguity)指对每种分类类别的定义描述精确; 可重复性( repeatability) 指对于一个分类样本的多次划分结果一样; 可接受性( acceptability) 指分类符合逻辑,便于接受; 实用性( practicability) 指对于分类结果可以再研究。此分类方法主要针对于软件攻击技术,由于软件攻击技术随着保护方法的发展而不断更新,因此需要在原有的分类标准上提出可扩充性的原则,以满足对不断更新的攻击技术进行分类的目的。可扩充性( scalability) 指分类结果不会随着技术的添加而变得不再可用。

结合分类实例,基于上述7 个指标对该分类方法进行分析讨论。在互斥性方面,由于某种攻击技术可能用于不同的攻击目的,例如API Hook 技术,因此该攻击技术可能被分在不同的类别中。所以,该分类方法不能满足互斥性。在完备性、非二义性和可扩充性方面,由于该分类方法未明确指出具体的分类类别,因此不能满足分类的非二义性,却能够很好地满足了完备性与可扩充性。在可重复性方面,由于该分类方法是同时在多个属性的约束下进行的分类,对于同一个样本( 各个攻击技术的属性信息描述稳定) ,按照同样的顺序细化分类结果,多次分类后的最终效果完全相同,因此可重复性较好。在可接受性方面,由于该分类指标的提出结合具体场景,分类结果符合逻辑,便于接受,因此可接受性较好。在实用性方面,由于该分类方法的提出具体面向自动化建模的应用,因此实用性较好。

对软件攻击技术进行分类时,考虑到攻击技术的特殊性同一个技术可以被使用到不同的攻击阶段,起到不同的攻击目的,而相对忽视互斥性和非二义性原则; 相反则侧重考虑完备性、可重复性、可接受性、实用性和可扩充性原则。

2 基于POPDDA 的自动化建模实例分析

2. 1 基于POPDDA 的攻击知识库构造

AKB 可以用来对软件攻击技术进行合理组织并实现分类管理。攻击知识的生成是一个不断学习的过程,需要在手动攻击时不断完善。

AKB 中包括攻击技术集和关系集。技术集是对软件攻击技术的分类组织; 关系集( 这里不做讨论) 包含了具体实现自动化建模的相关关系集合,如攻击技术依赖关系、保护方法关联关系和攻击状态关系等。历史案例库中包含了历史攻击模型及攻击数据,攻击知识库和历史案例库构成图5 所指的数据库。

2. 2 基于AKB 的自动化建模过程

自动化建模过程的步骤如下: 首先历史案例库响应建模请求事件,利用模型匹配算法( matPreext-Model) 进行匹配,若历史案例库中已经存在相应的攻击模型,则直接输出; 若不存在,则将建模请求转交给AKB,然后利用前向后向搜索算法( forBackward)搜索存贮相关技术的子模型,最后利用自动化模型生成算法组合相关子模型,最终生成攻击模型。攻击模型生成算法描述如下:

算法The generate _model( ) algorithm

Input: The Attack Purpose and Available Resources Set

Output: The Attack model

if ( response) then

matPreextModel( Attack Purpose,Available

Resource Set)

if ( pre-existing _model) then

return generate _model;

else

forBackward ( Available Resource Set,Attack

Purpose) ;

return generate _model;

else;

suspend;

2. 3 自动化建模实例

以脱壳作为攻击目的,其自动化建模过程为:1) 确定攻击目标( 脱壳) 和可利用资源( 加壳保护和反dump 保护机制) ; 2) 根据攻击目的和可用资源结合攻击知识库确定可利用技术; 3) 利用模型生成算法,结合可利用技术的依赖关系和优先级,实现自动化创建攻击模型。具体步骤如下所述:

Step1: 输入( 脱壳,{ 加壳保护,反dump 保护} ) ,请求事件被响应; 利用模型匹配算法在历史案例库中查找已有模型,没有匹配成功;

Step2: 将( { 加壳保护,反dump 保护} ,脱壳) 作为前向后向搜索算法的输入,首先从攻击知识库中得出对应于加壳保护和反dump 保护的攻击技术包括{ 0,1,2,4,5,7,9,11,12, 14, 15, 16} ; 根据POPDDA分析得到分类结果。

Step3: 结合攻击技术关系集,得到的依赖关系。

Step4: 利用模型生成算法和分类结果,搜索攻击知识库中的攻击技术,并根据其技术难易程度和自动化级别属性确定其优先级。最后结合攻击技术之间的依赖关系和优先级,完成自动化建模过程。建模结果如图7 所示。其中,数字表示攻击技术的ID 号,且依照优先级由高到低排列。

2. 4 自动化建模效果评价

面向自动化建模的软件攻击技术分类方法,分析了软件攻击技术在自动化建模过程中必要的6 个特征属性,依据攻击技术的特征属性信息,实现了对不同攻击技术的分类,并依此实现自动化的建模过程,为进一步实现自动化的抗攻击能力评测平台的研究奠定了理论基础。

依据该分类方法实现的自动化创建的攻击模型,不仅可以满足1. 1 节中提到的自动化建模的3个需求,而且可以用来精确地描述一个完整的攻击过程。因此,与现有的软件攻击技术分类方法和网络攻击技术分类方法相比具有以下优点: 1) 该分类方法较网络攻击方法而言,更适用于对软件攻击过程的描述。2) 较传统手工建模方法而言,由于自动化建模算法与攻击知识库的提出,不仅避免了软件攻击知识重复存贮带来的空间浪费,而且解决了手工建模效率低的问题。3) 该模型中的攻击知识库是在不断的攻击学习过程中完善起来的,对不断产生的新技术同样可以用POPDDA 来对其进行描述,并将其添加至攻击知识库中,一方面避免了在攻击过程中对新技术的遗漏,另一方面又进一步完善了知识库的内容。4) 自动化建模过程中,对同一个攻击实例,采用同样的技术样本和建模算法,生成的攻击模型必然相同,解决了手工建模过程中建模结果因人而异的问题。5) 由于历史案例库的存在,解决了重复性构建模型的问题。

同样,基于POPDDA 实现的自动化建模依然存在一些问题,如攻击技术依赖关系和攻击技术的难易程度与自动化级别的主观性。

3 结论及进一步工作

通过对现有软件攻击技术分类方法的总结和分析,结合软件攻击建模过程和自动化建模需求,提出了面向自动化建模的软件攻击技术分类方法POPDDA,根据Amoroso 分类标准对POPDDA 做出评价,表明POPDDA 可以满足完备性、可重复性、可接受性、实用性和可扩充性。使用POPDDA 对软件攻击技术进行描述,构建软件攻击知识库,在攻击知识库基础上结合模型构建算法实现自动化建模,通过实验分析了自动化建模的优点和存在的问题。下一步工作主要是进一步研究POPDDA 的优化。

全文阅读已结束,如果需要下载本文请点击

下载此文档

相关推荐 更多