睡眠不止一种方法:深入研究各种恶意软件家族的 API Hammering 实现

原文链接:https://unit42.paloaltonetworks.com/api-hammering-malware-families/

执行摘要

Unit 42 发现了 Zloader 和 BazarLoader 样本,它们具有沙盒规避技术的有趣实现。这篇博文将详细介绍 API Hammering 在这些类型的恶意软件中的独特实现。API Hammering 涉及使用对 Windows API 的大量调用作为扩展睡眠的一种形式,以逃避沙盒环境中的检测。

沙盒是一种流行的技术,用于检测样本是否是恶意的。沙箱分析二进制文件在受控环境中执行时的行为。沙盒在分析大量计算资源有限的二进制文件时必须应对许多挑战。恶意软件有时会通过在沙箱中“休眠”来滥用这些挑战,然后再执行恶意程序以隐藏其真实意图。

Palo Alto Networks 客户通过Cortex XDR或具有WildFire威胁预防安全订阅的下一代防火墙,使用规避技术从恶意软件系列中获得保护。

相关单元 42 主题恶意软件,规避

目录

恶意软件休眠的常见方法
什么是 API Hammering?
BazarLoader 中的 API Hammering Zloader 中的
API Hammering
结论:WildFire 与 API Hammering
妥协指标

恶意软件休眠的常见方式

恶意软件休眠的最常见方式是简单地调用 Windows API 函数Sleep。我们经常看到的一种偷偷摸摸的方式是Ping Sleep技术,恶意软件在循环中不断地将 ICMP 网络数据包发送到 IP 地址 (ping)。发送和接收这些无用的 ping 消息需要一定的时间,因此恶意软件会间接休眠。但是,所有这些方法很容易被许多沙箱检测到。

什么是 API Hammering?

API Hammering是一种已知的沙盒绕过技术,恶意软件作者有时会使用它来规避沙盒。我们最近观察到Zloader – 多种类型恶意软件的释放器 – 和后门BazarLoader使用新的和独特的 API Hammering 实现来保持隐蔽。

API Hammering 包含大量垃圾 Windows API 函数调用。这些调用的执行时间延迟了恶意软件真正恶意程序的执行。这允许恶意软件在沙盒分析过程中间接休眠。

BazarLoader 中的 API Hammering

BazarLoader的旧变体使用固定数量 (1550) 的printf函数调用来超时恶意软件分析。在分析新版本的 BazarLoader 时,我们发现了 API Hammering 的新的更复杂的实现。

下面的反编译过程显示了这个新变体是如何在我们分析的 BazarLoader 示例中实现的。它利用了一个随机计数的巨大循环,该循环重复访问 Windows 中的随机注册表项列表。

了解 API Hammering 恶意软件样本的独特实施,并了解 Palo Alto Networks 客户如何受到保护。
图 1. BazarLoader 中的 API Hammering 循环。

为了生成随机循环计数和注册表项列表,该示例从System32目录中读取与定义的大小匹配的第一个文件。然后对该文件进行编码(参见图 2)以删除其大部分空字节。然后根据该文件中第一个空字节的偏移量计算随机计数。随机注册表项列表是从编码文件中的固定长度块生成的。

了解 API Hammering 恶意软件样本的独特实施,并了解 Palo Alto Networks 客户如何受到保护。
图 2. 在 BazarLoader 中对选定文件进行编码。

对于不同的 Windows 版本(Windows 7、8 等)和一组不同的应用更新,System32目录中也有一组不同的文件。这会导致 BazarLoader 在不同机器上执行时使用的循环计数和列表注册表项不同。

API Hammering 函数位于 BazarLoader 示例的打包程序中(参见图 3)。它延迟了有效载荷解包过程以逃避上述检测。如果不完成解包过程,BazarLoader 示例似乎只是在访问随机注册表项,这种行为也可以在许多合法类型的软件中看到。

了解 API Hammering 恶意软件样本的独特实施,并了解 Palo Alto Networks 客户如何受到保护。
图 3. API Hammering 延迟 BazarLoader 中的解包过程。

Zloader 中的 API Hammering

虽然 BazarLoader 示例依赖循环来执行 API Hammering,但 Zloader 使用了不同的方法。它不需要一个巨大的循环,而是由 4 个大函数组成,其中包含对多个其他较小函数的嵌套调用(参见图 4)。

了解 API Hammering 恶意软件样本的独特实施,并了解 Palo Alto Networks 客户如何受到保护。
图 4. ZLoader 中负责 API Hammering 的大型函数之一。

每个小程序内部都有四个与文件 I/O 相关的 API 函数调用。这些函数是GetFileAttributesW、ReadFile、CreateFileW和WriteFile(参见图 5)。

了解 API Hammering 恶意软件样本的独特实施,并了解 Palo Alto Networks 客户如何受到保护。
图 5. ZLoader 中负责 API Hammering 的小函数之一。

通过使用调试器,我们可以计算出对四个文件 I/O 函数的调用次数(参见图 6)。大型和小型函数总共生成超过一百万个函数调用,而无需使用 BazarLoader 中看到的单个大型循环。

了解 API Hammering 恶意软件样本的独特实施,并了解 Palo Alto Networks 客户如何受到保护。
图 6. 负责 ZLoader 中 API Hammering 的 API 的调试器日志。

下表显示了我们分析过程中的 API 函数调用计数:

输入输出接口函数总通话次数
读取文件278,850
写文件280,921
获取文件属性W113,389
创建文件W559,771

表 1. API 函数调用计数。

四大函数的执行时间延迟了Zloader payload的注入。如果没有完整执行这些函数,该示例将看起来是一个仅执行文件 I/O 操作的良性示例。

以下反汇编代码显示了四个 API Hammering程序和注入程序:

了解 API Hammering 恶意软件样本的独特实施,并了解 Palo Alto Networks 客户如何受到保护。
图 6. 在 ZLoader 中注入有效负载之前的 API Hammering。

结论:WildFire vs API Hammering

分析 API Hammering 的各种实现的结果支持使用 API Hammering 检测恶意软件样本,以便在WildFire中规避沙盒。WildFire 检测到 BazarLoader、Zloader 和其他恶意软件系列对 API Hammering 的使用。

以下来自我们 BazarLoader 示例的 WildFire 报告的摘录显示了检测到的 API Hammering 条目。

了解 API Hammering 恶意软件样本的独特实施,并了解 Palo Alto Networks 客户如何受到保护。
图 7. WildFire 在 Bazarloader 示例中检测到 API Hammering 以及其他行为。

Palo Alto Networks 客户通过 Cortex XDR 或我们的下一代防火墙以及 WildFire 和威胁预防安全订阅,使用类似的沙盒规避技术获得针对其他恶意软件系列的进一步保护。

妥协指标

BazarLoader 示例
ce5ee2fd8aa4acda24baf6221b5de66220172da0eb312705936adc5b164cc052

Zloader 示例
44ede6e1b9be1c013f13d82645f7a9cff7d92b267778f19b46aa5c1f7fa3c10b

发表评论

您的电子邮箱地址不会被公开。