
firmware-analysis-toolkit v2.0.0-alpha.1
ファームウェアセキュリティ研究プラットフォーム。IoT、エッジAI、モバイルデバイス、ロボティクスを対象に、バイナリ解析、テイントトレーシング、エミュレーションを組み合わせたツールです。
FAT — ファームウェア解析ツールキット
Firmware Analysis Toolkit は、IoT、Physical AI、モバイルデバイス、ロボティクス向けのファームウェアセキュリティ調査のためのセキュリティリサーチツールキットです。主に Attify が実施する "Offensive IoT Exploitation" トレーニング用に構築されています。
実際のファームウェアセキュリティ調査において本当に重要となる事項に関する、実践的な現場経験に基づいて構築されています。
FAT の目標は、ファームウェアセキュリティリサーチのための卓越した世界クラスの最先端ツールキットを構築するだけでなく、特定の方法で使用すればツールが認知的なスーパーパワーとなる一方で、この分野に不慣れな人でも簡単に使用できる、ピーク時に活動する専門家や実践者を育成することでもあります。
機能には、未知のファームウェアの分類、ファイルシステムの抽出、信頼関連コードのマッピング、汚染(テイント)の追跡、QEMU エミュレーションの調整などが含まれます。
FAT が解析できるもの
- 未知のブロブとディレクトリ: コンテナ、圧縮メンバー、高エントロピー領域、MCU シグナル、ファームウェア候補ファイル
- ファームウェアイメージ: ヘッダー、アップデートエンベロープ、パーティション、ブートローダー、イメージ間の差分
- 抽出された Linux ファイルシステム: インベントリ、起動意図、信頼を保持するバイナリ、暗号素材、文字列エビデンス
- ELF バイナリ: インポート、エクスポート、ハンドラテーブル、ストリップ済みコードのシンク、逆コンパイル、ソースからシンクへの汚染追跡
- ベアメタルおよび MCU イメージ: ベクタテーブル、メモリマップ、ペリフェラルヒント、フラッシュ書き込み権限、ブートハンドオフのエビデンス
- Edge 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
シェルスクリプトのデータフロー
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 | ワークスペースクレートと拡張ポイント |
| DEVELOPMENT.md | ビルドとテストのワークフロー |
| CONTRIBUTING.md | セットアップ、PR チェックリスト、コントリビューションガイド |
メンテナー
FAT は adi0x90 によって執筆され、同氏が現在のメンテナー兼主要コントリビューターでもあります。このプロジェクトは Attify のもとで維持されています。
ライセンス
FAT 2.0 は FSL-1.1-ALv2 のもとでソースが利用可能です。詳細については LICENSING.md と THIRD_PARTY_NOTICES.md を参照してください。