
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
Lade die neueste Version herunter · Changelog · Installation
Firmware Analysis Toolkit ist ein Toolkit für Sicherheitsforschung zur Untersuchung der Firmware-Sicherheit von IoT, Physical AI, Mobilgeräten und Robotik. Es wurde in erster Linie für die Schulung "Offensive IoT Exploitation" von Attify entwickelt.
Es basiert auf tatsächlicher praktischer Felderfahrung darüber, worauf es bei realen Firmware-Sicherheitsuntersuchungen wirklich ankommt.
Das Ziel von FAT ist nicht nur, ein außergewöhnliches, weltklasse Toolkit für Firmware-Sicherheitsforschung zu entwickeln, sondern auch Fachleute und Praktiker zu formen, die auf ihrem Höchstniveau arbeiten, wobei das Tool zu einer kognitiven Superkraft wird, wenn es auf bestimmte Weise genutzt wird, und gleichzeitig einfach genug ist, um von Einsteigern in diesem Bereich verwendet zu werden.
Zu den Funktionen gehören die Klassifizierung unbekannter Firmware, das Extrahieren von Dateisystemen, das Kartieren vertrauensrelevanter Codebereiche, das Verfolgen von Taint und die Koordination der QEMU-Emulation.
Was FAT analysieren kann
- Unbekannte Blobs und Verzeichnisse: Container, komprimierte Elemente, Bereiche hoher Entropie, MCU-Signale und Kandidaten für Firmware-Dateien
- Firmware-Images: Header, Update-Hüllen, Partitionen, Bootloader und Unterschiede zwischen Images
- Extrahierte Linux-Dateisysteme: Inventar, Startabsicht, vertrauensrelevante Binärdateien, Krypto-Material und String-Beweise
- ELF-Binärdateien: Importe, Exporte, Handler-Tabellen, Senken in gestripptem Code, Dekompilierung und Source-to-Sink-Taint
- Bare-Metal- und MCU-Images: Vektortabellen, Speicherkarten, Peripherie-Hinweise, Flash-Schreibautorität und Boot-Übergabe-Beweise
- Edge-AI-Artefakte: MAGIK/JZDL-, TFLite-, ONNX- und Qualcomm-DLC-Dateien sowie sichtbare Inferenz-Laufzeitumgebungen
- Android-Anwendungen: APK-Inventar, Ermittlungsansätze, Lokalität, Fähigkeitsketten und Übergabegrenzen
- Quellcode-Repositories: Invarianten-Abfragen, Patch-Anleitungen und Suche nach nahen Varianten
Schnellstart
Lade ein Binärpaket von Releases herunter oder baue die neueste reguläre Version mit Rust 1.90 oder neuer:
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
Unter Arch Linux oder Omarchy beginne mit den Arch-Installationsschritten für Voraussetzungspakete und optionale Tools.
One-Shot-Installer für unterstützte Hosts:
./scripts/install.sh --install-system-deps
Siehe INSTALL.md für Installer-Optionen und optionale Tools.
Kurzübersicht der Befehle
- 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
fat ./firmware.bin ist eine Kurzform für fat identify --file ./firmware.bin.
Es liefert eine kompakte Übersicht über die Identität und Struktur der Datei.
Füge --details hinzu, um unterstützende Tabellen zu erhalten.
Für rohe MCU-Images untersuche Mapping, Startvorgang, Interrupts und Hardware:
fat inspect mcu --file ./firmware.bin
fat inspect mcu --file ./firmware.bin --details
Beide Befehle unterstützen --json für den vollständigen strukturierten Analysebericht.
Vom Image zur Laufzeitumgebung
Die Pipeline aus dem Schnellstart, von Anfang bis 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
Finde Senken statisch und bereite dann Laufzeit-Hooks für dieselben Adressen vor:
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 Beweissuche
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
Quellcodegestü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.
- Lies SECURITY.md, bevor du nicht vertrauenswürdige Images verarbeitest oder einen emulierten Dienst in einem Netzwerk bereitstellst.
- Es liegt in deiner Verantwortung, eine Autorisierung für die Ziele zu haben, an denen du arbeitest.