kaandemir993/Remus-Stealer-Fileless-Payload-Extraction-C2-Exfiltration-Analysis

GitHub: kaandemir993/Remus-Stealer-Fileless-Payload-Extraction-C2-Exfiltration-Analysis

Remus Stealer 信息窃取程序的逆向工程分析报告,涵盖无文件执行机制、内存 payload 提取、动态 API 解析及 C2 基础设施暴露等核心技术细节。

Stars: 0 | Forks: 0

## 1. 无文件 Payload —— 短暂存在的 .bin 文件 Remus Stealer 尝试通过直接从内存中执行 payload 来实现完全的无文件运行。然而,在其初始执行期间,它会短暂地在磁盘上写入一个 `.bin` 文件,随后将其删除。分析过程捕捉到了这个短暂的时间窗口。 ### 发生了什么: - 恶意软件在 `%AppData%\Local\RmsRuntime\` 目录下创建了一个 `.bin` 文件。 - 该文件是一个有效的 PE (Portable Executable),包含主要的 payload。 - 几秒钟内,该文件被删除,在磁盘上不留痕迹。 - payload 继续完全在内存中运行。 ### 为什么这很重要: - **时间漏洞:** 这个短暂的时间窗口使得 payload 得以被捕获。 - **无文件规避:** 一旦被删除,恶意软件就会变得更加难以检测。 ### 视觉参考: Remus Stealer .bin File *The `.bin` file briefly created by Remus Stealer before deletion.* ## 2. 1024 KB RW 内存块 —— 关键数据提取 最大的 `PAGE_READWRITE` 内存块(1024 KB)包含了最重要的取证信息,包括系统信息、C2 地址以及完整的 PE payload。 ### 发现了什么: - **Info.yml:** 详细的系统信息(操作系统、硬件、用户名、计算机名、防病毒状态)。 - **C2 地址:** `fimora.surf:6504`(用于数据外泄)。 - **PE Header:** `MZ` 和 `PE` 签名证实了这是一个 Windows 可执行文件。 - **文件路径:** `C:\Users\dkaan\AppData\Local\RmsRuntime\runtime_181168109.bin` ### 为什么这很重要: - **完整 Payload:** PE header 证实该内存块包含主可执行文件。 - **C2 通信:** 该地址用于发送窃取的数据。 - **系统画像:** `Info.yml` 展示了恶意软件收集了哪些数据。 ### 视觉参考: Remus Stealer 1024 KB RW Block *Process Hacker view of the 1024 KB `PAGE_READWRITE` memory block.* ### 3. API 解析与 DLL 加载痕迹(内存分析) 对 1024 KB PAGE_READWRITE 内存块的检查揭示了动态执行期间使用的活动函数调用痕迹和库加载引用。 发现了什么: 网络库:明确引用了 winhttp.dll (Windows HTTP Services API)。 底层加载器函数:引用了 LdrLoadDll 和 LdrpLoadDllInternal 执行帧的字符串。 为什么这很重要: 网络子系统初始化:内存中存在 winhttp.dll 证实 Remus Stealer 初始化了原生的 Windows HTTP 组件,以处理用于 C2 通信的出站网络连接。 动态 API 解析与隐蔽性:引用内部 NTDLL 函数 (LdrLoadDll) 表明,恶意软件在运行时动态解析 API 并加载 DLL,以帮助规避静态分析。 Remus Stealer Memory Dump - API Resolving ### 4. Payload 解包与 C2 提取(内存分析) 最大的 PAGE_READWRITE 内存块(1024 KB)包含了提取出的 C2 服务器地址和核心 payload 痕迹。 发现了什么: C2 域名:fimmora.surf 和 zelpx.garden(在内存中以 UTF-16LE 宽字符串形式存储)。 Payload 执行:解密/解包后的核心可执行 payload 直接加载到分配的 RW 缓冲区中。 为什么这很重要: C2 通信与数据外泄:这些域名作为 Remus Stealer 使用的主动命令与控制基础设施,用于发送窃取的数据和接收命令。 内存解包:在 1024 KB RW 内存块中找到这些地址,证实了该二进制文件在运行时会将其运行中的 C2 配置直接解密到内存中。 Remus Stealer Memory Dump - C2 Extraction ### 5. 系统画像与侦察痕迹 在同一个 1024 KB PAGE_READWRITE 内存块中,发现了一个名为 `Info.yml` 的动态构建的配置文件。该痕迹包含了 Remus Stealer 在数据外泄之前收集的完整主机侦察数据。 发现了什么: 系统元数据:操作系统版本 (Windows 11 Pro x64)、系统语言 (tr-TR)、本地日期/时间和安装时间戳。 身份与网络标识符:计算机名、用户名、Hostname、NetBIOS 名称和执行路径 (`AppData\Local\RmsRuntime\`)。 安全与权限状态:执行权限级别 (`elevated: false`) 和活动安全产品状态 (`Windows Defender - Active`)。 硬件规格:对主板 (ASUS)、CPU (Intel Core i5-13400F)、总内存 (16 GB)、GPU (NVIDIA GeForce RTX 4060) 和显示分辨率的详细画像。 为什么这很重要: 系统侦察:格式化的 `Info.yml` 结构证实,Remus Stealer 执行了彻底的环境指纹识别,以识别目标主机并评估安全控制措施(例如活动的防病毒解决方案)。 外泄前暂存:将这种结构化数据保存在同一个 RW 内存缓冲区内,表明恶意软件在打包并将其传输到 C2 服务器之前,会将主机遥测数据暂存在内存中。 Remus Stealer Memory Dump - System Profiling ## 结论与技术总结 这项针对 **Remus Stealer** 的动态和基于内存的分析,突显了现代内存驻留型信息窃取程序的核心机制: 1. **通过内存执行实现规避:** 尽管恶意软件最初会将一个临时的 `.bin` 文件释放到磁盘上,但其主要操作依赖于在分配的 **1024 KB PAGE_READWRITE** 内存块内进行无文件执行,以最大程度地减少基于磁盘的防病毒签名。 2. **动态 API 与基础设施初始化:** `winhttp.dll` 和底层 NTDLL 加载器函数 (`LdrLoadDll`) 的存在证实了 Remus Stealer 会动态解析依赖项,以建立隐蔽的出站网络通信。 3. **自动化侦察与暂存:** 通过像 `Info.yml` 这样的结构化痕迹,窃取程序会对受感染的主机进行系统性的画像(识别操作系统、硬件、活动的安全解决方案和用户权限),并在数据外泄之前直接将这些遥测数据暂存于 RAM 中。 4. **命令与控制基础设施:** 内存检查成功揭示了活跃的数据外泄端点(`fimmora.surf` 和 `zelpx.garden`),为网络检测和威胁狩猎提供了可操作的失陷标示 (IOC)。 ### 关键失陷标示 (IOC) * **提取的 C2 域名:** * `fimmora.surf` * `zelpx.garden` * **执行路径痕迹:** `%AppData%\Local\RmsRuntime\runtime_*.bin` * **内存区域痕迹:** 包含 `Info.yml` 配置和 `MZ/PE` header 的 `1024 KB RW` 缓冲区。 **使用的工具:** Ghidra, Binary Ninja, Process Hacker, WinDbg **[MalwareBazaar 上的 Remus Stealer 样本](https://bazaar.abuse.ch/sample/b81291cafc4bbc09626e88f7b813cb2387a420493277fd9ab2ea129c31a7bebf)**
标签:DNS 反向解析, pdftotext, SecList, 信息窃取器分析, 内存取证, 威胁情报, 开发者工具, 恶意软件研究, 无线安全, 逆向分析