
在2021年3月监测MicrosoftExchangeServer攻击时,Unit42研究人员就发现了一个PlugX变体,该变体是作为漏洞利用后远程访问工具(RAT)传送到其中一台受感染服务器的。Unit42观察到该变体的独特之处在于它包含对其核心源代码进行了更改:将“PLUG”替换为“THOR”。最早发现的THOR样本是2019年8月,它是已知最早的更名代码后的样本。在此变体中观察到了新功能,包括增强的有效载荷传送机制和滥用受信任的二进制文件。
PlugX于2008年首次被发现,经过追踪分析,更多的样本以及相关的PlugX命令和控制(C2)基础设施被研究人员发现。
PaloAltoNetworks的AutoFocus用户可以分别使用PlugX和PKPLUG标签跟踪PlugX和PKPLUG活动,他们可以在Unit42ATOM查看器中查看所观察到的技术及其相关行动过程的完整可视化。
传播过程2021年3月19日,Unit42观察到攻击者通过一系列零日漏洞(CVE-2021-26855和CVE-2021-27065)(称为ProxyLogon)利用源自[.]227的Exchange服务器。成功利用后,一个webshell被上传到一个可公开访问的web目录,允许以最高权限级别执行代码。
攻击者随后使用了一种称为“LivingofftheLand”(LotL)的技术,该技术使用受信任的二进制文件来绕过防病毒检测。在这种情况下,MicrosoftWindows二进制文件用于从攻击者控制的GitHub目标下载名为(SHA256:59BA902871E98934C054649CA582E2A01707998ACC78B2570FEF43DBD10F7B6F)的无害文件。

Bitsadmin命令样本
的前一个字节表明该文件可能已加密或可能已被压缩,事实证明,这些数据只不过是随机填充数据,很可能作为文件标头添加,以逃避杀毒软件签名阻止检测。填充数据的末尾以null结尾,它为实际数据入口点提供了一个标识符。紧随NULL字节(0x00)的是一组用于解压缩文件的x86汇编指令。在此样本中,x86程序集从文件偏移量0x4EC开始,操作码为0x77,这会转换为JA的程序集助记符(如果上面是unsigned则跳转)。
文件标头如下所示,以NULL字节结尾。为简洁起见,数据被截断,因为直到NULL之前的字节都是无意义的。红色表示NULL字节,绿色是代码执行开始的地方。


文件标头
旨在保持恶意程序不会被检测到,并且在没有特定加载程序的帮助下无法运行。与之前的PlugX变体一样,代码执行是通过一种称为DLL侧加载的技术实现的。静态分析表明,一旦加载到内存中,就会开始自行解压缩并启动与C2服务器的通信。
实际上是一个加密和压缩的PlugX载荷,中的解密例程与旧的PlugX变体非常相似,因为它涉及多个解密密钥和位移位操作。解密后,它会通过WindowsAPIRtlDecompressBuffer解压缩到Windows模块(DLL)中。压缩算法是LZ压缩(COMPRESSION_FORMAT_LZNT1)。

PlugX解密例程的比较
上图突出显示的条目是和旧版2012PlugX样本(SHA256:A68CA9D35D26505A83C92202B0220F7BB8F615BC1E8D4E2266AADDB0DFE7BD15)使用的静态解密密钥。通过使用不同的静态密钥和不同的加减法使用,每个PlugX构建的解密例程略有不同。
解密、解压的是一个x86WindowsDLL或PE文件。
:代码执行文件包含以下字符串名称:、和。这三个文件的关联提供了对如何实现代码执行的深入了解。VirusTotal有以下文件:
(SHA256:18A98C2D905A1DA1D9D855E86866921E543F4BF8621FAEA05EB14D8E5B23B60C)
(SHA256:9FFFB3894B008D5A54343CCF8395A47ACFE953394FFFE2C58550E444FF20EC47)
开源研究表明,是“ARO2012高级修复和优化工具”的一部分。它是一个免费提供的工具,声称可以修复Windows注册表错误。它经过数字签名,与PlugX加载程序有已知关联,并动态加载。是攻击者使用的DLL文件,负责加载加密的有效载荷文件。有了这些信息,我们可以推断这两个文件是必要的,负责加载加密的THOR载荷。

的DLL侧加载
:RunTime操作一旦被解密的有效载荷在内存中运行,它就会表现出与以前的PlugX植入变体相同的行为。它首先解密嵌入的PlugX硬编码配置设置。解密算法和XOR密钥在多个PlugX植入程序中相当一致。代码行为与InsiktGroup报告的RedDeltaPlugX的行为非常相似。与所有其他已知PlugX恶意软件家族相比,此样本的一个显著差异是在PlugX插件初始化期间执行的魔术值检查。从历史上看,该数字一直是0x504C5547,它对应于ASCII编码中的PLUG值。在此样本中,魔术值为0x54484F52,对应于ASCII编码中的THOR值。

