针对Shellhost.exe、amsi.dll、mstscax.dll和clbcatq.dll的高级多阶段加载程序的深入逆向工程分析,使用了模块踩踏、CFG绕过、COM劫持和降级攻击。
本分析涵盖了一个复杂的多阶段加载器,其目标为 Shellhost.exe、amsi.dll、mstscax.dll 和 clbcatq.dll。该加载器使用了模块践踏、CFG绕过、COM劫持和降级攻击。
该加载器将 Shellhost.exe 作为载荷注入的主要进程。它通过模块践踏覆盖 Shellhost 的合法代码,植入自身恶意载荷。
push 70207369h = "is p")和无效指令(jb、outs、ins)。fothk 节区: 一个自定义节区,充满 INT3 陷阱和一条跳转到 CFG 绕过例程的 jmp 指令。WinDbg 中 Shellhost.exe 内混淆载荷的视图。

该加载器向 amsi.dll 中注入一个自定义节区,充满 INT3(0xCC)反反汇编陷阱。一条单独的 jmp 指令跳转到**控制流防护(CFG)**绕过例程,该例程通过 jmp rax 跳转到最终的 shellcode。
INT3 指令填充。jmp: jmp 0x00007ffbc85060c0 指向 CFG 绕过例程。
WinDbg 中 INT3 陷阱和单条 jmp 指令的视图。
该加载器使用 LocalAlloc 手动为载荷分配内存。一个自定义结构体被填入文件句柄和用于 COM 劫持的 vtable 赋值。
LocalAlloc(0x40, 0x68): 分配 104 字节内存。*puVar12 = &PTR_FUN_180699290 用于 COM 劫持。puVar12[4] = hFile 表明加载器从文件中读取数据。
Ghidra 中 LocalAlloc 使用和手动结构体分配的视图。
该加载器使用固定内存地址(lRam0000000000000000)和 vtable 调用来操纵内核对象。此技术用于权限提升。
lRam0000000000000000 用于内核对象操纵。+0x18、+0x40、+0x60 表明内核级操作。FUN_180031f18 和 FUN_1800330c8。
Ghidra 中固定内存地址和 vtable 调用的视图。
HKLM\Software\Microsoft\COM3\RemoteAccessEnabledamsi.dll、mstscax.dll、clbcatq.dllShellhost.exefothk该加载器展示了高级规避技术,包括模块践踏、CFG 绕过、COM 劫持和降级攻击。它针对多个系统组件以确保隐蔽性和持久性。
StructBreaker – 恶意软件分析师与逆向工程师