RANCOR 使用 PLAINTEE 和 DDKONG 恶意软件家族在东南亚进行针对性攻击

在 2017 年和 2018 年中,Unit 42 一直在跟踪和观察一个针对性很强的攻击(针对东南亚),这是基于我们对KHRAT Trojan的研究。基于证据,这些攻击是由同一组织的攻击者利用以前未知的恶意软件家族进行的。此外,这些攻击对其使用的恶意软件的分发以及所选目标具有高度针对性。基于这些因素,Unit 42 认为,这些攻击背后的攻击者正在进行间谍活动。

我们相信这个组织之前是未知的,因此我们称之为 RANCOR。Rancor 组织的攻击使用了两个主要的恶意软件家族,我们将在本博客的后面深入描述命名为 DDKONG 和 PLAINTEE 的恶意软件家族。DDKONG 在整个行动中都会使用,而 PLAINTEE 是这些攻击者工具包的新增加部分。Unit 42 已确定 Rancor 针对这些国家(包括但不限于):

· 新加坡

· 柬埔寨

我们确认了这些攻击以鱼叉式钓鱼信息的诱饵文件开始,但没有观察到实际信息。这些诱饵主要包含政治新闻和公共新闻。基于此,我们认为 Rancor 攻击者是针对政治实体的。此外,这些诱饵文档托管在合法网站上,其中包括属于柬埔寨政府的网站,并且还有一次是在 Facebook。

攻击中使用的恶意软件和基础架构分为两个不同的集群,我们将其标记为 A 和 B,这些集群相关联是因为使用了 PLAINTEE 恶意软件和几个 "softer" 的链接。

一、攻击的相关性

基于之前对KHRAT Trojan的研究,我们一直在监控 KHRAT 的 C2C 域名。2018 年 2 月,几个 KHRAT 关联的域名开始解析到 IP 地址 89.46.222 [ . ] 97。我们把这个 IP 作为调查的中心。

检查来自PassiveTotal 的被动 DNS(pDNS)记录,揭示了几个与此 IP 相关的域名,这些域名模仿热门技术公司。在与此 IP 地址相关的恶意软件样本中找到其中一个域名为 facebook-apps [ . ] com。

下表描述了与此 IP 地址直接相关的两个恶意软件样本:

进一步挖掘,发现我们后来命名为 PLAINTEE 的恶意软件家族看起来相当独特,在数据集中只有 6 个样本。

除了一个样本(c35609822e6239934606a99cb3dbc925f4768f0b0654d6a2adc35eca473c505d)之外,我们能够通过他们使用的基础设施将所有 PLAINTEE 样本关联在一起。图 1 中的图表显示了我们在调查期间确定的样本、域名、IP 地址和电子邮件地址(更多详细信息,请参阅Appendix B),集群 A 和集 B 之间存在明显分隔,两者的基础架构没有重叠。

图 1: 两个活动集群中 PLAINTEE 样本的分布图

对这两个集群的调查进一步表明,他们都参与了针对东南亚机构的攻击。基于使用相对独特的 PLAINTEE 恶意软件,恶意软件在每个群集中使用相同的文件路径以及针对类似的目标,我们已将这些攻击归入 RANCOR 名下。

二、分发与加载机制

对于很多样本,我们无法确定它们是如何分发给受害者的 ; 然而,在三种情况下,我们能够找到用于分发木马的文件,我们发现这些文件值得进一步调查,并在下面简要讨论。

Cluster A

Case 1:通过文档属性宏分发 – a789a282e0d65a050cccae66c56632245af1c8a589ace2ca5ca79572289fd483

在研究中,我们发现至少有一起针对一家公司的攻击,利用带有嵌入式宏的 Microsoft Office Excel 文档来启动恶意软件。有趣的是,分发的文档借用了 2017 年底被 Sofacy 使用的一种技术,该技术将主要恶意代码嵌入到文档的 EXIF 元数据属性中。

通过这样做,宏本身的主要内容(图 2)可以保持相对简单,并且恶意代码占用很小的空间可以帮助避开基于宏的自动检测机制。

图 2: 宏的全部内容

在本例中,Company 字段包含攻击者希望运行的原始命令,下载并执行恶意软件的下一阶段:

Cluster B

Case 2:通过 HTA Loader 分发 – 1dc5966572e94afc2fbcf8e93e3382eef4e4d7b5bc02f24069c403a28fa6a458