DLLPlugX魔术值比较
样本中的硬编码PlugX配置设置解码为以下值:


解密的硬编码配置设置
如上图所示,这个特定的PlugX植入程序配置如下:
rainydaysweb[.]com第四个C2域;
与端口80、443、53和8000通信,数据通过TCP和UDP协议传输。输出传输到调试(outputdebugstringW)的数据到调试程序(如果附加)。

调试输出
使用HTTP协议,与C2的初始握手不是HTTP,它由长度可变的随机字节组成。植入程序需要返回16字节的数据,并且根据返回值(命令),将启动HTTP通信。PlugXSxWorkProc线程负责处理HTTP通信,其中一个HTTP标头的示例如下所示:

HTTPPOST样本
上图的解释如下所示:
POST数据由随机字节组成;
User-agent是一个硬编码值:Mozilla/4.0(compatible;;;.;.;);
utmcn、utmcs、utmsr和utmsc是硬编码的用户代理值;
61456是已知的PlugX常数值;
HTTP标头类似于RecordedFuturepage11中的RedDeltaPlugX变体;
使用名称和描述创建Windows系统服务:HPDigitalImage;

作为HPDigitalImage运行的PlugX样本
可能的1234攻击ID;
当运行时,系统事件,如进程创建,日期和时间和用户名被记录到一个名为的隐藏文件中,位于C:目录,此文件使用0x4F6F的双字节密钥进行加密。
PlugX还有另外两个可识别的属性:
1.隐藏的Windows类名Static,如图10所示,该窗口用于进行内部通信。

PlugXWindows类名
2.RWX内存模块的MZ和PE标头被删除并替换为ASCIIROHT(THOR向后),如下图所示。

内存模块工件
此样本具有以下PlugX插件,它们具有单独的硬编码日期戳,如下表所示。在过去,关于这些PlugX有很多说法。总之,它们为攻击者提供了各种监控、更新受感染的系统并与之交互,以实现他们的目标。

PlugX插件
此样本似乎还包含一个键或硬编码日期20180209,它在结构中使用并在调用函数对象时传播。
与PKPLUG的关系像这样的PlugX模块,包含了硬编码的配置信息,允许多个C2地址。这为后门程序提供了备用选项,以防某些远程服务在泄露时不可用。在这个特殊的PlugX植入物(SHA256:59BA902871E98934C054649CA582E2A01707998ACC78B2570FEF43DBD10F7B6F)中,如上图所示,所有四个C2配置选项都引用了域名rainydaysweb[.]com。
下图突出显示了最近发现的带有THOR魔法字节(基础设施)的PlugX样本和与已知PKPLUG活动相关的其他对象之间的重叠,它们分别用橙色矩形和红色矩形表示。
如前所述,(SHA256:59BA902871E98934C054649CA582E2A01707998ACC78B2570FEF43DBD10F7B6F)使用bitsadmin从actor控制的GitHub存储库下载到目标MicrosoftExchangeServer。因此,负责加载和解密模块的特定组件是未知的。它与rainydaysweb[.]com的连接显示在下图中的蓝色椭圆形中。

