EN
lanyun
technologies
银河实验室 深谙安全之道,热衷技术创新
LABORATORIES 银河实验室

1

介绍

 

在大多数情况下,黑客会在攻击之前确定目标。他们通过收集系统和内部网络有关信息来了解如何从攻击中获利并帮助计划进一步行动。当然,攻击者需要确保他们真正访问到了公司真实工作站,而不是沙箱 —— 一种旨在分析可执行文件行为的虚拟环境。这就是为什么现在的恶意软件具有逃避检测保护机制以及隐藏恶意功能。
 
我们已经分析了 2010 年至 2020 年上半年期间全球至少 23 个 APT 组织使用的 36 个恶意软件家族。这些是基于 MITRE 数据和 PT 安全中心专家对新样本分析之上。
 
在这项研究中,我们将为大家展示在过去 10 年当中恶意软件在逃避沙箱检测技术的演变。

 

1.1

 什么是沙箱

 
沙箱在一个隔离的虚拟环境中运行文件,分析文件执行的操作,并作出判决,此文件到底安不安全?沙箱可以基于代理或无代理。
 

1.1.1

 基于代理的沙箱

 
虚拟机有一个内置的代理 (特殊进程),用于管理系统,获取和传递感兴趣的事件和工作。生成新进程时,沙箱会拦截 API 函数调用 (改变进程内存当中一个地址或函数体中的代码)。
 
这种方法有一个重大的缺陷:沙箱需要隐藏和保护与代理相关的对象,以免它们受到恶意软件的侵害。
 

1.1.2

 基于无代理的沙箱

 
这种沙箱使用二级地址转换 (Second Level Address Translation,SLAT),这是一种内置于 CPU 中的硬件辅助虚拟化形式。AMD 处理器通过快速虚拟索引 (Rapid Virtualization Indexing,RVI) 支持 SLAT,而 Intel 处理器则是通过扩展页表 (Extended Page Table,EPT)。
 
扩展页表嵌套在物理客户机和主机虚拟内存之间。允许执行以下操作:
  1. 检查 guest 计算机的内存页面;

  2. 标识重要部分 (例如,包含部分地址或内核函数代码);

  3. 标记所选页面,将 EPT 内存访问权限与 guest 计算机访问权限区分开;

  4. 拦截尝试访问标记的内存区域 (如果发生这种情况,将发生 EPT 违规错误和 guest 计算机停止);

  5. 分析内存状态并提取有关事件的信息;

  6. 重新标记内存页以使其返回正确状态;

  7. 恢复 guest 计算机的操作;

 

这些操作都是从沙箱外部观察到的:恶意软件无法检测到它正在被监视。
 
 

2

执行摘要

 

检测沙箱和反分析技术大多是出现在 RAT (占恶意软件数据集 56%) 和加载器 (14%) 中。这些类型的恶意软件执行后会去收集目标系统的有关信息。如果攻击者发现其恶意软件在虚拟环境中运行,则他们不会继续攻击,也不会下载 Payload。相反,他们将尝试通过终止恶意软件的执行来保持隐蔽性。
 
图片
 
我们的数据集中有 69% 的恶意软件样本用于网络间谍活动。此类攻击需要恶意软件长时间在受害者的系统上保持隐蔽状态,这就是为什么攻击者一直在寻求保持持久性方法的原因。
 
图片

 

为了检测虚拟机 (沙箱),攻击者发送 WMI 查询 (占恶意软件数据集中的 25%),执行其他环境检查 (占 33%) 或检查正在运行的进程 (占 19%)。攻击者还可以使用虚拟化环境有关的信息来计划未来的工作。
 
图片

 

在静态分析中,将恶意文件与可疑文件的已知签名和哈希值进行匹配变得越来越困难,因为恶意软件作者正在使用代码混淆来阻止分析尝试。因此,我们建议分析沙箱中的文件行为。

 

3

逃避和反沙箱技术

 