在这种情况下,攻击者将 HTML 应用程序文件(.hta)作为电子邮件附件发送给目标。打开执行时,HTA 文件的关键组件会从远程 URL 下载并执行后续的恶意软件,并加载外部托管的诱饵图像(图 3)。

图 3: 执行 .HTA 文件时加载的诱饵图像

图 3 中的诱饵图像强烈表明攻击者正在对柬埔寨的一个政治实体进行攻击。柬埔寨救国党是一个有政治动机的反对党。

Case 3:通过 DLL 加载程序分发 – 0bb20a9570a9b1e3a72203951268ffe83af6dcae7342a790fe195a2ef109d855

在分析过程中发现了三种独特的 DLL 加载器。Loader 非常简单,只需一个导出的功能,并负责执行单个命令。一个示例命令如下:

在上述命令中,恶意软件正在下载执行 payload,并将其配置为持久执行。在其中两个示例中,恶意软件还会下载并打开托管在合法网站上受到感染的诱饵 PDF 文档。在这些案例中看到的诱饵文件与柬埔寨新闻文章有关,下面的图 4 显示了一个例子。

图 4:downloader 提供的诱饵 1.pdf

上面的诱饵讨论了柬埔寨最近发生的针对政党支持者的事件,这与图 3 中观察到的诱饵文件类似。

值得注意的是,第三个 DLL 涉及到从政府网站下载诱饵文件。这个网站之前曾用于针对柬埔寨公民的 KHRa 行动。

另外,三个 DLL 加载程序中的两个被发现托管在这个相同的受感染网站上,这意味着它可能在 2018 年初再次受到控制。这两个 DLL 加载程序的文件名如下所示:

· Activity Schedule.pdf

· អ្នកនយោបាយក្បត់លើក្បត ( Translated from Khmer: Politicians betrayed on the betrayal )

三、恶意软件概述

在我们能够识别所使用的最终 payload 的所有情况下,都使用 DDKONG 或 PLAINTEE 恶意软件家族。我们观察到 2017 年 2 月至今一直使用 DDKONG,而 PLAINTEE 是更新的版本,已知最早的样本于 2017 年 10 月观测到。目前尚不清楚 DDKONG 是否仅由一名还是多名攻击者使用。

在本节中,我们将介绍这些恶意软件家族的功能和操作。

1、DDKONG

在下面的分析,我们使用了如下文件:

表 1: 全面分析 DDKONG 样本

该恶意软件有以下三个导出函数:

· ServiceMain

· Rundll32Call

· DllEntryPoint

ServiceMain 导出函数指示该 DLL 将作为服务加载。如果这个函数被成功加载,它将通过调用 Rundll32.exe 最终产生一个新的 Rundll32Call 导出实例。

Rundll32Call 导出函数首先创建一个名为 "RunOnce" 的命名事件。此事件确保在指定时间只执行一个 DDKong 实例。如果这是当时正在运行唯一的 DDKong 实例,则恶意软件会继续。如果不是,它就会终止。这可以确保在指定的时间只执行一个 DDKong 实例。

DDKong 使用 0xC3 的单字节异或密钥来解码嵌入式配置。解码后,配置包含下面的图 5 中显示的数据。

图 5: 突出显示的解码配置

在配置解码和解析后,DDKONG 继续通过原始 TCP 连接向配置中的远程服务器发送信标。数据包有一个长度为 32 的头部和一个可选的有效载荷。在信标中,没有提供有效载荷,因此,这个分组的长度被设置为零。

图 6: 发送到远程 C2 的 DDKONG 信标

发送信标后,恶意软件需要 0x4 或 0x6 的响应命令。这两个响应都会指示恶意软件下载并加载远程插件。在 0x4 的情况下,指示恶意软件加载导出的’ InitAction ’函数。如果指定 0x6,则会指示恶意软件加载导出的 "KernelDllCmdAction" 函数。在下载插件之前,恶意软件会下载一个与嵌入式配置连接并在运行时最终提供给插件的缓冲区。运行时此缓冲区的一个示例如下所示:

00000000: 43 3A 5C 55 73 65 72 73 5C 4D 53 5C 44 65 73 6B C:UsersMSDesk 00000010: 74 6F 70 5C 52 53 2D 41 54 54 20 56 33 5C 50 6C topRS-ATT V3Pl 00000020: 75 67 69 6E 42 69 6E 00 00 00 00 00 00 00 00 00 uginBin ……… uginBin ……… [ TRUNCATED ] 00000100: 00 00 00 00 43 3A 5C 55 73 65 72 73 5C 4D 53 5C … .C:UsersMS 00000110: 44 65 73 6B 74 6F 70 5C 52 53 2D 41 54 54 20 56 DesktopRS-ATT V 00000120: 33 5C 5A 43 6F 6E 66 69 67 00 00 00 00 00 00 00 3ZConfig …… .ZConfig …… . [ TRUNCATED ] 00000200: 00 00 00 00 00 00 00 00 00 40 00 00 F0 97 B5 01 ……… @……

