在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)的无害文件。
![](https://i-blog.csdnimg.cn/blog_migrate/4b6004d0f472371172db12130eac684c.png)
Bitsadmin 命令样本
Aro.Dat
Aro.dat 的前一千字节表明该文件可能已加密或可能已被压缩,事实证明,这些数据只不过是随机填充数据,很可能作为文件标头添加,以逃避杀毒软件签名阻止检测。填充数据的末尾以null结尾,它为实际数据入口点提供了一个标识符。紧随 NULL 字节 (0x00) 的是一组用于解压缩文件的 x86 汇编指令。在此样本中,x86 程序集从文件偏移量 0x4EC 开始,操作码为 0x77,这会转换为JA的程序集助记符(如果上面是unsigned则跳转)。
Aro.dat 文件标头如下所示,以 NULL 字节结尾。为简洁起见,数据被截断,因为直到NULL之前的字节都是无意义的。红色表示NULL字节,绿色是代码执行开始的地方。
![](https://i-blog.csdnimg.cn/blog_migrate/cee4b58ea581ccc5e9dd9b6442aae72b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6cd37225eea83444e2dfc463e3af4e48.png)
Aro.dat 文件标头
Aro.dat 旨在保持恶意程序不会被检测到,并且在没有特定加载程序的帮助下无法运行。与之前的 PlugX 变体一样,代码执行是通过一种称为 DLL 侧加载的技术实现的。静态分析表明,一旦加载到内存中,Aro.dat 就会开始自行解压缩并启动与 C2 服务器的通信。
Aro.dat 实际上是一个加密和压缩的 PlugX 载荷,Aro.dat 中的解密例程与旧的 PlugX 变体非常相似,因为它涉及多个解密密钥和位移位操作。解密后,它会通过 Windows API RtlDecompressBuffer 解压缩到 Windows 模块 (DLL) 中。压缩算法是 LZ 压缩 (COMPRESSION_FORMAT_LZNT1)。
![](https://i-blog.csdnimg.cn/blog_migrate/7ce085aa4beaf6b2650146c2a5f93cc4.png)
PlugX 解密例程的比较
上图突出显示的条目是 Aro.dat 和旧版 2012 PlugX 样本(SHA256:A68CA9D35D26505A83C92202B0220F7BB8F615BC1E8D4E2266AADDB0DFE7BD15)使用的静态解密密钥。通过使用不同的静态密钥和不同的加减法使用,每个 PlugX 构建的解密例程略有不同。
解密、解压的 Aro.dat 是一个 x86 Windows DLL 或 PE 文件。
Aro.Dat:代码执行
Aro.dat 文件包含以下字符串名称:aross.dll、aro.exe 和aro.dat。这三个文件的关联提供了对如何实现代码执行的深入了解。 VirusTotal 有以下文件:
Aro.exe (SHA256: 18A98C2D905A1DA1D9D855E86866921E543F4BF8621FAEA05EB14D8E5B23B60C)
Aross.dll (SHA256: 9FFFB3894B008D5A54343CCF8395A47ACFE953394FFFE2C58550E444FF20EC47)
开源研究表明 ,Aro.exe 是“ARO 2012 高级修复和优化工具”的一部分。它是一个免费提供的工具,声称可以修复 Windows 注册表错误。它经过数字签名,与 PlugX 加载程序有已知关联,并动态加载 Aross.dll。 Aross.dll 是攻击者使用的 DLL 文件,负责加载加密的有效载荷文件 Aro.dat。有了这些信息,我们可以推断这两个文件是必要的,负责加载加密的 THOR 载荷 Aro.dat。
![](https://i-blog.csdnimg.cn/blog_migrate/0033b90e1ac724136a3ae03026b3fcc9.png)
Aro.dat 的 DLL 侧加载
Aro.Dat:RunTime操作
一旦被解密的有效载荷在内存中运行,它就会表现出与以前的 PlugX 植入变体相同的行为。它首先解密嵌入的 PlugX 硬编码配置设置。解密算法和 XOR 密钥在多个 PlugX 植入程序中相当一致。代码行为与 Insikt Group 报告的 RedDelta PlugX 的行为非常相似。与所有其他已知 PlugX 恶意软件家族相比,此样本的一个显着差异是在 PlugX 插件初始化期间执行的魔术值检查。从历史上看,该数字一直是 0x504C5547,它对应于 ASCII 编码中的 PLUG 值。在此样本中,魔术值为 0x54484F52,对应于 ASCII 编码中的 THOR 值。
![](https://i-blog.csdnimg.cn/blog_migrate/e152d66c1e3a61e72db958e14bf77acb.png)
DLL PlugX 魔术值比较
样本中的硬编码 PlugX 配置设置解码为以下值:
![](https://i-blog.csdnimg.cn/blog_migrate/532e1a824742b584db9c1d586eac612f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d693e66541f9371b51637eb75afadb35.png)
解密的硬编码配置设置
如上图所示,这个特定的 PlugX 植入程序配置如下:
rainydaysweb[.]com 的四个 C2 域;
与端口80、443、53 和 8000通信,数据通过 TCP 和 UDP 协议传输。输出传输到调试(outputdebugstringW)的数据到调试程序(如果附加)。
![](https://i-blog.csdnimg.cn/blog_migrate/0a92ceb166dedf0d8cbf774655e196eb.png)
调试输出
使用 HTTP 协议,与 C2 的初始握手不是 HTTP,它由长度可变的随机字节组成。植入程序需要返回 16 字节的数据,并且根据返回值(命令),将启动 HTTP 通信。 PlugX SxWorkProc 线程负责处理 HTTP 通信,其中一个HTTP 标头的示例如下所示:
![](https://i-blog.csdnimg.cn/blog_migrate/ed6ca4500dad8c3332e96c23a824867d.png)
HTTP POST 样本
上图的揭示如下所示:
POST 数据由随机字节组成;
User-agent 是一个硬编码值:Mozilla/4.0(compatible;MSIE 9.0;Windows NT 10.0;.NET4.0C;.NET4.0E;Tablet PC 2.0);
utmcn、utmcs、utmsr 和 utmsc 是硬编码的用户代理值;
61456 是已知的 PlugX 常数值;
HTTP 标头类似于 Recorded Future page 11 中的 RedDelta PlugX 变体;
使用名称和描述创建 Windows 系统服务:HP Digital Image;
![](https://i-blog.csdnimg.cn/blog_migrate/c49e0967813e08d9ffc921be5c33e9e2.png)
作为 HP Digital Image 运行的 PlugX 样本
可能的1234攻击 ID ;
当运行时,系统事件,如进程创建,日期和时间和用户名被记录到一个名为NTUSER.DAT的隐藏文件中,位于C: ProgramData MSDN 6.0目录,此文件使用0x4F6F的双字节密钥进行加密。
PlugX 还有另外两个可识别的属性:
1.隐藏的Windows 类名Static,如图10 所示,该窗口用于进程内部通信。
![](https://i-blog.csdnimg.cn/blog_migrate/336c19e74104101195c4425d241ab855.png)
PlugX Windows 类名
2.RWX 内存模块的 MZ 和 PE 标头被删除并替换为 ASCII ROHT( THOR向后),如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/dc014b5b528c9385cf7e7f68723dfacd.png)
内存模块工件
此样本具有以下 PlugX 插件,它们具有单独的硬编码日期戳,如下表所示。在过去,关于这些PlugX有很多说法。总之,它们为攻击者提供了各种监控、更新受感染的系统并与之交互,以实现他们的目标。
![](https://i-blog.csdnimg.cn/blog_migrate/3ada3851327baadd71a815250065418e.png)
PlugX 插件
此样本似乎还包含一个键或硬编码日期 20180209,它在结构中使用并在调用函数对象时传播。
与PKPLUG的关系
像Aro.dat这样的PlugX模块,包含了硬编码的配置信息,允许多个C2地址。这为后门程序提供了备用选项,以防某些远程服务在泄露时不可用。在这个特殊的PlugX植入物(SHA256: 59BA902871E98934C054649CA582E2A01707998ACC78B2570FEF43DBD10F7B6F)中,如上图所示,所有四个C2配置选项都引用了域名rainydaysweb[.]com。
下图突出显示了最近发现的带有THOR魔法字节(基础设施)的PlugX样本和与已知PKPLUG活动相关的其他对象之间的重叠,它们分别用橙色矩形和红色矩形表示。
如前所述,Aro.dat (SHA256: 59BA902871E98934C054649CA582E2A01707998ACC78B2570FEF43DBD10F7B6F)使用bitsadmin从actor控制的GitHub存储库下载到目标Microsoft Exchange Server。因此,负责加载和解密模块的特定组件是未知的。它与rainydaysweb[.]com的连接显示在下图中的蓝色椭圆形中。
![](https://i-blog.csdnimg.cn/blog_migrate/2578671b432ab395fb35305282b4a5b2.png)
Maltego 图表突出显示了 THOR 与现有 PKPLUG 基础设施的重叠部分
研究人员发现了一些相关基础设施和常见恶意行为的重叠,具体描述如下图所示。
PlugX样本(SHA256: 93D33626886E97ABF4087F5445B2A02738EA21D8624B3F015625CD646E9D986E)[1],首次出现于2021年3月19日,使用传统的PLUG(而不是THOR)标识符并与相同的C2rainydaysweb[.]com通信。此样本也与其他PlugX一样有一些共同的行为特征,即特定于创建密钥HKLM\Software\CLASSES\ms-pu\PROXY的注册表活动。其中一些样本使用了过去链接到PKPLUG活动的C2基础架构,如2020年底使用C2 manager2013[.]com的PlugX样本(SHA256: A15FED60E69EC07BFD01A23BEEC2C8E9B14AD457EA052BA29BD7A7B806AB63B4)。
使用公共注册表项的集合中的其他示例,通过使用共享基础设施,揭示了包含与第三级域upload.ukbbcnews[.]com相关的C2通信信息的更多样本。该域名不是也从来都不是合法的BBC域名,并被注册为这样的受害者。该域名解析为IPv4地址45.248.87[.]217 为PlugX样本(SHA256: 690C488A9902978F2EF05AA23D21F4FA30A52DD9D11191F9B49667CD08618D87)[5]提供C2通道,其THOR模块mpsvc.ui (SHA256: 64E2FE0E9D52812D2DA956B1D92B51E7C215E579241649316CF996F9721E466E)从2020年8月初就开始运行了。
早在 2019 年 5 月至 2021 年 3 月,其他“ukbbcnews”三级域(即 bbc.、news. 和 www.)就存在并解析为相同的 45.248.87[.]217 IPv4 地址。在2018年、2019年和2020年似乎一直被用作各种PlugX样本的C2通道。2018年6月起的PlugX样本(SHA256: 3CDD33DEA12F21A4F222EB060E1E8CA8A20D5F6CA0FD849715F125B973F3A257)[6]共享行为性状,即设置注册表键值HKLM\SOFTWARE\Classes\KET.FAST\CLSID[7] 到-1。
在 Unit 42已知的三个更改注册表项值的PlugX样本中,有一个样本(SHA256: A9511CDAA96ED59DE73A7A7C7DC375DE204BEE7A9511C5EE71BF013010324A91)[8]在相同的时间段(2018年6月)使用域tibetsl[.]com和许多第三级域名,用于C2通信。第三个PlugX样本(SHA256: 80DEED939A520696968335D1BB2A9FCCE7053C0156F679BA261824D0A2D44967)[9],在设置中也使用了THOR标识符。从2019年11月起,该样本及其配置模块arosx .dat (SHA256: C5DCD3073904FAD5D9A8FE1026141A832E05C9CA03A88FEE96587921F42773D4)使用108.61.182[.]34用于C2通信,同样的域名也被用于C2通信。
另一个使用THOR标识符的配置模块acrobat.chm (SHA256: B5C0DB62184325FFBE2B8EF7E6F13F5D5926DEAC331EF6D542C5FA50144E0280)被PlugX样本Acrobat.dll (SHA256: 3C5E2A4AFE58634F45C48F4E800DC56BAE3907DDE308FF97740E9CD5684D1C53) 加载,该样本于2020年10月底首次出现。配置中的C2通道是tools.scbbgroup[.]com,在当时被解析为167.88.180[.]131,自 2021 年 2 月初以来,它继续被解析为ASN 6134和134835下的 103.85.24[.]158。。
样本包括 www.ixiaoyver[.]com 和 www.systeminfor[.]com,它们分别于 2020 年 4 月和 5 月被解析为 103.85.24[.]190,它们充当多个 PlugX 样本的 C2 通道(使用 PLUG 标识符)。
在 www.systeminfor[.]com 解析为 103.85.24[.]190 的短暂两天后,该解析曾短暂地被更改为 167.88.180[.]32 (ASN 6134) ,其他pkplug相关域在2020年期间解决。其中一个域名是www.cabsecnow[.]com,这是用作另一个PlugX C2通信样本(SHA256: A9CBCE007A7467BA1394EED32B9C1774AD09A9A9FB74EB2CCC584749273FAC01)和配置模块Smadav.dat (SHA256: E2D21B5E34189FA1ACA39A13A405C792B19B6EDF020907FB9840AF1AAFBAA2F4) 在 2020 年 8 月使用 THOR 魔术字节。
最后PlugX样本使用THOR标识符SmadHook32.dll (SHA256: 125 fdf108dc1ad6f572cbdde74b0c7fa938a9adce0cc80cb5ce00f1c030b0c93)及其配置模块Smadav.dat (SHA256: CC1AFB373F8286C08869CD786FEE75B8002DF595586E00255F52892016FD7A4F)是最近THOR样本。首次出现于 2021 年 3 月,该样本的 C2 引用了 news.cqpeizi[.]com,自 2019 年底以来,该网站解析为环回地址 127.0.0[.]1。
了解了加密载荷文件的构建方式后,Unit 42 研究人员根据 x86 汇编指令创建了一个签名。这些指令用于解压有效载荷。
追踪分析中,研究人员发现了其他 PlugX 加密的有效载荷,它们具有不同的编码方案和文件标头。这些样本使用解密密钥进行 XOR 编码,解密密钥由从文件偏移量零开始的字节组成,直到 NULL 字节。通常,密钥的长度为 10 个字节。解密后,样本是 PE 文件 (DLL) 的样本。
目前,研究人员已经确定了另外两个具有不同编码方案的 PlugX 加密载荷文件。这些文件被手动解密并确认为 PlugX 变体。
Unit 42 PlugX 有效载荷解密程序
Unit 42 创建了一个 Python 脚本,该脚本可以在没有关联的 PlugX 加载程序的情况下解密和解压加密的 PlugX 载荷。它尝试检测 PlugX 加密样本的类型,然后输出以下内容:
解密和解压的 PlugX 模块 (DLL),由于内存模块中不存在 MZ 标头,因此将 MZ 标头添加到文件中,它仅适用于具有随机字节标头的加密载荷(THOR 载荷);
硬编码的 PlugX 配置文件(C2 信息)(如果支持);
使用中的工具样本的视频请点此。解密程序工具托管在 Unit 42 的公共工具 GitHub 存储库中。
总结
PlugX 恶意软件家族虽然已经出现13年了, 但仍然是一个威胁。经过对源代码组件的更改,开发人员将其签名魔术值从“PLUG”更改为“THOR”。在此变体中观察到了新功能,包括增强的有效载荷传播机制和滥用受信任的二进制文件。借助 THOR 标识符签名,Unit 42 将继续搜索可能与此新 PlugX 变体相关联的其他样本和变体。
![](https://i-blog.csdnimg.cn/blog_migrate/e37926ffacec3d4f7f5501dd9415a065.png)