在2021年3月监测Microsoft Exchange Server攻击时,Unit 42研究人员就发现了一个PlugX变体,该变体是作为漏洞利用后远程访问工具 (RAT) 传送到其中一台受感染服务器的。 Unit 42 观察到该变体的独特之处在于它包含对其核心源代码进行了更改:将 “PLUG”替换为“THOR”。最早发现的 THOR 样本是 2019 年 8 月,它是已知最早的更名代码后的样本。在此变体中观察到了新功能,包括增强的有效载荷传送机制和滥用受信任的二进制文件。
PlugX 于 2008 年首次被发现,经过追踪分析,更多的样本以及相关的 PlugX 命令和控制 (C2) 基础设施被研究人员发现。
Palo Alto Networks 的 AutoFocus 用户可以分别使用 PlugX 和 PKPLUG 标签跟踪 PlugX 和 PKPLUG 活动,他们可以在 Unit 42 ATOM 查看器中查看所观察到的技术及其相关行动过程的完整可视化。
传播过程
2021 年 3 月 19 日,Unit 42观察到攻击者通过一系列零日漏洞(CVE-2021-26855 和 CVE-2021-27065)(称为 ProxyLogon)利用源自 IP 101.36.120[.]227 的 Exchange 服务器。成功利用后,一个 webshell 被上传到一个可公开访问的 web 目录,允许以最高权限级别执行代码。
攻击者随后使用了一种称为“Living off the Land”(LotL) 的技术,该技术使用受信任的二进制文件来绕过防病毒检测。在这种情况下,Microsoft Windows 二进制文件 bitsadmin.exe 用于从攻击者控制的 GitHub 目标下载名为 Aro.dat(SHA256:59BA902871E98934C054649CA582E2A01707998ACC78B2570FEF43DBD10F7B6F)的无害文件。
Bitsadmin 命令样本
Aro.Dat
Aro.dat 的前一千字节表明该文件可能已加密或可能已被压缩,事实证明,这些数据只不过是随机填充数据,很可能作为文件标头添加,以逃避杀毒软件签名阻止检测。填充数据的末尾以null结尾,它为实际数据入口点提供了一个标识符。紧随 NULL 字节 (0x00) 的是一组用于解压缩文件的 x86 汇编指令。在此样本中,x86 程序集从文件偏移量 0x4EC 开始,操作码为 0x77,这会转换为JA的程序集助记符(如果上面是unsigned则跳转)。
Aro.dat 文件标头如下所示,以 NULL 字节结尾。为简洁起见,数据被截断,因为直到NULL之前的字节都是无意义的。红色表示NULL字节,绿色是代码执行开始的地方。
Aro.dat 文件标头
Aro.dat 旨在保持恶意程序不会被检测到,并且在没有特定加载程序的帮助下无法运行。与之前的 PlugX 变体一样,代码执行是通过一种称为 DLL 侧加载的技术实现的。静态分析表明,一旦加载到内存中,Aro.dat 就会开始自行解压缩并启动与 C2 服务器的通信。
Aro.dat 实际上是一个加密和压缩的 PlugX 载荷,Aro.dat 中的解密例程与旧的 PlugX 变体非常相似,因为它涉及多个解密密钥和位移位操作。解密后,它会通过 Windows API RtlDecompressBuffer 解压缩到 Windows 模块 (DLL) 中。压缩算法是 LZ 压缩 (COMPRESSION_FORMAT_LZ