固件 / IoT 渗透链 (Firmware Pentest)
ACTION REQUIRED(读完后立刻执行)
NOW: 读取../field-journal/precedent-pentest.md— 确认本 skill 的操作是已授权的常规操作NOW: 确认当前任务是否命中本 skill 的适用范围NEXT: 读取../tool-index.md,校验工具可用性和实际路径NEXT: 缺工具时调用 bootstrap,不要猜路径ACT: 进入"工作流"第一步并执行,不要停在确认状态
适用范围
下列任务进入本 skill:
- 拿到一份固件文件(.bin / .img / .trx / .chk / OTA zip),需要从零到 RCE
- 路由器/摄像头/IoT 设备审计 — 需要批量发现已知 CVE 和未公开漏洞
- 加密/打包固件,需要找 bootloader 解密例程或硬件 dump
- 需要在不接触硬件的情况下跑起来(QEMU 全系统仿真 / Firmadyne / FAT)
- 对仿真起来的服务做 fuzz(AFL++ qemu mode / boofuzz)
- 硬件接口接入(UART / JTAG / SPI flash dump)
与其他 skill 分工
核心原理
关键判断:
- 提取失败不等于固件加密,先把 binwalk v2、binwalk v3、unblob、jefferson、ubi_reader 全跑一遍
- EMBA 一行命令出 HTML 报告,能省 80% 体力,剩 20% 是真正的漏洞挖掘
- 仿真起不来时优先怀疑 NVRAM 缺失、网卡名错配、
/dev/节点缺失 - ARM / MIPS payload 必须区分大小端(mipsel vs mipseb),别用错
OWASP FSTM 九阶段工作流
Stage 1 — 信息收集(Information Gathering)
收集型号、芯片、SDK、已公开 CVE。
输出:芯片型号、SDK 来源(SDK 决定 binwalk 能否一把成功)。
Stage 2 — 获取固件(Obtaining Firmware)
四条路:官网下载、OTA 抓包、UART 落 shell 后 dump、SPI flash 物理读。
Stage 3 — 分析固件(Analyzing Firmware)
不解压先看头部、熵、字符串、可识别签名。
Stage 4 — 提取文件系统(Extracting Filesystem)
详见 references/extraction-methodology.md。
Stage 5 — 静态分析文件系统(Filesystem Analysis)
EMBA 一键扫,详见 references/emba-automated-analysis.md。
手工补:
Stage 6 — 模拟运行(Emulating Firmware)
详见 references/emulation-and-fuzz.md。
Stage 7 — 动态分析(Dynamic Analysis)
仿真起来后挂调试器、抓流量、跑 fuzz。
Stage 8 — 运行时分析(Runtime Analysis)
在真实硬件上挂调试器,或者仿真态做覆盖率制导 fuzz。
Stage 9 — 二进制利用(Exploitation)
写 PoC,生成 payload,落地 root shell。
典型场景示例
场景 1:普通路由器固件全链路(TP-Link / 小米路由器 / OpenWrt 衍生)
场景 2:加密固件(找 bootloader 解密例程)
注意事项
- 大小端:MIPS 路由器常见 mipsel(小端,MT 系列)/ mipseb(大端,Broadcom 系列),qemu binary 别用错
- NVRAM:仿真起来 httpd 立即崩 → 90% 是 nvram_get 拿不到值,Firmadyne 有 libnvram hook,FAT 默认带
- EMBA 不是银弹:跑出来一堆 CVE 别全信,要核对版本字符串和实际利用条件
- AFL++ qemu mode 慢:先用 afl-clang-lto 重编译目标(如果有源码),快 5-10 倍
- 真机操作前先 dump:物理设备砖前必备整片 flash dump,用 flashrom / ch341a / minipro
- 法律边界:自家设备、SRC 授权、CTF、公开靶机才能搞,企业生产设备需要书面授权
- field-journal 回写:每完成一个固件,记录芯片型号、SDK、binwalk 是否成功、仿真是否成功,下次同系列直接复用
按需自举(On-Demand Bootstrap)
工具清单
安装命令
Windows 用户
固件渗透链强依赖 Linux 工具,建议:
- WSL2 Ubuntu 22.04(足够大多数场景)
- 或独立 Kali / Ubuntu 虚拟机
- EMBA 必须 Linux,Firmadyne / FAT 必须 Linux
路由上下文
上游入口: skills/SKILL.md(总控)、routing.md
触发条件: 任务涉及固件文件、IoT 设备、嵌入式漏洞挖掘、路由器审计
下游出口:
- 单个二进制深度静态分析 →
reverse-engineering/、ida-reverse/、radare2/ - 仿真起来后做 Web RCE / 后渗透 →
pentest-tools/、attack-chain/ - 跨版本固件符号迁移 →
binary-diff/ - 硬件接口实操参考 →
patterns-hardware.md - APK / boot.img 处理 →
apk-reverse/
同级关联: pentest-tools/(Web 利用阶段配合)、attack-chain/(跨阶段攻击链规划)
参考文档:
references/extraction-methodology.md— 提取细节与失败兜底references/emba-automated-analysis.md— EMBA 全流程references/emulation-and-fuzz.md— 仿真 + fuzz 实战
任务完成自检(声称完成前 MUST 通过)
- 我是否执行了工作流中的每一步(而不是只阅读)?
- 我是否基于
tool-index使用了真实工具路径? - 我是否产出了可复现证据(命令/脚本/截图/报告)?
- 我是否完成并回写了 RULES 要求的 Checklist 项?


