mcpField
R
Reverse Engineering & Binary Analysis

Reverse Engineering & Binary Analysis

github.com/masriyan安全530162 次安装1 周前更新
代码仓库

关于 Reverse Engineering & Binary Analysis

面向分析人员的 Claude 技能,用于检查二进制文件、固件、汇编和网络协议。它借助 Ghidra、IDA Pro 等工具的输出,指导初步分析、代码解读、漏洞审查与逆向流程。

主要功能

  1. 01二进制格式与架构初筛
  2. 02汇编解读与逻辑还原
  3. 03固件与协议分析
  4. 04反分析技术识别
  5. 05CTF 二进制题目支持

适用场景

  1. 01初步检查可疑 ELF 或 PE 文件
  2. 02解读 Ghidra 或 IDA Pro 输出
  3. 03分析嵌入式设备固件
  4. 04根据捕获流量梳理协议

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/masriyan/claude-code-cybersecurity-skill --skill reverse-engineering-&-binary-analysis

安装后在 Claude Code 中输入/reverse-engineering-&-binary-analysis确认已加载。

附带文件examples/example_usage.mdscripts/binary_analyzer.py

详细介绍

逆向工程与二进制分析

用途

帮助 Claude 执行逆向工程任务,包括二进制分析、汇编解读、反编译、固件逆向工程和协议分析。Claude 可直接读取并解读反汇编代码、识别模式、重建逻辑,并借助逆向工程工具的输出,帮助分析复杂二进制文件。


激活条件

当用户询问以下内容时,此技能会激活:

  • 分析 ELF、PE(exe/dll)、Mach-O 或原始二进制文件
  • 解读 x86、x64、ARM、MIPS 或 RISC-V 汇编代码
  • 对嵌入式/IoT 设备固件进行逆向工程
  • 对网络协议进行逆向工程
  • 使用 Ghidra、IDA Pro、radare2 或 Binary Ninja 的输出
  • 确定二进制文件或函数的作用
  • 在反汇编代码中查找漏洞
  • CTF 二进制挑战(pwn、reversing 类别)
  • 识别反调试或反分析技术
  • 解包或反混淆二进制文件

前置条件

pip install capstone pyelftools pefile lief

推荐的逆向工程工具:

  • Ghidra — NSA 开源逆向工程框架(免费)
  • radare2 / Cutter — 开源逆向工程框架
  • Binary Ninja — 支持脚本编写的商业逆向工程平台
  • IDA Pro / Free — 行业标准反汇编器
  • GDB + GEF/PEDA/pwndbg — 动态调试
  • Binwalk — 固件提取与分析
  • strings, file, objdump, readelf — Linux 标准实用工具

核心能力

1. 初步二进制分析

当用户提供二进制文件或询问某个文件是什么时:

运行以下命令,并将输出提供给 Claude 分析:

# File type identification
file suspicious_binary

# Strings extraction (often reveals C2, keys, paths)
strings -a suspicious_binary | grep -E "(http|/etc|password|key|secret|flag)"

# ELF analysis
readelf -a suspicious_binary
objdump -d suspicious_binary | head -100

# PE analysis
python scripts/binary_analyzer.py --file malware.exe --strings --imports

# Entropy analysis (high entropy = packed/encrypted)
python scripts/binary_analyzer.py --file binary --entropy

二进制初步分析清单:

[ ] File type and format (magic bytes): ELF / PE / Mach-O / raw
[ ] Target architecture: x86 / x64 / ARM32 / ARM64 / MIPS / RISC-V
[ ] Endianness: little-endian / big-endian
[ ] Linking type: statically linked / dynamically linked
[ ] Security features: PIE / ASLR / NX/DEP / Stack Canary / RELRO
[ ] Packing detected: UPX / Themida / custom (high entropy sections)
[ ] Compiler identified: GCC / MSVC / Clang / Rust / Go
[ ] Interesting strings: URLs, IPs, credentials, file paths
[ ] Import/Export table: suspicious API calls
[ ] Entry point and sections mapping

安全特性检测:

# Linux: checksec (from pwntools)
checksec --file=./binary

# Or check manually:
readelf -l binary | grep GNU_STACK    # NX bit
readelf -d binary | grep RELRO        # RELRO
2. 汇编代码解读

当用户粘贴反汇编代码或 Ghidra 反编译结果时:

Claude 将:

  1. 根据指令语法识别架构
  2. 从提供的入口点跟踪执行流程
  3. 识别函数调用(call/bl/jal 指令)
  4. 根据汇编代码重建高级逻辑
  5. 为每个代码块添加注释,说明其用途
  6. 标记与安全相关的模式

