
转载请保持文章完整性!
本文链接地址:http://blog.desizen.com/4lone/442.html
主页:joel's blog
Zero Wine是一个开源的(GPLv2)研究项目,用来对恶意软件的行为进行动态分析,本文将介绍ZeroWine工作原理以及用法,并对ZeroWine生成的报告进行了相应的解释。 Zero Wine是一个开源的(GPLv2)研究项目,用来对恶意软件的行为进行动态分析。ZeroWine使用WINE在一个安全的虚拟沙箱中运行恶意软件来收 集应用程序调用的API的相关信息。Wine使用WINEDEBUG来输出恶意软件调用过的API及相关信息。通过这些信息,恶意软件的行为分析将变得非 常轻松。
一、工作原理
ZeroWine捆绑在Debian操作系统中的 QEMU虚拟机映像发行。这个虚拟机映像包括加载和分析恶意软件并根据收集到的信息生成报告的软件,该软件位于/home/malware /zerowine。既可以通过正确的命令行选项运行该虚拟机,也可以使用一个基于web的图形界面来加载要分析的恶意软件。 加载新的 恶意软件时,会将其复制到/tmp/vir/MD5_OF_THE_FILE目录,已经创建的WINE环境会被删除,并对一个备份系统进行解压缩,该备份 系统是/home/malware/backup/backup.tar.gz。加载后,会通过shell脚本malware_launcher.sh来 执行这个恶意软件,此shell脚本存储在/home/malware/bin文件夹中。 需要注意的是,当前系统只能一次分析一种恶意软件,将来每当加载一个新的恶意软件时,它会放入一个队列中以供今后分析之用,并且还将创建一个新的WINEPREFIX专门用于运行这个恶意软件。
二、使用QEMU运行虚拟机
使用QEMU运行虚拟机时必须提供一些必要的参数,最重要的一个参数就是-redirtcp:8000::8000。这个参数将本地8000端口重定向 到该虚拟机的8000端口。用户也可以改变端口,需要注意的是在基于Unix/Linux的系统中不应该在端口80上运行它,这通常需要root权限,会 带来巨大的安全隐患。想像一下如果恶意软件突破虚拟机并掌控了您的宿主系统后会如何? 当该虚拟机结束引导处理(基于Debian的操作系统的引导时间通常需要2分钟左右)后,在浏览器中输入http://localhost:8000。您将看到如下所示的一个web页面:
![]() |
图1
通过该Web接口将测试文件(通常为PE格式)加载到虚拟机,指定超时,ZeroWine便开始分析该程序的行为。稍等片刻,收到如下所示的报告摘要:
![]() |
图2
三、相关报告的介绍
分析结束时,会出现一个带有四个链接的报告摘要页面,这些链接分别是“report”、“Strings”、“Headers”和“Signature”。 完整报告(Complete Report) 我们首先要介绍的是“Report”链接,这是由WINE生成的一份完整的原始跟踪文件。该文件通常较大,并且也不太容易读,其中包含了WINE本身调 用的大量应用程序接口以及恶意软件调用的相关信息,不过它对于全面了解程序到底做了些什么是很有帮助的。以下是病毒MyTob的示例报告,我们看到这的确 很长,并且读起来很晦涩:
![]() |
图3
一般说来,其中的大量API调用都是WINE的内部调用,这些对我们的分析工作没有多大用处,并且对我们来说通常是枯燥无味的。请记住,虽然这些调用看上去很枯燥,但是却可能对分析的恶意软件的理解有所裨益。 关于字符串(Strings)报告
Linux命令“strings”输出。为了便于了解恶意软件,有时候用户可以检查一些字符串、URL等等。以下是一个例子(MyTob):
![]() |
图4
关于文件头(Headers)报告 这个报告展示了使用PEIdSignatures的特征码找出的用于给该程序加壳的工具(如果有的话),以及利用开源的程序库PEFile对给定PE程序分析得到的一份详尽输出。生成的报告类似于下图:
![]() |
图5
在本例中,头部似乎是遭到了破坏,这说明恶意软件试图给反汇编制造困难。 关于特征码(Signature)报告 这个是当恶意软件运行后,ZeroWine生成了最有趣的报告-特征码(Signature)报告。这个报告展示了最令人感兴趣的API调用及相关值。
![]() |
图6
“Signature”报告告诉我们,该恶意软件创建了互斥锁“H-E-L-L-B-O-T”(进程标识符0009),并且将自身复制到 c:\windows\system32\msmgrxp.exe,然后,执行了这个文件(process0018)。恶意软件的这个副本将检查互斥锁 “H-E-L-L-B-O-T”,如果该互斥锁业已存在,则将该二进制文件拷贝到c:\\funny_pic.scr及其它地方。 有了以上这些报告,编写一份简单的行为报告已经不成问题。
Zero Wine软件评述
总的说来,ZeroWine能够较好地运行恶意软件,然而当遇到加壳软件时就会出现各种问题,例如wine几乎总是无法应对被Armadillo加过壳 的PE程序;有时候“Report”和“Signature”这两个部分会同时收不到任何数据。幸好“Headers”和“Strings”报告部分可以 提供二进制文件(尽管不是恶意软件的行为)的有关信息。
检测能力
对于WINE环 境的检测其实很简单。例如,可以通过注册表项HKLM\Software\Wine或者HKCU\Software\Wine来检测它。同时还可以检查所 有的Windows关键系统文件的文件大小来来实现。当运行在WINE中的时候,这些文件会小得令人难以置信,但是同样的文件在实际的Windows系统 中却并不能忽视。另外一种“高级”检测技术是,打开任意Windows系统文件,并反编译入口点。当运行在WINE中的时候,反编译后将得到如下所示的一 些简单指令: .text:10001000 public start .text:10001000 start proc near .text:10001000 mov eax, 1 .text:10001005 retn 4 .text:10001005 start endp 对于比较懒惰的人来说,只需在.text:10001000中搜索二进制串B8 01 00 00 00 C20400就可以了。
危险性
首先需要说明的是在个人计算机上运行恶意软件绝不是一个好主意。如果可能的话,尽量在虚拟机中完成对恶意软件的运行。有时候,我们迫不得已允许恶意软件 连接到实际环境中,但这样做可能伤及无辜。更重要的是,即使把WINE的沙箱配置成只能使用C盘,但是对于一些特殊的恶意软件来说,它不仅可以突破虚拟机 的限制,更可以危机您的整个网络。
Zero Wine 软件下载:
http://sourceforge.net/projects/zerowine






