关于 reverse-engineering
Reverse Engineering 是面向安全分析人员的技能,用于调查编译二进制文件、固件和未知协议。它结合分流、静态与动态分析、反混淆和补丁差异分析流程,并提供脚本与参考资料。
主要功能
- 01二进制分流与反编译
- 02动态调试与插桩
- 03反调试与反虚拟机分析
- 04反混淆与解包
- 05固件与 UEFI 分析
- 06补丁差异分析与协议推断
适用场景
- 01调查未知二进制文件
- 02分析受保护或混淆样本
- 03检查固件与 UEFI 镜像
- 04通过补丁追踪漏洞成因
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ hypnguyen1209/ offensive-claude --skill reverse-engineering安装后在 Claude Code 中输入/reverse-engineering确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/anti-reversing-bypass.mdcoverage-reachability.mddeobfuscation.mddynamic-instrumentation.mdfirmware-uefi.mdpatch-diffing-protocol.mdrr-time-travel.mdstatic-triage-decompilation.mdscripts/antidebug_unhook.pycve_diff.pydeflatten_triton.pyfrida_universal.jspatchdiff_fetch.pyproto_infer.pyrr_root_cause.shstring_decrypt_emu.pytriage.pyuefi_triage.pyscripts/ghidra/DecompileToC.java详细介绍
逆向工程
何时启用
- 对未知的已编译二进制文件(ELF/PE/Mach-O)或经过剥离/混淆的样本进行初步分析,以评估漏洞或能力。
- 反编译专有代码并恢复结构和类型(包括借助 AI/MCP 的 Ghidra/Binary Ninja 分析)。
- 解包并反虚拟化受保护的二进制文件(VMProtect 3.x、Themida、OLLVM 控制流扁平化)。
- 绕过反调试 / 反虚拟机 / 反 Frida 机制,以便进行动态分析。
- 固件提取与 UEFI/BIOS 逆向工程、安全启动绕过研究、持久化的预启动植入程序分析。
- 对 Patch Tuesday/CVE 修复进行补丁差异分析,以找出根本原因并构造 n-day 触发样本。
- 逆向分析未知的线缆协议或专有文件格式,以便进行模糊测试/解析。
技术图谱
| 技术 | ATT&CK | CWE | 参考资料 | 脚本 |
|---|---|---|---|---|
| 二进制初步分析(格式/架构/缓解措施/字符串/导入项) | T1592.002, T1518.001 | CWE-1395 | references/static-triage-decompilation.md | scripts/triage.py |
| 无头反编译(Ghidra 11.4 / r2 / IDA) | T1592.002 | CWE-noinfo | references/static-triage-decompilation.md | scripts/triage.py |
| AI/MCP 辅助逆向工程(Sidekick / GhidrAssistMCP / LLM4Decompile) | T1592.002 | CWE-noinfo | references/static-triage-decompilation.md | - |
| 动态调试(GDB/GEF、x64dbg、条件断点) | T1622 | CWE-noinfo | references/dynamic-instrumentation.md | - |
| Frida 17 插桩 + SSL 锁定/JNI 钩子 | T1622, T1562.001 | CWE-noinfo | references/dynamic-instrumentation.md | scripts/frida_universal.js |
| 符号执行 / 具体符号执行(angr、Triton) | T1480.001 | CWE-noinfo | references/dynamic-instrumentation.md | scripts/deflatten_triton.py |
| 反调试检测与绕过(PEB/ptrace/硬件断点/计时) | T1622, T1497.001 | CWE-noinfo | references/anti-reversing-bypass.md | scripts/antidebug_unhook.py |
| 反虚拟机 / 沙箱规避机制中和 | T1497, T1497.003 | CWE-noinfo | references/anti-reversing-bypass.md | scripts/antidebug_unhook.py |
| 解包程序并转储 OEP(UPX/运行时加壳器) | T1027.002, T1620 | CWE-noinfo | references/anti-reversing-bypass.md | scripts/antidebug_unhook.py |
| 字符串 / API 哈希反混淆(Unicorn 仿真) | T1027.013, T1140, T1027.007 | CWE-noinfo | references/deobfuscation.md | scripts/string_decrypt_emu.py |
| OLLVM 控制流扁平化反扁平化 | T1027.009, T1027 | CWE-noinfo | references/deobfuscation.md | scripts/deflatten_triton.py |
| 虚拟机保护器反虚拟化(VMProtect 3.x / Themida) | T1027.009 | CWE-noinfo | references/deobfuscation.md | scripts/deflatten_triton.py |
| 固件提取(binwalk/squashfs/QEMU 仿真) | T1542.001 | CWE-1263 | references/firmware-uefi.md | scripts/uefi_triage.py |
| UEFI/BIOS 逆向工程 + 安全启动绕过研究 | T1542.001, T1542.003 | CWE-347 | references/firmware-uefi.md | scripts/uefi_triage.py |
| 补丁差异分析 → n-day 根本原因(BinDiff/Diaphora/ghidriff) | T1203, T1592.002 | CWE-noinfo | references/patch-diffing-protocol.md | scripts/patchdiff_fetch.py |
| 协议 / 文件格式推断(Netzob/Kaitai) | T1592.002 | CWE-noinfo | references/patch-diffing-protocol.md | scripts/proto_infer.py |
快速开始
# 0. Triage: format, arch, mitigations, packer entropy, strings, imports, capabilities → JSON
python3 scripts/triage.py ./sample -o out/triage.json
# 1. Headless decompile to C (Ghidra 11.4 analyzeHeadless wrapper inside triage.py --decompile)
python3 scripts/triage.py ./sample --decompile --ghidra "$GHIDRA_HOME" -o out/
# 2. If packed/protected → defeat anti-debug, dump OEP (run under x64dbg+ScyllaHide on Windows)
python3 scripts/antidebug_unhook.py --scan ./sample # enumerate anti-debug primitives first
# 3. Dynamic: attach Frida (Android/Linux/Win), universal SSL-unpin + native trace
frida -U -f com.target.app -l scripts/frida_universal.js --no-pause
# 4. Deobfuscate: emulate string decryptor over all xrefs; de-flatten OLLVM with Triton
python3 scripts/string_decrypt_emu.py ./sample --func 0x401500 --auto-xref -o out/strings.txt
python3 scripts/deflatten_triton.py ./sample --func 0x401abc -o out/cfg.dot
# 5. Firmware: carve + identify + map UEFI DXE/PEI attack surface, scan for PKfail/known hashes
python3 scripts/uefi_triage.py firmware.bin -o out/fw/
# 6. n-day: fetch pre/post-patch Windows binary from winbindex and diff
python3 scripts/patchdiff_fetch.py --pe afd.sys --kb-after KB5050000 -o out/diff/
# 7. Unknown protocol: infer fields/state machine from a pcap, emit Kaitai + Wireshark dissector
python3 scripts/proto_infer.py capture.pcap --port 4444 -o out/proto/
OPSEC 与检测(摘要)
| 技术 | 遥测 / IOC | 检测(Sigma/EDR) | OPSEC 说明 |
|---|---|---|---|
| 静态初步分析 / 反编译 | 无(在分析人员的设备上离线进行) | 不适用 — 在实验室中运行 | 在隔离且已创建快照的 VM 中分析副本;绝不要在目标上分析 |
| Frida / 动态 Hook | /proc/self/maps 中的 frida-agent.so、端口 27042、gum-js-loop/gmain 线程、目标上的 ptrace | 应用侧 RASP(Talsec/DeepID)、Frida 字符串扫描、EDR 用户态 Hook 触发器 | 重命名 Agent,使用 gadget + -l 脚本模式,将 gadget 嵌入 APK 以绕过端口检查 |
| 绕过反调试 | 已设置 DR0-7 调试寄存器、PEB.BeingDebugged 状态翻转、被 Hook 的 Nt* 序言 | 自完整性检查、KiUserExceptionDispatcher 检查、TitanHide 与恶意软件的攻防竞赛 | 对加固的加壳程序,优先使用内核级 TitanHide/HyperHide;每次运行前创建快照 |
| 加壳程序/OEP 转储 | 新的 RWX 区域、重建 IAT、磁盘上写入的 dump.exe | EDR 的 RWX 分配 + 尾跳转启发式检测(仅限实验室) | 所有操作都在实验室中进行;转储样本仅用于分析,不得重新部署 |
| 字符串/API 哈希解密(Unicorn) | 目标上无(离线仿真) | 不适用 | 完全离线;安全 — 不会执行样本中的网络/FS 代码 |
| 固件 / SPI 闪存转储 | 硬件:在 SPI 上使用芯片夹;软件:使用 chipsec/flashrom 读取 | Boot Guard / 度量启动(TPM PCR)、Binarly/CHIPSEC 验证工具 | 仅限物理设备/已授权环境;将修改后的映像刷回会造成破坏且容易被发现 |
| 安全启动绕过研究 | ESP 中出现新的未签名引导加载程序、MokList/dbx 异常、bootmgfw 哈希异常 | 度量启动 PCR[0/2/4/7] 偏移、dbx 撤销检查、ESET/Binarly 扫描器 | 使用实验室 VM / 一次性硬件;做好记录,绝不在真实系统中持久化植入物 |
| 补丁差异分析 | 目标上无(获取公开二进制文件) | 不适用 | 使用 Microsoft/发行版的公开二进制文件;在披露/ROE 之前,将 n-day PoC 保留在实验室中 |
| 协议推断 | 在服务上重放捕获或构造的数据包 | 针对格式错误/重放帧的 IDS;速率异常 | 限制主动探测频率;当范围内包含在线目标时,优先使用被动 pcap |
深入探索
- references/static-triage-decompilation.md — 文件/架构/缓解措施初步分析、熵值与加壳器识别、能力检测(capa)、Ghidra 11.4
analyzeHeadless+ PyGhidra、r2/rizin 与 IDA 反编译流程,以及 2025 年 AI/MCP 辅助层(Binary Ninja Sidekick、GhidrAssistMCP、LLM4Decompile / SK²Decompile)和验证规范。 - references/dynamic-instrumentation.md — GDB/GEF 与 x64dbg 工作流、条件/命令断点、Frida 17 内部机制(Interceptor/Stalker/Java)、通用 SSL 解锁与 JNI 跟踪,以及使用反向切片进行路径/值恢复的 angr/Triton 符号执行与混合具体符号执行。
- references/anti-reversing-bypass.md — 反调试分类(PEB 标志、NtSetInformationThread/ThreadHideFromDebugger、DR0-7 / GetThreadContext、KiUserExceptionDispatcher、NtClose、INT 2D、rdtsc 计时、Linux ptrace/TracerPid)、反虚拟机与 al-khaser、ScyllaHide/TitanHide,以及运行时加壳器 OEP 转储。
- references/deobfuscation.md — 通过 Unicorn 仿真解密字符串与 API 哈希、OLLVM 控制流平坦化还原(分发器恢复、类似 LummaC2 的 Triton 反向切片)、MBA 简化,以及针对 VMProtect 3.x / Themida 的虚拟机保护器去虚拟化(NoVmp/VTIL、Titan、Triton 提升)。
- references/firmware-uefi.md — binwalk/unblob 提取文件、squashfs/JFFS2 提取、QEMU+afl 仿真、UEFI 卷/DXE/PEI 解析(UEFITool/chipsec)、SMM 调用点与 NVRAM 变量攻击面,以及经验证的 2024-2025 年安全启动绕过研究链:LogoFAIL(CVE-2023-40238)、PKfail(CVE-2024-8105)、CVE-2024-7344、BlackLotus/Bootkitty 背景。
- references/patch-diffing-protocol.md — 通过 winbindex 获取二进制文件、MSU/CAB 提取、BinDiff/Diaphora/ghidriff 函数级差异分析、LLM 辅助初步分析(PatchWatch/DiffRays)及其幻觉风险提示、2025 年末的内核目标(cldflt.sys、win32k、CLFS),以及网络/文件格式协议逆向工程(Netzob、Kaitai Struct、类似 BinPRE 的字段推断)。
- references/rr-time-travel.md — 确定性记录/重放根因分析:rr record/replay、使用反向 continue/stepi + 硬件观察点定位造成破坏的写入,以及作用域工作区中的可审计跟踪记录;生成
trace_proof产物。由scripts/rr_root_cause.sh提供支持(在缺少 rr 时会优雅降级)。在.devcontainer/中运行。 - references/coverage-reachability.md — 证明易受攻击的代码行/函数确实已执行:gcov 行命中(构建时使用
--coverage,运行见证程序,并断言该行不是#####)以及-finstrument-functions/rr/uftrace 函数跟踪;validate_findings.py要求提供coverage_proof/trace_proof,原生漏洞才能达到[CONFIRMED]标准。 - references/patch-diffing-protocol.md 由
scripts/cve_diff.py提供输入——从多个来源发现规范修复提交(OSV/NVD/GitHub Advisories),按(repo、sha)去重,并处理 OSV GIT-rangefixed事件;随后克隆受范围门控且经git_safe加固的仓库,并执行git diff fix^..fix。使用它在 BinDiff/ghidriff 之前定位补丁;然后串接到/engage.crash进行根因与可利用性分析。
评论
支持 Markdown