一种虚拟化恶意程序检测系统的实现

2014-07-19 11:57晨,
西安邮电大学学报 2014年2期
关键词:调用子系统程序

吴 晨, 王 雄

(西安邮电大学 物联网与两化融合研究院, 陕西 西安 710061)

一种虚拟化恶意程序检测系统的实现

吴 晨, 王 雄

(西安邮电大学 物联网与两化融合研究院, 陕西 西安 710061)

为了自动智能检测出新变种的恶意程序,使用虚拟执行与应用程序接口钩子技术,分析程序执行中调用的系统接口,将接口调用顺序编码形成一个特征序列。运用编辑距离算法计算程序特征序列与数据库中恶意特征序列的相似度,实现自动判别恶意种类的功能。在随机选取样本的的前提下,本系统对样本分析后结果表明,检测识别精确度达到92%,误报率仅为6%。

接口钩子;虚拟化;恶意程序检测;编辑距离算法

随着互联网的快速发展,恶意程序的数量和传播速度也随之发生几何性的增长。数量众多的恶意程序无疑给传统的分析方式带来巨大的冲击,静态扫描存在不能及时发现木马变种等问题,而动态分析需要人工介入,严重影响了分析效率。判定程序是否具有恶意性是一项困难的任务,不存在一种检测方法能够检测出所有的恶意程序,也不存在一种方法可以检测出某一个特定恶意程序的所有变体。

目前产业界检测恶意程序普遍采用静态扫描分析为主,人工介入动态分析为辅的方式。静态扫描检测方式对已知恶意程序的检测识别率较高,但对于新型变种程序与未知恶意程序的识别率较低。人工介入动态分析虽然可以提高检测识别率,但是由于全过程都需要人工介入,分析的效率非常低,而且只有少数具有专业能力的技术人员才能胜任这项工作,分析的门槛较高。

基于以上考虑,本文拟设计一种结合虚拟化与应用程序编程接口钩子(Application Programming Interface Hook, API hook)技术的动态恶意程序分析检测系统,针对恶意程序的全自动化分析,并保持分析过程和生成结果相互独立隔离。基于虚拟化的动态分析程序运行时调用系统API特征序列和操作行为,采用编辑距离算法(Levenshtein Distance, LD)[1]计算程序操作行为与典型恶意程序操作行为之间的相似度,从而实现对程序恶意性的近似判定。

1 相关背景与设计思路

自恶意程序出现以来,恶意程序检测技术一直是计算机安全领域关注的焦点。先后有大批的研究人员参与到恶意程序检测技术的研究中,取得了一些进展。

2001年,一种基于数据挖掘的恶意程序检测方法被首次提出,该方法主要思路是对文件进行静态二进制特征检测[2]。

2004年,基于N-Gram特征码的新型恶意代码检测手段[3]被提出。N-Gram算法能够有效抽取频率最高的特征,将抽取到的特征定义为检测规则,依据与其匹配的情况来区分该程序是良性的还是恶意的。

2008年,有学者通过研究某些病毒及其变种版本在执行过程中API调用序列的规律,提出了一种基于动态分析的检测技术[4],从已知病毒的API调用序列中提取出有价值的关联规则,用于指导病毒检测,该方法对未知病毒检测有良好的效果。

2012年,一种基于证据推理的程序恶意性判定方法被提出[5]。该方法通过将程序进行反编译,提取其中可能会影响安全性的行为特征建立集合,然后使用BP神经网络的模型对其进行处理得到各种行为的概率分配函数,并使用加权求和形式对程序行为进行合成,从而实现对程序恶意性的判定。

2012年,有人设计出一种基于进程行为比对的木马分析检测系统[6]。在该设计中,通过主动分析程序的安装和启动行为,结合人工参与形成判定规则,使用行为比对来检测目标程序是否为木马,并设计了一种基于贝叶斯理论的木马行为分类算法。

2012年,又有人设计并实现了一种基于沙箱技术的恶意程序检测系统[7]。该系统运用了重定向技术设计了一种沙箱,将程序运行在沙箱中进行监控并记录行为。在论文中提出基于层次分析法来检测恶意程序,简单来说就是将不同的恶意行为分层分配权重,然后对检测程序的行为序列进行加权求和,并设定一个阀值来确认程序的恶意性。

与以上方法不同,在系统架构方面,可考虑采用虚拟化与API hook技术相结合的双层隔离动态分析系统,以记录程序执行时的各种操作和API调用序列。相对于基于沙箱的分析系统而言,此模式更能有效的获得最贴近于实际环境的API调用序列。因为此模式所需的系统资源不是模拟出来的,且可以有效防范最新出现的具有穿透沙箱功能的恶意程序,从而避免对物理环境造成破环。另外,对于判别恶意程序的算法设计,不妨先建立一组典型恶意行为规则序列,并借助LD算法计算程序操作行为序列与建立的规则序列之间的相似度,从而得出对程序恶意性的分析结果。

2 系统设计

