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