Bypass Sandbox Evasion | 绕过恶意软件沙箱规避 Ram 检查插图

引言

在处理关于恶意软件的分析时,沙箱是一个非常重要的工具,它能提供一个独立的、隔离的和安全的环境,让我们观察和分析可疑文件是否具有恶意行为。但是,恶意软件的开发者们也在不断地研究如何绕过沙箱和分析环境。

Bypass Sandbox Evasion | 绕过恶意软件沙箱规避 Ram 检查插图1

绕过检查

其中一个方法是通过执行检查,来确定运行恶意软件的机器是否由真实用户操作。其中一个检查就是查看 RAM 的大小。如果 RAM 的大小不现实的小(例如 1GB),那么可能就表明该机器是沙盒环境。如果恶意软件检测到了沙箱,它就不会执行真正的恶意行为,这个文件看起来就像是一个良性文件。

操作方法

针对这种情况,我使用了以下操作,来尝试绕过这个检查。首先,我调用了API从SMBIOS固件的GetPhysicallyInstalledSystemMemory表中检索实际安装在计算机上的RAM量。它接受一个参数,如果函数成功执行,就将该参数设置为非零值。如果函数失败,则返回FALSE。检索到的物理内存总量必须等于或大于由GlobalMemoryStatusEx函数报告的量。如果小于,则SMBIOS数据格式错误,函数返回ERROR_INVALID_DATA。格式错误的SMBIOS数据可能表明用户计算机存在问题。

Bypass Sandbox Evasion | 绕过恶意软件沙箱规避 Ram 检查插图2
Bypass Sandbox Evasion | 绕过恶意软件沙箱规避 Ram 检查插图3

然后,我将参数TotalMemoryInKilobytes保存在寄存器rcx中。为了覆盖跳转地址GetPhysicallyInstalledSystemMemory,我使用了以下操作码:mov qword ptr ss:[rcx],4193B840。这会将值4193B840(或 1.1 TB)移动到rcx。最后,使用ret指令从堆栈中弹出返回地址并跳转到它,这样,无论GetPhysicallyInstalledSystemMemory何时被调用,它都会设置rcx为自定义值。

Bypass Sandbox Evasion | 绕过恶意软件沙箱规避 Ram 检查插图1

结论

以上是一种逃避控制的方式,同时也提醒广大用户,必须保持软件更新和安全防护措施,以避免成为恶意软件攻击的目标。