基于动态行为的未知恶意代码识别方法

2012-01-24 02:05:10朱立军
沈阳化工大学学报 2012年1期
关键词:调用分类器代码

朱立军

(沈阳化工大学计算机科学与技术学院,辽宁沈阳110142)

目前,对于已知计算机恶意代码检测方法主要是基于特征码的方法,其基本思想是提取病毒样本中能唯一标识该病毒的二进制串作为该病毒的“特征码”,并将此“特征码”添加到病毒特征库中,在病毒检测时,通过在病毒特征库中查找是否存在相匹配的“特征码”来发现病毒.这种方法的优点是能快速、准确地检测出已知恶意代码;缺点是对未知恶意代码却无能为力.

由于对计算机病毒的检测具有不可判定性[1-2],因此,为了识别未知恶意代码及其变种,人们提出了很多近似算法,其中具有代表性的是:(1)静态启发式扫描技术,即在代码没有运行的状态下,通过分析代码中的特征序列来识别恶意代码的方法.例如文献[3]通过分析可执行文件静态调用的API序列来识别已知恶意代码的变种,它的依据是恶意代码和它的变种一定有足够多相似的API调用序列;文献[4]通过提取已知恶意代码中的特征串和字节序列,并利用多重贝叶斯算法建立了分类模型.这些方法虽然取得了较好的识别效果,但缺点是对被加壳的恶意代码无能为力.(2)基于代码的动态行为分析法,与静态扫描技术不同的是,行为分析技术监控代码运行时的动态行为,由于某些行为是病毒、木马等恶意代码经常出现的行为,而在合法程序中却比较罕见,它们可作为判别应用程序是否非法的依据.文献[5]通过代码运行时对系统注册表的键值、网络连接以及文件的异常变化来识别是否有恶意行为发生;该方法的优点是简单、高效,可以检测出未知恶意代码,而不用担心是否该代码被加壳,但缺点是误判率和漏报率较高.

因为EXE文件运行时,被调用的API序列能在一定程度上反映该文件的行为特征[6],所以,本文通过分析代码在植入、安装及启动时调用的API序列来作为判定代码是否为恶意的依据,并采用不同的分类算法进行分析比较.实验表明:基于API调用序列的未知恶意代码识别方法具有较好的识别未知恶意代码的能力,且不同的识别方法有不同的优缺点.

1 恶意代码主机行为的定义

目前最为流行、破坏力最大的恶意代码是Win32 PE病毒,PE(Portable Executables)是win32系统中可执行程序的二进制文件形式,它是通过调用操作系统中的API函数(应用程序接口)来实现各项功能,而这些API函数来自不同的动态链接库(DLL).所以,以PE文件为存在形式的病毒在完成植入、控制和传播等任务时都必须借助API函数的调用.

实践表明:与运行阶段相比,恶意代码病毒在植入、安装阶段会表现出显著的有别于一般合法程序的一系列行为特征,如:自删除、自我复制、杀进程、设置自启动、感染EXE文件等.因此,捕获恶意代码在植入、安装阶段的API函数调用,就捕获到了相应恶意代码的动态行为.根据对恶意代码和合法程序运行时调用API函数情况的观察,本文选取141个较敏感的API函数作为监控对象,部分API函数如表1所示.

表1 监控API函数调用表Table 1 Part of API functions calls

2 恶意代码行为的获取

为了防止恶意代码对系统的破坏,在虚拟机环境下分析恶意代码的动态行为.虚拟机实际是一款可以虚拟出一台或多台计算机的软件,它具备真实计算机几乎所有的功能,包括开机、关机、重新启动等物理功能,并可以在上面安装操作系统、应用程序,访问网络资源等.因为它只是磁盘上的文件虚拟出来的,所以,无论恶意代码进行何种操作,包括磁盘格式化、重新分区等危险操作,都可以通过回滚操作把系统恢复到系统改变之前的状态.目前基于Windows平台的虚拟机应用程序有Vmware Workstation和Virtual PC for Windows等.该实验平台操作系统采用Windows XP Professional,虚拟机采用Vmware Workstation 6.0.Win32 API函数的拦截可以使用 API Hook[7]技术来实现.在这里使用ApiMonitorTrial工具软件对代码运行时API函数的调用情况进行捕获.

2.1 恶意代码行为监控

实验样本共749个,其中白名单-合法程序样本是在Windows XP Professional操作系统首次安装,能确保在干净的系统环境下选取操作系统PE文件398个;黑名单-恶意代码样本通过网络及其他途径搜集351个.将杀毒软件升级到最新并对这些恶意代码病毒进行查杀,确认都是恶意代码病毒.其流程如图1所示.

图1 代码行为监控步骤Fig.1 Monitoring steps of code behavior

具体实施步骤如下:

(1)启动虚拟机,并启动虚拟机中的Windows XP Professional系统;

(2)制作快照,保存当前的系统状态;

(3)启动API监控程序ApiMonitorTrial;

