
firmware-analysis-toolkit v2.0.0-alpha.1
Firmware-Sicherheitsforschungsplattform, die Binäranalyse, Taint-Tracing und Emulation über IoT, Edge-KI, mobile Geräte und Robotik hinweg kombiniert.
FAT — Firmware Analysis Toolkit
Firmware Analysis Toolkit ist ein Sicherheitsforschungs-Toolkit zur Untersuchung der Firmware-Sicherheit für IoT, Physical AI, Mobile Devices & Robotik. Es wurde in erster Linie für das „Offensive IoT Exploitation“-Training von Attify entwickelt.
Es basiert auf realer praktischer Felderfahrung darüber, was bei echten Firmware-Sicherheitsuntersuchungen wirklich zählt.
FATs Ziel ist es nicht nur, ein außergewöhnliches, weltklasse und hochmodernes Toolkit für die Firmware-Sicherheitsforschung zu entwickeln, sondern auch Fachleute und Praktiker auszubilden, die auf ihrem Höhepunkt arbeiten – wo das Tool bei bestimmter Nutzung zu einer kognitiven Superkraft wird, während es für Neueinsteiger in diesem Bereich dennoch einfach genug zu bedienen ist.
Zu den Funktionen gehören die Klassifizierung unbekannter Firmware, das Extrahieren von Dateisystemen, das Kartieren vertrauensrelevanter Codebereiche, die Taint-Verfolgung sowie die Koordination von QEMU-Emulationen.
Was FAT analysieren kann
- Unbekannte Blobs und Verzeichnisse: Container, komprimierte Mitglieder, Regionen mit hoher Entropie, MCU-Signale und Kandidaten für Firmware-Dateien
- Firmware-Images: Header, Update-Envelopes, Partitionen, Bootloader und Unterschiede zwischen Images
- Extrahierte Linux-Dateisysteme: Inventar, Startabsicht, vertrauenstragende Binärdateien, Kryptomaterial und String-Beweise
- ELF-Binärdateien: Importe, Exporte, Handler-Tabellen, Sinks in gestripptem Code, Dekompilierung und Source-to-Sink-Taint
- Bare-Metal- und MCU-Images: Vektortabellen, Speicherkarten, Peripherie-Hinweise, Flash-Schreibberechtigung und Boot-Übergabe-Beweise
- Edge-AI-Artefakte: MAGIK/JZDL-, TFLite-, ONNX- und Qualcomm-DLC-Dateien sowie sichtbare Inferenz-Laufzeiten
- Android-Anwendungen: APK-Inventar, Discovery-Hinweise, Lokalität, Fähigkeitsketten und Übergabegrenzen
- Quellcode-Repositories: Invarianten-Abfragen, Patch-Anleitungen und Suchen nach ähnlichen Varianten
Schnellstart
Repository klonen, mit Rust 1.90 oder neuer bauen und installieren:
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
Einmal-Installer:
./scripts/install.sh --install-system-deps
Weitere Anpassungsmöglichkeiten beim Installationsprozess finden Sie in INSTALL.md.
Kurze Befehlsübersicht
- Hilfe:
fat -h - Firmware identifizieren:
fat $firmwareoderfat identify --file $firmware - Neues Projekt:
fat new $firmware - Dateisystem extrahieren:
fat extract $firmware - Analysieren:
fat analyze $firmware - Emulation:
fat emulate --project $firmware
Erster Kontakt mit einer unbekannten Datei
fat ./firmware.bin
fat inspect update --file ./firmware.bin --rootfs ./rootfs --reference ./older.bin
Vom Image zur Laufzeit
Die Pipeline vom Schnellstart, Ende zu Ende:
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
Binär-Triage und Datenfluss
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
Datenfluss in Shell-Skripten
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
Gestrippte Binärdateien
Sinks statisch finden und anschließend Laufzeit-Hooks für dieselben Adressen vorbereiten:
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
Dateisystemweite Beweis-Suche
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
Quellcode-gestützte Invarianten-Abfrage
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
Sicherheit
- Die Emulation führt nicht vertrauenswürdigen Herstellercode aus.
- Lesen Sie SECURITY.md, bevor Sie nicht vertrauenswürdige Images verarbeiten oder einen emulierten Dienst einem Netzwerk aussetzen.
- Es liegt in Ihrer Verantwortung, die Genehmigung für die Ziele zu haben, an denen Sie arbeiten.
Ausführliche Anleitungen
| Dokument | Was ist darin enthalten? |
|---|---|
| INSTALL.md | Externe Tools und optionale Komponenteneinrichtung |
| docs/commands.md | Vollständige Befehlsreferenz, nach Aufgabe gruppiert |
| docs/capabilities.md | Graph-Export, String-Suche, Krypto, Edge AI, Startabsicht, Rehosting-Pakete |
| docs/epistemics.md | So lesen Sie FAT-Ausgaben: was Ergebnisse beweisen und was nicht |
| docs/architecture.md | Workspace-Crates und Erweiterungspunkte |
| DEVELOPMENT.md | Build- und Test-Workflow |
| CONTRIBUTING.md | Einrichtung, PR-Checkliste und Beitragsleitfaden |
Maintainer
FAT wurde von adi0x90 verfasst, der auch der aktuelle Maintainer und Hauptbeitragende ist. Das Projekt wird unter Attify gepflegt.
Lizenz
FAT 2.0 ist als Quellcode unter FSL-1.1-ALv2 verfügbar. Weitere Details finden Sie in LICENSING.md und THIRD_PARTY_NOTICES.md.