![](http://dingyue.ws.126.net/2021/0823/5cfbed78p00qya005006cd200u000g2g018300nl.png)
在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 查看器中查看所观察到的技术及其相关行动过程的完整可视化。
![传播过程](http://dingyue.ws.126.net/2021/0823/7d3e6018p00qya0050007d200u0004ug00u0004u.png)
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)的无害文件。
![](http://dingyue.ws.126.net/2021/0823/2db33a11p00qya006000kd200u00050g012j006f.png)
Bitsadmin 命令样本
![Aro.Dat](http://dingyue.ws.126.net/2021/0823/7d3e6018p00qya0050007d200u0004ug00u0004u.png)
Aro.dat 的前一千字节表明该文件可能已加密或可能已被压缩,事实证明,这些数据只不过是随机填充数据,很可能作为文件标头添加,以逃避杀毒软件签名阻止检测。填充数据的末尾以null结尾,它为实际数据入口点提供了一个标识符。紧随 NULL 字节 (0x00) 的是一组用于解压缩文件的 x86 汇编指令。在此样本中,x86 程序集从文件偏移量 0x4EC 开始,操作码为 0x77,这会转换为JA的程序集助记符(如果上面是unsigned则跳转)。
Aro.dat 文件标头如下所示,以 NULL 字节结尾。为简洁起见,数据被截断,因为直到NULL之前的字节都是无意义的。红色表示NULL字节,绿色是代码执行开始的地方。
![](http://dingyue.ws.126.net/2021/0823/bbb54f68p00qya006000hd200h900mxg00h900mx.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)。
![](http://dingyue.ws.126.net/2021/0823/45285cc1p00qya007000ad200ih006vg00ih006v.png)
PlugX 解密例程的比较
上图突出显示的条目是 Aro.dat 和旧版 2012 PlugX 样本(SHA256:A68CA9D35D26505A83C92202B0220F7BB8F615BC1E8D4E2266AADDB0DFE7BD15)使用的静态解密密钥。通过使用不同的静态密钥和不同的加减法使用,每个 PlugX 构建的解密例程略有不同。
解密、解压的 Aro.dat 是一个 x86 Windows DLL 或 PE 文件。
![Aro.Dat:代码执行](http://dingyue.ws.126.net/2021/0823/7d3e6018p00qya0050007d200u0004ug00u0004u.png)
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。
![](http://dingyue.ws.126.net/2021/0823/468a872ap00qya008002cd200u000n7g01kw017z.png)
Aro.dat 的 DLL 侧加载
![Aro.Dat:RunTime操作](http://dingyue.ws.126.net/2021/0823/7d3e6018p00qya0050007d200u0004ug00u0004u.png)
一旦被解密的有效载荷在内存中运行,它就会表现出与以前的 PlugX 植入变体相同的行为。它首先解密嵌入的 PlugX 硬编码配置设置。解密算法和 XOR 密钥在多个 PlugX 植入程序中相当一致。代码行为与 Insikt Group 报告的 RedDelta PlugX 的行为非常相似。与所有其他已知 PlugX 恶意软件家族相比,此样本的一个显着差异是在 PlugX 插件初始化期间执行的魔术值检查。从历史上看,该数字一直是 0x504C5547,它对应于 ASCII 编码中的 PLUG 值。在此样本中,魔术值为 0x54484F52,对应于 ASCII 编码中的 THOR 值。
![](http://dingyue.ws.126.net/2021/0823/000660cbp00qya009001fd200u000bjg00yy00df.png)
DLL PlugX 魔术值比较
样本中的硬编码 PlugX 配置设置解码为以下值:
![](http://dingyue.ws.126.net/2021/0823/e5082a1cp00qya009000dd200eb00qfg00eb00qf.png)
解密的硬编码配置设置
如上图所示,这个特定的 PlugX 植入程序配置如下:
rainydaysweb[.]com 的四个 C2 域;
与端口80、443、53 和 8000通信,数据通过 TCP 和 UDP 协议传输。输出传输到调试(outputdebugstringW)的数据到调试程序(如果附加)。
![](http://dingyue.ws.126.net/2021/0823/751314c4p00qya00a0002d200dz003dg00dz003d.png)
调试输出
使用 HTTP 协议,与 C2 的初始握手不是 HTTP,它由长度可变的随机字节组成。植入程序需要返回 16 字节的数据,并且根据返回值(命令),将启动 HTTP 通信。PlugX SxWorkProc 线程负责处理 HTTP 通信,其中一个HTTP 标头的示例如下所示:
![](http://dingyue.ws.126.net/2021/0823/89ad031fp00qya00a0005d200e3005vg00e3005v.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;
![](http://dingyue.ws.126.net/2021/0823/5bc86a62p00qya00a000ed200ot00jpg00ot00jp.png)
作为 HP Digital Image 运行的 PlugX 样本
可能的1234攻击 ID ;
当运行时,系统事件,如进程创建,日期和时间和用户名被记录到一个名为NTUSER.DAT的隐藏文件中,位于C: ProgramData MSDN 6.0目录,此文件使用0x4F6F的双字节密钥进行加密。
PlugX 还有另外两个可识别的属性:
1. 隐藏的Windows 类名Static,如图10 所示,该窗口用于进程内部通信。
![](http://dingyue.ws.126.net/2021/0823/6d1b821cp00qya00b0006d200kz0064g00kz0064.png)
PlugX Windows 类名
2. RWX 内存模块的 MZ 和 PE 标头被删除并替换为 ASCII ROHT( THOR向后),如下图所示。
![](http://dingyue.ws.126.net/2021/0823/e936d13bp00qya00b0005d200oe002mg00oe002m.png)
内存模块工件
此样本具有以下 PlugX 插件,它们具有单独的硬编码日期戳,如下表所示。在过去,关于这些PlugX有很多说法。总之,它们为攻击者提供了各种监控、更新受感染的系统并与之交互,以实现他们的目标。
![](http://dingyue.ws.126.net/2021/0823/e7095747p00qya00c000gd200s200j6g00s200j6.png)
PlugX 插件
此样本似乎还包含一个键或硬编码日期 20180209,它在结构中使用并在调用函数对象时传播。
![与PKPLUG的关系](http://dingyue.ws.126.net/2021/0823/7d3e6018p00qya0050007d200u0004ug00u0004u.png)
像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的连接显示在下图中的蓝色椭圆形中。
![](http://dingyue.ws.126.net/2021/0823/554ba7baj00qya00c002dd200u000tqg03uw03tl.jpg)
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 有效载荷解密程序](http://dingyue.ws.126.net/2021/0823/7d3e6018p00qya0050007d200u0004ug00u0004u.png)
Unit 42 创建了一个 Python 脚本,该脚本可以在没有关联的 PlugX 加载程序的情况下解密和解压加密的 PlugX 载荷。它尝试检测 PlugX 加密样本的类型,然后输出以下内容:
解密和解压的 PlugX 模块 (DLL),由于内存模块中不存在 MZ 标头,因此将 MZ 标头添加到文件中,它仅适用于具有随机字节标头的加密载荷(THOR 载荷);
硬编码的 PlugX 配置文件(C2 信息)(如果支持);
使用中的工具样本的视频请点此。解密程序工具托管在 Unit 42 的公共工具 GitHub 存储库中。
![总结](http://dingyue.ws.126.net/2021/0823/7d3e6018p00qya0050007d200u0004ug00u0004u.png)
PlugX 恶意软件家族虽然已经出现13年了, 但仍然是一个威胁。经过对源代码组件的更改,开发人员将其签名魔术值从“PLUG”更改为“THOR”。在此变体中观察到了新功能,包括增强的有效载荷传播机制和滥用受信任的二进制文件。借助 THOR 标识符签名,Unit 42 将继续搜索可能与此新 PlugX 变体相关联的其他样本和变体。
参考及来源:https://unit42.paloaltonetworks.com/thor-plugx-variant/
热门跟贴