(4)然后将恶意代码样本放置到虚拟机中;

(5)运行恶意代码;

(6)把代码的监控结果文件报告传回主机;

(7)回滚到初始状态;

(8)回到第(4)步,准备处理下一个样本.

2.2 数据模型的建立

在已获取样本主机行为特征量的前提下,需要寻找一种能够表达样本与特征之间关系的方法.现将每一个样本作为统计表中的一个元组,其特征定义为基于一多维空间的向量.对这二类样本的API调用统计结果采用二维表形式(如表2),表中每个数据元组X=(x1,x2,…,xn,c)记为一个样本的特征向量;其中xi(i=l,2,…,n)表示特征向量中的一个特征属性,xi∈{0,1},0表示某个API一次都没有被调用过,1表示某个API被调用过一次或多次.c表示类别,c∈{0,1},1代表黑名单样本,0代表白名单样本,

表2 特征向量统计表Table 2 Feature vector of sample

3 实验结果及分析

分别采用基于标准化欧式距离的最小距离分类器算法、K-最近邻算法、余弦相似度算法[8]进行分类比较.为了评价算法性能,引入相关概念如下:

真阳性TP:黑样本被检测为黑样本的数目

假阳性FP:白样本被检测为黑样本的数目

真阴性TN:白样本被检测为白样本的数目

假阴性FN:黑样本被检测为白样本的数目

检出率:TPR=TP/(TP+FN)

误报率:FPR=FP/(FP+TN)

正确率:ACY=(TP+TN)/(TP+TN+FP+FN)

Youden指数=TPR-FPR,其中Youden指数的取值范围为(-1,1),其值越接近于+1,就意味着该检测模型的判别准确性越好.实验采用3次交叉验证的方法,结果如表3.

表3 不同分类方法的比较Table 3 Comparison of different methods

从表3结果可以看出:虽然基于标准化欧式距离的最小距离分类器算法的检出率较其他两种方法高,但是误报率也较其他两种方法高,而余弦相似度算法和K-最近邻算法虽然误报率较最小距离分类器算法低,但是检出率却不如最小距离分类器.所以,具体选择哪个算法要依据具体要求而定,例如,如果在只要求检出率的场合,则应选择最小距离分类器算法,如要求误报率低的场合,则选择余弦相似度算法.

4 结论

由于恶意代码在植入、安装阶段具有明显不同于一般程序的行为特征,所以,通过提取代码运行时调用的API序列作为识别恶意代码依据的方式,不但可以识别出未知的恶意代码,而且也能识别出加壳的恶意代码.为未知恶意代码的识别提供了一个新的思路.

[1] Fred Cohen.Computer Viruses:Theory and Experiments[J].Computers&Security,1987:6(1):22-35.

[2] Diomidis Spinellis.Reliable Identification of Bounded-lengh Viruses Is NP-comlee[J].IEEE Transactions on Information Theory,2003,49(1):280-284.

[3] Xu Jianyun,Sung Andrew H,Mukkamala Srinivas,et al.Obfuscated Malicious Executable Scanner[J].Journal of Research and Practice in Information Technology,2007,(39)3:181-197.

[4] Schultzm G,Eskin E,Zadok E,et al.Datamining Methods for Detection of new Malicious Executables[C]//Proceedings of the 2001 IEEE Symposium on Security and Privacy.Washington:IEEE Computer Society,2001:38-49.

[5] Huang Hsien-Der,Chuang Tsung-Yen,Tsai Yi-Lang,et al.Ontology-based Intelligent System for Malware Behavioral Analysis[EB/OL].(2010-04-16)[2011-02-18].http://twman.nchc.org.tw/wpcontent/uploads/2011/02/WCCI2010.pdf.

[6] Xu J-Y,Sung A h,Chavez P,et al.Polymorphicmalicious Executable Scanner by API Sequence Analysis[C]//Proceedings of the 4th International Conference on Hybrid Intelligent Systems(HIS 04).Washington:IEEE Computer Society,2004:378-383.

[7] 裴要强,孟波.Windows黑客技术揭秘与攻防[M].北京:中国铁路出版社,2010:257-265.

[8] 毛国君,段立娟,王实,等.数据挖掘原理与算法[M].北京:清华大学出版社,2005:109-130.

猜你喜欢
调用分类器代码
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
测控技术(2018年5期)2018-12-09 09:04:46
创世代码
动漫星空(2018年11期)2018-10-26 02:24:02
创世代码
动漫星空(2018年2期)2018-10-26 02:11:00
创世代码
动漫星空(2018年9期)2018-10-26 01:16:48
创世代码
动漫星空(2018年5期)2018-10-26 01:15:02
BP-GA光照分类器在车道线识别中的应用
电子测试(2018年1期)2018-04-18 11:52:35
基于系统调用的恶意软件检测技术研究
加权空-谱与最近邻分类器相结合的高光谱图像分类
结合模糊(C+P)均值聚类和SP-V-支持向量机的TSK分类器