
ファームウェアセキュリティ研究プラットフォーム。IoT、エッジAI、モバイルデバイス、ロボティクスを対象に、バイナリ解析、テイントトレーシング、エミュレーションを組み合わせたツールです。
最新リリースをダウンロード · 変更履歴 · インストール
Firmware Analysis Toolkit は、IoT、Physical 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 インストール手順 から始めてください。
サポート対象ホスト向けのワンショットインストーラー:
./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 | ワークスペースクレートと拡張ポイント |
| 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 を参照してください。