固件分析工具包 是一个用于调查 IoT、物理 AI、移动设备与机器人领域固件安全性的安全研究工具包。它主要为 Attify 举办的 “Offensive IoT Exploitation” 培训而构建。
该工具基于实际现场实践经验构建,聚焦于真正重要的固件安全调查工作。
FAT 的目标不仅是构建一款世界一流的固件安全研究工具包,还致力于培养能够发挥最佳水平的专业人才与实践者——若以特定方式使用,该工具可成为认知层面的超级能力,同时对于该领域的新手也足够易于上手。
其部分功能包括:对未知固件进行分类、提取文件系统、映射信任相关代码、追踪污点数据流,以及协调 QEMU 模拟。
克隆仓库,使用 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 -hfat $firmware 或 fat identify --file $firmwarefat new $firmwarefat extract $firmwarefat analyze $firmwarefat emulate --project $firmwarefat ./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
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
FAT 由 adi0x90 编写,他也是该项目当前维护者及主要贡献者。该项目在 Attify 旗下维护。
FAT 2.0 在 FSL-1.1-ALv2 下提供源代码。更多详情请参阅 LICENSING.md 与 THIRD_PARTY_NOTICES.md。
| 文档 | 内容说明 |
|---|
| INSTALL.md | 外部工具与可选组件设置 |
| docs/commands.md | 完整命令参考,按任务分组 |
| docs/capabilities.md | 图导出、字符串搜索、加密、Edge AI、启动意图、重托管包 |
| docs/epistemics.md | 如何解读 FAT 输出:结果能证明什么、不能证明什么 |
| docs/architecture.md | 工作区 crate 与扩展点 |
| DEVELOPMENT.md | 构建与测试工作流 |
| CONTRIBUTING.md | 环境设置、PR 检查清单与贡献指南 |