一种改进的基于扩展攻击树模型的木马检测方法

2016-09-08 10:32陈燕红欧毓毅
计算机应用与软件 2016年8期
关键词:木马程序木马调用

陈燕红 欧毓毅 凌 捷

(广东工业大学计算机学院 广东 广州 510006)



一种改进的基于扩展攻击树模型的木马检测方法

陈燕红欧毓毅凌捷

(广东工业大学计算机学院广东 广州 510006)

木马作为恶意程序的一种,经常被作为黑客入侵利用的手段,这对网络安全和信息安全将造成极大的危害。提出一种改进的基于扩展攻击树模型的木马检测方法。通过分析PE文件,采用静态分析和动态行为监控技术相结合的检测方法提取程序API调用序列;并用信息增益的方法筛选出木马关键API短序列集合,作为构建扩展攻击树模型的特征库;将待检测程序以API短序列为行为特征与模型节点进行匹配、分析,同时改进了匹配节点的权值和危险指数的算法。最后给出扩展攻击树模型调整与优化的方法。实验结果表明,改进后的方法不仅在木马检测效率、准确度方面有较好的表现,还能检测出经过升级变种的木马。

木马检测扩展攻击树API调用改进算法

0 引 言

木马检测一般分为静态和动态检测技术,然而这两类检测技术都有其不足:静态检测技术在面对已知木马程序的隐藏和变化时略显不足,对于未知木马程序亦是无能为力;而动态检测技术不仅因为占用较多的系统资源导致效率不高,对于已经发现的木马程序,其运行造成的危害已是事实。

攻击树模型有着直观的结构,能够较好地反映系统威胁路径,在木马程序入侵检测应用方面的研究相对较多。文献[1]在传统攻击树模型上,对每个节点加入属性信息实现了对模型的扩展,不足之处在于其对节点间关系定义不全面、危险指数算法过于简单,将影响检测的准确度;文献[2]提出的一种改进攻击树结构,并设计了危害权值算法,不仅更直观地体现了攻击路径,而且达到了更好的描述和判断程序的恶意性的目的。其不足在于未能考虑攻击树中不同层次节点对PE文件危险值比重的差异;文献[3]中改进的攻击树模型是在传统攻击树的基础上加入参数集合较好地描述了API调用序列情况,但是其对节点权重信息描述不明确;文献[4]提出一种通过静态分析PE文件获取API短序列与攻击树进行匹配,提高了匹配效率,然而当前很多木马程序通过动态加载DLL获得函数地址完成系统调用以躲避静态扫描[5],静态分析API序列方法的不足将日益凸显。

本文在分析了PE文件头部特征信息[6]的基础上,重点研究了攻击树模型的扩展,API调用序列的提取、分析以及算法的改进等,提出一种改进的基于扩展攻击树模型的木马检测方法。首先搜集总结了大量木马程序,并对其API调用序列进行提取、划分以及筛选作为构建模型的特征库;同时对攻击树模型节点信息进行改造扩展,基于扩展的模型,根据不同层次目标节点和叶子节点的权重、发生概率以及程序调用API短序列匹配度等的不同,改进了相应算法,再通过计算程序的危险指数与预先设置好的阈值进行比较,以判断程序是否为木马程序;最后给出实现攻击树模型的调整与优化的方法。

1 扩展攻击树模型

攻击树模型是一种采用树形结构来描述攻击者对目标系统进行攻击的方法、路径。在一棵攻击树的树形结构中,可以分为“或”(Or)、“与”(And)、“顺序与”(Sand)三种关系。现假设G,a,b三个节点分别代表父节点、左子节点、右子节点,则上述三种关系的图形表示如图1所示。

图1 目标节点关系图

其中,‘Or’关系表示只要有包含一个以上的子节点都将导致父节点的完成;‘And’关系表示当且仅当所有子节点的完成才能导致父节点的完成;‘Sand’关系表示父节点的完成必须是所有子节点按相应顺序完成方可,这里指子节点从左到右的顺序。

