时间:2022-09-19 05:20:02
【前言】基于ID3决策树的木马动态检测技术研究由文秘帮小编整理而成,但愿对你的学习工作带来帮助。木马是一种由攻击者秘密安装在受害者计算机上的窃听及控制的后门程序。 根据国家互联网应急中心(CNCERT/CC)自2011-01到2011-03以来的《网络安全信息与动态周报》,统计境内被木马控制的IP地址数量如下:1月份12万个,2月份13万个,3月份41.4万个。 由上述数据可...
摘要: 木马是目前计算机网络面临的主要安全威胁之一。针对现有木马检测方法的不足,提出了行为分析与ID3决策树相结合的木马动态检测技术,对其原理、算法、实现和性能进行了详细介绍。利用ID3算法对样本进行学习建立的木马判定决策树,根据程序运行时的行为判定其是否为木马。在Windows系统下的实现和测试显示该技术具有较高的准确率。
关键词:
中图分类号: TP393 文献标识码:A 文章编号:2095-2163(2011)01-0032-03
0引言
随着计算机网络的普及与广泛应用,计算机网络信息系统已成为企业、院校、政府等各部门最重要的基础设施和信息交流工具。然而,目前的网络信息系统还存在严重的安全问题,木马、病毒等各种网络攻击行为正严重威胁着广大用户的数据和信息的安全。
木马是一种由攻击者秘密安装在受害者计算机上的窃听及控制的后门程序。
根据国家互联网应急中心(CNCERT/CC)自2011-01到2011-03以来的《网络安全信息与动态周报》,统计境内被木马控制的IP地址数量如下:1月份12万个,2月份13万个,3月份41.4万个。
由上述数据可知木马事件愈发猖獗,网络安全迫切需要快速有效的木马检测技术。
目前,主流的木马检测方法包括:端口识别[1]、注册表监控[2]、特征码检测[1]、静态文件信息检测[3]和内存完整性检测[4]等。但是上述方法都存在不足。端口识别的方法可以在一定程度上检测到木马,但高级木马程序都有在植入到目标系统前定制新的通信端口的能力,从而逃过这种方法的检测[1]。注册表监控方法很难发现诸如采用文件关联方法实现自动运行的木马,而对于只运行一次的木马,因其无需设置自动运行信息,无法使用该方法进行检测[2]。由于木马的种类日益增多,很难全面、准确地提取所有木马的特征码,所以基于特征码检测的方法存在明显的漏检问题[1]。静态文件信息检测是指在Windows环境下,根据从PE可执行文件中提取的静态信息判断文件是否为木马文件[3]。与特征码检测方法类似,该方法只有在拥有大量具有代表性的样本的情况下才能作为检测木马的有效方法,对新出现的木马容易出现漏检问题。内存完整性检测多是通过检测代码区块的完整性来判断木马的存在,但无法检测到改变内存其他区域的木马[4]。
针对上述检测方法的不足,现提出木马动态检测方法。该方法将行为分析与id3算法产生的决策树相结合,将程序运行时的行为作为判定依据。
本文在Windows系统下实现了基于ID3决策树的木马动态检测系统。经测试,该决策树的准确率达到97.2%,错检率2.8%,漏检率0.0%,证明采用ID3决策树进行木马动态检测是可行的。
1ID3决策树
1.1ID3算法与木马动态检测
ID3算法的优点是实现简单,判定速度快。ID3算法的缺点主要是倾向于取值较多的属性,对噪声敏感[5]。但在本文的木马动态检测中,所有的判定属性均只有两个值:0和1;另外,木马文件跟正常文件相比,会出现正常文件所不会有的行为特点,即“噪声”,ID3算法对噪声敏感的特性有利于木马的检测。
选择使用行为分析进行木马动态检测是为了从根本上判断出文件是否合法。根据文件运行时的行为进行判断更有说服力。
将ID3算法与行为分析相结合就是为了能够快速、准确地进行木马动态检测。
1.2ID3决策树生成公式
下面介绍ID3算法公式的定义[6-7]。
定义1:若有n个消息,其给定的概率分布为p=(p1,…,pn),则该分布传递的信息量称为p的熵,记为
定义4:信息增益度的公式为:
Gain(X,T)=Info(T)-Info(X,T) (3)
1.3ID3决策树生成算法
通过学习ID3算法[8-9],现给出ID3决策树的生成算法。
算法:Generate_decision_tree(samples, attribute)。由给定的训练数据产生一棵判定树。
输入:训练样本samples,离散值;候选属性的集合attribute_list。
输出:一棵决策树。
算法伪代码:
Generate_decision_tree(samples, attribute_list)
(1)创建结点 N;
(2)ifsamples 都在同一个类C
thenreturn N 作为叶结点,以类C 标记;
endif
(3)ifattribute_list 为空
thenreturn N 作为叶结点,标记为 samples 中最普通的类;
else
(4)选择attribute_list 中具有最高信息增益的属性best_attr-ibute;
(5)标记结点 N 为best_attribute;
endif
(6)forbest_attribute 的每个属性值aiDo
(7)由结点 N 长出一个条件为 best_attribute = ai 的分枝;
(8)设si 是samples 中best_attribute =ai 的样本的集合;
(9)ifsi 中样本为同一类
then加上一个树叶,标记为 si中样本的类;
(10)else
加上一个由 Generate_decision_tree(si,attribute_list-best_attribute)返回的结点;
endif
endfor
2基于ID3决策树的木马动态检测系统的实现
2.1ID3算法训练数据的获取
本文主要研究Windows系统下的木马动态检测。所提到的木马文件均由国家互联网应急中心提供,类型有文本,文档,图片,音频文件,视频文件和邮件等,这些文件均嵌有不同类型的木马程序。
ID3决策树的建立需要训练样本和候选属性。本文中,将含有木马文件和正常文件作为训练样本,候选属性则是指样本运行时调用的API集合。
利用微软公司提供的开源Detours库对底层API进行拦截,就可以获知哪些API被调用,哪些API没有被调用,被拦截的API集合就是程序运行时的行为属性集合。为了便于利用样本运行后的行为数据计算出决策树的决策属性节点,用0和1代表API是否被调用:0代表没有调用,1代表被调用。样本运行前,所有被设置拦截的API都对应0;样本运行后,被拦截到的API对应的数值变成1。如100101代表API1、API4和API6被调用,API2、API3和API5没有被调用。
训练样本是有类别标识的,将所有样本文件运行结束后,就得到了建立决策树所需要的训练数据。
ID3算法需要的候选属性即所有被调用的API,这些属性均只有两个值:0和1。
2.2ID3决策树的建立
本文中,使用了300个木马文件,300个正常文件作为训练样本。设置拦截的API分为文件操作、网络通信、注册表操作、系统服务操作和进程线程操作五部分。
编程实现ID3算法,将样本文件运行后得到的训练数据经ID3算法的计算后,得到了有决定性意义的API,建立的决策树如下图1所示。
说明:单线箭头表示该API被调用,双线箭头表示该API未被调用。
尽管在使用Detours库时设置了对25个API的拦截(CopyFile、DeleteFile、MoveFile、CreateFile、WriteFile、Create-Process、CreateThread、TerminateProcess、RegSetValue、RegCr-eateKey、RegReplaceKey、ExitWindowsEx、ChangeSeric-eConfig、ClearEventLog、CreateService、DeleteService、socket、bind、send、sendto、connect、listen、recv、recvfrom、accept), 但由于每种API都不是独立出现的,如可能bind、connect和socket同时出现,RegSetValue、RegCreateKey和DeleteFile同时出现,CreateProcess和CreateThread同时出现,所以并不是所有的API在最终的决策树中都作为判定过程的一部分而出现。
2.3ID3决策树判定规则的应用
本文中,木马动态检测系统的判定规则就是图1中的决策树。通过Detours库对底层API进行拦截,拦截后得到的API通过该决策树的规则进行判定。
如:一个文件调用的API有Socket、CreateFile、WriteFile、 RegSetValue和RegCreateKey,判定过程就是:
第一步:DeleteFile为0,到Socket;
第二步:Socket为1,判定该文件是木马文件。
结束。
3基于ID3决策树的木马动态检测系统的测试
及结果
为了获得该决策树的性能,进行了测试,测试文件没有参加决策树的建立。参加测试的有250个木马文件,250个正常文件。木马文件的类型如2.1节所述。
测试环境是样本文件和木马动态检测程序。测试过程如下:检测程序依次自动运行样本文件,获得样本调用的API集合,将API集合利用决策树的判定规则进行判定。由于测试样本的类型是已知的,将判定结果与已知的样本类型进行比对,就可以得知判定结果是否正确。测试结果如表1所示。
虽然该决策树的准确率比较高,但也存在错检问题。分析错检原因主要有两个。一个原因是对于压缩包文件,打开时会调用CreateFile、WriteFile和DeleteFile,就导致了正常的压缩包文件被判定为了木马文件;另一个原因可能在于ID3算法是一种单变量决策树算法,忽略了属性间的相互联系[9]。另外还可能用于建立决策树的训练样本的种类不是足够多,可以使用更多种类的木马文件进行训练以得到更完善的决策树。
4结束语
本文总结了常用的木马检测方法的弊端,提出了行为分析与数据挖掘中的ID3决策树相结合的动态检测方法。首先得到包含木马文件和正常文件的训练样本的行为数据;编码实现了ID3算法;通过ID3算法对行为数据进行计算,得到了用于木马动态检测的决策树;将该决策树的判定规则嵌入到木马动态检测系统中,对未知的程序进行动态判定。最后,为了验证该决策树的判定能力,进行了验证测试。测试结果表明该决策树能有效地检测到木马文件。
下一步的研究重点是考虑各属性间的关联性,尽可能地减少相关度小的候选属性;收集更多的木马样本来进行决策树的训练和建立,进一步完善决策树。
参考文献:
[1] 陈桂清,伍乃骐,滕少华. 通过进程监视检测木马攻击[J]. 计算 机应用,2003,23(ll):130-133.
[2] 李伟斌,王华勇,罗平. 通过注册表监控实现木马检测[J]. 计算 机工程与设计,2006,27(l2):2220-2222.
[3] 戴敏,黄亚楼,王维. 基于文件静态信息的木马检测[J]. 计算机 工程,2006,32(6):198-200.
[4] 齐琪. 基于内存完整性的木马检测[D]. 武汉:华中科技大学,2006.
[5] 栾丽华,吉根林. 决策树分类技术研究[J]. 计算机工程,2004, 30(9):94-97.
[6] 黄晓芳. 数据挖掘中决策树算法及其应用[J]. 网络信息技术, 2005,24(2):36.
[7] 张维东,张凯,董青,等. 利用决策树进行数据挖掘中的信息熵 计算[J]. 计算机工程,27(3):71-72.
[8] 杨学兵,张俊. 决策树算法及其核心技术[J]. 计算机技术与发 展,2007,17(1):44-45.
[9] 王莉. ID3算法的研究与应用[J]. 福建电脑,2010,1:11-12.