kaandemir993/Advanced-Loader-Reverse-Engineering

GitHub: kaandemir993/Advanced-Loader-Reverse-Engineering

对一个高级多阶段 Windows 恶意加载器的深度逆向分析报告,涵盖 module stomping、CFG 绕过、COM 劫持和降级攻击等技术。

Stars: 10 | Forks: 2

# 从 Shellhost 到 3 个 DLL:分析具备 Payload 注入、CFG 绕过与降级攻击的高级加载器 ## 概述 本分析涵盖了一个复杂的多阶段加载器,其目标为 `Shellhost.exe`、`amsi.dll`、`mstscax.dll` 和 `clbcatq.dll`。该加载器使用了 module stomping、CFG 绕过、COM 劫持和降级攻击技术。 ## Shellhost – Payload 注入的主要目标 该加载器将 `Shellhost.exe` 作为 payload 注入的主要目标进程。它使用 **module stomping** 技术利用自身的恶意 payload 覆盖 Shellhost 的合法代码。 ### 关键观察 - **混淆 payload:** 注入的代码包含 ASCII 残留(`push 70207369h` = "is p")和无效指令(`jb`、`outs`、`ins`)。 - **`fothk` 段:** 一个自定义段,填充了 INT3 陷阱和单个用于跳转到 CFG 绕过例程的 `jmp`。 - **CFG 操纵:** 将执行流重定向到最终的 shellcode。 - *WinDbg 中 Shellhost.exe 混淆 payload 的视图。* ![Shellhost Payload](https://static.pigsec.cn/wp-content/uploads/repos/cas/9d/9dfb6e4493faf55eafb9f736c67edafb78bddf41ff0aba3540cd212e7cbc984a.jpg) ## amsi.dll – CFG 绕过与 INT3 陷阱 加载器向 `amsi.dll` 注入了一个自定义段,其中填充了 `INT3` (0xCC) 反汇编陷阱。单个 `jmp` 重定向到 **Control Flow Guard (CFG)** 绕过例程,该例程通过 `jmp rax` 跳转到最终的 shellcode。 ### 关键观察 - **INT3 陷阱:** 该段几乎完全由 `INT3` 指令填充。 - **单个 `jmp`:** `jmp 0x00007ffbc85060c0` 指向 CFG 绕过例程。 - **CFG 绕过:** 使用自定义 bitmask 来验证并重定向执行流。 ![AMSI CFG Bypass](https://static.pigsec.cn/wp-content/uploads/repos/cas/76/76c3d0f65691763837376bb07eeeef9d38f899e63ae1a60dcc718737e6de0379.jpg) *WinDbg 中 INT3 陷阱和单个 jmp 指令的视图。* ## mstscax.dll – Module Stomping 与 LocalAlloc 加载器使用 `LocalAlloc` 手动为 payload 分配内存。一个自定义结构体中填充了文件句柄和用于 COM 劫持的 vtable 赋值。 ### 关键观察 - **`LocalAlloc(0x40, 0x68)`:** 分配 104 字节的内存。 - **Vtable 赋值:** `*puVar12 = &PTR_FUN_180699290` 用于 COM 劫持。 - **文件句柄使用:** `puVar12[4] = hFile` 表明加载器会从文件中读取数据。 ![Mstscax LocalAlloc](https://static.pigsec.cn/wp-content/uploads/repos/cas/d7/d76fd010b9f304b405e2c4d2c553e4ca2561b33f1036a52106404baca3574786.jpg) *Ghidra 中 LocalAlloc 使用情况和手动结构体分配的视图。* # clbcatq.dll – 内核感知操纵与降级攻击 加载器使用固定内存地址(`lRam0000000000000000`)和 vtable 调用来操纵内核对象。此技术用于权限提升。 ### 关键观察 - **固定内存地址:** `lRam0000000000000000` 用于内核对象操纵。 - **Vtable 调用:** `+0x18`、`+0x40`、`+0x60` 表示内核级别的操作。 - **权限提升:** 用于获取 SYSTEM 级别的权限。 - **COM 劫持:** 使用 `FUN_180031f18` 和 `FUN_1800330c8`。 Clbcatq Kernel *Ghidra 中固定内存地址和 vtable 调用的视图。* ## 攻陷指标 (IOCs) - **注册表项:** `HKLM\Software\Microsoft\COM3\RemoteAccessEnabled` - **目标 DLL:** `amsi.dll`、`mstscax.dll`、`clbcatq.dll` - **目标进程:** `Shellhost.exe` - **自定义段:** `fothk` - **反汇编:** INT3 陷阱 (0xCC) ## 结论 该加载器展示了高级规避技术,包括 module stomping、CFG 绕过、COM 劫持和降级攻击。它以多个系统组件为目标,以确保自身的隐蔽性和持久性。 ## 作者 **StructBreaker** – 恶意软件分析师与逆向工程师
标签:API接口, DAST, DNS 反向解析, 云资产清单, 免杀技术, 威胁情报, 开发者工具, 恶意软件分析, 暴力破解检测, 逆向工程