系统主要由分析虚拟机系统、报告生成和存储系统两大部分组成。其中虚拟机系统包含了API hook子系统、恶意性判定子系统这两个分析核心子系统。分析结果包括文件操作、注册表操作、进程服务、网络、运行截图五个模块。系统整体框架如图1所示。

图1 系统整体架构

(1) 虚拟机系统

虚拟机系统采用VMware Workstation环境搭建,运行在分析服务器之上,是程序执行的场所。每次分析则启用快照运行,然后将待分析程序上传至虚拟机执行。共包括文件操作、注册表操作、进程服务、网络、运行截图五个模块,虚拟机系统可以有效的避免恶意程序在执行过程中的逃逸破坏。

(a) API hook子系统

该子系统实现对关键API的拦截,通过关键API序列可以有效的得出待检测程序的行为。该子系统运行在虚拟机系统上。

(b) 恶意性判定子系统

恶意性判定子系统也运行在虚拟机子系统之上,其作用是将API hook子系统分析得出的API序列与规则库中的典型恶意行为规则序列做运算,判断程序是否具有恶意。

(2) 报告生成和存储系统

在虚拟机系统完成分析后,会将分析数据生成一份XML文件。这份XML文件将回传到物理服务器上,经过读取生成分析报告,并将过程存储在数据库中。

2.1 系统执行流程

系统执行流程如图2所示,分析系统启动后,首先获取程序MD5值进行数据库查询工作,若数据库中已经存在该程序的分析结果则终止分析过程,避免对程序的重复分析行为。

图2 系统执行流程

判断程序未经过分析且为可执行文件后,服务器会开启事先制作好的虚拟机快照子系统,该虚拟机系统快照时已经完成系统初始化工作,即已完成重定向路径的设置、hook NtResumeThread函数等操作。虚拟机系统内置研究总结出的几百种恶意软件恶意行为规则序列和比较算法程序,用于与被测程序的行为规则序列做相似运算。

2.2 API hook子系统设计

API hook又名API钩子,是一种用于改变 API 执行结果的技术。钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当程序调用系统API时,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数自定义代码即可以修改该消息,即实现了 API hook。

Windows常用API有2 000多种,但是大部分API对恶意程序来说是不会用到的。恶意程序调用的API函数大多数集中在应用层的级别上,因此只需监测少数特定的API调用行为即可满足恶意判定的需求。

根据Ulrich Bayer的多年研究指出:恶意程序经常使用Windows系统的75个API(其中文件操作、注册表操作、进程操作、服务操作、网络连API分别为16、14、19、14、12个)[8]。我们分别对每个API函数进行不重复的单字符串编码,鉴于篇幅原因表1只列出其中文件操作和注册表操作API编码对应表示。

表1 API编码部分对应表

根据程序执行时监测到的API调用顺序,将其按照上表编码成一个序列

A=(X1,X2,…,Xn)(Xi∈J,i=1,2,…,n),

其中J表示API函数编码的集合。序列A将根据恶意性判定子系统中的规则做运算。

2.3 恶意性判定子系统设计

三是打造一张丽水特色的“金名片”。力争通过2-3年时间的努力,把储备公司打造成浙江省乃至全国储备土地经营管理的一张“金名片”。统一设计LOGO、标识、门牌、导向牌等,对现有储备土地的围墙四周喷绘“国土储备LOGO”等明显标志,对停车场、城市农场等门头进行统一设计,统一品牌名称为“金土地”,如“金土地停车场”“金土地城市农场”等,树立新形象,让市区所有的储备土地成为向市民展示美好形象的载体。同时,通过各种媒体向社会宣传公司的管理职能和经营范围,传播国土相关的法律法规知识,争取社会各界的广泛认知、理解和支持。

恶意性判定子系统规则库中有上千种恶意程序行为序列,在接收到捕获的程序规则序列A后,程序将会根据LD算法分别计算待测程序与规则序列间的相似度s,具体算法如下。

(1)设置n为待检测序列A的长度,m为规则序列B的长度;将序列A和B的值分别存入向量A和B中。

(2)创建(n+1)×(m+1)矩阵D,并使矩阵D的第一行和列的取值从0开始递增。

(3)遍历两向量,如果

A[i]=B[i],

则用temp记录,令temp=0。否则令temp=1。然后在矩阵D[i,j]处赋予

D[i-1,j]+1,

D[i,j-1]+1,

D[i-1,j-1]+temp

三者中的最小值。

(4)遍历完两向量后,矩阵最后的一个值D[m+1,n+1] 即为A和B两序列的差异值。相似度的计算方法为

取值保留两位有效数字。

(5)若s∈(0, 0.68),则将程序安全等级标为Clear,返回继续与其他规则序列计算相似度,直到全部对比完毕;若s∈(0.68,0.87),则将程序安全等级标为Unkonw,表示文件可疑,记录检测相似的恶意类别和相似分数,返回与其他规则序列计算相似度,直到全部对比完毕;若s∈(0.87,1)则将程序安全等级标为Malicious,表示文件高危,记录检测相似的恶意类别和相似分数,返回与其他规则序列计算相似度,直到全部对比完毕。安全级别Clear、Unkonw、Malicious分别按从低到高的等级划分,当检测到高级别时,则会覆盖安全等级。

