kaandemir993/-Remcos-RAT-Fileless-svchost-Injection-Obfuscated-Payload-Analysis-
GitHub: kaandemir993/-Remcos-RAT-Fileless-svchost-Injection-Obfuscated-Payload-Analysis-
针对无文件 Remcos RAT 变种的逆向分析报告,详细拆解其进程注入、持久化机制与混淆 payload 的执行链路。
Stars: 2 | Forks: 0
## 1. Remcos – 通过 Native API 调用进行 svchost 注入
以下 Binary Ninja 代码片段揭示了 Remcos 用于将其 payload 注入 `svchost.exe` 的核心注入机制。
### 此代码的功能:
- 带有 `CREATE_SUSPENDED` 标志的 **`CreateProcessW`** 会启动一个处于挂起状态的新 svchost 进程。
- **`VirtualAlloc`** 使用 `MEM_COMMIT` 和 `PAGE_READWRITE` 标志在目标进程内分配内存,允许将 payload 直接写入进程内存。
- **`WriteProcessMemory`** 将 payload 写入挂起的 svchost 进程分配的内存区域中。
- **`ReadProcessMemory`** 读取目标进程的内存,可能是为了获取原始入口点或验证注入。
- 如果注入失败,则使用 **`TerminateProcess`** 终止挂起的 svchost 进程,防止其处于不稳定状态。
### 为什么这很重要:
| API | 在 Remcos 中的用途 |
|-----|-------------------|
| **CreateProcessW** | 以挂起状态启动 svchost 以进行注入。 |
| **VirtualAlloc** | 为 payload 分配具有 `MEM_COMMIT` 和 `PAGE_READWRITE` 属性的内存。 |
| **WriteProcessMemory** | 将 payload 写入分配的内存中。 |
| **ReadProcessMemory** | 读取目标进程内存(用于验证或入口点获取)。 |
| **TerminateProcess** | 如果注入失败则终止挂起的进程。 |
### 视觉参考:

*使用 Native API 的 Remcos 注入例程的 Binary Ninja 视图,显示了 `MEM_COMMIT`、`PAGE_READWRITE`、`ReadProcessMemory` 和 `TerminateProcess`。*
## 2. 注册表持久化 – Remcos 持久化机制
Remcos 在 Windows 注册表中添加一个键,以在系统上建立永久驻留。此键确保恶意软件在每次系统启动时重新执行。
### 检测到的注册表键:
`HKEY_USERS\S-1-5-21-3807688912-2840792520-522192237-1001\Software\kamolprf-CFKPWC`
### 键内的值:
| 值名称 | 类型 | 值 | 描述 |
|-----------|-----|-------|----------|
| **exepath** | `REG_BINARY` | 加密的二进制数据 | Remcos 或其注入的 payload 的加密文件路径。可能通过 XOR 或 AES 进行保护。 |
| **licence** | `REG_SZ` | `DA8E22D4CD8D349953DF1FAD364CAB05` | Remcos 许可证密钥。在盗版或演示版本中可能是固定值。 |
| **time** | `REG_DWORD` | `0x6a53ac27` (1783868455) | 采用 Unix 时间戳格式的安装或最后执行时间。 |
| **UID** | `REG_DWORD` | `0xfeb60bd4` (4273343444) | 唯一用户 ID。用于识别受害者。 |
### 为什么这很重要?
- **持久化:** 得益于此键,Remcos 会在每次系统启动时自动运行。
- **隐蔽性:** 由于 `exepath` 值存储为 `REG_BINARY`,因此无法直接读取。这增加了检测的难度。 - **身份识别:** `UID` 和 `licence` 值允许攻击者识别受害者并执行许可证检查。
- **时间戳:** `time` 值提供了有关恶意软件何时安装或最后执行的信息。
### 视觉参考:

*注册表键以及其中的 `exepath`、`licence`、`time` 和 `UID` 值。*
## 3. Svchost – Trampoline 与 API Hook 检测 (WinDbg)
以下 WinDbg 片段显示了在注入的 `svchost.exe` 进程内发现的 trampoline 函数。此代码似乎是 Remcos 的 API hooking 或 payload 执行机制的一部分。
### 此代码的功能:
- **`jmp qword ptr [svchost+0x9758]`** – 可能是一个 hook 或 trampoline,跳转到某个 API 或函数。
- **`mov` / `movdqa` 指令** – 保存和恢复寄存器(`xmm0-xmm3`、`rcx`、`rdx`、`r8`、`r9`)以保留调用上下文。
- **`call svchost+0x3e50`** – 调用一个核心函数,可能是 payload 或 hook 处理程序的一部分。
- **`jmp rax`** – 最终跳转到原始函数或下一阶段。
- **`INT3` 陷阱** – 反调试指令,如果附加了调试器则中断执行。
### 为什么这很重要:
这种结构是 **API hooking** 或 **detour 函数**的典型特征,Remcos 通过它拦截对关键 Windows API 的调用。使用 `xmm` 寄存器(用于浮点或 SIMD 操作)表明此 hook 可能被放置在使用 SSE 指令的函数上。
### 视觉参考:

