原文链接:Unmasking the Enigma: A Historical Dive into the World of PlugX Malware
译者:知道创宇404实验室翻译组
摘要
PlugX 是一种将高级功能与逃避检测技巧相结合的恶意软件,在网络安全领域产生了深远影响。PlugX 的发展演变与网络间谍活动、有针对性的攻击以及与安全专家的持续博弈密不可分。
Splunk 威胁研究团队(STRT)详细介绍了 PlugX 变体,包括 payload、策略及其影响。我们将深入研究该恶意软件的内部机制,探索其侧加载技术以及它如何在受感染的主机中执行其恶意代码。
在本文中,STRT 提供了对此威胁的深入分析,包括:
- PlugX.DAT Payload 提取
- PlugX.CFG 解密
- PlugX 提取器工具
- PlugX 分析
- 流程伪装
- 系统信息发现
- 防火墙规则
- 创建服务
- 清理操作
- 删除文件
- 模拟用户
- 键盘记录器和进程监控
1 PlugX.DAT Payload 提取
PlugX 的此变体利用侧载技术执行恶意代码。在这个复杂的过程中,当用户启动合法的 “msbtc.exe” 时,恶意软件会动态加载 “version.dll”,这是 “msbtc.dat” 文件初始解密层所需的关键组件。其中第一层解密采用 RC4 算法,由 “VerQueryValueW” 导出函数中的 “Version.DLL” 编排。
在成功解密第一层后,PlugX 包含一组关键标头,这些标头是之后解密和解压缩最终 payload 的基本组件。在图 1 中,我们对这些标头元素进行全面细分,揭示了它们的复杂构成以及在恶意软件功能中发挥的关键作用。
随后,恶意软件进入第二层解密,其中包括一系列异或运算和基本数学运算。这些转换用于生成压缩层,该压缩层使用 “RtlDecompressBuffer()”API 进一步解压。这个过程最终产生了一个无头的 PlugX payload 变体,并在就绪之后注入到目标进程中。后文将探讨此操作选择的具体进程,揭示该恶意软件的逃避策略和持久性策略。
2 PlugX.CFG 解密
与 “msbtc.dat” 的解密过程不同,该变体在处理 “msbtc.cfg” 文件时较为简化。它仅依赖于与 “Version.DLL” 相同的密钥和 RC4 算法来提取其配置设置。这种简化的方法强调处理配置数据的效率,利用现有工具加快流程。
3 PlugX 提取器工具
STRT 主动创建了一个名为 plugx_extractor.py 的 Python 工具,以促进对这种威胁的分析,并提取 PlugX payload 及其配置文件。该工具可自动执行提取过程,确保精确无误的结果。提取的数据被有效地保存到文件中,在简化了调查过程的同时,也使安全从业人员能够更有效地理解和分析这种威胁。
下方链接是一个简短的视频演示,介绍了该工具如何提取 Plugx payload 和配置文件:https://www.splunk.com/en_us/blog/security/unmasking-the-enigma-a-historical-dive-into-the-world-of-plugx-malware.html
4 PlugX 分析
在本节中,我们将深入分析从 “mbstc.dat” 文件中解密的无头 PlugX payload。
4.1 流程伪装
从 “msbtc.dat” 解密无头 PlugX payload 后,PlugX 继续将其注入合法的 “msdtc.exe”,该进程代表 Microsoft 分布式事务处理协调器。这是一个重要的 Windows 服务,负责管理各种资源(包括数据库、消息队列和文件系统)的分布式事务。
在图 5 中,它检测 “msdtc.exe” 进程的命令行参数。如果它检测到 “-a”,则表示重新执行,如果找到 “-b”,则触发其他功能。
4.2 系统信息发现
作为与 C2 服务器的信标通信的一部分,PlugX 恶意软件会检索受感染主机的用户名、计算机名称和操作系统信息。
除了上述操作外,它还将尝试通过向 ipinfo.io 网站发起查询,从受感染的主机中收集与网络相关的信息。此数据收集过程包括检索有关主机的外部 IP 地址、地理位置、Internet 服务提供商和其他网络相关参数的详细信息。通过查询 ipinfo.io,该恶意软件构建受感染主机网络环境的综合配置文件,这种配置文件可进一步用于各种恶意活动或信息收集。
4.3 防火墙规则
恶意软件通过添加一个名为 "Microsoft Edge" 的防火墙规则来发起战略性操作。该规则被配置为允许特定 TCP 端口的入站网络流量,这对其与命令控制(C2)服务器进行通信至关重要。在我们的测试环境中,我们自定义了 PlugX 的配置以通过端口 7777 建立连接。
通过创建此防火墙规则,PlugX 可以操纵主机的安全设置,确保允许指定端口上的网络流量。这使得恶意软件能够通过端口 7777 与其远程 C2 服务器保持隐蔽的通信线路,从而实现数据泄露、命令执行以及潜在的其他恶意活动。这种对防火墙规则的恶意操纵,是该恶意软件在受感染系统中秘密运行的关键组成部分。
4.4 创建服务
在安装过程中,为了在受感染的主机中建立持久且可提升的权限,恶意软件会执行多方面的策略。其中一个重要操作即创建一种能巧妙地覆盖在合法 “msbtc.exe” 可执行文件上的服务,这种服务在调控恶意软件的秘密操作中起着关键作用。
此服务配置执行两个基本功能:
-
自动解密:一旦就位,它就会作为一种复杂的解密机制运行。它持续解密构成 PlugX 恶意软件的核心——即隐藏、压缩的payload 和配置文件。此解密过程在执行合法的 “msbtc.exe” 时无缝启动。
-
动态 Payload 加载:同时,该服务有助于动态加载解密的 PlugX payload 和配置。这使得 PlugX 从隐藏状态过渡到完整功能状态,将其注入到 mstdc.exe 进程和内存中,准备执行其恶意议程。
4.5 清理操作
在 PlugX 的初始执行阶段,恶意软件会严密地执行一系列操作,以消除或清理其先前安装和相关痕迹的操作。制定此计算过程是为了确保自身能够准确无误地重新安装,从而最大限度地减少检测或干扰的可能性。下图是该清理操作的一个说明性示例。
4.6 删除文件
作为安装过程的一部分,PlugX 会编排删除对 PlugX 整体功能至关重要的所有基本组件的副本。删除的副本专门放置在 “%programdata%\MSB” 文件夹中。
4.7 模拟用户
为了提升权限,PlugX 的特定变体通过利用 “explorer.exe” 过程模拟当前登录用户。这种技术允许恶意软件采用合法用户的身份和权限,从而获得对系统资源和敏感数据的访问权限。通过将其活动伪装在 Windows 操作系统的常见且重要的 "explorer.exe" 进程中,PlugX 有效地隐藏了其恶意意图。
4.8 键盘记录器和进程监控
PlugX 还具有键盘记录功能,使其能够秘密监控受感染主机上的按键和处理活动。通过此监视收集的数据被谨慎地存储在 “%ALLUSERPROFILE%\MSB” 目录的文件中,具体名为 “kl”。这些信息在恶意软件的数据收集和泄露策略中发挥着重要的作用。随后,“kl” 文件的内容被系统地读取并传输到命令和控制(C2)服务器。
5 检测
Splunk 威胁研究团队已经整理了相关的检测内容,并将其标记为 PlugX Analytic Story,以帮助安全分析人员检测利用这种恶意软件的对手。
此版本使用并考虑了相关的数据端点遥测源,例如:
- 进程执行和命令行日志记录
- Windows 安全中心 SACL 事件 ID、Sysmon 或任何符合通用信息模型的 EDR 技术
- Windows 安全事件日志
- Windows 系统事件日志
- Windows PowerShell 脚本块日志记录
6 入侵指标 (IoC)
Name | Size | SHA256 |
---|---|---|
msbtc.cfg | 416 bytes | 66f9cc42c27cf689911f6ba3e24ad9cbec6fa3066a50c448d4cbf5d8a66d2eb5 |
msbtc.dat | 697243 bytes (680 KiB) | f991c13a24df578a9f31741a263dc1405eac660d4e749465991bac68eccdc490 |
msbtc.exe | 310384 bytes (303 KiB) | fca2fad3466fefebd6df133d48485374ca647dedcc2ef9ba52e7d0ccdbf91000 |
VERSION.dll | 230912 bytes (225 KiB) | 64c5c9732a97f9b088e63173cb8781cae33d29934fdbe3652393394c4188d15c |
7 Playbooks
默认情况下,与此分析故事关联的非搜寻检测会在 Splunk Enterprise Security 风险指数中创建条目,该条目可与风险显著指标和风险显著 Playbook Pack 无缝使用。此外,自动扩充 playbook 包也适用于任何这些分析的输出。
Playbook | 描述 |
---|---|
自动扩充 | 将事件移至打开状态,然后启动 Dispatch Playbook 执行声望分析、属性查找和相关工单。 |
标识符信誉分析调度 | 检测可用的指标并将其引导至指标信誉分析 Playbook。分析的输出将更新任何工件、任务和指示器标签。 |
属性查找调度 | 检测可用实体并将其引导至属性查找 Playbook。Playbook 的输出将为返回信息的任何技术创建新的项目。 |
相关工单搜索调度 | 检测可用指标并将其引导至调度相关的工单搜索 Playbook。分析的输出将更新任何工件、任务和指示标签。 |
8 结论
本文通过分析 PlugX 策略、技术和程序,帮助安全分析师、蓝队成员和 Splunk 客户识别 PlugX 恶意软件。通过了解其行为,STRT 能够生成遥测和数据集,以开发和测试 Splunk 检测,帮助防御和应对这种威胁。
本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/3093/