Quasar RAT 对传统的侧加载技术进行了复杂的改造,创造了全新的双重 DLL 侧加载技术,十分巧妙地利用了两个微软的应用程序:ctfmon.exe 与 calc.exe。双重 DLL 侧加载技术不仅利用了这两个文件在 Windows 生态系统中的信任,还对威胁检测机制提出了更大的挑战。本文详细介绍了该技术的设计与执行,解释了攻击者如何利用该技术运行 Payload。
Quasar RAT 也称为 CinaRAT 或 Yggdrasil,是使用 C# 编写的轻量级远控木马。该远控木马在 GitHub 已开源,具备收集系统信息、运行程序信息、传输文件、记录按键、屏幕截图、摄像头拍照、恢复系统密码、远程桌面连接与执行远程命令等功能。
侧加载技术
侧加载被各路攻击者广泛使用,了解该技术对防御者来说至关重要。QuasarRAT 就提供了一个很好的契机,借此机会对其使用的侧加载技术进行介绍。
侧加载过程
2022 年,研究人员发现 Qbot 正在使用 calc.exe 进行 DLL 侧加载攻击,攻击者在不断调整攻击技术。到了 2023 年,攻击者使用 ctfmon.exe 与 calc.exe 进行 DLL 侧加载。QuasarRAT 使用了分两阶段的侧加载技术如下所示:
- 初步执行:初始阶段,攻击者利用 ctfmon.exe 加载恶意 DLL 文件。执行后,攻击者获取第一阶段的 Payload,攻击者将其作为后续行为的核心。
- Payload 释放:这时的 Payload 有双重作用,将合法的 calc.exe 文件与恶意 DLL 文件释放到系统中。
- 第二阶段:攻击者利用 calc.exe 加载恶意 DLL 文件,释放 QuasarRAT 到计算机内存中。
- Process Hollowing:QuasarRAT 驻留在计算机内存中,会采用被称为 Process Hollowing 的技术,将自身代码嵌入合法系统进程中,进一步提升隐蔽性。
技术分析
从最初的 ISO 文件中,可以提取三个文件:
- eBill-997358806.exe:合法 Windows 文件,实际名为 CTFMON.EXE
- Monitor.ini:合法 Windows 文件,实际名为 MsCtfMonitor.DLL
- MsCtfMonitor.dll:恶意 DLL 文件
QuasarRAT 的进程树如下所示:
进程树
文件 eBill-997358806.exe 执行时,会通过侧加载技术加载 MsCtfMonitor.dll 恶意 DLL 文件。DLL 文件中,包含加密的资源段。加密数据共 5AC00 字节,如下所示:
加密数据
恶意代码通过一系列 API 访问加密数据,如下所示:
加载资源数据
解密数据的密钥大小 F2 字节,利用 Systemfunction032 来对数据进行解密。这是一个未公开的 API,会间接调用 BCryptGeneratesymmetrykey、CryptEncrypt 和 CryptDestroyKey 来解密 RC4 加密的数据。密钥也被存储在资源段中,如下所示:
解密密钥
解密后的数据为 PE 文件,即第一阶段中的 FileDownloader.exe:
解密数据
通过以下 API 序列将该 PE 文件注入 Regasm.exe:
CreateProcess
GetThreadContext
ReadProcessMemory
VirtualAllocEx
WriteProcessMemory
GetThreadContext
SetThreadContext
ResumeThread
下图可以看出 Regasm.exe 进程内存中的 Payload:
内存中的 Payload
第一阶段:FileDownloader.exe
第一阶段的 Payload 是 64 位 MSIL 文件,其中的资源段包含以 ZIP 压缩格式存储的三个二进制文件。
第一阶段的资源段
解压后将所有文件写入 Public Pictures 文件夹中:
- Calc.exe:合法 Windows 文件
- Secure32.dll:恶意 DLL 文件
- Winsecu32.dll:合法 Windows 文件
第二阶段:Calc.exe
接下来,利用 c:\Users\Public\Pictures\Calc.exe /quit
来执行 Calc.exe。/quit
表示程序在启动时立即关闭,但会加载名为 Secure32.dll 的恶意 DLL 文件。攻击者再次利用 DLL 侧加载技术,DLL 文件中也包含一个加密的资源段。
加密数据
如前所述,通过 Systemfunction32 解密数据后,可以获得一个 PE 文件:
解密数据
该 PE 文件通过 Process Hollowing 技术注入 Regasm.exe 的内存。特别的,在调用 VirtualAllocEx 时会显式传递 regasm.exe 的默认内存地址,并将其替换为恶意 PE 文件。
调用 VirtualAllocEx
最终 Payload
通过前述操作释放的 Payload,是经过 Smart assembly 混淆的 MSIL 可执行文件。该文件的版权为 Copyright © MaxXor 2020
,可能灵感来自 Quasar RAT 的作者 MaxXor。
去混淆后,可以看到函数名中代表的功能,包括按键记录、文件传输与命令执行等:
函数与功能
恶意软件随后释放一个 .bat 脚本,在 %Temp% 目录中创建重新启动批处理文件,随后执行 chcp 65001 && ping -n 10 localhost
命令。
bat文件
远控木马创建连接到 C&C 服务器的套接字(3[.]94[.]91[.]208 >> ec2-3-94-91-208[.]compute-1[.]amazonaws.com),发送受害者的各种信息(IP 地址、国家代码等)。
收集失陷主机信息
去混淆后,可以看到与 Quasar RAT 有关的字符串,如 Quasar Server:
各种字符串
内存中也有许多 base64 编码的内容, 解码后也是一些要执行的命令:
SELECT * FROM Win32_OperatingSystem WHERE Primary='true'
SELECT * FROM Win32_BaseBoard
SELECT * FROM FirewallProduct
SELECT * FROM Win32_Processor
SELECT * FROM AntivirusProduct
远控木马查看 WMI 的 AntiVirusProduct 和 Firewall 类,获取有关 BIOS 架构、GPU 信息、主机名等信息。Quasar RAT 的反向代理功能如下所示:
反向代理
为了持久化,恶意软件还创建了一个 Windows 注册表项:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\WindowsCalculator "c:\Users\Public\Pictures\Calc.exe /quit"
IOC
e4eb623a0f675960acb002d225c6f1d6
B625C18E177D5BEB5A6F6432CCF46FB3
7074832F0EFB8A2130B1935EAE5A90D6
B0DB6ADA5B81E42AADB82032CBC5FD60
32DE5C2E0BA35CEAC3C515FA767E42BF
5da8c98136d98dfec4716edd79c7145f
d07e4afd8f26f3e2ce4560e08b7278fb
f11c63cb70a726f1f0b6accd5934e83
532AF2DB4C10352B2199724D528F535F
3[.]94[.]91[.]208
ec2-3-94-91-208[.]compute-1[.]amazonaws.com