黑客攻击揭秘:探究APT37如何借助LNK文件大肆传播RokRAT

2023-05-10 12,290

如果你喜欢我的文章,欢迎关注公众号:安全女巫
转载请注明出处:https://mp.weixin.qq.com/s/I0_MkneXT9wqLz37xe9I9A

转载来源:http://www.myzaker.com/article/6459c5c6b15ec03db53bcd88

翻译原文:https://research.checkpoint.com/2023/chain-reaction-rokrats-missing-link/

本文是 Check Point 根据其 2022 年 7 月首次发现的一个 RokRAT 样本来做的深入分析。

早在 2022 年 7 月,APT37(Inky Squid、RedEyes、Reaper 或 ScarCruft)就开始试验使用超大 LNK 文件传播 RokRAT 活动,企图利用不受信任来源的宏发起攻击,巧的是,同月微软开始默认阻止跨 Office 文档的宏。与以前一样,攻击的目标还是韩国的目标。

研究结果表明,用于最终加载 ROKRAT 的各种多阶段感染链被用于其他攻击,导致传播与同一攻击者相关的其他工具。这些工具包括另一个自定义后门,GOLDBACKDOOR 和 Amadey。

在前几年,ROKRAT 感染链通常涉及带有漏洞的恶意朝鲜文字处理器(HWP,韩国流行的文档格式)文档或带有宏的 Microsoft Word 文档。虽然一些 ROKRAT 样本仍然使用这些技术,但传播方式上还是进行了改进,即使用伪装成合法文档的 LNK 文件传播 ROKRAT。这种转变并不是 ROKRAT 独有的,而是代表了 2022 年非常流行的更大趋势。

ROKRAT 的背景介绍

Talos 于 2017 年 4 月首次报道了 APT37 开发的 ROKRAT(也称为 DOGCALL),这个工具被用来针对韩国的政府部门,记者、活动人士和脱北者。根据最初的报告,其中一个 ROKRAT 样本使用 Twitter 作为其命令和控制(C&C)基础设施,而另一个则依赖于 Yandex 和 Mediafire。后一个更接近于如今 ROKRAT 的活动方式,依赖云文件存储服务作为一种 C&C 机制。

最初只支持 Windows,多年来 ROKRAT 已经适应了其他平台,在野外发现了 macOS 和 Android 版本。macOS 版本,也称为 CloudMensis,于 2022 年 7 月由 ESET 首次描述。虽然 Android 版本的 ROKRAT 已经存在了很长时间,但 InterLab 和 S2W 都在 Android 上推出了一个更新版本的 ROKRAT,称为 RambleOn(Cumulus)。所有这些都表明,这种恶意软件仍在迭代中。

APT37 的许多工具都是自定义编写的工具,如 ROKRAT,包括(但不限于)最近报道的 M2RAT、Konni RAT、Chinotto 和 GOLDBACKDOOR。然而,攻击者也会使用 Amadey 等普通恶意软件。使用普通恶意软件使得将攻击归因于特定组织变得更加困难,因为它广泛可用,任何人都可以获得它。

今年 2 月,AhnLab 报告了一种名为 Map2RAT(简称 M2RAT)的新 RAT。这种 RAT 利用隐写术技巧,将可执行文件隐藏在 JPEG 文件中以逃避检测。今年 3 月,Sekoia 和 ZScaler 都发布了 APT37 使用钓鱼网站和 PowerShell 后门的报告,ZScaler 导致了另一个名为 Chinotto 的植入程序的传播。

诱饵和感染链

在过去的四个月里,我们观察到多个感染链导致了 ROKRAT 的传播。在大多数情况下,LNK 文件会启动攻击,尽管在少数情况下,DOC 文件被用于相同的目的(以前的 ROKRAT 攻击中的方法)。在分析 ROKRAT 感染链的过程中,研究人员发现了导致 Amadey 传播的攻击链,Amadey 是一种在地下论坛上出售的商业 RAT。尽管攻击的性质不同,但研究人员认为所有这些攻击都是由相同的攻击者策划的。

诱饵和感染链的时间线

诱饵 LNK 感染链

2022 年 4 月,Stairwell 发表了对 GOLDBACKDOOR 的详细分析,这是一种针对韩国记者的有针对性攻击中使用的恶意软件。Stairwell 对利用运行 PowerShell 的大型 LNK 文件的感染链进行了彻底分析,导致在释放诱饵文档的同时执行新发现的恶意软件。这项技术是一个名为 EmbeddExeLnk 的公共工具的独特实现。

