使用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

  1. 在Ghidra中新建项目并导入shellcode二进制文件
  2. 选择正确的架构参数:
    • 语言:x86
    • 变体:32-bit
    • 字节序:little-endian
    • 编译器选择不重要(非标准PE文件)

3.2 反编译shellcode

  1. 手动反汇编起始字节:
    • 在第一个字节上右键选择"Disassemble"或按"D"键
  2. 定义函数:
    • 在第一个字节上按"F"键创建函数
  3. 分析结果:
    • Ghidra会显示反汇编代码,但右侧反编译窗口可能为空(无标准函数)

3.3 定位函数调用

shellcode特点:

  • 无显式函数名
  • 使用API哈希技术调用Windows API
  • 典型调用模式:PUSH + CALL组合

示例分析:

FUN_0000008f:
    ...
    PUSH 0x726774c       ; API哈希值
    CALL EBP             ; API解析函数

4. API哈希技术详解

4.1 API哈希原理

  1. 恶意软件使用哈希值代替直接API名称
  2. 优点:
    • 规避字符串检测
    • 减小代码体积
    • 增加分析难度
  3. 常见于Cobalt Strike和Metasploit生成的shellcode

4.2 哈希识别方法

  1. 在代码中查找PUSH + CALL模式
  2. 搜索相邻的十六进制值(可能是DLL名称哈希)
  3. 使用工具验证哈希:
    • 在线搜索(如0x726774c对应kernel32.dll的LoadLibraryA)
    • CyberChef解码

4.3 常见哈希算法

  1. ROR13(右循环移位13位):
    • Cobalt Strike和Metasploit常用
    • 指令特征:ROR edi,0xd
  2. 其他变种:
    • 不同移位位数
    • 附加异或操作

5. 动态分析工具链配置

5.1 BlobRunner工具

  1. 功能:
    • 为shellcode分配内存
    • 跳转到分配的内存地址执行
  2. 使用步骤:
    blobrunner.exe shellcode.bin
    

5.2 x64dbg附加分析

  1. 附加到BlobRunner进程
  2. 设置断点:
    • 基地址断点:bp 0x00500000
    • 偏移断点:bp 0x00500000+0x86
  3. 执行流程:
    • 按任意键继续执行
    • 使用F7单步进入函数
    • 在CALL EBP处观察堆栈

6. API哈希动态解析技术

6.1 手动解析步骤

  1. 在API解析函数(CALL EBP)设断点
  2. 观察堆栈中的哈希值
  3. 执行到JMP EAX时:
    • EAX包含解析后的API地址
    • 可查看对应API名称

6.2 自动解析技术

  1. 定位关键地址:

    • API解析函数起始地址(如0x00ff0006)
    • 哈希值位置:[esp+4]
    • 解析结果位置:起始地址+0x86
  2. 设置条件断点:

    • 在解析函数开始处打印哈希值
    • 在解析函数结束后打印API名称

示例日志输出:

Hash: 0x726774c
API: LoadLibraryA

7. 高级分析技巧

7.1 参数追踪

  1. 在API调用后设断点
  2. 观察寄存器/堆栈中的参数
  3. 示例:
    • InternetConnectA参数可揭示C2地址

7.2 循环识别

  1. 在Ghidra图形视图中识别循环结构
  2. 循环特征:
    • ROR指令
    • 重复的内存访问模式

8. 技术原理深入

8.1 Windows数据结构

  1. PEB(进程环境块)结构
  2. LDR模块链表
  3. 导出表遍历算法

8.2 哈希算法实现

  1. 典型ROR13实现:
    initialize hash = 0
    for each character in string:
        hash = ROR(hash, 13)
        hash = hash + character
    
  2. 变种识别方法

9. 总结

本教程详细介绍了shellcode分析的全流程,重点在于API哈希解析技术。关键点包括:

  1. Ghidra静态分析非PE格式shellcode
  2. API哈希识别与解析技术
  3. BlobRunner与x64dbg的动态分析组合
  4. 条件断点自动化技术
  5. 深入理解哈希算法和Windows内部机制

掌握这些技术可以有效分析现代恶意软件中常见的混淆技术,特别是Cobalt Strike和Metasploit生成的shellcode。

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组合 示例分析: 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分配内存 跳转到分配的内存地址执行 使用步骤: 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名称 示例日志输出: 7. 高级分析技巧 7.1 参数追踪 在API调用后设断点 观察寄存器/堆栈中的参数 示例: InternetConnectA参数可揭示C2地址 7.2 循环识别 在Ghidra图形视图中识别循环结构 循环特征: ROR指令 重复的内存访问模式 8. 技术原理深入 8.1 Windows数据结构 PEB(进程环境块)结构 LDR模块链表 导出表遍历算法 8.2 哈希算法实现 典型ROR13实现: 变种识别方法 9. 总结 本教程详细介绍了shellcode分析的全流程,重点在于API哈希解析技术。关键点包括: Ghidra静态分析非PE格式shellcode API哈希识别与解析技术 BlobRunner与x64dbg的动态分析组合 条件断点自动化技术 深入理解哈希算法和Windows内部机制 掌握这些技术可以有效分析现代恶意软件中常见的混淆技术,特别是Cobalt Strike和Metasploit生成的shellcode。