WIN32 PE病毒检测系统的设计与实现
2017-07-10张梦佳郑安然陶瑜
张梦佳 郑安然 陶瑜
摘 要:互联网信息技术为现代人的工作和生活带来了巨大的便利,与此同时,层出不穷的木马、病毒和各种恶意软件使计算机的安全受到了巨大的挑战,也严重影响了人们的生活。为了进一步遏制木马、蠕虫、病毒等恶意软件,国内外很多专家都设计了诸如病毒程序机器码和虚拟机技术、静态扫描等方式去进行病毒的检测,但是实际上计算机病毒的更新换代比人们想象的更加快速,尤其是对于当前新兴的、技术含量最高的WIN32 PE病毒,检测技术仍然比较落后。本文对于WIN32 PE病毒进行了详细分析,并提出了基于病毒行为的检测方法,构建了一个病毒检测的模型,能够适应当今病毒种类多、产生快的特点,实现对新型病毒的检测。
关键词:WIN32 PE病毒;病毒检测;系统设计
随着科学技术的发展,人类进入了以互联网为基础的信息时代,与此同时黑客技术也得到了迅猛发展,计算机病毒也逐渐出现了产业化的发展趋势,病毒的数量和种类急剧上升。
传统的杀毒软件,只能使用虚拟机技术和扫描病毒特征的方法,以及检测病毒行为的方法来清理病毒。其中扫描病毒特征的方法是最有效率,同时也是结果最准确的检测方法,但是这种传统的检测方法已经无法适应目前空前高涨的病毒数量和各种新型病毒了。这是因为,使用扫描病毒特征的方法检测病毒,需要人为提供病毒的特征代码,由于目前病毒种类和数量的极速增多,人为提取病毒的特征代码难度很大,不能及时更新病毒库,导致病毒被发现的周期延长,给计算机使用者带来重大的经济损失。
另外,虚拟机技术要调用API系统并需要占用很大的运转空间,而且没有强大的兼容性,导致用户使用该技术查杀病毒时,计算机的运行速度非常缓慢[ 1 ]。
最后检测病毒行为,也就是行为分析技术虽然可以有效的检测出新型病毒,但是必须要用户允许检测程序运行才可以,实现不了程序的自行检测和直接清除病毒[ 2 ]。而且很多新型病毒都是以静态的形式在计算机中潜伏,需要采用专门的静态行为分析技术将这些病毒在被激活之前检测出来并清除。
樊昌信、张甫翊和徐炳祥[ 3 ]提出要通过静态行为分析技术分析有PE开头的文件特征,可以采取三种不同的方法来提取文件的特征属性,即:提取文件的DLL名称和其中的API函数名称及数量的方法,然后区分出正常文件和计算机病毒,将他们分类记录,这三种方法的检测效果都比较好。但是这种检测病毒的形式也存在一定缺陷,在检测过程中没有精简API函数,因为大多数API函数都体现不出来计算机病毒的特征,这点对于区分正常文件和计算机病毒文件的作用很小。
胡敏[ 4 ]认为通过扫描代码节的静态方式提取CALL指令和它所对应的目的地址,最终得到API的调用序列,并将这些序列存入数据库加以分析,可以得到很好的检测效果。但是实际上,通过扫描代码节的静态方式是不可能有效获得API函数在执行时候的调用序列的,这是因为静态分析的方法判断不了运行中的寄存器的状态和堆栈的状态,所以使用这种方法得到的API效用序列无法体现出实效性,得不到准确的API调用序列。
本文根据病毒的动态行为设计了病毒检测系统,能够适应当今病毒种类多、产生快的特点,实现对新型病毒的检测。
一、WIN32 PE病毒概述
WIN32 PE病毒的感染流程是:首先查找计算机内是否有“ME”标志的文件,如果计算机内的文件没有这个标志,那么WIN32 PE病毒就感染不了用户的计算机了;如果有“ME”标志的话,病毒就会继续查找有“PE”标志的文件,如果没发现“PE”文件就继续查找;将查找到的所有PE文件列出目录,并计算文件个数和偏移量;然后计算节表的开始和结束位置;计算节表的末尾处的偏移量;在节表中加入一个新节,并添加相应内容和信息,并添加病毒的感染标记;然后把WIN32 PE病毒的代码添加到新加入的节里面;修改节表的末尾值和该文件的入口地址,使程序一旦开始运行,就先执行病毒指令,在执行成功后结束。
目前监测WIN32 PE病毒的措施主要包括扫描病毒特征的方法、病毒行为阻断方法、启发式的檢测方法、沙箱隔离运行方法,这些方法都是主要根据病毒的静态特征来检测的,很大程度上局限了对病毒的检测能力,效果不是很好[ 5 ]。随着黑客技术的发展和病毒技术的进步,演化出了更多更丰富的病毒变形和代码的整合技术,以及利用互联网特性逐步增强传播效果的病毒技术,越发显得目前的病毒检测技术具有很大的局限性,而本文提出的基于病毒行为的检测病毒的方法,能够很好的解决新型病毒的检测问题。
二、病毒检测系统的设计
经过研究发现WIN32 PE病毒主要是通过WINDOWS API函数来非法获取计算机用户的操作系统资源,或者恶意访问用户的电脑,本文针对WIN32 PE病毒的感染文件的方式和行为,设计了一个检测系统,包括预处理、虚拟机的控制、行为追踪、特征向量生成、支持向量学习的五个模块,通过该系统检测未知的新型病毒[ 6 ]。
(一)预处理
该模块包括了三个项目,分别是样本的程序、入库和数据库,功能就是要把样本的程序导入数据库里面。具体流程是:用户打开该程序,然后自动初始化,加载驱动,成功之后和接口信息实现共享,如果驱动加载不成功的话,就一直循环往复直到驱动加载成功。
(二)虚拟机的控制
设计该模块的目的就是要根据驱动传递出来的信息,做出选择和判断,并执行操作,然后及时把操作结果反馈回驱动。具体流程是:
第一,连接样本的数据库;
第二,开启虚拟机程序,用户凭账号和密码登录到系统中;
第三,从数据库中取出PE样本文件,把该文件输入到虚拟机的目录中;
第四,启动动态分析和追踪模块,在虚拟机的XML文件里面记录样本文件的恶意行为特征;
第五,把XML文件传送到物理机里面,并在数据库中保存记录结果。
(三)病毒行为追踪
该模块是本检测系统的核心,包括断点设置和行为捕捉两个部分,功能是要追踪和记录虚拟机中样本程序在运行过程中做出的恶意行为,并保存所有恶意行为的数据,通过虚拟机的控制模块把数据传送到数据库里面[ 7 ]。
断点设置就是要先通过行为捕捉的方法将需要捕获的系统调用函数集中在固定文件中,比如User32.d11, Advapi32.d11, Kerne132.d11, Wininet.dll等文件,然后要把需要监控的文件加载到系统内存里面的模块句柄,重新获得需要监控的API函数入口地址,在得到所有需要的地址后,在这些地址里面设置断点INT3,使调试器获得CPU主机的控制权,然后进入该模块的第二个部分——行为捕捉部分。
在启动病毒行为追踪模块之后,虚拟机会开始运行PE样本程序,这时候会占用一定的内存空间,在设置断点之后,只要程序运行到断点,那么就会进入行为捕捉部分,使系统捕获到文件调用系统函数的具体行为。具体来说就是调试器会在待测文件样本运行到程序断点的时候,获取该中断信息,在处理中断的时候记录该文件使用进程中的上下文情况和环境,并把这些记录传入到自定义的相应函数中进行处理。
(四)特征向量生成
该模块包括了病毒行为特征数据库和生产特征向量两个部分。前者的功能是根据传递回来的信息,判定是否是病毒行为。如果是的话,就发出结束进程的命令,并将处理结果反馈回驱动,具体过程就是通过调用Open Process 函数,并以更高的权限打开进程,然后通过Virtual AllocEx函数在该进程中重新分配内存,保存好需要加载的恶意文件路径之后,调用Write Process Memory函数把恶意文件的路径写入分配得到的内存中,调用函数地址,将恶意文件传送到目标的远程线程之中,确定是否为病毒行为特征后,根据监控得知的PE文件行为,确定样本的初始特征向量,最后筛选得出最终的病毒特征向量[ 8 ]。
(五)支持向量机学习
该模块的设计是利用支持向量机所具有的“一对多”分类算法来对样本进行分类的[ 9 ]。在系统测试实验中,选取的样本文件包括木马、狭义病毒、后门、蠕虫和正常的程序文件五种,一共需要五个SVM二类分类器,也就是说这个模块进行的是文件的二类分类。在实验时,输入到这5个二类分类器中的样本应该有已知的和未知的,已知样本可以是木马,未知样本可以使病毒、后门、蠕虫等,通过比较分类结果,判断出样本所属类型。而且这个模块还能根据文件所传递出来的信息,判断操作是否是对系统自身文件实施的,如果是就会开展自我保护功能,如果不是就会自动跳过自我保护功能,去执行其他的指令。
三、Win32 PE 病毒检测系统评测
为了测试该系统对病毒的检测效果,搜集了一千个病毒样本进行了检测,把所有样本分为五组,每组二百个,进行了五次实验。测试结果表明,该系统对于正常样本文件有很高的检测准确率,利用样本的行为特征,生成特征向量,并通过支持向量学习模块进行分类在鉴定样本是否是病毒方面也取得了很好的效果,而利用二类分类器也能够很好的检测病毒程序。
总的来说,该系统化被动为主动,不再等病毒感染了用户文件之后再去检查和清除,而是在病毒的感染过程中采取措施进行阻断,所以这个病毒检测系统是有效的[ 10 ]。
四、结论
随着社会的发展,技术的提高,人们进入了以互联网为基础的信息时代,恶意软件不断的进化、升级,尤其是近年来,不法分子利用恶意软件获取计算机用户的数据和文件的现象,成倍增长,很多不法分子从过去传统式的假冒网址进行钓鱼诈骗,转变成了和手机短信、电话、木马等手段结合在一起的复杂型诈骗,对于计算机病毒的防范仍需加强,还需要进一步改进防范病毒的科学技术。
本文针对目前计算机病毒的检测技术方面的不足,根据WIN32 PE病毒的行为特征,设计了病毒检测系统,希望能够加强用户对于计算机病毒的防御能力。
参考文献:
[1] Binh L N,Huynh T L,Pang K K.Direct detection frequency discrimination optical receiver for minimum-shift keying format transmission[J].Journal of Lightwave Technology,2008,26(18):3234-3247.
[2] 張幼明,贾建祥.MSK信号的差分数字解调方法[J].舰船电子工程,2008(1):77-79.
[3] 樊昌信,张甫翊,徐炳祥.通信原理[M].北京:国防工业出版社,2002.
[4] 胡敏.MSK数字化调制解调技术研究[D].长沙:中南大学,2007.
[5] 顾永仁.计算机病毒的防范及安全策略研究[J].电子技术与软件工程,2015(1):232.
[6] 张蓉.计算机网络安全和计算机病毒的防范措施[J].信息化建设,2015(11):96.
[7] 张骞,康绯,舒辉,肖亚南.一种面向环境识别的恶意代码完整性分析方法[J].计算机应用研究,2016(2):513-517.
[8] 张俊.恶意软件的取证分析方法研究[J].湖北警官学院学报,2014(11):162-166.
[9] 肖体伟.计算机病毒及防范对策探索[J].产业与科技论坛,2014(18):85-86.
[10] 魏巍,纪威.32位PE文件分析器的设计与实现[J].山东科学,2014(60:67-72.
作者简介:
张梦佳(1994-),女,汉族,河南驻马店人,南华大学经济管理学院硕士研究生(通讯作者);
郑安然,湖南大学经济与贸易学院本科生;
陶瑜(1991-),男,土家族,四川成都人,南华大学经济管理学院硕士研究生。