
新发布Sep 9, 2026
firmware-analysis-toolkit v2.0.0-alpha.1
固件安全研究平台,结合二进制分析、污点追踪与仿真技术,覆盖物联网、边缘AI、移动设备及机器人领域。
FAT — 固件分析工具包
固件分析工具包 是一个用于调查 IoT、物理 AI、移动设备与机器人领域固件安全性的安全研究工具包。它主要为 Attify 举办的 “Offensive IoT Exploitation” 培训而构建。
该工具基于实际现场实践经验构建,聚焦于真正重要的固件安全调查工作。
FAT 的目标不仅是构建一款世界一流的固件安全研究工具包,还致力于培养能够发挥最佳水平的专业人才与实践者——若以特定方式使用,该工具可成为认知层面的超级能力,同时对于该领域的新手也足够易于上手。
其部分功能包括:对未知固件进行分类、提取文件系统、映射信任相关代码、追踪污点数据流,以及协调 QEMU 模拟。
FAT 可以分析的内容
- 未知二进制块与目录: 容器、压缩成员、高熵区域、MCU 信号以及候选固件文件
- 固件镜像: 头部、更新封装、分区、引导加载程序以及镜像间差异
- 已提取的 Linux 文件系统: 清单、启动意图、承载信任的二进制文件、加密材料以及字符串证据
- ELF 二进制文件: 导入、导出、处理程序表、剥离代码的汇聚点、反编译以及从源到汇聚点的污点分析
- 裸机与 MCU 镜像: 向量表、内存映射、外设提示、闪存写入权限以及启动交接证据
- 边缘 AI 工件: MAGIK/JZDL、TFLite、ONNX 与 Qualcomm DLC 文件,以及可见的推理运行时
- Android 应用: APK 清单、发现线索、本地化信息、能力链以及交接边界
- 源代码仓库: 不变量查询、补丁指导以及邻近变体搜索
快速开始
克隆仓库,使用 Rust 1.90 或更高版本构建并安装:
git clone https://github.com/attify/firmware-analysis-toolkit.git
cd firmware-analysis-toolkit
cargo build --release --locked
cargo install --path crates/fat_cli --locked
fat doctor
一键安装脚本:
./scripts/install.sh --install-system-deps
有关安装过程的更多自定义选项,请参阅 INSTALL.md。
快速命令参考
- 帮助:
fat -h - 识别固件:
fat $firmware或fat identify --file $firmware - 新建项目:
fat new $firmware - 提取文件系统:
fat extract $firmware - 分析:
fat analyze $firmware - 模拟:
fat emulate --project $firmware
首次接触未知文件
fat ./firmware.bin
fat inspect update --file ./firmware.bin --rootfs ./rootfs --reference ./older.bin
从镜像到运行时
从快速开始到端到端的完整流程:
fat new ./firmware.bin
fat extract .fat-projects/firmware
fat analyze .fat-projects/firmware
fat preflight .fat-projects/firmware
fat emulate --project .fat-projects/firmware
二进制分类与数据流
fat r2-triage --file ./usr/sbin/httpd --json
fat taint --file ./www/cgi-bin/diag.cgi --summary
fat taint-query --file ./www/cgi-bin/diag.cgi
fat taint-cross --rootfs ./rootfs
fat taint-cross --rootfs ./rootfs --source-profile ./my-target-models.yaml --state-profile ./my-target-state.yaml
Shell 脚本数据流
fat taint --lang shell --file ./app/init/wifi.sh --summary
fat taint --lang shell --rootfs ./extracted-rootfs --json
fat taint --lang shell --rootfs ./extracted-rootfs --source-profile ./my-target-shell.yaml --severity high
剥离符号的二进制文件
静态查找汇聚点,然后为相同地址准备运行时钩子:
fat r2-triage --file ./usr/sbin/httpd --json
fat sink-discovery --file ./usr/sbin/httpd --json > sinks.json
fat handler-table --file ./usr/sbin/httpd --json > handlers.json
fat taint --file ./usr/sbin/httpd --sink-candidates sinks.json --json > taint.json
fat instrument-hooks --from-sinks sinks.json --output hooks.yaml
fat emulate --project .fat-projects/firmware --instrument hooks.yaml
文件系统级证据扫描
fat tree --rootfs ./rootfs --profile inventory --summary --json
fat search --rootfs ./rootfs --profile credentials -I --context 2
fat startup-map --rootfs ./rootfs --profile cloud-tls
fat crypto-census --rootfs ./rootfs
fat trust-map --rootfs ./rootfs
基于源代码的不变量查询
fat invariant query \
--fixture tests/fixtures/query/source/invariant-permission \
--rule 'Every privileged override method must call enforcePermission()'
fat patch check --help
fat verify --help
安全性
- 模拟会执行不受信任的供应商代码。
- 在处理不受信任的镜像或将模拟服务暴露于网络之前,请先阅读 SECURITY.md。
- 确保你已获得所处理目标的授权,这是你的责任。
详细指南
| 文档 | 内容说明 |
|---|---|
| INSTALL.md | 外部工具与可选组件设置 |
| docs/commands.md | 完整命令参考,按任务分组 |
| docs/capabilities.md | 图导出、字符串搜索、加密、Edge AI、启动意图、重托管包 |
| docs/epistemics.md | 如何解读 FAT 输出:结果能证明什么、不能证明什么 |
| docs/architecture.md | 工作区 crate 与扩展点 |
| DEVELOPMENT.md | 构建与测试工作流 |
| CONTRIBUTING.md | 环境设置、PR 检查清单与贡献指南 |
维护者
FAT 由 adi0x90 编写,他也是该项目当前维护者及主要贡献者。该项目在 Attify 旗下维护。
许可证
FAT 2.0 在 FSL-1.1-ALv2 下提供源代码。更多详情请参阅 LICENSING.md 与 THIRD_PARTY_NOTICES.md。