某免杀工具后门分析
字数 2298 2025-08-06 18:07:51

某免杀工具后门分析技术文档

1. 样本概述

分析对象:LoaderMaker.exe(免杀EXE生成工具)中的后门功能

样本特征:

  • MD5: a737860a66bcd9228cc18de7a51cc736e1a834a13e26cd6f19e2d162fdfef9bd
  • 包含文件:
    • LoaderMaker.exe(主程序,含后门)
    • ShellcodeLoader.exe(模板文件)

2. 初步分析

2.1 导出函数检查

发现可疑导出函数:

  • 进程枚举相关函数(一个免杀工具正常情况下不应需要枚举进程)

2.2 主函数结构

主函数位于 sub_004019A0,包含以下关键子函数:

  1. sub_4011E0 - 疑似反沙箱检测
  2. sub_401620 - 提权功能
  3. 混淆Shellcode的相关函数

3. 反沙箱机制分析

3.1 PfxInitialize检测

sub_4011E0 函数行为:

  • 从ntdll中动态获取PfxInitialize函数
  • 检查返回值是否为0x200
  • 该值与CPU架构相关,可能用于检测沙箱环境

技术细节:

  • 实际是硬编码检测,非动态确定
  • ReactOS源码显示PfxInitialize是未实现的函数
  • 返回值在编译ntdll时确定

4. 提权功能分析

sub_401620 函数行为:

  • 尝试开启DEBUG特权
  • 可疑点:免杀工具为何需要DEBUG特权?

5. 后门功能深入分析

5.1 进程枚举

关键函数 sub_401560

  • 使用CreateToolhelp32Snapshot枚举进程
  • 通过进程名查找特定PID

5.2 目标进程识别

sub_401710 函数:

  • 从数据段byte_41ADC4提取字符串"shellcodeLoader.exe"
  • 实际目标是资源管理器(explorer.exe)
  • 通过硬编码的进程名识别目标

5.3 注入准备

sub_401290 函数:

  1. 获取Kernel32.dll句柄(从byte_41AE20提取字符串)
  2. 使用OpenProcess获取目标进程句柄
  3. 获取关键函数地址:
    • VirtualAllocEx
    • WriteProcessMemory

5.4 Shellcode注入流程

  1. 检查系统是否为64位
  2. 解密Shellcode(存储在数据段sub_41A8B0)
  3. 在explorer.exe中分配内存
  4. 写入解密的Shellcode
  5. 执行注入的Shellcode

5.5 天堂之门技术(Wow64)

关键技术点:

  • 32位进程执行64位代码
  • 通过修改CS段寄存器切换执行模式(0x23=32位,0x33=64位)
  • 使用64位ntdll.dll创建执行环境

实现细节:

  1. push 0x33指令触发模式切换
  2. 查找64位ntdll中的ZwCreateThreadEx
  3. 使用该函数执行注入的Shellcode

6. 后门触发机制

调用链:
sub_401950sub_401930 → ... → sub_401800

关键条件:

  • 全局计数器dword_41B870
  • 当计数器=6时触发后门
  • 正常使用会打印5次信息,第6次触发

实际触发场景:

  • 只有在生成免杀文件时才会触发后门
  • 单纯运行工具不会触发

7. Shellcode分析

提取的Shellcode特征:

  • Cobalt Strike beacon
  • 连接信息:
    • 端口:0x827 (2087)
    • 可见域名(原文未明确列出)

调试发现:

  • 实际样本中的Shellcode可能无法正常连接
  • InternetOpenA参数被清零
  • 可能是未完成的后门或测试代码

8. 技术总结

8.1 后门工作流程

  1. 检查环境(反沙箱)
  2. 提权(获取DEBUG权限)
  3. 枚举进程查找explorer.exe
  4. 解密并注入x64 Shellcode
  5. 使用天堂之门技术执行64位代码
  6. 通过ZwCreateThreadEx运行Shellcode

8.2 关键技术

  1. 进程注入技术
  2. Shellcode混淆与解密
  3. 32位与64位混合执行(天堂之门)
  4. 反逆向技巧(函数调用链混淆)

9. 检测与防护建议

9.1 检测指标

  1. 行为检测:

    • 免杀工具尝试枚举进程
    • 对explorer.exe的内存操作
    • 非常规的提权行为
  2. 特征检测:

    • PfxInitialize返回值检查
    • 特定的字符串解密模式
    • 天堂之门技术特征码

9.2 防护措施

  1. 沙箱检测:

    • 监控PfxInitialize等不常见API调用
    • 检查硬编码的架构检测
  2. 内存保护:

    • 监控对explorer.exe的代码注入
    • 检测跨架构执行尝试
  3. 网络防护:

    • 拦截对非常规端口(如2087)的连接
    • 监控可疑的DNS查询

附录:关键函数对照表

