基于IRP的运行时恶意代码检测方法*

2011-03-16 04:11:18张福勇齐德昱胡镜林
关键词:调用检测器进程

张福勇 齐德昱 胡镜林

(华南理工大学计算机系统研究所,广东广州 510006)

Symantec公司在2009年4月发布的报告中称恶意代码的数量正急剧增加,2007年新增恶意代码62.4万个,2008年则上升至 165.6万个[1].而Symantec公司在2010年1月的最新统计显示,2009年10月至12月间Symantec公司就产生了921143个新的恶意代码特征值[2].恶意代码数量增加之快已使得传统人工分析代码的方法不能满足需求,随着多态病毒、变形病毒数量的急剧增加,传统的提取特征码法已经无能为力.因此,更高效、更具鲁棒性的运行时恶意代码检测方法被广泛采用,通过分析代码运行时产生的应用程序接口(API)调用序列来区分正常和恶意代码.但API调用序列可以被篡改以逃避检测[3-5].Seifert等[6]详细分析了Windows系统中 3种主要的程序行为监控技术,并指出内核驱动技术是监控程序运行时的行为的最佳方式.为此,笔者开发了一个基于内核驱动技术的IRP(I/O请求包)捕获工具MBMAS[7],用于捕获程序运行时创建的进程及这些进程的IRP信息.采用n-gram特征分析方法,将人工免疫系统中的否定选择算法[8]和肯定选择算法[9]相结合,筛选出仅在恶意代码IRP序列中出现的n-gram作为检测器,以实现对恶意代码的有效检测.

在运行时恶意代码检测方面,Forrest等[8]首次提出采用系统调用序列来区分正常和恶意Unix进程.Hofmeyr等[10]采用短系统调用序列建立了Unix进程的正常行为模型,通过Hamming距离来判断一个系统调用序列是否异常.Wespi等[11]提出一种改进的可变长系统调用序列检测方法.Manzoor等[12]利用VX Heaven(http:∥vx.netlux.org/vl.php)上的部分Windows可执行恶意代码,采用API监控器来捕获其 API调用序列,最后采用树突细胞算法(DCA)[13-14]进行分类.随后,Ahmed等[15]采用API调用序列和API参数相结合的方式进行恶意代码检测.这些方法的一个主要缺陷是API调用序列可被篡改以逃避检测.为此,文中提出基于IRP的恶意代码检测方法.

人工免疫系统(AIS)是受生物免疫系统(BIS)启发而被提出的智能计算方法.AIS最重要的理论之一是模仿适应性免疫系统而产生的自体/非自体理论.Forrest等[8]根据自体/非自体思想提出了否定选择算法(NSA),用于恶意代码的检测.后来,出现了许多改进算法,如实值 NSA[16]、随机实值NSA[17]、检测器大小可变的实值 NSA[18]等.Sim等[9]提出了与否定选择算法作用相反的肯定选择算法(PSA).文中将NSA和PSA相结合,精选出少量仅在恶意代码中出现的 IRP序列,以实现恶意代码的检测.

1 恶意代码检测方法

1.1 否定选择算法

否定选择算法是对免疫细胞成熟过程的模拟,算法包括自体耐受和检测两个阶段.首先大量候选检测器经过自体耐受去除与自体匹配的检测器,成为成熟检测器,然后采用成熟检测器对非自体进行检测.算法描述如下:

1.2 肯定选择算法

肯定选择算法采用与否定选择算法相对的过程,与非自体匹配的候选检测器将会被留下.算法描述如下:

1.3 IRP序列

笔者在文献[7]中开发了一个基于内核驱动技术的IRP捕获工具MBMAS.它可以捕获程序运行时创建的进程信息,以及每个进程运行过程中的IRP请求信息.MBMAS可以将进程及由此进程创建的子进程进行关联,检测中若发现其任意子进程是恶意的,则认为此进程是恶意的,即认为创建进程的代码为恶意代码.图1是IRP请求捕获工具的用户态界面,关于MBMAS的详细介绍请参见文献[7].