虽然最初与 GOLDBACKDOOR 有关,但对最近与 APT37 相关的诱饵的分析表明,这种技术已经成为一种重要的方法,用于传播与同一攻击者相关的另一种工具,即 ROKRAT。ROKRAT 和 GOLDBACKDOOR 加载机制的实现非常相似,只有在检索有效负载时才能区分。

在过去的几个月里,研究人员能够利用 ZIP 和 ISO 档案中提供的这种独特实现来识别多个诱饵。只有其中一些诱饵被证实会导致 ROKRAT 的传播。所有的诱饵都以韩国国内外事务为主题。

LNK 感染链分析

目前已知的所有 LNK 都会导致几乎相同的感染链。下面以 " 利比亚项目 " 中描述的一个感染为例进行说明:

" 利比亚项目 " 诱饵的感染链

点击恶意 LNK 文件会触发 PowerShell 的执行,并启动以下感染链:

1.PowerShell 从 LNK 中提取文档文件,将其放入磁盘,然后打开它。这个文件是一个诱饵,欺骗用户以为他们只是打开了一个普通的 PDF 或 HWP 文件。

2.PowerShell 从 LNK 中提取 BAT 脚本,将其放入磁盘并执行。

3.BAT 脚本执行一个新的 PowerShell 实例,该实例从 OneDrive 下载有效负载,通过将有效负载的第一个字节作为密钥对其进行解码,并将其与有效负载的其余部分进行异或。

4. 生成的有效负载以反射方式注入 PowerShell,使其作为新线程运行。

5.shellcode 使用四字节异或密钥对有效负载的 ROKRAT 部分进行解码并执行它。

典型的 ROKRAT 感染链

ROKRAT 运营商在采取新的行为同时,仍夹杂了一些旧习惯,比如,ROKRAT 仍然使用恶意 Word 文档进行部署。

2022 年 12 月,有人向 VirusTotal 提交了一份恶意的 Word 文档,命名为 ".doc"(Case fee_Payment request.doc)。该文件本身包含一个输入个人和银行信息的简短表格。然而,对该文件的仔细检查显示,其中提到了韩国的统一部。

一旦用户打开恶意文档并允许宏执行,就会触发以下感染链:

1. 宏通过设置 AccessVBOM 注册表项以加载其他代码来检查并确保它可以访问 Visual Basic 项目。

2. 宏解码一个新的 VBA 脚本,将其写入宏中的一个新模块,然后执行它。这是在不将任何代码释放到磁盘的情况下完成的。

3. 第二个 VBA 脚本运行 notepad.exe 并将 shellcode 注入其中。

4.shellcode 在 notepad.exe 中运行,并进入 OneDrive 下载 ROKRAT 有效负载并在内存中执行它。

这里描述的感染链与 MalwareBytes 在 2021 年 1 月报告的非常相似,MalwareBytes 也通过将 shellcode 注入 notepad.exe 并将 RAT 加载到内存中来传播 ROKRAT。然而,MalwareBytes 研究中描述的样本的编译日期是从 2019 年开始的,而 checkpoint 发现的新 ROKRAT 样本似乎是在 2022 年 12 月 21 日编译的,距离文件提交给 VirusTotal 只有六天时间。

此外,在 2023 年 4 月发现的另一个文件似乎是同一感染链的一部分,只是这次注入的目标进程是 mspaint.exe,该文件以朝鲜的核武器为主题。不幸的是,在我们进行分析时,URL 不再响应下载负载的请求。但是,这份文件很有可能也是为了传播 ROKRAT。

与 Amadey 的关联

2022 年 11 月初,一个名为 securityMail.zip 的文件被提交给了 VirusTotal。这个 ZIP 包含两个 LNK,它们的大小都不到 5MB,令人怀疑。PowerShell 命令在两个 LNK 中的实现是唯一的,并且仅与 ROKRAT 和 GOLDBACKDOOR LNK 感染重叠。然而,这个特定的感染链最终传播了 Amadey,这是一种可在网络犯罪论坛上出售的恶意软件。Amadey 过去曾被认为是 Konni 开发的,Konni 组织与 APT37 的背景类似。

" 安全邮件 " 诱饵的感染链,打开这些 LNK 中的任何一个都会产生恶意流程:

1.PowerShell 命令从 LNK 中提取一个诱饵 HTML 文件,并将其放入磁盘,其方式与 ROKRAT 感染链类似:

2. 这个 PowerShell 还从包含 DLL 的 LNK 中提取一个 ZIP 文件。然后将 DLL 作为 mfc100.dll 放入磁盘。