常见 x86-64 模式:

模式指令含义
函数序言push rbp; mov rbp, rsp; sub rsp, N设置栈帧
函数尾声leave; ret 或 pop rbp; ret拆除栈帧
局部变量mov [rbp-N], rax在栈上存储值
循环计数器cmp rax, N; jl/jge loop_top带计数器的循环
栈上缓冲区sub rsp, 0x100256 字节的局部缓冲区
字符串复制rep movsb内存复制
Memsetrep stosb内存清零/填充
Switch-case间接跳转:jmp [rax*8 + table]跳转表
系统调用(Linux)mov rax, N; syscall直接系统调用
Printf/格式字符串lea rdi, [rip+str]; call printf@plt打印语句
堆分配call malloc / call operator new动态内存分配

常见 ARM64 模式:

模式指令含义
函数序言stp x29, x30, [sp, #-N]!保存帧指针和 LR
返回ret(使用 x30)从函数返回
成对加载/存储ldp/stp加载/存储两个寄存器
分支并链接bl func调用函数
条件分支b.eq / b.ne / b.lt条件跳转
系统调用svc #0系统调用

加密常量检测:

# Common crypto constants to watch for:
AES_SBOX = bytes.fromhex("637c777bf26b6fc5...") # AES SubBytes table
SHA256_K = [0x428a2f98, 0x71374491, ...]         # SHA-256 round constants
RC4_INIT_PATTERN                                   # Sequential 0x00-0xFF
3. 固件逆向工程

当用户要求分析嵌入式固件时:

# Step 1: Identify firmware format
file firmware.bin
binwalk firmware.bin

# Step 2: Extract filesystem
binwalk -e firmware.bin
# Extracts to _firmware.bin.extracted/

# Step 3: Analyze extracted filesystem
ls -la _firmware.bin.extracted/
find . -name "*.cgi" -o -name "passwd" -o -name "shadow" -o -name "*.conf"

# Step 4: Find sensitive data
grep -r "password\|admin\|secret\|key" . --include="*.conf" --include="*.xml"

# Step 5: Find binary entry points
file _firmware.bin.extracted/bin/*
strings -a httpd | grep -E "(password|auth|key)"

固件分析清单:

[ ] Identify firmware packaging format (SquashFS, JFFS2, CPIO, raw)
[ ] Extract filesystem using binwalk -e
[ ] Identify target OS and RTOS (Linux, VxWorks, ThreadX, FreeRTOS)
[ ] Find hardcoded credentials in /etc/passwd, config files, binaries
[ ] Identify web interface binaries (httpd, lighttpd, uhttpd)
[ ] Check for debug interfaces (JTAG, UART, SSH enabled)
[ ] Identify update mechanism and signing verification
[ ] Search for private keys, certificates, API keys
[ ] Check for command injection in shell scripts and CGI handlers
[ ] Map memory layout from linker scripts or binary headers
4. 协议逆向工程

当用户想要对协议进行逆向工程时:

给定捕获的流量或二进制数据:

  1. 帧结构分析 — 查找:

    • 魔数或同步模式(开头处的固定字节序列)
    • 长度字段(2 或 4 个字节,通常位于偏移量 2-4 处)
    • 消息类型/命令标识符(1-2 个字节)
    • 校验和/CRC(末尾的 1-4 个字节)
    • 填充模式(填充 0x00 或 0xFF)
  2. 字段类型识别:

    Common field patterns:
    - 4 bytes, big-endian, values 0-65535 → likely length or port
    - 16 bytes uniform random → UUID or AES key
    - Null-terminated variable sequence → ASCII string
    - Fixed 4 bytes: 0xDEADBEEF, 0xCAFEBABE → magic number
    
  3. 命令-响应映射 — 分析成对的数据以查找:

    • 请求:特定类型字节 → 响应:对应的确认消息
    • 错误响应:常见的错误代码模式
  4. 状态机构建:

    [INIT] → send magic handshake → [AUTH] → send credentials →
    [CONNECTED] → send commands → [DATA] → receive data → [IDLE]
    
  5. 生成解析器代码:

    import struct
    
    MAGIC = b"\xDE\xAD\xBE\xEF"
    
    def parse_packet(data: bytes) -> dict:
        if not data.startswith(MAGIC):
            raise ValueError("Invalid magic bytes")
        
        msg_type, length = struct.unpack(">HH", data[4:8])
        payload = data[8:8 + length]
        checksum = struct.unpack(">H", data[8 + length:8 + length + 2])[0]
        
        return {
            "type": msg_type,
            "length": length,
            "payload": payload,
            "checksum": checksum
        }
    
5. 反逆向技术识别与绕过

当用户遇到反分析措施时:

技术指标绕过方法
UPX 加壳UPX! 字符串、高熵upx -d binary
反调试:IsDebuggerPresent导入表中的 API 调用修补:替换为 NOP 或强制返回 0
反调试:ptrace 检查ptrace(PTRACE_TRACEME)GDB:catch syscall ptrace + 返回 1
计时检查RDTSC、GetTickCount 循环修补跳转或将计时检查替换为 NOP
虚拟机检测检查 VMware 注册表项/文件在裸机上运行或进行修补
字符串加密没有可读字符串、XOR 循环找到解密例程,在其后设置断点
控制流扁平化使用状态机的 switch 分发跟踪执行以映射实际 CFG
代码虚拟化自定义 VM 解释器分析 VM 字节码语义
自修改代码WriteProcessMemory、VirtualProtect在写入目标处设置断点

用于自动化的 Ghidra 脚本:

// Ghidra script: find all XOR loops (common string decryption)
FunctionManager fm = currentProgram.getFunctionManager();
for (Function f : fm.getFunctions(true)) {
    // Analyze function for XOR instructions
    // Flag functions with XOR + loop patterns
}
6. CTF 二进制挑战

当用户正在解决 CTF 挑战(pwn/rev 类别)时:

CTF 快速初步分析:

# Check protections
checksec --file=./challenge

# Find win functions, hidden strings
strings ./challenge | grep -i "flag\|win\|cat\|/bin"
objdump -d ./challenge | grep -A2 "win\|backdoor\|system"

# Run with strace to see syscalls
strace ./challenge < /dev/null 2>&1 | head -50

# Dynamic analysis with pwndbg
gdb ./challenge
# In GDB:
# info functions       → list all functions
# disas main           → disassemble main
# b *0x401234          → breakpoint at address
# r < input.txt        → run with input

常见 CTF 模式:

  • gets() / scanf("%s") 未进行边界检查 → 栈缓冲区溢出
  • printf(user_input) 未使用格式字符串 → 格式字符串漏洞
  • strcmp(input, flag) → 计时攻击或直接比较
  • 使用密钥的自定义密码 → 找到密钥,通过 XOR 解密
  • 基于 VM 的挑战 → 跟踪字节码执行以找到 flag 检查逻辑

输出规范

分析二进制文件时,Claude 会提供:

  • 文件摘要:类型、架构、安全特性
  • 函数列表:关键函数及其用途
  • 带注释的反汇编:逐行说明
  • 漏洞评估:代码中发现的安全问题
  • 伪代码重构:汇编代码的高级等价表示

脚本参考

binary_analyzer.py
# Full static analysis
python scripts/binary_analyzer.py --file suspicious.elf --output analysis.json

# Extract strings and imports only
python scripts/binary_analyzer.py --file malware.exe --strings --imports

# Entropy analysis (detect packing/encryption)
python scripts/binary_analyzer.py --file firmware.bin --entropy

技能集成

条件相邻技能
样本需要动态行为分析→ 技能 05(恶意软件分析)
发现漏洞 → 开发利用程序→ 技能 03(漏洞利用开发)
从分析中提取 IOC→ 技能 06(威胁狩猎)
根据发现结果创建检测规则→ 技能 15(蓝队防御)

参考资料


v3.0 增强(2026 更新)

更快速、更强大的逆向工程工作流:

  • AI 辅助反编译 — 使用 Claude 为 Ghidra/IDA 反编译器的输出添加注释:重命名变量、恢复结构体、推断函数用途并总结控制流。应将 AI 命名视为待验证的假设,而非确凿事实。
  • Ghidra 无头自动化 — 使用后置脚本编写批量分析(analyzeHeadless),以跨二进制文件提取 IOC 和字符串。
  • 优先模拟分析 — 使用 Qiling/Unicorn 运行代码片段,在不启动完整调试器的情况下解析动态字符串/配置;使用 angr 对 CTF 风格的逻辑进行符号探索。
  • Go / Rust / Nim 二进制文件 — 使用针对语言的恢复方法(Go:gopclntab 函数/字符串恢复;Rust:名称修饰还原、利用 panic 字符串进行线索跳转),因为现代剥离符号的二进制文件占主导地位。
  • eBPF 和内核对象 — 识别用于隐匿的 eBPF 字节码和内核模块。
  • 固件 — 使用 binwalk 提取 → 挂载文件系统 → 使用 FirmAE/QEMU 模拟;查找硬编码凭据、更新机制和加密密钥。

精确性规则: 每次分析都记录加载地址/基址、架构、调用约定和编译器/工具链,以确保偏移可复现。

评论

支持 Markdown