图片

 
为了逃避沙箱和分析工具,同一恶意软件在不同年份可能使用不同的方法。攻击者会尝试结合多种方式。如果一种方法不起作用并且被沙箱拦截,则该恶意软件仍可以使用其他标志来确定是否在虚拟环境中运行,如果是,则应及时终止自身运行以避免被发现。
 
Ke3chang APT 组织,也称 APT15,在 2010 年使用 MyWeb 后门,在 2014 年用过 BS2005,在 2016 年至 2019 年期间用过 Okrum。它们使用一些方法来躲避虚拟机的检测和代码分析师。通常等待三个左键单击或定位光标位置来检查人机交互,并通过调用 GetGlobalMemoryStatusEx 或发送 WMI 查询来确定物理内存量。
 
这里还有更多的示例:
 
ROKRAT
类型:RAT
组织:APT37 (从 2012 年开始活跃)
目标:韩国机构
感染方式:钓鱼 (包含利用 CVE-2013-0808 漏洞的恶意 HWP 附件的邮件)
动机:间谍

 

使用到的反沙箱反分析技术 2016 2018
检测是否加载了 SbieDll.dll、Dbghelp.dll、Api_log.dll、Dir_watch.dll + +
获取 HARDWARE\DESCRIPTION\System 注册表项下的 SystemBiosVersion 的值 + -
在自修改代码中使用 NOP 指令作为填充来预防调式器 + -
调用 IsDebuggerPresent 来检测是否被调试 - +
两次调用 GetTickCount 以检查逐步执行 - +
检查 C:\Program Files\VMware\VMware Tools\vmtoolsd.exe 文件 - +
 
RogueRobin
类型:RAT
组织:DarkHydrus (从 2016 年开始活跃)
目标:中东的政府和教育机构
感染方式:钓鱼 (通过 Google Drive 分发恶意的 Office 文档)
动机:间谍
 
使用到的反沙箱反分析技术 2018 2019

发送 WMI 查询以获取 BIOS 版本和制造商

+ +
发送 WMI 查询以检查 CPU 内核数,该值必须超过 1 + +

发送 WMI 查询以检查物理内存量,该值必须至少为 2900,000,000 字节

+ +
检查 Wireshark 和 Sysinternals 正在运行的进程数 + +
使用 Invoke-Obfuscation 混淆 PowerShell 脚本 + +
在每个 DNS 请求中检查调试器 - +

 

Remcos
类型:RAT
组织:Gorgon (从 2018 年开始活跃)
目标:俄罗斯、英国,西班牙和美国的政府组织
感染方式:钓鱼 (包含利用 CVE-2017-0199 漏洞的恶意 WORD 文档附件的邮件)
 
使用到的反沙箱反分析技术 2018 2019
检查 SbieDll.dll + -
使用 RC4 和 Base64 算法对源代码进行加密 + +
检查 vmtoolsd.exe 和 vbox.exe 的活动进程 - +

调用 IsDebuggerPresent 以检查是否正在调试器上下文中运行

- +

 

在 2018 年至 2019 年间,使用逃避沙箱技术的恶意软件家族数量有所增加。为什么这么说,因为现在专家正频繁地调查分析恶意软件样本。
 
在暗网上出售恶意软件的人提供了逃避沙箱检测、防病毒工具以及对抗分析和调试的功能。具有内置逃避沙箱功能的恶意软件的起始价为 30 美元。免沙箱和防病毒软件检测功能额外费用为 20 美元。
 
图片
图片

图片

 

4

流行的虚拟化逃避技术

4.1

 检测运行进程

 

 

代表:EvilBunny、FinFisher、PlugX、Remcos、RogueRobin、Smoke Loader、PipeMon、Snake
 
五分之一的恶意软件会去分析正在运行的进程列表,以检测虚拟环境。例如:
 
  1. 仅当至少有 15 个进程正在运行时,EvilBunny RAT 才会继续进行

  2. PlugX (过去 10 年来 APT 组织广泛使用的后门程序) 通过搜索名为 vmtoolsd 的进程来检查 VMware Tools 是否在后台运行

  3. Gorgon 组织在对政府的网络钓鱼攻击中使用的 Remcos 在活动进程列中搜索 vmtoolsd 和 vbox.exe

 