图1 MBMAS的用户态界面Fig.1 Usermode interface of MBMAS

通过对捕获的IRP进行统计分析,发现共有30种不同类型的IRP.为了方便匹配,用ASCII字符0,1,2,…,M代表这 30种类型.定义抗原域为 U∈{0,1,2,…,M}l,l∈N,定义抗原Ag={x x=IRP序列对应的字符序列,x∈U}.定义自体为正常代码产生的IRP序列对应的字符序列S⊆Ag,非自体为恶意代码产生的IRP序列对应的字符序列N⊆Ag,且满足S∪N=Ag,S∩N=.

1.4 检测方法描述

文中选用n-gram作为检测器.匹配规则为通用字符串匹配算法,只要待检测序列中存在与检测器相同的n-gram即认为匹配.

前期研究中发现采用4-gram作为检测器可取得较好的检测结果,因此文中采用4-gram检测器进行实验.生成4-gram的全排列作为候选检测器.文中采用两种方法来测试检测效果:仅采用否定选择算法过滤掉与自体匹配的检测器,剩下的作为成熟检测器进行检测;先采用否定选择算法过滤掉与自体匹配的检测器,再采用肯定选择算法筛选出与非自体匹配的检测器,最终得到的检测器为仅在非自体中出现的序列.图2给出了4-gram数量与IRP数量的关系.

图2 4-gram数量与IRP数量的关系Fig.2 Number of 4-gram s versus number of IRPs

2 数据集

文中收集了 600个恶意代码和 300个正常Windows可执行文件.600个恶意代码中有300个是从VX Heaven下载的2003—2007年的恶意代码(称恶意代码1),另外300个是在Internet上收集的2009年 1月至 2010年 3月间的新恶意代码(称恶意代码2).所有恶意代码均为Win32 PE格式.表1为实验中所用到的可执行文件的信息.

在一台新安装Windows XPSP2的VMware虚拟机中进行IRP的捕获,并且每运行完一个样本即将虚拟机恢复到新安装时的状态.每个样本运行过程中创建的进程及其子进程产生的IRPs被看作是一个IRP序列.

文中实验平台为一台安装Windows 7的计算机,CPU为AMD Athlon(tm)64×2双核处理器4200 2.20GHz,内存为4GB.

表1 实验数据信息Table 1 Information ofexperimental data

3 实验结果与分析

将3种类型的各300个文件分成 3组(分别标号为group1、group2和group3,其中将group1和group2作为训练数据,group3作为测试数据),每组包含100个正常文件、100个恶意代码 1和 100个恶意代码2.测试时,将group3分成两组:正常文件+恶意代码1、正常文件+恶意代码2.

实验1 生成4-gram的全排列作为候选检测器,仅采用group1中的100个正常文件产生的IRP序列作为自体进行耐受,耐受后得到的成熟检测器数量为807698,采用group3作为测试数据,正常文件+恶意代码1、正常文件+恶意代码 2的检测率均为99%,误检率均为18%,说明自体耐受不充分.

实验2 生成4-gram的全排列作为候选检测器,采用group1和group2中的正常文件产生的IRP序列作为自体进行耐受,耐受后得到的成熟检测器数量为807368,采用group3作为测试数据.

由于实验 2中采用了更多的自体进行耐受,故正常文件+恶意代码 1、正常文件 +恶意代码 2的误检率有所降低,均为9%;但对恶意代码1的检测率降到了96%,而对恶意代码2的检测率没有明显的下降,保持为99%.其原因可能是有些恶意代码1比较陈旧,在Windows XP SP2上不能很好地运行,没有对系统造成实际的破坏.

实验3 使用实验 1中得到的 807 698个成熟检测器作为候选检测器,采用肯定选择算法筛选出与group1中200个恶意代码产生的IRP序列匹配的检测器391个,采用group3作为测试数据.