扩展攻击树T=(V,E,Attribute,Parameter),其中V(T)是上述三种关系的非叶子节点及叶子节点为集合元素的非空并且有限的集合,根节点记为‘ROOT’,用以表示攻击者要达成的最终攻击目标。自上而下,子节点代表攻击的子目标,逐步细分到叶节点代表危险API调用短序列。E(T)中的元素是V×V的子集,用来代表树中的每条边,即攻击的路径。Attribute(T)是节点属性集合,由七元组(S,C,L,P,R,W,D)组成,与每个节点相关联。S是布尔型变量,表示节点在匹配过程中的状态:得到匹配的节点的S为TRUE,记为“高亮节点”,反之记为“非高亮节点”。C表示为API的名称或者目标的文本描述。L表示节点所在攻击树中的层次,其中L(ROOT)=0,ROOT子节点的L值为1,依次向下类推。P指节点代表的事件发生的可能性。R为三态变量(与/或/顺序与),表示子节点之间的关系,对于叶子节点无意义。W和D是数值型变量,W表示节点代表的事件发生后对系统产生的威胁,为恶意性权值;D表示综合计算得到的节点的危险指数。Parameter(T)是参数信息集合,由time、paramlist两个变量组成,用以记录API调用时的参数信息,time表示节点内部的时间序编号,paramlist变量则用来记录参数调用链表。对于非叶子节点该值为NULL。初始状态下,模型中所有节点都处于‘非高亮’状态,Parameter(T)为空状态,而非叶子节点的D暂时也为空。

2 相关技术的研究

2.1API调用序列的提取以及木马库的生成

本文在分析了PE文件的特征字符串、API调用的数量等头部特征信息的基础上,结合静态和动态方法获取API调用序列(包含调用API的参数信息),大致流程如图2所示。

图2 API调用序列提取流程

在程序运行前,首先判断PE文件是否经过加壳、变形等,若无则通过静态解析PE 文件的方法提取API调用序列以尽可能地提高检测效率;若是则将程序置于沙箱中运行以避免其对系统的危害,通过行为监控技术[7,8]拦截程序执行过程中的API调用以提高检测准确率。再将提取到的API调用序列,采用K=6长度的滑动窗口生成API短序列,如图3所示。

图3 滑动窗口大小K=6时API调用短序列

针对部分木马短序列无法有效区分木马程序与正常程序,同时造成不必要的信息冗余,采用信息增益筛选出高识别度、高准确度的关键API短序列集合A(F)={F1,F2,…,Fm}作为构建模型的特征库。信息增益公式见下:

Grain(A)=Info(Q)-InfoA(Q)

其中,Q为标记类的训练集,包括:木马程序(C1)、正常程序(C2)。Info(Q)即表示对Q进行分类所需要的期望信息,而InfoA(Q)表示按A划分后再对Q进行分类所需的期望信息,A为木马调用的API短序列,公式具体为:

其中,|C1|、|C2|分别表示Q训练集中木马和正常程序的数量,|Q|=|C1|+|C2|表示程序的总数量。

其中,|Qj|即为按A划分Q得到的子集的数量,有|Q1|和|Q0|分别表示Q训练集中程序调用、未调用A短序列得到的子集数量。Grain(A)值越大,表示对应API短序列对木马程序的检测影响就会越大,反之相反。

2.2原始扩展攻击树的构建

通过分析木马常见的恶意行为,将原始扩展攻击树划分为8个部分,如图4所示。

图4 原始扩展攻击树的划分

具体地,根据对上述恶意行为的划分,将木马特征库A(F)中的API短序列按照序列达成的目标、目标间的依赖关系构建出若干最大木马扩展攻击树,再将这些树以或的关系合并在一起作为ROOT根节点的子节点,即完成原始扩展攻击树的构建,如图5所示(图中省略了部分目标节点、叶子节点)。

图5 构建的攻击树实例