*svchost.exe 内部 trampoline 函数的 WinDbg 视图,显示了带有 `INT3` 陷阱的 `jmp` 和 `call` 指令。*
## 4. Svchost – 混淆的 Hex Payload (Binary Ninja)
以下十六进制转储是从注入的 `svchost.exe` 进程内的 `PAGE_READWRITE` 内存区域中提取的。此区域不包含任何直接的 `call` 或 `jmp` 指令,确认该数据不是可执行代码,而是混淆或加密的 payload。
### 关键观察:
- 该 hex 数据块由看似随机的字节组成,没有清晰的反汇编结构。
- 尽管进行了混淆,但数据中仍嵌入了可识别的字符串,例如 **`RPC Control`** 和 **`PC-`**。
- 其他片段(如 **`ctk`**、**`m`** 和 **`mafasakaaam`**)似乎是结构化配置的一部分,可能包含加密密钥、API 名称或注册表路径。
- 这些字符串的存在与已知的 Remcos 混淆模式相符,其中配置数据经过 XOR 加密并嵌入在内存中。
### 视觉参考:

*svchost.exe 的 `PAGE_READWRITE` 区域中混淆的 hex 转储的 Binary Ninja 视图,显示了嵌入的字符串,如 `RPC Control` 和 `PC-`。*
## 5. Svchost – 混淆的 Hex Payload (Binary Ninja 字符串视图)
使用 Binary Ninja 的字符串视图,对从 `PAGE_READWRITE` 区域提取的混淆 hex payload 进行了进一步分析。尽管进行了高度混淆,但仍出现了几个可读的字符串和模式。
### 关键观察:
- 带有 **`PC-`** 前缀的字符串(例如,`PC-475ce3d749612b`、`PC-4a757962f31b84`) – 可能是用于受害者跟踪的 **MachineGuid** 或唯一系统标识符。
- **`svchost.exe`** – 目标进程名称,确认了注入途径。
- **`.dll`** 扩展名 – 表明 Remcos 要么加载要么搜索特定的 DLL,可能是为了 API hooking 或持久化。
- **`ontroll\`** – 可能是注册表路径(`Control\`)的片段,指示持久化或配置存储。
- **`EEF931`** 和 **`1AA81C6FD0CF04A816B`** – 这些似乎是 **GUID 或加密密钥**,可能用于 payload 的 XOR/AES 解密。
- **`TEMP`** – 暗示从临时目录创建或执行临时文件。
### 视觉参考:

*混淆的 hex payload 的 Binary Ninja 字符串视图,显示了可读片段,如 `PC-`、`svchost.exe`、`.dll` 和 `EEF931`。*
## 结论
此分析揭示了一个高度复杂的、无文件的 **Remcos RAT** 变种,它以最少的磁盘占用和高级逃避技术运行。该恶意软件使用诸如 `ZwCreateSection` 和 `ZwMapViewOfSection` 之类的 Native API 调用,将其核心 payload 注入 `svchost.exe` 中,从而确保持久性和隐蔽性。
### 关键要点:
- **无文件执行:** Remcos 完全在内存中运行,不会在磁盘上留下任何可执行文件。
- **Svchost 注入:** payload 被注入到受信任的 Windows 进程中,使得检测变得困难。
- **混淆的 Payload:** 注入的代码经过了高度混淆,阻止了静态分析,并且仅显示碎片化的字符串,如 `PC-`、`svchost.exe`、`.dll` 和 `EEF931`。
- **注册表持久化:** Remcos 通过 `HKEY_USERS\...\Software\kamolprf-CFKPWC` 下的注册表键保持持久化,存储加密的 `exepath`、`licence`、`time` 和 `UID` 值。
- **API Hooking 与 Trampoline:** 恶意软件挂钩关键的 Windows API,拦截函数调用以重定向执行流。
- **额外功能:** 还观察到了剪贴板监控、绕过 UAC 以及潜在的凭据收集功能。
### 检测建议:
- 监控 `svchost.exe` 是否存在异常内存区域(`PAGE_READWRITE`)。
- 跟踪 `Software\kamolprf-CFKPWC` 下的注册表键。
- 查找源自非系统进程的 `ZwCreateSection` 和 `ZwMapViewOfSection` 调用。
- 分析进程内存以查找混淆字符串,如 `PC-` 和 `EEF931`。
### 最终想法
这种 Remcos 变种展现了极高的专业水平,显然是为了逃避传统的安全解决方案而设计的。它将无文件执行、进程注入和基于注册表的持久化结合在一起,使其成为一个需要高级检测策略的重大威胁。
**使用的工具:** Ghidra, Binary Ninja, WinDbg, Process Hacker
## 样本信息
## 样本下载
对于希望自行进行分析的人员,所分析的 Remcos RAT 样本可在 MalwareBazaar 上获取:
🔗 **[MalwareBazaar 上的 Remcos RAT 样本](https://bazaar.abuse.ch/sample/c0762bd8b3b098c6d5300256f9e8bc67d45709dc244db37cc55c5e2b0312e907)**
标签:Aarch64, CSV导出, DAST, SSH蜜罐, Windows API, 云资产清单, 威胁情报, 开发者工具, 恶意软件分析, 进程注入, 逆向工程