3.PowerShell 最终也从 LNK 中提取了一个 BAT 脚本,将其放到磁盘上并执行。

4.BAT 脚本运行带有 rundll32.exe 的 DLL 并删除自身。

对 DLL 文件的初步分析显示,它包含了商业代码保护解决方案 Themida。在分析了它执行的内存转储后,我们能够确认这实际上是 Amadey。诱饵 HTML 文件中包含一个伪造的 Kakao 银行的登录页面,Kakao 是韩国一家受欢迎的银行。对 HTML 的进一步分析表明,它不是用于密码钓鱼,而是用来隐藏攻击者的意图。

伪造 Kakao 银行登录页面

ROKRAT 技术分析

ROKRAT 只是 APT37 使用的许多自定义工具之一,但它绝对是通用且强大的。ROKRAT 主要侧重于运行额外的有效负载和大量的数据窃取。它的 C&C 功能依赖于云基础设施,包括 DropBox、pCloud、Yandex cloud 和 OneDrive。ROKRAT 还收集有关计算机的信息,以防止被其他竞争者再次感染。

虽然在过去几年中,ROKRAT 并没有发生重大变化,但其破坏力依然不容小觑,这可以归因于它巧妙地使用内存执行,将 C&C 通信伪装成潜在的合法云通信,以及额外的加密层,以阻碍网络分析和逃避网络签名。因此,最近发表的关于 ROKRAT 的文章并不多。

通用恶意软件结构

ROKRAT 的大多数样本都有一个非常简单的 WinMain 函数。到目前为止分析的所有样本都包含一个数据收集功能(CollectMachineData,如下图所示),该功能在主 RAT 线程(MainRATThread)执行之前执行。这个线程初始化 RAT 并运行一个循环,以尝试从 C&C 获取命令,然后解析并执行它们。

WinMain 函数中嵌入了两个额外的功能,我们只在样本的一个子集中观察到了这两个功能。第一个检查 RAT 是否能够写入 TEMP 目录(CheckTemp,如下图所示)。第二个创建了一个线程(KillCertainProcessesThread),用于停止与以前利用 Hancom Office 漏洞的感染载体相关的某些进程。

受害目标分析

ROKRAT在执行时调用的第一个函数旨在收集有关受感染计算机的数据。在初始攻击阶段,这可能有助于攻击者区分这是否是一个期望的目标,然后采取相应的行动。

在这个函数(以及许多其他函数)中,ROKRAT使用加密字符串来防止静态分析看不到使用的一些技术。此处收集的信息包括程序是否在WOW64上运行(表示32位应用程序在64位窗口上运行)、vmtoolsd.exe的版本(VMWare Tools Daemon,如果已安装)、注册表中的SMBIOS数据以及注册表中的系统BIOS版本。

RAT还收集用户名、计算机名和RAT正在执行的可执行文件的完整路径。后者很重要,因为感染链通常涉及将ROKRAT PE文件注入现有进程的内存。换言之,这使攻击者能够查看ROKRAT是否在预期的进程中执行,如powershell.exe或notepad.exe。最后,该函数检查可执行文件是否有权在C:Windows下创建用于写入的文件。

CollectMachineData收集有关受感染计算机的各种信息

虽然在上述函数中收集了大量目标的数据,但在ROKRAT开始接受命令之前,还有另一个数据收集函数在主RAT线程的上下文中运行。第二个函数检查调用IsDebuggerPresent API,将结果存储为字符(0或1)。此外,它还调用了一个函数来获取计算机的屏幕截图。

将执行在主线程中执行的数据收集,每次ROKRAT尝试获取命令时发送收集的数据。

在同一函数中,一些示例还检查是否有一个名为360Tray.exe的正在运行的进程,该进程是名为360 Total Security的防病毒软件的一部分。结果存储在一个全局布尔变量中,并在用于执行shellcode有效负载的单独函数中访问。有趣的是,如果找到了进程,ROKRAT会将等待shellcode完成运行的超时时间从24秒增加到48秒。如果shellcode运行超过超时时间,并且之前未检测到360Tray.exe,ROKRAT将尝试终止shellcode线程。

如前所述,一些ROKRAT示例执行一个名为KillCertainProcessesThread的线程。这个线程阻止了两个进程:gbb.exe和gswin32c.exe,它们负责解析Hancom Office中的postscript数据。过去,ROKRAT样本来自恶意的HWP文档,这些文档利用这些进程来获取代码执行。最有可能的是,这是在试图清除之前活动中的任何利用痕迹时留下的代码。

