# Firmware Pentest

固件 / IoT 渗透链。从拿到一坨 .bin / .img 开始，闭环走完逆向 → 提取 → 模拟 → 利用。 方法论遵循 OWASP FSTM 九阶段；工具链以...

- Repository: https://github.com/zhaoxuya520/reverse-skill (43923 stars)
- Category: Security
- License: MIT
- Last updated: 2026-09-22
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add zhaoxuya520/reverse-skill --skill firmware-pentest -g -a claude-code -y`
Codex: `npx skills add zhaoxuya520/reverse-skill --skill firmware-pentest -g -a codex -y`
Cursor: `npx skills add zhaoxuya520/reverse-skill --skill firmware-pentest -g -a cursor -y`
Gemini CLI: `npx skills add zhaoxuya520/reverse-skill --skill firmware-pentest -g -a gemini-cli -y`

## Description

固件 / 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、固件渗透、路由器固件、嵌入式漏洞利用、bootloader、NVRAM、FAT、firmware analysis toolkit。

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 固件 / 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/` |

## 核心原理

```text
固件 .bin
   │
   ├─ Stage 1-3: 信息收集 / 获取 / 静态分析（不解压也能看的部分）
   │
   ├─ Stage 4: 提取文件系统  ← binwalk v3 / unblob / jefferson / ubi_reader
   │     │
   │     └─ 失败 → 找 bootloader 解密例程 / UART dump / SPI flash 硬件读
   │
   ├─ Stage 5: 文件系统静态分析  ← EMBA 自动化 + 手工 grep
   │
   ├─ Stage 6: 模拟运行  ← Firmadyne / FAT / qemu-user-static + chroot
   │
   ├─ Stage 7-8: 动态 / 运行时分析  ← gdb-multiarch、IDA 远程调试、Ghidra
   │
   └─ Stage 9: 二进制利用  ← AFL++ fuzz / 手工 PoC / ARM / MIPS payload
```

关键判断：
- 提取失败不等于固件加密，先把 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。

```bash
# FCC ID 查询（美区设备）
curl -s "https://fccid.io/?q=$FCC_ID"

# 芯片识别参考点
echo "Realtek RTL8197 / Broadcom BCM / MediaTek MT76 / Qualcomm IPQ"
```

输出：芯片型号、SDK 来源（SDK 决定 binwalk 能否一把成功）。

The rest: https://github.com/zhaoxuya520/reverse-skill/blob/HEAD/skills/firmware-pentest/SKILL.md
