对于样本分析过去的防病毒软件主要依赖签名分析来检测,现在尤其对于高隐匿性恶意软件一般需要在沙箱中运行并观察其执行行为,例如访问了操作系统的哪些组件、执行了哪些操作、是否尝试在启动时注册等。每家防病毒软件用的沙箱有好几种,例如virtualBox、vmware等等。本文以安全分析员的视角描述沙箱分析时是如何对恶意软件隐藏沙箱的。
沙箱其实就是一个虚拟机实例,通过系统函数钩子可以拦截被测试恶意软件发出的各种请求并进行分析。由于能够扫描注册表和文件访问行为,沙箱能识别恶意软件对文件的操作、系统库的使用等。
虽然沙箱看似“万能”,以安全隔离的环境触发恶意软件的恶意行为,但问题在于,一般情况下防病毒软件的待扫描文件流量可能非常大,无法花费太多时间在一个文件上。通常分析的时间限制为2到5分钟。换句话说,只要恶意软件挺过这几分钟就可以躲避沙箱的检测,在启动时延迟恶意代码的执行,以使分析检测在未等到结果前就提前结束分析,并判定该文件是安全的。
此外,恶意软件开发者还可以设置应用程序启动计数器,例如只有在第三次运行该文件时才开始执行恶意行为。当然,沙箱通常不会多次运行同一个文件,因此在这种情况下也无法发现恶意活动。
如果恶意软件检测到自己正在虚拟环境中运行,它的行为可能会发生改变。例如有些木马检测到当前运行环境在虚拟机中,就会直接退出。
因此本文的重点就是:安全分析员需要以一种不让恶意软件察觉的方式配置虚拟机,使其无法识别出当前处于虚拟环境之中。
让虚拟机环境尽量真实
通常在 VMware Player 中创建虚拟机时,如果选择指定用于安装系统的 ISO 映像,会导致自动安装 VMware Tools,这个软件可能会被恶意软件检测到。因此需要选择“稍后安装操作系统”选项。
调整虚拟机的磁盘为指定一个接近真实情况的大小。一般用于样本分析的沙箱环境常常用 20-30 GB,但在真实的个人电脑环境上,磁盘容量通常要大得多。这里建议至少指定 128 GB 的磁盘空间。虚拟机文件所占用的实际存储空间通常会小于这个数值,因为磁盘不会被完全填满。
然后指定使用的是 Intel 还是 AMD 虚拟化。
接下来在 Virtual Machine Creation Wizard修改创建的 VM 指定使用 BIOS 作为固件类型。
必须一定以及肯定,非常有必要更改 MAC地址。MAC 地址中的前三个字节是制造商。Vmware的虚拟机环境的Mac地址前三个字节是固定的。因此这里的 IAU 不应从 00:05:69、00:50:56、00:1C:14 或 00:0c:29 开始。
BIOS ROM
VMware BIOS ROM 中包含虚拟机属性的字符串(如 “VMware”“Virtual Platform”)。编辑 BIOS 映像需谨慎操作,直接进行十六进制编辑可能破坏内部校验导致映像失效。推荐使用 Phoenix BIOS 编辑器(网上可下载)进行修改。ROM 文件路径:VMware Workstation/Player 安装目录下的 x64 子目录(默认路径:C:Program Files (x86)VMwareVMware Workstationx64)。修改前务必复制原始文件备份。
操作步骤:在编辑器中打开 ROM 文件,定位到 DMI 字符串窗口,删除或修改包含 “VMware” 或 “Virtual Platform” 的字段值
编辑 VMX 文件
转至存储虚拟机的目录,找到名为<vm_name>.vmx
的文件,使用文本编辑器打开。操作前务必备份原始文件。
在文件末尾添加以下配置行:
bios440.filename = "C:<BIOS文件路径>BIOS.440.PATCH.ROM"
禁用虚拟机管理程序特征暴露:
hypervisor.cpuid.v0 = "FALSE" # 禁用CPUID 指令返回的虚拟机管理程序状态
monitor_control.restrict_backdoor = "TRUE"
monitor_control.disable_directexec = "TRUE"
monitor_control.disable_chksimd = "TRUE"
monitor_control.disable_selfmod = "TRUE"
monitor_control.disable_ntreloc = "TRUE"
monitor_control.disable_reloc = "TRUE"
monitor_control.disable_btmemspace = "TRUE"
monitor_control.disable_btpriv = "TRUE"
monitor_control.disable_btinout = "TRUE"
monitor_control.disable_btseg = "TRUE"
isolation.tools.getVersion.disable = "TRUE" # 禁用VMware Tools 版本查询
isolation.tools.setVersion.disable = "TRUE"
isolation.tools.getPtrLocation.disable = "TRUE"
isolation.tools.setPtrLocation.disable = "TRUE"
防止使用原始 BIOS:
smbios.reflectHost = "TRUE" # 启用从主机复制 SMBIOS 信息
完成配置后,即可开始安装操作系统。安装后需检查系统设置、驱动程序及注册表,确保不包含 “VMware” 或虚拟化相关标识。
微信逆向解密聊天记录[附详细步骤]
原文始发于微信公众号(青木生长):如何让自己编写的软件躲避沙箱分析(以安全分析员的视角)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论