VM虚拟机内恶意程序测试技巧
这次比特币勒索事件之后,样本很快就在网络上放出了。
有很多人想在自己电脑或是在虚拟机测试这个勒索程序,然而由于这些用户疏忽了一些问题,最终还让自己宿主机的文件被加密了,实在是得不偿失。
虽说绝大多数病毒都不会穿透虚拟机感染宿主机,但是有些病毒毕竟会通过局域网传染出去,所以这方面也必须要控制。
那么,这篇文章就是写给那些想测试病毒的吃瓜群众的,专业人员可以绕行。
前提是你的宿主机是Windows系统,如果宿主机是macOS或Linux的话,那么仅仅需要保证不要和其它Windows电脑在一个局域网内。
本教程使用VMware虚拟机来介绍如何建立一个足够安全的恶意软件测试环境。如果你使用的是其它的虚拟机,我无法给出对应的操作方法,欢迎各位在评论区补充。
如果哪个步骤操作存在疏忽,轻则无法测试,重则会导致宿主机的重要文件全部加密,由此产生的风险和损失作者并不承担责任。请各位在测试的时候一定要小心谨慎,避免发生意外。
打开网络连接,禁用VMware Network Adapter VMnet8这个网络连接。
VMnet8的用途是,如果虚拟机采用的是NAT方式网络连接,通过VMnet8这个网络连接可以将宿主机和虚拟机划入一个局域网里。如果禁用了VMnet8,虚拟机仍然能连接外网,但无法再和宿主机直接通过局域网联系了。
相关内容可以参考这篇VMware官网对此的介绍:https://www.vmware.com/support/ws3/doc/ws32_network8.html(虽然是很古老的VMware 3.2但对现在的VMware Workstation 12一样适用)
然后就是在虚拟机内安装系统。
为了避免在后续测试出现不必要的问题,请勿安装来路不明的Ghost装机版Windows系统。
请只使用来自可靠来源(比如MSDN)的Windows安装镜像文件。
虚拟机内的网络连接请设置成NAT。
至于如何在虚拟机内安装系统,相信玩过虚拟机的人应该都会,这里不做详细介绍。但是,请不要使用VMware的简易安装功能,也不要在装完系统之后安装虚拟机增强插件(如VMware Tools)。至于原因,后面会做详细说明。
装完系统之后,你并不需要去激活系统,毕竟你只是用来测试,测试完成之后你就可以销毁整个虚拟机了。
使用其它高级的文本编辑器(不要用记事本,可以用写字板)打开你的虚拟机的vmx文件,在任意处加上这两行:
monitor_control.restrict_backdoor = "TRUE"
disable_acceleration = "TRUE"
然后保存。
然后虚拟机设置里勾上“虚拟化Intel VT-x/EPT或AMD-V/RVI”。这还要求你的主板BIOS设置里开启了相关的虚拟化技术,能否开启随厂商决定,近年的电脑一般都能开启。
因为有些软件或恶意程序如果发现是在虚拟机内运行或是检测到虚拟机增强插件相关进程会拒绝启动,这么处理之后就可以在虚拟机内运行本不允许在虚拟机内运行的程序。(虽然WannaCry并不会检测这个)
然后是把你想要放进虚拟机的东西复制进虚拟机。在没有虚拟机增强插件的前提下,你有三种方法:
使用UltraISO之类的软件将你想复制进去的文件做成ISO镜像,然后加载进虚拟机;
将你想复制进去的东西复制进一个U盘,然后用虚拟机加载U盘(不是所有虚拟机软件都支持U盘);
关闭虚拟机,使用能编辑虚拟硬盘镜像的工具将文件复制进硬盘镜像。
总而言之,复制进来之后,我们就可以准备测试了。如果你使用的是VMware Workstation Pro的话,你可以在测试之前做一个快照,以便为了测试下一个病毒之前还原回之前的状态。我这里用的是Player,这里就只好关机备份虚拟硬盘镜像了。
这里我测试的正是WannaCrypt勒索程序样本。为了确保各位不去轻易作死,这里恕不提供样本的下载,也请各位不要在评论区分享这个样本。
桌面上的Malware Defender是一款HIPS防御软件,在高强度保护下会拦截一切操作,并会向用户告知软件执行了什么样的操作且询问是否允许。很遗憾的是,该软件仅支持32位Windows系统,且这样的软件并不适合日常的安全防护。你们可以根据你们的需要选择是否要在虚拟机安装这样的软件来分析恶意软件的工作流程。
全部准备好之后,打开Malware Defender,调成正常模式。
然后打开恶意程序样本(如果这个时候你插上了U盘,请立即将U盘拔出虚拟机),就会问你是否要确定运行,并且会逐步分析每个步骤发生了什么。
回答了是否放行之后,你可以观察到文件是不是被跟着加密了。
但无论如何,不会穿透出虚拟机。
这就是在虚拟机内测试一个恶意程序的基本方法,但同时完全不会影响到宿主机本身的正常运作。
在虚拟机内操作恶意软件,就像是尝试拆定时炸弹一样,稍有不慎就会爆炸,波及到不必要的部分。所以请各位在测试之前,做好充分的防护工作。
对于一些想试图研究出解决方案的人来讲,还可以配合很多更强大的调试工具来进行破解。由于能力和精力有限,作者无法给出任何指导。