2.4 报告生成和存储系统设计

在收到虚拟机系统分析完后的XML文件后,服务器会进行一系列的并行处理,最终分析的结果会由服务器主机统一整理并以WEB服务的形式发布,提供查看和下载的功能。其运作流程如图3所示。

图3 报告生成和存储系统流程

3 性能验证

为了验证本系统的性能,特选取了100个程序做测试。其中50个是已知的恶意程序,30个是安全的常用小程序,其余20个是在互联网下载的未知程序。

以下选取其中一个在互联网捕获的未知程序的检测报告作为展示。

图4显示了检测报告中的程序基本信息,包括创建时间、文件名、特征标识和恶意评级等项。

图4 检测程序基本信息

报告中将被检测程序的恶意相似度高于0.65的选项列出,如图5所示。

图5 恶意相似度信息

被测程序的进程操作情况与API调用序列会被详细记录在报告中,如图6所示。

图6 进程操作及API hook序列信息

图7中显示了程序文件操作的检测结果,从图中可以看出,程序进行了创建和修改等操作。被测程序的网络连接情况如图8所示。

图7 文件操作信息

图8 网络行为监控

全部程序均按照随机选取依次进行检测,完成后的测试结果如表2所示。

表2 系统验证检测结果

即使按照最极端的情况来算,本系统的检测识别率P和误报率I分别为

在完全没有人工介入的前提下,结果令人满意。

4 结 语

基于虚拟化与APIhook技术,设计形成了一个全自动化的恶意程序分析识别系统,其恶意判定算法采用目前DNA识别检测技术中常用的编辑距离算法,配合较强的恶意识别规则,可以达到较精确的识别能力,同时该系统还具备检测未知恶意程序的能力,在目前恶意变种剧增的情况下,不失为一种有效的解决方案。通过实现该分析检测系统从一定程度上验证了设计方案可行性。

[1]MillerFP,VandomeAF,McBrewsterJ.LevenshteinDistance[M]. 3rded.Mauritius:AlphascriptPublishing, 2009: 25-112.

[2]SchultzMG,EskinE,ZadokE.DataMiningMethodsforDetectionofNewMaliciousExecutables[J].IEEEComputerSociety, 2001,12(3):38-49.

[3]Abou-AssalehT,CerconeN,KeseljV.N-Gram-BasedDetectionofNewMaliciousCode[J].ComputerSoftwareandApplicationsConference, 2004,28(2):41-42.

[4] 章文,郑烇,帅建梅,等.基于关联规则的未知恶意程序检测技术[J].计算机工程,2008,34(24):172-174.

[5] 张一弛,庞建民,赵荣彩.基于证据推理的程序恶意性判定方法[J].软件学报,2012,23(12):3149-3160.

[6] 曾虎城.基于进程行为比对的木马分析检测系统的设计与实现[D].北京:北京邮电大学,2012:43-52.

[7] 张永超.基于虚拟执行技术的恶意程序检测系统研究与实现[D].长沙:国防科学技术大学,2012:5-6.

[8]BayerU,HabibiI,BalzarottiD,etal.AViewonCurrentMalwareBehaviors[EB/OL].(2009-03-31)[2013-11-02].https://www.usenix.org/legacy/events/leet09/tech/full_papers/bayer/bayer_html.

[责任编辑:王辉]

Realization of vicious procedures detection systembased on virtual technology

WU Chen, WANG Xiong

(The Fusion with Two Things Networking Academy, Xi’an University of Posts and Telecommunications, Xi’an 710061, China)

In order to automatically detect new varieties of malicious program efficiently, based on virtualization and API hook technology, analyzing the system interface call in program execution, a character sequence is formed from coding this process. The system then use Levenshtein Distance algorithm to determine the vicious procedures. System verification results from randomly selected samples show that the detection accuracy is reached a high recognition rate of 92% and low false alarm rate of 6%.

API hook, virtual, malicious executables detection, levenshtein distance

2013-11-08

陕西省信息化建设重点基金资助项目(2011AQ01YA04-09)

吴晨(1988-),男,硕士,助教,从事信息安全、网络攻防研究。E-mail:wuchenvic@163.com 王雄(1982-),男,硕士研究生,研究方向为信息安全。E-mail: glxy13611@163.com

10.13682/j.issn.2095-6533.2014.02.014

TP399

A

2095-6533(2014)01-0077-05

猜你喜欢
调用子系统程序
不对中转子系统耦合动力学特性研究
GSM-R基站子系统同步方案研究
核电项目物项调用管理的应用研究
试论我国未决羁押程序的立法完善
驼峰测长设备在线监测子系统的设计与应用
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
基于系统调用的恶意软件检测技术研究
创卫暗访程序有待改进
车载ATP子系统紧急制动限制速度计算