对于攻击树中节点的命名采用的方法,不仅可以直观地体现攻击过程,还能准确地定位节点所在的层次位置,便于节点权重计算等。

2.3相关算法研究

1) 节点发生的可能性P的推算方法[9]其中F表示父节点,Kn表示子节点。

(1) 对于“Or关系”的子节点,其父节点的发生可能性等于各子节点发生可能性的最大值。

P(F)=max{P(K1),P(K2),…,P(Kn)}

(2) 对于“And关系”的子节点,其父节点的发生可能性等于各子节点发生可能性的乘积。

P(F)=P(K1)×P(K2)×…×P(Kn)

(3) 对于“Sand关系”的子节点,其父节点的发生可能性需要借助条件概率来计算。

P(F)= P(K1)×P(K2/K1)×…×P(Kn/ K1 K2…Kn-1)

(4) 对于叶子节点leaf采用多属性效用理论[10]计算其发生的可能性,给每个叶子节点附上三个基本属性,cost、det、diff分别用来表示完成该叶子节点所需要的成本、可能被检测到的等级和难易度,算法如下。

P(leaf)=Wcost×U(cost)+Wdet×U(det) +Wdiff×U(diff)

其中:leaf表示任意的一个叶子节点;P(leaf)表示该叶子节点发生的可能性;Wcost、Wdet、Wdiff用以表示对应参数的权重系数;而U(cost)、U(diff)、U(det)则用以表示相应参数的效用性。

2) 恶意性权值W

叶子节点是由具体API函数代表的一个行为事件,通过行为要素得出单个叶子节点的恶意性权值[11]。主体U为调用API函数的进程或线程,客体O为API函数的操作对象,动作B为API函数代表的操作,API部分参数值作为行为的备注部分N。设Wu、Wo、Wb、Wn分别代表主体、客体、行为操作以及附加参数值代表的权重,L为当前节点所在的层数,为不同层节点设置权值可以更好地体现危害差异性。对于匹配的叶子节点,其所在层次离总目标越远其权重相应越低,本文采用如下公式计算其恶意性权值。

W(leaf)=(Wu+Wo+Wb+Wn)×1/L

对于非叶子节点,其恶意性权值W由其所有子节点的危险指数及包含的叶子点间的相互关系综合决定。

W(F)=Fun(K1, K2,…,Kn)

为‘Or’节点时,W取子节点中最大的危险指数为值;为‘And’或者‘Sand’节点时,将子节点危险指数求和作为W值,以体现子节点共同作用导致父节点目标的达成,公式如下:

W(F)=Max{D(K1),D(K2)…D(Kn)}×1/L

W(F)=(D(K1)+D(K2)+…+D(Kn))×1/L

3) 危险指数D

危险指数标识危险级别,表示节点与木马程序的相似程度,由自身权值及发生概率计算而得。所有最大高亮子树根节点的危险指数D值的和为对应木马程序的危险指数D(F)。为了有效地降低漏报率和误报率,文献[12]在计算程序危险指数的时候将程序调用API集合的规模考虑在内,本文考虑API序列间的依赖关系,通过计算API短序列匹配度的方法以更准确地描述程序的恶意性:假设目标API调用短序列的总数为n,在扩展攻击树中匹配到的短序列个数为m,那么m/n的即为目标短序列集合中API序列的匹配度,记为P(H)。通过这种方法可以有效地降低正常程序调用API过多引起的高匹配度从而产生误报,以及木马程序调用API较少造成低匹配度从而产生漏报。式(1)、式(2)分别表示计算子目标和最终目标的危险指数。

D=P×W

(1)

D(F)=sum(D)×P(H)

(2)

3 基于扩展攻击树的木马检测方法

3.1匹配分析

将待检测程序中提取、划分的目标API短序列集合G(A)={ A1,A2,…,Am}以短序列为单位同扩展攻击树模型进行匹配,同时把相应API调用参数信息记录在Parameter(T)中,再对攻击树模型进行叶子节点及非叶子节点按照相应规则(与/或/顺序与)作高亮标记。设置一个阈值作为判断标准,最后计算危险指数的值来判断程序是否为木马程序。

