更新
本研究涵盖 2 GHOSTPULSE 第 阶段的更新,该更新 最初 由 Elastic Security Labs 于 2023 年 10 月 披露 。
关键要点
- GHOSTPULSE 已从使用 PNG 文件的 IDAT 块转向在像素结构中嵌入其加密配置和有效载荷。
- 最近的活动涉及利用创造性的社交工程技术欺骗受害者,例如通过 Windows 键盘快捷键触发恶意命令的验证码验证。
- Elastic Security 增强了 YARA 规则,并更新了配置提取工具,以检测和分析新旧版本的 GHOSTPULSE。
前言
GHOSTPULSE 恶意软件家族(又称 HIJACKLOADER 或 IDATLOADER)自 2023 年被发现以来一直在不断演变,以越来越先进的技术躲避检测。
在其早期迭代版本中,GHOSTPULSE 滥用 PNG 文件的 IDAT 块来隐藏恶意有效载荷, Elastic Security Labs 之前的 一篇 文章 对此进行了详细介绍。不过,最近的分析发现,其算法发生了重大变化。最新版本的 GHOSTPULSE 不再从 IDAT 块中提取有效载荷,而是解析图像的像素来检索其配置和有效载荷。这种新方法是在像素结构中直接嵌入恶意数据。
在这篇研究论文中,我们将探讨这种基于像素的新算法,并将其与之前采用更新检测规则的 IDAT 块技术进行比较。
简介
最近,我们观察到一些涉及使用 GHOSTPULSE 作为加载器的 LUMMA STEALER 的活动,HarfangLab 也对这一主题进行了探讨。这些活动因其创造性的社交工程策略而脱颖而出。受害者被骗去验证码,但网站指示他们执行一系列 Windows 键盘快捷键,而不是通常的程序。这些快捷方式会触发恶意 JavaScript 复制到剪贴板的命令。这将导致 PowerShell 脚本被执行,并通过下载和执行 GHOSTPULSE 有效载荷启动感染链。
在以前的 GHOSTPULSE 版本中,它是作为多文件包的一部分提供的。这种软件包通常包含一个良性可执行文件、一个由可执行文件加载的受感染 DLL 以及一个存储加密配置的 PNG 文件。
不过,在最新版本中,GHOSTPULSE 简化了部署。现在,整个软件包由一个文件组成--一个良性但已被入侵的可执行文件,其中的资源部分包含 PNG 文件。
技术分析
更新后的第二阶段恶意软件保留了之前的大部分结构,包括使用相同的哈希算法来解析 Windows API 名称。不过,最重要的变化是恶意软件现在如何定位其配置,其中既有有效载荷,也有部署恶意软件的关键指令。
下面的截图显示了两种实现方式的伪代码:
在早期版本中,GHOSTPULSE 会解析 PNG 文件中的加密数据 Blob,将其分割成块并按顺序存储。恶意软件的解析过程非常简单:它会搜索文件中的特定标记--本例中就是 IDAT 字符串。一旦发现,恶意软件就会检查字符串后面的 4 字节标签。如果该标签与预期值匹配,加密块就会被提取出来。这一过程会持续到 IDAT 字符串后面的每一次出现,直到收集到完整的加密有效载荷。
在新版本中,加密配置存储在图像的像素中。恶意软件使用 GdiPlus(GDI+) 库中的标准 Windows 应用程序接口,按顺序提取每个像素的RED 、GREEN 和 (RGB)BLUE 值,从而构建字节数组。一旦建立了字节数组,恶意软件就会搜索包含加密 GHOSTPULSE 配置(包括解密所需的 XOR 密钥)的结构的开头。它以 16 字节块为单位循环遍历字节数组。对于每个数据块,第一个 4 字节表示 CRC32 哈希值,接下来的 12 字节表示要哈希的数据。恶意软件会计算 12 字节的 CRC32,并检查它是否与哈希值匹配。如果找到匹配项,它会提取加密 GHOSTPULSE 配置的偏移量、大小和 4 字节 XOR 密钥,然后进行 XOR 解密。
下图对这一过程进行了直观的分解:
更新配置提取器
基于这些发现,我们更新了配置提取器,以支持这两个版本的 GHOSTPULSE。该工具将 PNG 文件作为输入,并输出嵌入的有效载荷。您可以在我们的labs-releases 资源库中找到更新后的工具。
用 YARA 检测 GHOSTPULSE
最初的GHOSTPULSE YARA规则仍能防止感染的最后阶段,并内置于 Elastic Defend 中。可使用以下 YARA 规则检测更新后的样本,Elastic Defend 将在今后的版本中加入这些规则。
Elastic Security 已更新 GHOSTPULSE YARA 规则以识别此活动:
rule Windows_Trojan_GHOSTPULSE_1 {
meta:
author = "Elastic Security"
creation_date = "2024-10-15"
last_modified = "2024-10-15"
os = "Windows"
arch = "x86"
category_type = "Trojan"
family = "GHOSTPULSE"
threat_name = "Windows.Trojan.GHOSTPULSE"
license = "Elastic License v2"
strings:
$stage_1 = { 49 63 D0 42 8B 0C 0A 41 03 CA 89 0C 1A 8B 05 ?? ?? ?? ?? 44 03 C0 8B 05 ?? ?? ?? ?? 44 3B C0 }
$stage_2 = { 48 89 01 48 8B 84 24 D8 00 00 00 48 8B 4C 24 78 8B 49 0C 89 08 C7 44 24 44 00 00 00 00 }
condition:
any of them
}
rule Windows_Trojan_GHOSTPULSE_2 {
meta:
author = "Elastic Security"
creation_date = "2024-10-10"
last_modified = "2024-10-10"
os = "Windows"
arch = "x86"
category_type = "Trojan"
family = "GHOSTPULSE"
threat_name = "Windows.Trojan.GHOSTPULSE"
license = "Elastic License v2"
strings:
$a1 = { 48 83 EC 18 C7 04 24 00 00 00 00 8B 04 24 48 8B 4C 24 20 0F B7 04 41 85 C0 74 0A 8B 04 24 FF C0 89 04 24 EB E6 C7 44 24 08 00 00 00 00 8B 04 24 FF C8 8B C0 48 8B 4C 24 20 0F B7 04 41 83 F8 5C }
condition:
all of them
}
结论
总之,GHOSTPULSE 恶意软件家族自 2023 年发布以来不断演变,最近的更新标志着最重大的变化之一。
随着攻击者的不断创新,防御者必须通过利用更新的工具和技术来有效缓解这些威胁。我们很高兴与大家分享新开发的配置提取工具,该工具可用于分析 GHOSTPULSE 的旧版本和新版本。该工具增强了研究人员和网络安全专业人员了解和应对这些不断变化的威胁的能力。随着网络威胁形势的变化,协作和创新对于有效保护仍然至关重要。
观察结果
所有可观察数据均可采用 ECS 和 STIX 格式下载。
本研究讨论了以下可观察的结果。
| 可观测 | 类型 | 名称 | 参考 |
|---|---|---|---|
57ebf79c384366162cb0f13de0de4fc1300ebb733584e2d8887505f22f877077 | SHA-256 | Setup.exe | GHOSTPULSE 样本 |
b54d9db283e6c958697bfc4f97a5dd0ba585bc1d05267569264a2d700f0799ae | SHA-256 | Setup_light.exe | GHOSTPULSE 样本 |
winrar01.b-cdn[.]net | 域名 | 托管 GHOSTPULSE 样品的基础设施 | |
reinforcenh[.]shop | 域名 | Lummastealer C2 | |
stogeneratmns[.]shop | 域名 | Lummastealer C2 | |
fragnantbui[.]shop | 域名 | Lummastealer C2 | |
drawzhotdog[.]shop | 域名 | Lummastealer C2 | |
vozmeatillu[.]shop | 域名 | Lummastealer C2 | |
offensivedzvju[.]shop | 域名 | Lummastealer C2 | |
ghostreedmnu[.]shop | 域名 | Lummastealer C2 | |
gutterydhowi[.]shop | 域名 | Lummastealer C2 | |
riderratttinow[.]shop | 域名 | Lummastealer C2 |
