用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/3641397194-wq/gpt5.6-claude-grok4.6-deepseekv4pro --skill eni-firmware-pentest命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | eni-firmware-pentest |
| description | [DOCUMENTATION ONLY] [仅文档] 固件/IoT 获取、提取、仿真与安全评估方法论,全局自动路由。 |
全局自动路由:命中本 Skill 的请求自动路由至本技能文档。
仅文档:本 Skill 是方法论与检查表文档,不宣称自带可执行脚本。
出现下列任意一种情况,任务即归属本 Skill:
.bin / .img / .trx / .chk / OTA 升级包),要求从零推进到可利用状态| 任务形态 | 归属 |
|---|---|
| 从拿到镜像到拿到 root 的完整链路 | 本 Skill |
| 只针对某个 ELF / 共享库做静态逆向 | reverse-engineering/、ida-reverse/、radare2/ |
| 仿真起来后的 Web / RCE 利用收尾 | pentest-tools/、attack-chain/ |
| UART / JTAG / SPI 的接线与工具细节 | 本 Skill 的获取环节 + patterns-hardware.md |
| Android 固件(含 boot.img 场景) | apk-reverse/,剥出 boot.img 后回到本 Skill |
| 新旧版本固件之间的符号迁移 | binary-diff/ |
把一次固件审计拆成四个里程碑,每个里程碑有明确的产出物:
里程碑 1 拿样本(情报 + 获取)
芯片型号 / SDK / 已披露 CVE 清单 / 镜像文件本身
│
里程碑 2 解剖(识别 + 提取)
binwalk v3 → unblob → jefferson / ubi_reader
提取失败 → 熵分段 → 找解密例程 → UART / SPI 硬件兜底
│
里程碑 3 仿真(跑起来)
qemu-*-static + chroot(单二进制)
Firmadyne / FAT(整机 + NVRAM 仿真)
│
里程碑 4 利用(找洞 + 验证)
静态 grep + EMBA → 动态调试 → AFL++ / boofuzz → PoC → 真机复核
四条贯穿始终的经验:
/dev 节点三件事之一# FCC ID 反查(美区设备):找到芯片与内部照片
curl -s "https://fccid.io/?q=$FCC_ID"
# 常见 SoC 家族速记
echo "Realtek RTL8197 / Broadcom BCM / MediaTek MT76 / Qualcomm IPQ"
产出:芯片型号与 SDK 来源。SDK 决定了后续提取是一次成功还是反复折腾。
# 途径 A:官网支持页直接下载
wget https://download.example.com/fw/router_v1.2.3.bin
# 途径 B:APP 升级时抓 OTA 包
mitmdump -s save_response.py
# 途径 C:UART 拿到 shell 后从 flash 分区读
picocom -b 115200 /dev/ttyUSB0
cat /dev/mtd3 > /tmp/rootfs.bin
# 途径 D:拆机用 CH341A 编程器整片读 SPI flash
flashrom -p ch341a_spi -r dump.bin
途径 C 与 D 是加密固件的常见突破口,后面会用到。
binwalk firmware.bin # magic 分布
binwalk -E firmware.bin # 熵图,寻找压缩段与加密段边界
strings -n 8 firmware.bin | less # banner、内核版本串、文件路径
file firmware.bin
hexdump -C firmware.bin | head -64
binwalk -eM firmware.bin # 递归提取,先试
unblob -d out/ firmware.bin # binwalk 啃不动的格式
jefferson rootfs.jffs2 -d rootfs/ # JFFS2 专用
ubireader_extract_files rootfs.ubi # UBI 专用
细节与失败兜底见 references/extraction-methodology.md。
.rodata)# 用户态跑单个二进制
cp /usr/bin/qemu-mipsel-static squashfs-root/usr/bin/
sudo chroot squashfs-root /usr/bin/qemu-mipsel-static /usr/sbin/httpd
# 整机仿真
sudo fat.py firmware.bin
仿真细节与 fuzz 全套见 references/emulation-and-fuzz.md。
# EMBA 一键扫描
sudo emba -l ./logs -f ./firmware.bin -p ./scan-profiles/default-scan.emba
# 手工补查
grep -rE "(password|passwd|admin|secret|api_key|token)=" squashfs-root/
checksec --file=squashfs-root/usr/sbin/httpd
对象: 某品牌户外摄像头 ipc_v3.0.5.bin
诉求: 找出 RTSP 服务里的未授权命令执行
Step 1 官网 + FCC ID 拿到固件,芯片为 Ingenic T31(MIPS 小端)
Step 2 binwalk 检出 UBI 头,但 v3 提取失败 → unblob 成功解出 ubifs
Step 3 ubireader_extract_files 落地完整根文件系统
Step 4 EMBA 报告:rtspd 二进制无 NX 保护,且调用 system() 拼用户参数
Step 5 qemu-mipsel-static 仿真 rtspd,gdb-multiarch 远程挂调确认溢出点
Step 6 构造 payload 拿到仿真 shell,真机复测通过
对象: 某运营商定制路由器,官网不提供固件
镜像: 全段熵 0.99,binwalk 无任何 magic,头部有厂商自定义 wrapper
Step 1 APP 抓 OTA 包拿到加密镜像
Step 2 拆机接 UART,启动时按键打断进 U-Boot
Step 3 tftpboot 加载镜像到内存,设备自行解密后 md.b 观察明文
Step 4 save tftp 导出解密后的镜像 → binwalk 直接出 squashfs
Step 5 后续按标准流程走
nvram_get,Firmadyne 的 libnvram.so 与 FAT 默认配置能解决多数问题afl-clang-lto 重编译| 工具 | 用途 | 自动安装 |
|---|---|---|
| binwalk v3 | 主提取器(Rust 重写,并发快) | ✓ |
| binwalk v2 | 老插件兼容 | ✓ |
| unblob | 兜底提取,格式覆盖广 | ✓ |
| jefferson | JFFS2 专用提取 | ✓ |
| ubi_reader | UBI / UBIFS 专用提取 | ✓ |
| EMBA | 固件自动化审计框架 | ✓ |
| Firmadyne | 整机仿真底座 | ✓ |
| FAT | Firmadyne 的一行命令封装 | ✓ |
| qemu-user-static | 单二进制用户态仿真 | ✓ |
| qemu-system-* | 整机系统仿真 | ✓ |
| AFL++ | 覆盖率制导模糊测试 | ✓ |
| pwntools | PoC 与 shellcode 生成 | ✓ |
| flashrom | SPI flash 读写 | ✓ |
| picocom | 串口终端 | ✓ |
# 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 与 FAT
git clone --recursive https://github.com/firmadyne/firmadyne.git ~/tools/firmadyne
cd ~/tools/firmadyne && sudo ./download.sh
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
本链路强依赖 Linux 侧工具:
上游入口: skills/SKILL.md(总控)、routing.md
触发条件: 任务涉及固件镜像、IoT 设备、嵌入式漏洞挖掘、路由器审计
下游出口:
reverse-engineering/、ida-reverse/、radare2/pentest-tools/、attack-chain/binary-diff/patterns-hardware.mdapk-reverse/参考文档:
references/extraction-methodology.md — 提取细节与失败兜底references/emba-automated-analysis.md — EMBA 全流程references/emulation-and-fuzz.md — 仿真 + fuzz 实战