实验 3中通过精选的 391个检测器就达到了与实验 2中 807368个检测器同样的检测率,而且误检率也有所降低,均为 6%.这说明在进行恶意代码检测时并不需要生成大量的检测器,因为绝大多数的序列是不可能出现的;只需通过精选的、少数仅在恶意代码中出现的序列进行检测,即可达到同样的检测效果,而且在一定程度上还能减少误检率,更重要的是采用精选的少数检测器的检测效率高,无需每次都进行指数时间的耐受过程.

实验 4 将实验 2中得到的 807368个成熟检测器作为候选检测器,采用肯定选择算法筛选出与group1和group2中400个恶意代码产生的IRP序列匹配的检测器311个,采用group3作为测试数据.

实验 4中经过更好的筛选,得到了 311个检测器,其检测率与实验 3相同,达到 96%以上,更重要的是误检率均为 0.这是因为实验 4在实验 3的基础上进行了更多的自体耐受,绝大多数匹配自体序列已被清除,再经过大量非自体的筛选,剩下的检测器匹配自体的可能性就非常低.

从上述实验可以看出,单独采用否定选择算法,虽然可以达到很高的检测率,但误检率也较高.显然,单独采用肯定选择算法也不能得到理想的结果,因为恶意代码的 IRP序列中必然存在大量的正常n-gram序列(前期采用肯定选择算法进行测试,误检率高达100%).而实验4中综合采用否定选择和肯定选择算法来筛选得到的4-gram检测器获得了很好的检测结果.

下面将文中提出的方法与全排列检测器的NSA和DCA进行比较.采用group1和group2作为训练数据,group3作为测试数据.DCA的参数设置参见文献[12],实验结果见表2.

表2 几种方法的检测结果比较Table 2 Comparison of detection resu lts of several algorithms %

从表2中可以看出,文中方法可以取得与NSA一样的检测率,但误检率远低于NSA.DCA对恶意代码1的检测率为97%,略高于NSA和文中方法;对恶意代码2的检测率则略低于NSA和文中方法.文中方法的误检率明显低于NSA和DCA.3种方法的检测时间见表3.

表3 几种方法的检测时间比较Table 3 Comparison of detection time of several algorithms s

从表 3中可知,文中方法因仅采用了少量的检测器,故检测效率很高;DCA在特征提取阶段需要计算信息增益以产生信号值,花费时间稍多于文中方法;NSA因使用大量检测器,故检测效率很低.

4 结语

自采用系统调用序列进行异常检测以来,人们投身到基于系统调用序列异常检测的研究上,但随着恶意代码编写者水平的提高,仅靠捕获API调用已不能满足恶意代码的检测要求.为此,文中提出了基于IRP的运行时恶意代码检测方法,因IRP请求捕获工具运行在内核态,故文中方法可有效地检测运行在内核态的恶意代码.

文中将否定选择算法和肯定选择算法相结合,筛选出极少量仅在恶意代码IRP序列中出现的检测器进行检测,不但克服了单一采用否定选择算法检测器数量大、检测时间长的缺点,而且在以后的学习过程中,可以仅针对筛选出的少量检测器进行检测,避免了否定选择算法指数级的学习时间.实验结果表明,文中方法可以有效地检测恶意代码,降低了误检率.

[1] Symantec Corporation.Internetsecurity threat report volume XIV[EB/OL].(2009-04-30)[2010-04-22].http:∥www.symantec.com/business/theme.jsp?themeid=threatreport.

[2] Symantec Corporation.Symantec intelligence quarterly, October-December 2009 reports[EB/OL].(2010-01-30)[2010-04-22].http:∥www.symantec.com/business/ theme.jsp?themeid=threatreport.

[3] Parampalli C,Sekar R,Johnson R.A practicalmim icry attack against powerful system-call monitors[C]∥Proceedings of ACM Symposium on Computer and Communications Security.Tokyo:ACM,2008:156-167.

[4] Wagner D,Soto P.Mimicry attacks on host-based intrusion detection systems[C]∥Proceedings of the 9th ACM Con ference on Computer and Communications Security. Washington D C:ACM,2002:255-264.

