【IT168 专稿】提到木马,大家并不陌生,但是为什么还是有很多人屡屡中招,死在木马的“蹄”下呢?原因很简单,因为大家不能识别木马,木马也不会告诉你“我是一个木马,你要当心了”。相反,木马会采取种种手段,尽量不让大家识别出来,其中加壳就是一种常用的躲开杀毒软件和防火墙的方式。针对加壳的病毒木马,我们该怎么办呢?如何进行检测?最新发布的超级巡警之虚拟机自动脱壳机 V1.1就可以对加壳的木马样本进行脱壳处理。下面我们就以一次完整的加壳、脱壳实例来看看其具体的操作。
一、穿马甲——木马加壳的实现
1.什么是加壳
所谓加壳,其实是指利用特殊的算法,对EXE、DLL文件里的资源进行压缩的方法,这个压缩之后的文件可以独立运行,解压过程完全隐蔽,都在内存中完成。加壳一般有两种用途:
一是大部分的程序是因为防止反跟踪,防止程序被人跟踪调试,防止算法程序不想被别人静态分析。加密代码和数据,保护程序数据的完整性,不被修改或者窥视程序的源代码。
二是将一些恶意程序包装起来,脱过杀毒软件的监视,从而实现自己的目的,如加壳后的木马程序。显然,我们这里的加壳主要是针对第二种情况。
2.加壳实战
听起来,加壳是个很复杂的操作,但实际上我们并不需要自己去编写加壳程序来为源程序进行加壳。目前,成熟的、免费的第三方加壳程序已经是非常的多,如UPX、WWPACK、ASPack等等。使用这些程序,只需进行简单的设置,就可以对自己的软件进行加壳。比方说灰鸽子的服务器端就是使用UPX加壳的!
那么,是不是加了壳的木马就能够成功的躲过任何杀毒软件的监控呢?事实上,在没有脱壳之前,的确能够发现壳内源代码的杀毒软件还不多,但是一旦加壳的木马被执行之后,完成了脱壳的过程,那么跟踪内存的杀毒软件会很快的发现内存中正在运行中的木马,最后将之杀掉。实际上,国内很多杀毒软件已经掌握了检测加壳恶意程序的技术。如,在从服务器中下载加壳的木马服务器端程序时,就会弹出如图所示的提示。

图1 病毒以及加壳提示
从图中可以看出,Setup.exe文件中包括了加壳技术已经被检测出来了。那么,恶意程序是如何实现加壳的呢?木马加壳的技术实际上很简单,当一个服务器端的EXE程序生成好后,可以很轻松的利用ASPACK、UPX、WWPACK等这些第三方的程序进行加壳操作。下面,让我们来看看如何使用ASPack汉化版对一个程序进行加壳,具体过程是:
(1)下载ASPack汉化版;在“选项”设置界面中,在“语言”列表中选择“Chinese”项,使软件界面转为中文化,如图所示。

图2 基本选项设置
(2)在“打开文件”界面中,将准备进行加壳的程序添加进来,如图所示。

图3 添加加壳的文件
在完成软件的添加后,将立即跳转到“压缩”界面中,此时可以看到软件的加壳操作已经开始。如图所示:

图4 开始加壳操作
(3)在完成加壳后,可以单击“压缩”界面中的“测试”按钮,测试一下加了壳后的程序能否运行。如果出现程序界面,则表示加壳成功。但是,如果是对恶意程序进行加壳后,一般就不要点击了,否则善后工作将会很繁琐。如图所示。

图5 测试加壳程序
二、换了马甲照样认识你——检测加壳方式
对于一个不是自己加壳的软件,如何才能知道其加壳的方式是什么呢?这直接关系到如何进行脱壳。我们可以使用大名鼎鼎的Language 2000进行加壳的侦测。
相关下载:language2000侦壳工具 V4.51 绿色版
http://download.it168.com/08/0802/83178/83178_3.shtml
方法如下:下载Language 2000并运行它,单击“Open”按钮,找到加壳的程序并添加进来。Language 2000会自动对导入的程序进行分析,分析完成后得到的信息如图所示。

图6 加壳信息一目了然
可以看到,Language 2000列出了程序的编写语言、加壳方式,以及各种相关的信息。
三、原形毕露——自动脱壳机脱壳实战
与加壳相反的过程称之为“脱壳”,目的是把加壳后的程序恢复成毫无包装的可执行代码,这样未授权都便可以对其进行修改。“脱壳”的过程与“加壳”的操作相似,但是对于不同是的“加壳”软件,需要使用不同的“脱壳”软件。入侵者只要知道目标程序使用的是哪种“加壳”软件进行加壳的,然后,再用对应的“脱壳”软件进行脱壳即可。简单地来说,加壳与脱壳就相当于加密和解密的关系。具体过程如下:
(1)超级巡警之虚拟机自动脱壳机;下载地址如下:http://download.it168.com/08/0803/60429/60429_3.shtml
(2)安装后,运行脱壳程序。在将加壳后的服务器端程序添加进来后,单击“给我脱”按钮,很快将识别出加壳方式以及是否可以脱壳,脱壳后的保存路径。如图所示。

图7 轻松进行脱壳
如果程序并没有被加壳,则呈灰色显示。

图8 程序没有加壳
甚至,有些加了壳的恶意程序,很多杀毒软件根本就检测不出来。这也是加壳与不加壳的重要区别。对于入侵来说,能否被对方的杀毒软件检测出来,将意味着是否能够入侵成功;而对于我们防范来说,如何识别出是否被加壳显得非常重要。该软件完全基于虚拟机技术,对各种已知未知壳进行脱壳处理,适合病毒分析中对加壳的木马样本进行脱壳处理。由于所有代码均运行在虚拟机中,不会对系统造成任何危害。怎么样,有了以上的几样法宝,即使木马穿了马甲,我们也能把它打回“原形”了!