在好莱坞间谍电影里,那些特工们往往以神奇莫测的化妆来欺骗别人,甚至变换成另一个身份,国内对于这种伪装行为有个通俗的说法——"穿马甲"。而这种正与邪的争斗已经延伸到了病毒领域,很多病毒作者通过给病毒"穿马甲" 、甚至穿多个"马甲" 的方式,躲避杀毒软件的查杀,这种技术就是" 加壳"。
病毒作者可以通过给老病毒加壳,大批量制造出杀毒软件无法识别的新病毒,从而给杀毒厂商造成技术上的困扰。如何彻底解决这个问题,也成为国际信息安全界关注的焦点。来自中国的瑞星公司,通过在虚拟机技术上的深入研究,干净彻底的解决了这个世界级难题。
"虚拟机脱壳引擎(VUE-Virtual machine Unpack Engine)" 技术已经应用在了瑞星杀毒软件2007版中,从而使得杀毒更快更彻底,病毒库比传统杀毒软件减小了1/3 ,资源占用也更少,电脑运行速度将明显加快。
什么是加壳?
所谓加壳,是一种通过一系列数学运算,将可执行程序文件或动态链接库文件的编码进行改变(目前还有一些加壳软件可以压缩、加密驱动程序),以达到缩小文件体积或加密程序编码的目的。
当被加壳的程序运行时,外壳程序先被执行,然后由这个外壳程序负责将用户原有的程序在内存中解压缩,并把控制权交还给脱壳后的真正程序。一切操作自动完成,用户不知道也无需知道壳程序是如何运行的。一般情况下,加壳程序和未加壳程序的运行结果是一样的。
如何判断一个可执行文件是否被加了壳呢?有一个简单的方法(对中文软件效果较明显)。用记事本打开一个可执行文件,如果能看到软件的提示信息则一般是未加壳的,如果完全是乱码,则多半是被加壳的。
我们还可以使用一款叫做Fileinfo的工具来查看文件具体加的是什么壳。目前,较常见到的壳"UPX" 、"ASPack"、"PePack"、"PECompact" 、"UPack" 、"NsPack"、"免疫007"、" 木马彩衣" 等等。
"加壳" 病毒已经成为传统杀毒软件无法克服的难题
为什么黑客能够利用加壳技术来对抗反病毒软件呢?众所周知,目前杀毒软件主要依靠特征码技术查杀病毒。由于加壳软件会对源文件进行压缩、变形,使加密前后的特征码完全不同。
脱壳能力不强的杀毒软件,对付" 加壳" 后病毒就需要添加两条不同的特征记录。如果黑客换一种加壳工具加壳,则对于这些杀毒软件来说又是一种新的病毒,必须添加新的特征记录才能够查杀。
如果杀毒软件的脱壳能力较强,则可以先将病毒文件脱壳,再进行查杀,这样只需要一条记录就可以对这些病毒通杀,不仅减小杀毒软件对系统资源的占用,同时大大提升了其查杀病毒的能力
根据瑞星2006年1月到10月截获的病毒样本统计,约有90%以上的病毒文件进行过"加壳" 处理。而国内较为流行的" 灰鸽子" 木马,加壳率几乎达到100 %。
对付加壳病毒常见的解决方法
"马甲" 能穿也能脱。相应的,有加壳也一定会有解壳(也叫脱壳)。目前,脱壳主要有两种方法:硬脱壳和动态脱壳。
第一种,是硬脱壳,这是指找出加壳软件的加壳算法,写出逆向算法,就像压缩和解压缩一样。由于,目前很多" 壳" 均带有加密、变形的特点,每次加壳生成的代码都不一样。硬脱壳对此无能为力,但由于其技术门槛较低,仍然被一些杀毒软件所使用。
第二种,是动态脱壳。由于加壳的程序运行时必须还原成原始形态,即加壳程序会在运行时自行脱掉"马甲"。目前,有一种脱壳方式是抓取(Dump)内存中的镜像,再重构成标准的执行文件。相比硬脱壳方法,这种脱壳方法对自行加密、变形的壳处理效果更好。
虚拟机脱壳引擎(VUE)技术
对于病毒,如果让其运行,则用户计算机就会被病毒感染。因此,一种新的思路被提出,即给病毒构造一个仿真的环境,诱骗病毒自己脱掉"马甲"。并且,"虚拟环境" 和用户的计算机隔离,病毒在虚拟机的操作不会对用户计算机有任何的影响。
"虚拟机脱壳" 技术已经成为近年来全球安全业界公认的、解决这一问题的最有效利器。但由于编写虚拟机系统需要解决虚拟CPU、虚拟周边硬件设备、虚拟驱动程序等多个方面的困难,即使有雄厚的研发实力,也未必能在短时间内达到实用的程度。
经过四年多的技术创新和积累,瑞星"虚拟机" 研发团队攻克了多项技术难题,在虚拟CPU 、计算机周边设备的仿真模拟等方面取得了突破性的进展,在虚拟环境中可以同时运行数个完整的操作系统,成为继微软、VMWare之后全球第三家拥有自主知识产权的商用" 虚拟机" 技术的软件厂商。
通过将商用虚拟机的核心技术应用到反病毒引擎当中,瑞星"虚拟机脱壳"引擎可以将各种"加壳" 病毒还原为原始状态,从而干净彻底的将其清除。