使用xdbg附加blobrunner进程分析shellcode-自动解密API哈希
字数 1749 2025-08-20 18:18:24
Shellcode分析与API哈希解析技术详解
1. 前言
在恶意软件分析过程中,shellcode分析是一项关键技能。恶意软件经常在内存中注入非PE格式的shellcode,传统的静态分析工具难以直接处理。本文将详细介绍如何结合Ghidra和x64dbg手动分析shellcode,特别是API哈希解析技术。
2. 样本准备
样本来源:Malware Bazaar
SHA256: 26f9955137d96222533b01d3985c0b1943a7586c167eceeaa4be808373f7dd30
3. 使用Ghidra分析shellcode
3.1 载入shellcode
- 在Ghidra中新建项目并导入shellcode二进制文件
- 选择正确的架构参数:
- 语言:x86
- 变体:32-bit
- 字节序:little-endian
- 编译器选择不重要(非标准PE文件)
3.2 反编译shellcode
- 手动反汇编起始字节:
- 在第一个字节上右键选择"Disassemble"或按"D"键
- 定义函数:
- 在第一个字节上按"F"键创建函数
- 分析结果:
- Ghidra会显示反汇编代码,但右侧反编译窗口可能为空(无标准函数)
3.3 定位函数调用
shellcode特点:
- 无显式函数名
- 使用API哈希技术调用Windows API
- 典型调用模式:PUSH + CALL组合
示例分析:
FUN_0000008f:
...
PUSH 0x726774c ; API哈希值
CALL EBP ; API解析函数
4. API哈希技术详解
4.1 API哈希原理
- 恶意软件使用哈希值代替直接API名称
- 优点:
- 规避字符串检测
- 减小代码体积
- 增加分析难度
- 常见于Cobalt Strike和Metasploit生成的shellcode
4.2 哈希识别方法
- 在代码中查找PUSH + CALL模式
- 搜索相邻的十六进制值(可能是DLL名称哈希)
- 使用工具验证哈希:
- 在线搜索(如0x726774c对应kernel32.dll的LoadLibraryA)
- CyberChef解码
4.3 常见哈希算法
- ROR13(右循环移位13位):
- Cobalt Strike和Metasploit常用
- 指令特征:
ROR edi,0xd
- 其他变种:
- 不同移位位数
- 附加异或操作
5. 动态分析工具链配置
5.1 BlobRunner工具
- 功能:
- 为shellcode分配内存
- 跳转到分配的内存地址执行
- 使用步骤:
blobrunner.exe shellcode.bin
5.2 x64dbg附加分析
- 附加到BlobRunner进程
- 设置断点:
- 基地址断点:
bp 0x00500000 - 偏移断点:
bp 0x00500000+0x86
- 基地址断点:
- 执行流程:
- 按任意键继续执行
- 使用F7单步进入函数
- 在CALL EBP处观察堆栈
6. API哈希动态解析技术
6.1 手动解析步骤
- 在API解析函数(CALL EBP)设断点
- 观察堆栈中的哈希值
- 执行到JMP EAX时:
- EAX包含解析后的API地址
- 可查看对应API名称
6.2 自动解析技术
-
定位关键地址:
- API解析函数起始地址(如0x00ff0006)
- 哈希值位置:[esp+4]
- 解析结果位置:起始地址+0x86
-
设置条件断点:
- 在解析函数开始处打印哈希值
- 在解析函数结束后打印API名称
示例日志输出:
Hash: 0x726774c
API: LoadLibraryA
7. 高级分析技巧
7.1 参数追踪
- 在API调用后设断点
- 观察寄存器/堆栈中的参数
- 示例:
- InternetConnectA参数可揭示C2地址
7.2 循环识别
- 在Ghidra图形视图中识别循环结构
- 循环特征:
- ROR指令
- 重复的内存访问模式
8. 技术原理深入
8.1 Windows数据结构
- PEB(进程环境块)结构
- LDR模块链表
- 导出表遍历算法
8.2 哈希算法实现
- 典型ROR13实现:
initialize hash = 0 for each character in string: hash = ROR(hash, 13) hash = hash + character - 变种识别方法
9. 总结
本教程详细介绍了shellcode分析的全流程,重点在于API哈希解析技术。关键点包括:
- Ghidra静态分析非PE格式shellcode
- API哈希识别与解析技术
- BlobRunner与x64dbg的动态分析组合
- 条件断点自动化技术
- 深入理解哈希算法和Windows内部机制
掌握这些技术可以有效分析现代恶意软件中常见的混淆技术,特别是Cobalt Strike和Metasploit生成的shellcode。