互联网的飞速发展在给用户的日常工作生活带来了巨大方便的同时,也给各种各样的恶意软件提供了一片繁衍扩散的沃土。媒体上时有关于某种恶意软件大规模流行造成严重损失的报道。恶意软件的扩散早已引起信息安全业界的重视,各安全软件和杀毒软件厂商都有成型的解决方案。不过恶意软件的更新换代总是走在安全厂商的产品前面,恶意软件变种的出现速度越来越快,单纯使用防杀毒软件已不能完全保证用户远离恶意软件。
本文提出一个分析Windows平台的恶意软件和可疑文件的参考方法,该方法通过监视目标样本的执行后的行为观察,可对目标样本的性质、行为及影响进行判断。
恶意软件的定义:恶意软件(Malware,malicioussoftware的缩写),指未经用户允许安装执行,会对用户及系统运行产生影响和危害的软件,包括病毒(Virus)、蠕虫(Worm)、木马(Trojan)、后门程序(Backdoor/Rootkit)、密码盗窃程序(Mal.PSW)及其他有以上所列恶意软件功能的软件。
分析原理和流程
关键词定义:
1)恶意软件样本:从各种媒介提取到的怀疑是恶意软件的可执行文件、可能包含恶意软件的压缩文件、Office文档等
2)软件行为:文档或可执行文件被用户直接或通过其他处理软件打开时该文件或系统执行的操作
样本分析原理:
在一个可控的Windows测试环境中,通过使用特定的监视工具软件,对目标样本文件打开后执行的操作进行记录,分析记录的结果并与已知的恶意软件行为进行对比,判断目标样本的性质和影响,最后提供受该目标样本影响的系统的清理方案。
样本分析流程:
1)测试环境搭建
2)分析工具软件的准备和安装
3)目标样本在测试环境系统上的运行监视、数据采集
4)结果处理和文档记录
环境准备和搭建
1、系统环境:
测试平台可选择使用虚拟机或者物理机搭建,两种选择的结果略有不同:如果使用虚拟机作为平台,需要先安装一套虚拟机软件,可以选择VMware([url]http://www.vmware.com[/url])或VirtualPC([url]http://www.microsoft.com/windows/virtualpc/[/url]),然后在部署好的虚拟机中安装Windows操作系统;如果使用实体机,直接安装Windows操作系统即可。Windows安装完成后,使用WindowsUpdate给测试用操作系统升级,使其达到最新补丁版本状态。
本文使用的测试环境为VMwareworkstation上的WindowsXPprofessionalSP2英文版,并升级补丁到2006年11月底的最新版本。
2、分析软件:
1)系统监视软件
a)InstallRite:
InstallRite是一个软件安装监视复制工具,可以监视软件安装时对系统文件、注册表执行的改动。它可以用来监视目标样本在执行前后系统发生的改动。InstallRite可以从它的官方网站下载:[url]http://www.epsilonsquared.com/installrite.htm[/url]
b)ProcessExplorer:
ProcessExplorer是一个监视系统当前运行进程、进程创建、进程删除及获取指定进程详细信息的工具,它可以用来分析目标样本对进程的操作。ProcessExplorer可以从它的官方网站下载:[url]http://www.microsoft.com/technet/sysinternals/utilities/ProcessExplorer.mspx[/url]
c)ProcessMonitor:
ProcessMonitor是ProcessExplorer的升级版本,它除了包含ProcessExplorer的功能外,还增加了文件和注册表操作监视功能,但是它进程监视功能使用方便性上比不上ProcessExplorer。它可以用来实时监视目标样本在执行过程中对系统文件、注册表的操作情况。ProcessMonitor可以从它的官方网站下载:[url]http://www.microsoft.com/technet/sysinternals/processesandthreads/processmonitor.mspx[/url]
d)TCPView:
TCPView是一个监视网络连接与进程对应关系的工具,可用于分析目标样本在执行时进行网络操作的情况。TCPView可以从它的官方网站下载:[url]http://www.microsoft.com/technet/sysinternals/utilities/TcpView.mspx[/url]
2)嗅探器
a)Ethereal:
Ethereal是一个功能强大的开源网络协议分析软件,它可用于存储和分析目标样本进行的网络传输的具体内容。Ethereal可以从它的官方网站下载:
[url]http://www.ethereal.com/download.html[/url]
b)EffeTechHTTPSniffer:
EffeTechHTTPSniffer是一个专长于HTTP流量流量监视和分析的嗅探工具,可以用于分析Downloader一类使用HTTP协议和采用HTTP隧道封装进行通讯封装的目标样本。EffeTechHTTPSniffer可以从它的官方网站上下载:
[url]http://www.effetech.com/download/[/url]
3)系统分析工具
a)RootkitRevealer:
RootkitRevealer是一个功能强大的Rootkit检测工具,可用于检测Rootkit类及带有Rootkit隐藏功能的目标样本。RootkitRevealer可以从它的官方网站下载:
[url]http://www.microsoft.com/technet/sysinternals/utilities/RootkitRevealer.mspx[/url]
b)Gmer:
Gmer是一个来自波兰的Rootkit检测工具,它的功能比RootkitRevealer稍多一点,检测的速度更快,可用于检测Rootkit类及带有Rootkit隐藏功能的目标样本。Gmer可以从它的官方网站上下载:
[url]http://www.gmer.net/files.php[/url]
c)Autoruns:
Autoruns是一个功能强大的启动项管理工具,它可以直接操作注册表,管理常见的启动方式,可用于分析目标样本的自启动方式。Autoruns可以从它的官方网站上下载:
[url]http://www.microsoft.com/technet/sysinternals/utilities/Autoruns.mspx[/url]
d)WinHex:
WinHex是一个功能强大的通用十六进制编辑工具,它可以用于对目标样本的内容进行查看和字符串查找。WinHex可以从它的官方网站下载:
[url]http://www.x-ways.net/winhex/[/url]
e)FinalRecovery:
FinalRecovery是一个快速的反删除工具,它可以用于对目标样本执行过程中删除的文件进行恢复操作。FinalRecovery可以从它的官方网站下载:
[url]http://www.finalrecovery.com/download.htm[/url]
3、文档准备:
在完成系统环境和分析软件的安装调试后,应该进行目标样本的记录文档设计。一个使用表格的记录文档的例子如下:
样本分析记录表格(1)
样本名称 | 样本日期 | 大小(Bytes) | 样本编号 | 样本来源 |
Sample1.bak | 2006-1-25 | 72052 | 060125A2 | Customer |
VirusSample.dat | 2006-1-25 | 21084 | 060125A3 | Support |
VirusSample2.dat | 2006-1-25 | 14205 | 060125A4 | Support |
Trojansample.bak | 2006-1-25 | 104272 | 060125A5 | Customer |
样本分析结果登记表 样本编号:060125A5
项目 | 属性 | 详细描述 | 备注 |
自删除 | 是 |
|
|
启动方式 | Run Key | \LMHK\Software\Windows\CurrentVers-ion\Run\TrojanRun Trojan.exe |
|
释放文件 | 否 | %SystemRoot%\Trojan.exe | 复制到%SystemRoot% |
进程注入 | 是 | 注入到iexplore.exe |
|
网络连接 | TCP | 连接到212.24.55.188:80 | Nobody.noip.cn (DNS) |
其他属性 |
| 网络连接、文件不隐藏 网络连接不加密 |
样本分析实例
样本是一个伪装成wmv媒体文件的可执行文件,如图:
它使用了wmv文件的图标,由于Windows默认不显示已知文件的扩展名,因此目标样本的真实名字是WR.wmv.exe。
分析流程:
1)测试环境做一个恢复用的快照(Snapshot),使用实体机的测试环境可以用Ghost来达到相同目的。
2)依次启动InstallRite和ProcessMonitor,先给ProcessMonitor做Filter配置:
配置时用exclude方式将与目标样本无关的程序如csrss.exe、installrite.exe等程序对注册表的操作过滤,只留下explorer.exe、services.exe、svchost.exe等目标样本可能使用到的程序。
使用InstallRite对系统状态做一个快照:
注:在使用InstallRite做快照的时候可以先把ProcessMonitor的监视暂停。
3)运行目标样本
4)ProcessMonitor的监视显示目标样本运行时启动了Iexplore.exe和svchost.exe:
用InstallRite对目标样本执行前后的系统状态进行对比,在InstallRite的界面选ReviewInstallation查看对比的结果:
新增的文件:
新增的注册表项:
删除的文件:
由此可知:
目标样本在C:\programfiles\CommonFiles\MicrosoftShared\Msinfo路径下新建了2个文件,paramstr.txt和svchost.exe,并添加了一个叫做Svchost的服务。完成这两个操作之后,目标样本把自身删除。
5)使用Gmer和ProcessExplorer检查系统发生的改变:
从ProcessExplorer和Gmer的显示结果可知,目标样本启动了一个隐藏的Iexplore.exe进程。
6)使用TCPView查看网络连接
可以看见目标样本启动的Iexplore.exe进程连接的是
186.119.232.72.reverse.layeredtech.com的http(80)端口。
7)使用Ethereal抓包检查网络连接的数据
Ethereal五分钟的抓包结果显示,目标样本会通过DNS服务器查询([url]www.ifrstats.com[/url])的IP地址,并每隔30秒向其发送TCP包,包的长度为0,具体含义未知。
8)分析和文档
综合以上工具的监视结果,我们可以总结出样本的性质,目标样本为一个服务安装启动方式的木马程序,会使用进程注入技术(注入Iexplore.exe)穿透防火墙的网络连接控制,并带简单的Rootkit功能(隐藏其启动的iexplore.exe进程)
目标样本分析结果整理后,记录如下:
样本分析结果记录表 样本编号:TR061125A2
项目 | 属性 | 详细描述 | 备注 |
自删除 | 是 |
|
|
进程注入 | 是 | 注入到C:\program files\Internet Explorer\iexplore.exe | Iexplore.exe为隐藏进程,使用Gmer检查。 |
安装路径 |
| 路径:C:\program files\common files\microsoft shared\MSInfo\ svchost.exe Paramstr.txt |
|
注册表 |
| \\LMHK\SYSTEM\CurrentControlSet\Services\ 新增svchost |
|
启动方式 | 服务启动 | 系统增加以svchost命名的服务 |
|
网络连接 | TCP | 186.119.232.72.reverse.layeredtech.com 72.232.119.186 [url]www.ifrstats.com[/url] (DNS) | 网络连接内容未知。 |
根据检查结果登记表,就可以对该目标样本感染过的计算机进行有针对性的清理,更进一步的可以编写专杀程序,或者将检查的结果提交应急响应机构,不过这就不是本文要讨论的内容了。