图片

4.2

 WMI 查询

 
代表:BadPatch、Fin7、GravityRAT、OopsIE、Pony、RogueRobin
 
自 2016 年以来,恶意软件开发人员一直在积极地使用 WMI 查询来访问设备、帐户、服务、进程,网络接口和其他程序。在所讨论的恶意软件中,有 25% 会利用它们。在大多数情况下,攻击者试图找出硬盘驱动器、主板的型号、操作系统版本及 BIOS 版本
 
GravityRAT 使用一种有趣的方法来检测虚拟环境。通过发送 SELECT * FROM MSAcpi_ThermalZoneTemperature WMI 查询,检查 CPU 的温度,如果恶意软件在物理计算机上运行,则将返回温度值。但是,如果系统响应错误或不支持,则意味着该恶意软件正在虚拟环境中运行。
 
图片
图片
 
OilRig 组织 (也称 APT34、Helix Kitten) 也使用了 WMI 查询,该组织已有 5 年多历史,主要针对中东的各种行业,包括政府、金融,能源和电信。该组织使用 OopsIE 后门发送 WMI 查询 SELECT * FROM Win32_Fan 以检查 CPU 风扇的状态。此查询应返回一个提供有关 CPU 风扇统计信息的类,如果为空,则表明处于虚拟环境。

 

图片
图片

4.3

 检测注册表键值

 

 

代表:ConzyCar、Smoke Loader、FinFisher、GravityRAT、ROKRAT
 
一些恶意软件 (占 14%) 读取注册表项值并在其中寻找表明虚拟机的子字符串,例如:
TA505 使用的 Smoke Loader 银行木马检查 System\CurrentControlSet\Enum\IDE 和 System\CurrentControlSet\Enum\SCSI 中的注册表项值,以搜索与 QEMU,VirtualBox,VMware 或 Xen 虚拟化产品匹配的子字符串。暗网上出售 Smoke Loader (Smoke Bot),完整的恶意软件包价格为 1,650 美元。
 
图片
图片
 
FinFisher 验证 HKLM\SOFTWARE\Microsoft\Cryptography\MachineGuid 不等于 "6ba1d002-21ed-4dbe-afb5-08cf8b81ca32";HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId 不等于 "55274-649-6478953-23109","A22-00001" 或 "47220",并且 HARDWARE\Description\System\SystemBiosDate 不包含 "01/02/03"。
 
APT29 使用的 CozyCar 会检查 SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 中的注册表项值,以避开安全产品。

4.4

 其它环境检测

 

 

除了检查正在运行的进程,注册表项值和发送 WMI 查询外,还可以通过其他方式检查环境。例如,RTM (Redaman) 银行木马检查 C:\ 和 D:\ 驱动器上的以下文件和目录:
 
  1. cuckoo

  2. fake_drive

  3. perl

  4. strawberry

  5. targets.xls

  6. tsl

  7. wget.exe

  8. *python*

 

这些文件或目录中的任何一个都表明该恶意软件正在沙箱或代码分析器中运行。
 
APT37 (也称为 ScarCruft,Group123 和 TEMP.Reaper) 在过去几年中对 ROKRAT 后门进行了修改。除了检查注册表项值之外,还检查 C:\Program Files\VMware\VMware Tools\vmtoolsd.exe 文件是否存在以及是否已加载以下代码分析器和调试器专属 DLL:
 
  1. SbieDll.dll

  2. Dbghelp.dll

  3. Api_log.dll

  4. Dir_watch.dll

 

正确配置虚拟机足以阻止攻击者使用的反沙箱和反分析技术。PoetRAT 是一种远程访问恶意软件,用于对能源领域的 ICS 和 SCADA 系统进行有针对性的攻击,它检查硬盘大小以确定它是否在沙箱环境中运行。由于该恶意软件假定沙箱的硬盘驱动器小于 62 GB,因此可以通过为虚拟机分配更多空间来欺骗它。
 

