
Plateforme de recherche en sécurité des firmwares combinant analyse binaire, traçage de flux de données (taint tracing) et émulation pour l’IoT, l’IA en périphérie (edge AI), les appareils mobiles et la robotique.
Firmware Analysis Toolkit est une boîte à outils de recherche en sécurité conçue pour étudier la sécurité des firmware pour l'IoT, l'IA Physique, les appareils mobiles et la robotique. Elle est principalement construite pour la formation "Offensive IoT Exploitation" dispensée par Attify.
Elle a été développée sur la base d'une expérience pratique réelle sur le terrain, en se concentrant sur ce qui compte vraiment lors des investigations de sécurité de firmware réelles.
L'objectif de FAT n'est pas seulement de créer une boîte à outils exceptionnelle et de pointe pour la recherche en sécurité des firmware, mais aussi de former des professionnels et des praticiens qui opèrent à leur meilleur niveau, où l'outil devient un superpouvoir cognitif s'il est utilisé de certaines manières, tout en restant suffisamment simple pour être utilisé par ceux qui débutent dans le domaine.
Parmi ses fonctionnalités figurent la classification de firmware inconnus, l'extraction de systèmes de fichiers, la cartographie du code lié à la confiance, le traçage de flux de données (taint) et la coordination de l'émulation QEMU.
Clonez le dépôt, compilez avec Rust 1.90 ou plus récent, puis installez :
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
Installeur en une seule commande :
./scripts/install.sh --install-system-deps
Consultez INSTALL.md pour plus d'options de personnalisation du processus d'installation.
fat -hfat $firmware ou 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
Le pipeline du démarrage rapide, de bout en bout :
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
Trouvez les points de chute de manière statique, puis préparez des hooks d'exécution pour les mêmes adresses :
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
FAT a été créé par adi0x90, qui en est également le mainteneur actuel et le principal contributeur. Le projet est maintenu sous Attify.
FAT 2.0 est disponible en code source sous FSL-1.1-ALv2. Consultez LICENSING.md et THIRD_PARTY_NOTICES.md pour plus de détails.
| Document | Contenu |
|---|
| INSTALL.md | Outils externes et configuration des composants optionnels |
| docs/commands.md | Référence complète des commandes, regroupées par tâche |
| docs/capabilities.md | Export de graphes, recherche de chaînes, crypto, Edge AI, intention de démarrage, packs de ré-hébergement |
| docs/epistemics.md | Comment lire les résultats de FAT : ce que les résultats prouvent et ne prouvent pas |
| docs/architecture.md | Crates de l'espace de travail et points d'extension |
| DEVELOPMENT.md | Workflow de compilation et de test |
| CONTRIBUTING.md | Configuration, liste de contrôle des PR et guide de contribution |