ROKRAT没有为这些进程名称使用硬编码或加密的字符串,而是包含一个简单的哈希算法,该算法基于整数值确定进程名称。它的工作方式如下:

C&C通信

在我们分析的每个ROKRAT样本中,恶意软件配置包含一个代表云基础设施的ID号,以及使用它的API令牌。ID号可以具有以下值,以对应不同的云提供商,以及允许RAT与本地计算机通信的测试模式:

1 -本地计算机(无云)

3 - Dropbox

4 - pCloud

5 - Yandex

云存储提供商的Switch case语句

进一步的分析表明,通常有两种C&C配置,一种用作主要基础设施,另一种用作备份。在我们发现的最新样本中,主要的C&C是pCloud,次要的是Yandex Cloud。

ROKRAT从初始化令牌开始,然后从C&C获取文件夹内容,以确保它具有访问权限并且令牌有效:

列出pCloud中文件夹目录的GET请求标头


ROKRAT使用的文件的名称是基于GetTickCount API和rand API的随机值生成的,并以执行时间作为依据。

ROKRAT向服务器上传一个文件,其中包含有关受害计算机的以下信息:

硬编码值0xBAADFEDE–稍后在C&C通信中使用;

IsDebuggerPresent值;

之前保存到以下路径的恶意软件的屏幕截图:%TEMP%

进程数据—每个工作进程的pid:

Tick Count;

XOR密钥–用于解密C&C中的命令和有效负载;

生成的文件名-稍后用于下载和执行某些命令中的有效负载;

IsWow64Process标识;

Windows版本;

计算机名;

用户名;

计算机类型—通过查询HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesmssmbiosData下的SMBiosData注册表值获得;

VMware工具版本数据;

系统BIOS版本;

为了进一步隐藏其踪迹,ROKRAT将收集到的有关计算机的数据标记为MP3:


将从受害计算机收集的加密数据发送到pCloud的POST请求标头

首先,使用一个随机的四字节密钥对数据进行异或运算。由于这个原因,数据以硬编码的四字节值0xBAADFEDE开始。由于攻击者知道硬编码的值,他们可以通过使用0xBAADFEDE对异或数据的前四个字节进行异或来获得异或密钥。然后用AES-CBC对异或数据进行加密。最后,使用硬编码的RSA公钥对AES密钥进行加密,以确保只能使用RSA私钥对有效负载进行解密。

尽管C&C通信已经在HTTPS流量中加密,但ROKRAT通过使用AES加密上传到C&C的数据进一步进行了加密。当恶意软件初始化时,它会生成两个随机的16字节值,作为用于加密命令和有效负载的AES密钥的基础。恶意软件还附带了一个硬编码的16字节值,然后对两个随机值进行异或。结果是两个AES密钥,一个用于加密和解密命令,另一个用于加密和解密有效负载。

ROKRAT命令

每个命令都由一个字符标识。有些命令采用参数,并且这些参数是在命令ID字符之后提供的。在识别出正确的命令后,代码会根据命令的类型解析参数。下表列出了研究人员在ROKRAT中发现的命令,以及它们预期的参数和操作:


在收到清理命令(d)后,ROKRAT运行以下命令来删除恶意软件最初未使用的持久性机制。它们可能与感染后的活动有关。

在接收到命令1-4后,ROKRAT创建一个名为out.txt的文件,其中包含有关系统的信息:

总结

我们介绍了臭名昭著的APT37的最新活动,介绍了几种不同的感染链,其中大多数导致ROKRAT有效负载。这些感染链表明,自2022年以来,该组织已经不再严重依赖恶意文件来传播恶意软件,而是开始将有效负载隐藏在超大的LNK文件中。这种方法可以通过简单的点击触发同样有效的感染链,这比n天漏洞或需要额外点击才能启动的Office宏更可靠。

虽然ROKRAT功能最近没有太大变化,但用于传播它的加载程序确实发生了变化。事实上,这是我们第一次看到ROKRAT带有LNK感染链,类似于用于传播GOLDBACKDOOR的LNK感染链。值得注意的是,这并不意味着APT37不再使用恶意文档,因为研究人员在2023年4月就发现了此类使用的证据。

我们还分析了几个新的ROKRAT样本,并介绍了它接受的命令,这有助于我们了解恶意软件的内部机制和功能。



本文作者:公众号:安全女巫

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/200175.html

Tags:
评论  (0)
快来写下你的想法吧!

公众号:安全女巫

文章数:15 积分: 0

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号