固件分析工具包(Firmware Analysis Toolkit)是一款安全研究工具包,用于调查 IoT、物理 AI、移动设备与机器人领域的固件安全。它主要为 Attify 开展的 “Offensive IoT Exploitation” 培训而构建。
它基于真实的实战经验构建,聚焦于真正重要的固件安全调查中真正关键的内容。
FAT 的目标不仅是打造一款卓越的世界级前沿固件安全研究工具包,还要培养处于巅峰状态的专业人员和从业者——在特定使用方式下,该工具会成为认知上的超能力,同时对刚进入该领域的新手也足够易用。
部分功能包括:对未知固件进行分类、提取文件系统、映射与信任相关的代码、追踪污点传播,以及协调 QEMU 仿真。
从 Releases 下载二进制包,或使用 Rust 1.90 或更高版本构建最新的常规发布版:
git clone --branch v2.0.1 --depth 1 https://github.com/attify/firmware-analysis-toolkit.git
cd firmware-analysis-toolkit
cargo build --release --locked
cargo install --path crates/fat_cli --locked
python3 scripts/build-runtime-data-bundle.py --output ./dist/fat-data.zip
fat data install --archive ./dist/fat-data.zip
fat doctor
在 Arch Linux 或 Omarchy 上,请先查看 Arch 安装步骤,了解前置软件包和可选工具。
适用于受支持主机的 One-Shot 安装程序:
./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 ./firmware.bin 是 fat identify --file ./firmware.bin 的简写。
它会给出该文件身份和结构的紧凑概览。
添加 --details 可查看辅助表格。
对于原始 MCU 镜像,检查映射、启动、中断和硬件:
fat inspect mcu --file ./firmware.bin
fat inspect mcu --file ./firmware.bin --details
这两个命令都支持 --json,以输出完整的结构化分析报告。
快速开始中的流水线,端到端如下:
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
| 文档 | 内容 |
|---|---|
| INSTALL.md | 外部工具和可选组件设置 |
| docs/commands.md | 完整命令参考,按任务分组 |
| docs/capabilities.md | 图导出、字符串搜索、加密、边缘 AI、启动意图、重托管包 |
| docs/epistemics.md | 如何解读 FAT 输出:结果能证明什么、不能证明什么 |
| docs/architecture.md | 工作区 crate 和扩展点 |
| DEVELOPMENT.md | 构建和测试工作流 |
| CONTRIBUTING.md | 设置、PR 检查清单和贡献指南 |
| RELEASING.md | 版本命名和维护者发布工作流 |
如果您在研究、出版物或技术报告中使用 FAT,请通过 GitHub 上的 Cite this repository 选项进行引用。请注明所使用的 FAT 版本或提交,以便读者能够识别您结果背后的实现。引用元数据请参阅 CITATION.cff。
FAT 由 adi0x90 编写,他同时也是其当前维护者和主要贡献者。该项目由 Attify 维护。
FAT 2.0 根据 FSL-1.1-ALv2 提供源代码。更多详情请参阅 LICENSING.md 和 THIRD_PARTY_NOTICES.md。