
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.
Télécharger la dernière version · Journal des modifications · Installation
Firmware Analysis Toolkit est une boîte à outils de recherche en sécurité pour l'analyse de la sécurité des firmwares pour l'IoT, l'IA physique, les appareils mobiles et la robotique. Elle est principalement conçue pour la formation "Offensive IoT Exploitation" dispensée par Attify.
Elle a été construite sur la base d'une expérience pratique réelle de ce qui compte vraiment lorsqu'il s'agit d'enquêtes réelles sur la sécurité des firmwares.
L'objectif de FAT n'est pas seulement de construire une boîte à outils exceptionnelle et de pointe de classe mondiale pour la recherche en sécurité des firmwares, mais aussi de forger des professionnels et des praticiens qui opèrent à leur plein potentiel, 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écouvrent le domaine.
Parmi les fonctionnalités figurent la classification de firmwares inconnus, l'extraction de systèmes de fichiers, la cartographie du code lié à la confiance, le suivi de la propagation (taint), et la coordination de l'émulation QEMU.
Téléchargez un bundle binaire depuis Releases, ou compilez la dernière version régulière avec Rust 1.90 ou plus récent :
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
Sur Arch Linux ou Omarchy, commencez par les étapes d'installation Arch pour les paquets prérequis et les outils optionnels.
Programme d'installation en une seule fois pour les hôtes pris en charge :
./scripts/install.sh --install-system-deps
Consultez INSTALL.md pour les options d'installation et les outils optionnels.
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
fat ./firmware.bin est un raccourci pour fat identify --file ./firmware.bin.
Il donne un aperçu compact de l'identité et de la structure du fichier.
Ajoutez --details pour les tableaux justificatifs.
Pour les images MCU brutes, inspectez le mapping, le démarrage, les interruptions et le matériel :
fat inspect mcu --file ./firmware.bin
fat inspect mcu --file ./firmware.bin --details
Les deux commandes prennent en charge --json pour le rapport d'analyse structuré complet.
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 puits de manière statique, puis préparez les 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