今天小编分享的互联网经验:朝韩网络攻击一角:APT37改用LNK檔案大肆传播RokRAT,欢迎阅读。
本文是 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 中 WinMain 函数的示例
受害目标分析
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 样本,并介绍了它接受的命令,这有助于我们了解恶意軟體的内部机制和功能。