Maltego图表突出显示了THOR与现有PKPLUG基础设施的重叠部分
研究人员发现了一些相关基础设施和常见恶意行为的重叠,具体描述如下图所示。
PlugX样本(SHA256:93D33626886E97ABF4087F5445B2A02738EA21D8624B3F015625CD646E9D986E)[1],首次出现于2021年3月19日,使用传统的PLUG(而不是THOR)标识符并与相同的C2rainydaysweb[.]com通信。此样本也与其他PlugX一样有一些共同的行为特征,即特定于创建密钥HKLM\Software\CLASSES\ms-pu\PROXY的注册表活动。其中一些样本使用了过去链接到PKPLUG活动的C2基础架构,如2020年底使用C2manager2013[.]com的PlugX样本(SHA256:A15FED60E69EC07BFD01A23BEEC2C8E9B14AD457EA052BA29BD7A7B806AB63B4)。
使用公共注册表项的集合中的其他示例,通过使用共享基础设施,揭示了包含与第三级域[.]com相关的C2通信信息的更多样本。该域名不是也从来都不是合法的BBC域名,并被注册为这样的受害者。该域名解析为IPv4地址45.248.87[.]217为PlugX样本(SHA256:690C488A9902978F2EF05AA23D21F4FA30A52DD9D11191F9B49667CD08618D87)[5]提供C2通道,其THOR模块(SHA256:64E2FE0E9D52812D2DA956B1D92B51E7C215E579241649316CF996F9721E466E)从2020年8月初就开始运行了。
早在2019年5月至2021年3月,其他“ukbbcnews”三级域(即bbc.、news.和www.)就存在并解析为相同的45.248.87[.]217IPv4地址。在2018年、2019年和2020年似乎一直被用作各种PlugX样本的C2通道。2018年6月起的PlugX样本(SHA256:3CDD33DEA12F21A4F222EB060E1E8CA8A20D5F6CA0FD849715F125B973F3A257)[6]共享行为性状,即设置注册表键值HKLM\SOFTWARE\Classes\\CLSID[7]到-1。
在Unit42已知的三个更改注册表项值的PlugX样本中,有一个样本(SHA256:A9511CDAA96ED59DE73A7A7C7DC375DE204BEE7A9511C5EE71BF013010324A91)[8]在相同的时间段(2018年6月)使用域tibetsl[.]com和许多第三级域名,用于C2通信。第三个PlugX样本(SHA256:80DEED939A520696968335D1BB2A9FCCE7053C0156F679BA261824D0A2D44967)[9],在设置中也使用了THOR标识符。从2019年11月起,该样本及其配置模块(SHA256:C5DCD3073904FAD5D9A8FE1026141A832E05C9CA03A88FEE96587921F42773D4)使用108.61.182[.]34用于C2通信,同样的域名也被用于C2通信。
另一个使用THOR标识符的配置模块(SHA256:B5C0DB62184325FFBE2B8EF7E6F13F5D5926DEAC331EF6D542C5FA50144E0280)被PlugX样本(SHA256:3C5E2A4AFE58634F45C48F4E800DC56BAE3907DDE308FF97740E9CD5684D1C53)加载,该样本于2020年10月底首次出现。配置中的C2通道是[.]com,在当时被解析为167.88.180[.]131,自2021年2月初以来,它继续被解析为ASN6134和134835下的103.85.24[.]158。。
样本包括[.]com和[.]com,它们分别于2020年4月和5月被解析为103.85.24[.]190,它们充当多个PlugX样本的C2通道(使用PLUG标识符)。
在[.]com解析为103.85.24[.]190的短暂两天后,该解析曾短暂地被更改为167.88.180[.]32(ASN6134),其他pkplug相关域在2020年期间解决。其中一个域名是[.]com,这是用作另一个PlugXC2通信样本(SHA256:A9CBCE007A7467BA1394EED32B9C1774AD09A9A9FB74EB2CCC584749273FAC01)和配置模块(SHA256:E2D21B5E34189FA1ACA39A13A405C792B19B6EDF020907FB9840AF1AAFBAA2F4)在2020年8月使用THOR魔术字节。
最后PlugX样本使用THOR标识符(SHA256:125fdf108dc1ad6f572cbdde74b0c7fa938a9adce0cc80cb5ce00f1c030b0c93)及其配置模块(SHA256:CC1AFB373F8286C08869CD786FEE75B8002DF595586E00255F52892016FD7A4F)是最近THOR样本。首次出现于2021年3月,该样本的C2引用了[.]com,自2019年底以来,该网站解析为换回地址127.0.0[.]1。
了解了加密载荷文件的构建方式后,Unit42研究人员根据x86汇编指令创建了一个签名。这些指令用于解压有效载荷。
追踪分析中,研究人员发现了其他PlugX加密的有效载荷,它们具有不同的编码方案和文件标头。这些样本使用解密密钥进行XOR编码,解密密钥由从文件偏移量零开始的字节组成,直到NULL字节。通常,密钥的长度为10个字节。解密后,样本是PE文件(DLL)的样本。
目前,研究人员已经确定了另外两个具有不同编码方案的PlugX加密载荷文件。这些文件被手动解密并确认为PlugX变体。
Unit42PlugX有效载荷解密程序Unit42创建了一个Python脚本,该脚本可以在没有关联的PlugX加载程序的情况下解密和解压加密的PlugX载荷。它尝试检测PlugX加密样本的类型,然后输出以下内容:
解密和解压的PlugX模块(DLL),由于内存模块中不存在MZ标头,因此将MZ标头添加到文件中,它仅适用于具有随机字节标头的加密载荷(THOR载荷);
硬编码的PlugX配置文件(C2信息)(如果支持);
总结PlugX恶意软件家族虽然已经出现13年了,但仍然是一个威胁。经过对源代码组件的更改,开发人员将其签名魔术值从“PLUG”更改为“THOR”。在此变体中观察到了新功能,包括增强的有效载荷传播机制和滥用受信任的二进制文件。借助THOR标识符签名,Unit42将继续搜索可能与此新PlugX变体相关联的其他样本和变体。
