Fork me on GitHub

在虚拟机中分析恶意代码


知识点

很多恶意代码无疑会对运行环境造成不同程度的损害,在分析恶意代码功能的时候我们最好将恶意代码放在虚拟环境下进行分析,除了有一些无法通过虚拟化环境分析的恶意代码需要用安装了Norton Ghost等还原系统的物理机里进行分析。本章主要讲了如何在虚拟环境下分析恶意代码以及我们在虚拟环境下分析恶意代码可能造成的问题。

虚拟化环境:对我们而言,最容易创造的虚拟化环境就是用VmwareHyper-v或者Virtual Box创建一个虚拟机,另外还有一些用Docker容器作为虚拟化环境的恶意代码分析手段,但是我感觉这种方式暂时还不成熟,有很多技术Vmware可以做的更好,而且安全性方面Vmware隔离更彻底,更安全。因此我们可以用功能十分强大的Vmware创建一个属于自己的恶意代码分析环境,创建虚拟机以及虚拟机的使用方法网上已经有很多教程了,此处不再赘述,而着重介绍与恶意代码分析相关的虚拟机用法。

虚拟环境网络配置:在拿到一个恶意软件的第一时间,如果对该恶意代码功能并不清楚,首先要将虚拟机的网络连接断开,以防止运行在虚拟环境的的恶意代码对网络上的其他主机造成安全风险,比如当时Wanna Cry爆发时,很多安全分析员在分析恶意代码时就把同事的电脑给感染了,因此我们需要选择一个相对安全的网络模式,虚拟机网络选项通常又如下几种:

模式 区别
Host-Only(仅主机模式) Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。
Bridged(桥接模式) 桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机IP地址需要与主机在同一个网段,如果需要联网,则网关与DNS需要与主机网卡一致。
NAT(网络地址转换模式) 如果你的网络IP资源紧缺,但是你又希望你的虚拟机能够联网,这时候NAT模式是最好的选择。NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网。
自定义虚拟网络 可以通过此模式来自定义网络连接方式,也可配置多台虚拟机组成结构相对复杂的虚拟机网络

在分析恶意代码的时候,我们最好使用Host-Only模式或者直接断开网络,使用Host-Only模式需要注意保证宿主主机开启防火墙并保证宿主主机安装了最新的安全补丁,当然如果恶意代码拥有宿主主机的0day,那么还是直接断开虚拟机网络为好。

拍摄快照:快照是Vmware一个很强大的功能之一,在我刚接触虚拟机的时候我并不知道虚拟机有这个功能,于是在折腾Kali把环境搞坏了的时候就选择重新安装,现在看来真的是浪费了很多时间。快照可以保存虚拟机系统当前的状态,并可以在任何时间将虚拟机状态还原为这一状态的功能,因此我们可以在配置好恶意代码分析环境之前拍摄一个快照,然后再分析恶意代码,当分析完成后为了将系统还原为一个干净的状态就恢复这一快照,当前未保存的状态就会消失,镜像也可以有多个分支,每个快照会根据系统前后改变的程度而占用不同大小的磁盘空间,但是这个占用空间一般很小,大概2个G左右。

虚拟机与宿主主机的数据传递:在安装了Vmware Tools的虚拟机上,用户可以通过简单的复制粘贴和拖放操作来在虚拟机和物理机之前传输文件,但是有时这种操作可能会造成虚拟机逃逸,因此如果没有传输文件的需要的话建议先关闭文件传输功能,或者在分析过程完成后并对恶意代码进行清理之后再开启此功能来传输文件。

外围设备的连接和断开:Vmware提供了为虚拟机连接各种外围设备的接口,如USB、光驱、摄像头等,在分析恶意代码的过程中,如果没有这些外围设备的使用需求,我们应该在分析恶意代码之前将这些连接断开以防止恶意代码对这些设备造成破坏。

使用Vmware的风险:没有绝对安全的系统,虚拟环境也是一样,Vmware也经常发布安全性更新,之前也有黑客或白帽发现Vmware0day漏洞的事,比较常见的是虚拟机逃逸,利用Vmware模拟CPU指令的一些缺陷或者缓冲区溢出或者逻辑漏洞等漏洞攻击虚拟机软件,使恶意代码能从虚拟环境中逃逸,对真实的物理机环境造成损害。为了降低发生此事的情况,我们需要即使更新宿主主机的系统安全补丁并及时更新虚拟软件尤其是厂商发布有关安全性的更新时。

课后练习

本章无课后练习


本章结束🎊

您的支持是我最大的动力🍉