4.5

 沙箱是否必须检测所有逃避技术?

 
 
并非所有逃避沙箱方法都易于检测。某些检测 (例如文件路径,MAC 地址,日期时间以及操作执行时间) 与合法操作非常相似,检测可能会产生大量的误报,并会干扰其他程序的正常运行。但是,这并不意味着恶意软件将保持完全不可见。沙箱不必抓住每一种逃避技术,因为恶意软件还具有许多其他属性,可以在操作的其他阶段进行检测。也就是说,沙箱检测它运用的技术越多,那么检测到新的恶意软件样本并将此信息用于应对网络威胁的机会就越大。
 

4.6

 反分析和反调试

 

 

为了在一段时间内不被防病毒程序发现,某些恶意因素会试图阻止安全专业人员对恶意软件进行分析。它们通过使用代码混淆和反调试技术来做到这一点。
 
在 2019 年,Remcos RAT 增加了一种反调试方法,如果加载程序在调用 IsDebuggerPresent 函数后在系统中检测到调试器,则会显示消息 "这是第三方编译的 AutoIt 脚本" 后终止运行。
 
FinFisher 间谍软件的作者会竭力地去混淆代码阻碍安全人员分析,例如,操作码 0x1A 应该表示一个 JB (如果在下面,则为跳转) 功能,但通过 STC 指令和 JMP 到调度程序代码执行,该指令将验证 STC 设置的进位标志条件。

 

图片
 
为了检查调试器通常检测逐步执行,EvilBunny 调用了 NtQuerySystemTime,GetSystemTimeAsFileTime 和 GetTickCount。它两次调用每个函数以计算增量,并在第一次调用和第二次调用之间执行 sleep 操作。如果三个增量中的任何一个小于 998 毫秒,则执行将终止。

 

图片

 

在静态分析中,将恶意文件与可疑文件的已知签名和哈希值进行匹配变得越来越困难 因此,除了静态分析之外,我们建议在虚拟环境中运行可疑文件以分析行为。

 

5

结论

 

攻击者不断修改恶意软件,尽可能在一段时间内能够逃避检测。APT 组织在这方面表现尤其出色。为了收集有关受害者基础设施的信息,攻击者更喜欢使用具有内置功能 (检测和逃避虚拟机和代码分析器) 的恶意软件。此外,暗网上出售的加载程序和远程访问工具具有内置的基本逃避沙箱功能。
 
近年来,恶意软件作者在开发时一直在努力逃避代码分析器。黑客竭尽所能隐藏恶意功能,并根据已知的目标最大程度地减少检测到恶意软件的可能性。传统防御可能无法检测到恶意程序。为了检测现代恶意软件,我们建议在安全的虚拟环境中分析文件行为。通过使用沙箱,你还可以充实 IOC 数据库,并可以利用此信息更好地应对网络威胁。通过使用最新的 IOC 更新所有保护工具,如果黑客对你的基础设施进行第二次攻击,这样就有可能检测到新的恶意软件版本。例如,如果攻击者编译了新的恶意软件版本,但忘记更改命令和控制 C2 地址,则由于地址相同,仍将检测到较新的恶意软件。
 
沙箱已经具备了阻止大多数流行的逃避技术。即使黑客使用类似于合法过程的方法 (例如检查当前日期时间),沙箱也能够通过检测到的其他迹象来揭示恶意软件。黑客不断地完善自己的工具,更改检测沙箱技术,并同时使用多种技术。同时,沙箱必须具有足够的灵活性,并且必须通过模仿真实的工作站轻松适应新的挑战。沙箱必须妥善隐藏其存在,以防止恶意软件尽早终止并成功收集目标信息。
 
本文翻译自:
https://www.ptsecurity.com/ww-en/analytics/antisandbox-techniques/#id4
 

图片

 

- End -

京公网安备 11010802024705号  京ICP备20030588号 Copyright © 兰云科技 www.lanysec.com 版权所有