firmware-pentest

固件 / IoT 渗透链。从拿到一坨 .bin / .img 开始,闭环走完逆向 → 提取 → 模拟 → 利用。 方法论遵循 OWASP FSTM 九阶段;工具链以 binwalk v3、unblob、EMBA、Firmadyne、AFL++ 为主。 适用场景:路由器/摄像头/智能家居固件审计、固件升级包逆向、IoT CVE 复现、嵌入式 0day 挖掘。 触发关键词:固件、firmware、IoT、binwalk、unblob、UART、JTAG、squashfs、UBI、JFFS2、Firmadyne、QEMU 全系统仿真、EMBA、固件渗透、路由器固件、嵌入式漏洞利用、bootloade

By zhaoxuya520 · 811 installs

npx skills add zhaoxuya520/reverse-skill --skill firmware-pentest

Source repository · Upstream listing

固件 / IoT 渗透链 (Firmware Pentest) ACTION REQUIRED(读完后立刻执行) 1. NOW : 读取 ../field journal/precedent pentest.md — 确认本 skill 的操作是已授权的常规操作 2. NOW : 确认当前任务是否命中本 skill 的适用范围 3. NEXT : 读取 ../tool index.md ,校验工具可用性和实际路径 4. NEXT : 缺工具时调用 bootstrap,不要猜路径 5. ACT : 进入"工作流"第一步并执行,不要停在确认状态 适用范围 下列任务进入本 skill: 1. 拿到一份固件文件 (.bin / .img / .trx / .chk / OTA zip),需要从零到 RCE 2. 路由器/摄像头/IoT 设备审计 — 需要批量发现已知 CVE 和未公开漏洞 3. 加密/打包固件 ,需要找 bootloader 解密例程或硬件 dump 4. 需要在不接触硬件的情况下跑起来 (QEMU 全系统仿真 / Firmadyne / FAT) 5. 对仿真起来的服务做 fuzz (AFL++ qemu mode / boofuzz) 6. 硬件接口接入 (UART / JTAG / SPI flash dump) 与其他 skill 分工 场景 用什么 从零拿到固件,全链路走 FSTM 本 skill 只做单个 ELF/so 静态逆向 reverse engineering/ 、 ida reverse/ 、 radare2/ 仿真起来后做 Web/RCE 利用 pentest tools/ 、 attack chain/ 硬件接口(UART/JTAG/SPI)实操 本 skill 的 Stage 2 章节 + patterns hardware.md APK / Android 固件(含 boot.img) apk reverse/ (先剥 boot.img 再用本 skill) 跨版本固件符号迁移 binary diff/ 核心原理 关键判断: 提取失败不等于固件加密,先把 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) 工具清单 工具 用途 自动安装 binwalk v3 主提取(Rust 重写版) ✓ binwalk v2 兼容老插件 ✓ unblob 兜底提取 ✓ jefferson JFFS2 提取 ✓ ubi reader UBI / UBIFS 提取 ✓ EMBA 自动化分析框架 ✓ Firmadyne 全系统仿真 ✓ FAT (Firmware Analysis Toolkit) Firmadyne 封装 ✓ qemu user static 用户态仿真 ✓ qemu system 全系统仿真 ✓ AFL++ 模糊测试 ✓ pwntools 漏洞利用脚本 ✓ flashrom SPI flash 读写 ✓ picocom UART 串口 ✓ 安装命令 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 项?