函数地址 功能描述
sub_4011E0 反沙箱检测
sub_401560 进程枚举
sub_401620 提权功能
sub_401710 目标进程识别
sub_401290 注入准备(获取API等)
sub_401230 Shellcode执行环境设置
sub_41A933 天堂之门技术实现(模式切换)
某免杀工具后门分析技术文档 1. 样本概述 分析对象:LoaderMaker.exe(免杀EXE生成工具)中的后门功能 样本特征: MD5: a737860a66bcd9228cc18de7a51cc736e1a834a13e26cd6f19e2d162fdfef9bd 包含文件: LoaderMaker.exe(主程序,含后门) ShellcodeLoader.exe(模板文件) 2. 初步分析 2.1 导出函数检查 发现可疑导出函数: 进程枚举相关函数(一个免杀工具正常情况下不应需要枚举进程) 2.2 主函数结构 主函数位于 sub_004019A0 ,包含以下关键子函数: sub_4011E0 - 疑似反沙箱检测 sub_401620 - 提权功能 混淆Shellcode的相关函数 3. 反沙箱机制分析 3.1 PfxInitialize检测 sub_4011E0 函数行为: 从ntdll中动态获取PfxInitialize函数 检查返回值是否为0x200 该值与CPU架构相关,可能用于检测沙箱环境 技术细节: 实际是硬编码检测,非动态确定 ReactOS源码显示PfxInitialize是未实现的函数 返回值在编译ntdll时确定 4. 提权功能分析 sub_401620 函数行为: 尝试开启DEBUG特权 可疑点:免杀工具为何需要DEBUG特权? 5. 后门功能深入分析 5.1 进程枚举 关键函数 sub_401560 : 使用CreateToolhelp32Snapshot枚举进程 通过进程名查找特定PID 5.2 目标进程识别 sub_401710 函数: 从数据段byte_ 41ADC4提取字符串"shellcodeLoader.exe" 实际目标是资源管理器(explorer.exe) 通过硬编码的进程名识别目标 5.3 注入准备 sub_401290 函数: 获取Kernel32.dll句柄(从byte_ 41AE20提取字符串) 使用OpenProcess获取目标进程句柄 获取关键函数地址: VirtualAllocEx WriteProcessMemory 5.4 Shellcode注入流程 检查系统是否为64位 解密Shellcode(存储在数据段sub_ 41A8B0) 在explorer.exe中分配内存 写入解密的Shellcode 执行注入的Shellcode 5.5 天堂之门技术(Wow64) 关键技术点: 32位进程执行64位代码 通过修改CS段寄存器切换执行模式(0x23=32位,0x33=64位) 使用64位ntdll.dll创建执行环境 实现细节: push 0x33指令触发模式切换 查找64位ntdll中的ZwCreateThreadEx 使用该函数执行注入的Shellcode 6. 后门触发机制 调用链: sub_401950 → sub_401930 → ... → sub_401800 关键条件: 全局计数器dword_ 41B870 当计数器=6时触发后门 正常使用会打印5次信息,第6次触发 实际触发场景: 只有在生成免杀文件时才会触发后门 单纯运行工具不会触发 7. Shellcode分析 提取的Shellcode特征: Cobalt Strike beacon 连接信息: 端口:0x827 (2087) 可见域名(原文未明确列出) 调试发现: 实际样本中的Shellcode可能无法正常连接 InternetOpenA参数被清零 可能是未完成的后门或测试代码 8. 技术总结 8.1 后门工作流程 检查环境(反沙箱) 提权(获取DEBUG权限) 枚举进程查找explorer.exe 解密并注入x64 Shellcode 使用天堂之门技术执行64位代码 通过ZwCreateThreadEx运行Shellcode 8.2 关键技术 进程注入技术 Shellcode混淆与解密 32位与64位混合执行(天堂之门) 反逆向技巧(函数调用链混淆) 9. 检测与防护建议 9.1 检测指标 行为检测: 免杀工具尝试枚举进程 对explorer.exe的内存操作 非常规的提权行为 特征检测: PfxInitialize返回值检查 特定的字符串解密模式 天堂之门技术特征码 9.2 防护措施 沙箱检测: 监控PfxInitialize等不常见API调用 检查硬编码的架构检测 内存保护: 监控对explorer.exe的代码注入 检测跨架构执行尝试 网络防护: 拦截对非常规端口(如2087)的连接 监控可疑的DNS查询 附录:关键函数对照表 | 函数地址 | 功能描述 | |------------|------------------------------| | sub_ 4011E0 | 反沙箱检测 | | sub_ 401560 | 进程枚举 | | sub_ 401620 | 提权功能 | | sub_ 401710 | 目标进程识别 | | sub_ 401290 | 注入准备(获取API等) | | sub_ 401230 | Shellcode执行环境设置 | | sub_ 41A933 | 天堂之门技术实现(模式切换) |