[5] Oberheide J.Detecting and evading CWSandbox[EB/OL]. (2008-01-15)[2010-04-22].http:∥jon.obe-rheide.org/ blog/2008/01/15/detecting-and-evading-cwsandbox/.

[6] Seifert C,Steenson R,Welch I,et al.Capture—a behavioral analysis tool for applications and documents[J]. Digital Investigation,2007,4(Suppl1):S23-S30.

[7] Zhang Fu-yong,Qi De-yu,Hu Jing-lin.MBMAS:a system for malware behavior monitor and analysis[C]∥Proceedings of International Symposium on Computer Network and Multimedia Technology.Wuhan:IEEE,2009: 1-4.

[8] Forrest S,Hofmeyr S A,Somayaji A,et al.A sense of self for Unix processes[C]∥Proceedings of IEEE Symposium on Security and Privacy.Oakland:IEEE,1996:120-128.

[9] Sim Kwee-bo,Lee Dong-wook.Modeling ofpositive selection for the development of a computer immune system and a self-recognition algorithm[J].International Journal of Control,Automation,and Systems,2003,1(4):453-458.

[10] Hofmeyr S A,Forrest S,Somayaji A.Intrusion detection using sequences of system calls[J].Journal of Computer Security,1998,6(3):151-180.

[11] Wespi A,Dacier M,Debar H.Intrusion detection using variable-length audit trail patterns[C]∥Proceedings of the Third International Workshop on Recent Advances in Intrusion Detection.Berlin/Heidelberg:Sp ringer-Verlag, 2000:110-129.

[12] Manzoor S,Shafiq M Z,Tabish S M,et al.A sense of‘danger'for windows processes[C]∥Proceedings of the 8th International Conference on Artificial Immune Systems.Berlin/Heidelberg:Springer-Verlag,2009:220-233.

[13] Greensmith J,Aickelin U,Cayzer S.Introducing dend ritic cells as a novel immune-inspired algorithm for anomaly detection[C]∥Proceedings of the 4th International Con ference on Artificial Immune Systems.Berlin/Heidelberg:Springer-Verlag,2005:153-167.

[14] Greensmith J,Aickelin U.The determ inistic dend ritic cell algorithm[C]∥Proceedings of the 7th International Conference on Artificial Immune Systems.Berlin/Heidelberg:Springer-Verlag,2008:291-303.

[15] Ahmed F,Hameed H,Shafiq M Z,et al.Using spatiotemporal in formation in API calls with machine learning algorithms for malware detection[C]∥Proceedings of the 2nd ACM Workshop on Security and Artificial Intelligence.Chicago:ACM,2009:55-62.

[16] Gonzalez F,Dasgupta D.Anomaly detection using realvalued negative selection[J].Journal of Genetic Programming and Evolvable Machines,2003,4(4):383-403.

[17] Gonzalez F,Dasgupta D,Nino L F.A randomized realvalued negative selection algorithm[C]∥Proceedings of the 2nd International Conference on Artificial Immune Systems.Berlin/Heidelberg:Sp ringer-Verlag,2003:261-272.

[18] Ji Z,Dasgupta D.Real-valued negative selection algorithm with variable-sized detectors[C]∥Proceedings of Genetic and Evolutionary Computation Conference.Berlin/ Heidelberg:Springer-Verlag,2004:287-298.

猜你喜欢
调用检测器进程
核电项目物项调用管理的应用研究
债券市场对外开放的进程与展望
中国外汇(2019年20期)2019-11-25 09:54:58
LabWindows/CVI下基于ActiveX技术的Excel调用
测控技术(2018年5期)2018-12-09 09:04:46
车道微波车辆检测器的应用
基于系统调用的恶意软件检测技术研究
一种雾霾检测器的研究与设计
工业设计(2016年11期)2016-04-16 02:49:43
社会进程中的新闻学探寻
民主与科学(2014年3期)2014-02-28 11:23:03
一体化火焰检测器常见故障分析
河南科技(2014年22期)2014-02-27 14:18:12
我国高等教育改革进程与反思
教育与职业(2014年7期)2014-01-21 02:35:04
Linux僵死进程的产生与避免