正如我们在上面所看到的,这个缓冲区中包含了两个完整的文件路径,使我们能够深入了解原始恶意软件家族的名称以及作者。收集此缓冲区后,恶意软件将下载该插件并加载相应的函数。在运行时期间,识别出以下插件:

表 2: 在运行时为 DDKong 样本下载的插件

这个插件为攻击者提供了在受害者机器上列出文件和下载 / 上传文件的功能。

2、PLAINTEE

总的来说,我们已经能够找到 6 个 PLAINTEE 样本,根据分析,它只能被 RANCOR 攻击者使用。PLAINTEE 的特殊之处在于它使用自定义 UDP 协议进行网络通信。我们使用下面的示例样本进行分析:

表 3: 完整分析 PLAINTEE 样本

此样本有三个导出函数:

· Add

· Sub

该 DLL 在最初加载时使用名为 "Add" 的导出函数。当执行该函数时,PLAINTEE 在新进程中执行以下命令以添加持久性:

接下来,恶意软件调用 "Sub" 函数,该函数产生一个名为 "microsoftfuckedupb" 的互斥体,以确保在给定时间只有一个实例正在运行。另外,PLAINTEE 通过调用 CoCreateGuid ( ) 创建一个唯一的 GUID,作为受害者的标识符。然后,恶意软件继续收集有关受感染机器的常规系统枚举数据,并进入一个循环,在该循环中它将解码嵌入的配置 blob 并向 C2 服务器发送初始信标。

配置 blob 使用简单的单字节 XOR 方案进行编码。字符串的第一个字节被用作 XOR 密钥来依次解码剩余的数据。

解码这个 blob 会得到以下信息,也可以在原始二进制文件中找到:

表 4: 存储在恶意软件中的配置

之后,恶意软件通过自定义 UDP 协议使用信标配置端口。网络流量采用类似的方式进行编码,第一个字节为随机值,然后通过 XOR 解码数据包的其余部分。图 7 显示了解码后的信标的一个例子。

图 7: PLAINTEE 信标

表 5 给出了该信标的结构。

表 5: PLAINTEE 的信标结构

这个信标不断发出,直到从 C2 服务器获得有效的响应(没有设置睡眠定时器)。在初始信标之后,其他请求之间会有两秒的延迟。此响应的返回命令为 0x66660002,并包含发送到 C2 服务器的相同 GUID。一旦收到此响应,恶意软件会产生几个新线程,并带有不同的 Command 参数,其总体目标是加载并执行从 C2 服务器接收的新插件。

在对WildFire中的 PLAINTEE 进行文件分析期间,我们观察到攻击者在运行时为该样本下载并执行插件。获取到的插件如下所示:

表 6: 在 Wildfire 中观察到的 PLAINTEE 插件

PLAINTEE 下载的插件是一个具有’ shell ’或’ file ’导出函数的 DLL。该插件使用与 PLAINTEE 相同的网络协议,因此我们能够简单地解码发送的其他命令。观察到以下命令:

· tasklist

· ipconfig /all

攻击者间隔 33 秒执行这两个命令。由于自动命令的执行速度通常更快,这表明它们可能是由攻击者手动发送的。

四、总结

RANCOR 行动代表了针对东南亚地区持续有针对性的攻击趋势。在许多情况下,出于政治动机的诱饵被用来吸引受害者点击,并随后加载之前没有记录在案的恶意软件家族。这些家族利用自定义网络通信来加载和执行攻击者托管的各种插件。值得注意的是,PLAINTEE 恶意软件使用自定义 UDP 协议,这很罕见,在构建未知恶意软件的启发式检测时可以考虑这点。Palo Alto Networks 将继续监视这些攻击者者、恶意软件以及基础设施。

可能有助于防止这些攻击的其他缓解措施包括:

· 在环境中更改 ".hta" 文件的默认处理程序,以便它们不能直接执行。

附录 A – PLAINTEE 的老版本

PLAINTEE 的老版本可以通过在运行时创建的独特互斥来识别。至今已确定至少有三种 PLAINTEE 变体,但是,以下两个样本独具特色:

附录 B

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();