例如某可疑木马程序部分的调用序列及参数调用记录如如下:

(1) 可疑木马程序代码片段

OpenFile(IN:N:XXXOUT:I:32),

WriteFile(IN:I:32 B:XXXOUT:),

RegOpenkeyEx(IN:N:HKLMSYSTEMCurrentControlSetServicesXXXOUT:0),

CreateFile(IN:N:X:filename.exeOUT:0)

RegCreateKey(IN:N:HKLMSYSTEMCurrentControlSetServicesXXXOUT:0)

CreateProcess(IN:N:ProcessNameOUT:0)

RegCloseKey(IN:N:HKLMSYSTEMCurrentControlSetServicesXXXOUT:0),

(2) 提取的API调用序列

Index APIName

11OpenFile()

13WriteFile()

45RegOpenkeyEx()

58CreateFile()

74RegCreateKey()

93CreateProcess()

34RegCloseKey()

105MessageBox()

46Send()

将上述可疑API调用序列通过滑动窗口划分成短序列,按相应规则匹配攻击树后得到的高亮节点扩展攻击树,如图6所示。

图6 匹配攻击树

3.2动态调整扩展攻击树方法

原始扩展攻击树作为木马检测的核心特征库,需要不断地更新和补充使得检测更加准确有效。检测过程中,将程序中出现的未被匹配的敏感API调用序列按照一定的规则添到新的模型分支中:对于相同的操作对象而动作不同,归为‘And’或者‘Sand’关系,并通过参数信息进行区分;对于相同动作而操作对象不同,归为‘Or’关系。同时,采用如下方法对扩展攻击树模型进行调整优化:

1) 或节点合并法

针对今后出现的新的攻击方式实现的相同攻击目标,使用或节点进行合并,例如:完成攻击树中T21目标需要调用API序列(A1,A2,A3),若发现不同的API调用(A4,A5)序列亦可完成T21目标,则将序列(A1,A2,A3)和序列(A4,A5)分别置于T21新的子节点T211,T212下实现合并。

2) 节点精简法

通过舍去扩展攻击树模型中无作用或作用不大的节点以实现展攻击树模型的优化。即保证完成攻击目标序列的任意子序列无法达成该攻击目标。

3) 相似攻击树统一法

对于树中出现的相似的攻击树,按结构从简的原则选择其一,从而提高程序运行效率并节省存储空间,如图7所示。

图7 相似攻击树

通过分析得到这两颗攻击树中达成目标T3具有相同的API调用序列,都是{(A1,A3)(A2,A3)}和(A1,A2,A3),因此它们是相似的,通过分析选左图作为模型子树。

4 实验结果与分析

(1) 通过分析“红狼远控”和“灰鸽子黑防”这两种远程控制木马程序,对其进行升级都附上新的攻击目标:获取目标机上的.jpg图像文件之后将其删除的功能作为新的攻击目标。通过匹配之后,再计算危险指数得到实验结果如表1所示。

表1 实验结果1

实验结果表明,本文方法可以有效地检测出经过升级后的木马。

(2) 从网上下载了639个木马文件以及Windows XP系统目录下的纯净PE文件。以2:8的比例将这些文件分别作为测试集和训练数据。将本文方法与文献[1]、文献[4]方法进行分析比较FN(木马被识别为正常程序)和FP(正常程序被识别为木马)指数得到如表2所示。

表2 实验结果2

通过表2的实验数据比较分析看到,改进后的方法较大地降低了了FN和FP指数,提高了检测的准确度。

5 结 语

本文提出一种基于攻击树模型的木马检测方法,先通过扩展攻击树节点信息等实现更精确的匹配模型;再采用静态分析和动态行为监控技术相结合的方法可以比较有效而准确地提取到程序的API调用序列,并对相关算法进行研究,改进了权值、危险指数的算法。最后给出扩展攻击树模型调整与优化的方法以实现模型特征库的更新与补充。实验结果表明,改进后的方法在兼顾木马检测效率、准确度方面有较好表现的同时,还可以检测出经过升级变种的木马。

[1] 杨彦,黄皓.基于攻击树的木马检测方法[J].计算机工程与设计,2008,29(11):2711-2714.

[2] 谢乐川,袁平.改进攻击树恶意代码检测方法[J].计算机工程与设计,2013,34(5):1599-1604.

[3] 陈丹伟,唐平,周书桃.基于沙盒技术的恶意程序检测模型[J].计算机科学,2012,39(6A):12-14.

[4] 牛冰茹,刘培玉,段林珊.一种改进的基于攻击树的木马分析与检测[J].计算机应用与软件,2014,31(3):277-280,330.

[5] 张程,马兆丰,钮心忻,等.一种API动态序列分析和 DAG-SVM多类支持向量机的未知病毒检测方法[J].小型微型计算机系统,2012,12(12):2724-2728.

[6] Schultz M G,Eskin E,Zadok F,et al.Proceedings of the 2001 IEEE Symposium on Security and Privacy[C]//Washington: IEEE Computer Society,2001:38-49.

[7] 谢燕江.一种基于轻量级虚拟化的沙盒机制[D].湖南:湖南大学软件学院,2012.

[8] 张永超.基于虚拟执行技术的恶意程序监测系统研究与实现[D].国防科学技术大学,2011.

[9] 甘早斌,吴平,路松峰,等.基于扩展攻击树的信息系统安全风险评估[J].计算机应用研究,2007,24(11):153-160.

[10] 钟倩,方勇,刘亮,等.基于攻击树的文件风险评估方法[J].通信技术,2011,5(44):77-79.

[11] Xia Jiang,Weiwei Qi.An Improved Attack Tree Algorithm Based on Android[J].Journal of Software Engineering,2014,34(1):1-8.

[12] 乐洪州.基于扩展攻击树的木马检测技术研究[D].大连:大连海事大学,2013.

AN IMPROVED TROJANS DETECTION METHOD BASED ON EXTENDED ATTACK TREE MODEL

Chen YanhongOu YuyiLing Jie

(FacultyofComputer,GuangdongUniversityofTechnology,Guangzhou510006,Guangdong,China)

Trojans, as one kind of malwares, are often used as the hacking means, and this will cause great harm to the security of network and information. We proposed an improved Trojans detection method which is based on extended attack tree model. First, by analysing PE files, the method extracts the call sequence of program’s API using the detection method combining the static analysis and dynamic behaviour monitoring; Then it sifts the key short call sequence set of API using the method of information as the feature library for building extended attack tree model; Furthermore, it takes the API short call sequence as the behavioural feature of the detecting program to match the model nodes and then analysis them, meanwhile improves the algorithms of matching nodes’ weight and risk index as well. Finally, we introduced the method to adjust and optimise the extended attack tree model. Experimental results showed that the improved method had better performance in Trojans detection efficiency and accuracy, and could detect the upgraded variant of the Trojan as well.

Trojans detectionExtended attack treeAPI callsImproved algorithm

2015-02-15。广东省自然科学基金重点项目(S2012 020011071);广东省高校科技创新项目(2013KJCX0064)。陈燕红,硕士生,主研领域:信息安全技术。欧毓毅,副教授。凌捷,教授。

TP309

A

10.3969/j.issn.1000-386x.2016.08.068

猜你喜欢
木马程序木马调用
小木马
骑木马
核电项目物项调用管理的应用研究
杀灭木马程序,幸福就会来临
小木马
LabWindows/CVI下基于ActiveX技术的Excel调用
旋转木马
基于系统调用的恶意软件检测技术研究
恶意木马程序——Trojan_Generic
木马更加专业化网络攻击成主角