Retour aux mises à jour
New releaseSep 9, 2026

firmware-analysis-toolkit v2.0.0-alpha.1

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.

Partager

FAT — Firmware Analysis Toolkit

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.

Ce que FAT peut analyser

  • Blobs et répertoires inconnus : conteneurs, membres compressés, régions à haute entropie, signaux MCU et fichiers firmware candidats
  • Images firmware : en-têtes, enveloppes de mise à jour, partitions, bootloaders et différences entre images
  • Systèmes de fichiers Linux extraits : inventaire, intention de démarrage, binaires porteurs de confiance, matériel cryptographique et preuves textuelles
  • Binaires ELF : imports, exports, tables de gestionnaires, points de chute de code strippé, décompilation et flux de données source-vers-point-de-chute
  • Images bare-metal et MCU : tables de vecteurs, cartes mémoire, indices périphériques, autorité d'écriture flash et preuves de transfert de démarrage
  • Artefacts Edge AI : fichiers MAGIK/JZDL, TFLite, ONNX et Qualcomm DLC ainsi que les runtimes d'inférence visibles
  • Applications Android : inventaire APK, pistes de découverte, localité, chaînes de capacités et frontières de transfert
  • Dépôts de code source : requêtes d'invariants, conseils de correctifs et recherches de variantes proches

Démarrage rapide

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.

Référence rapide des commandes

  • Aide : fat -h
  • Identifier un firmware : fat $firmware ou fat identify --file $firmware
  • Nouveau projet : fat new $firmware
  • Extraire le système de fichiers : fat extract $firmware
  • Analyser : fat analyze $firmware
  • Émulation : fat emulate --project $firmware

Premier contact avec un fichier inconnu

fat ./firmware.bin
fat inspect update --file ./firmware.bin --rootfs ./rootfs --reference ./older.bin

De l'image à l'exécution

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

Triage binaire et flux de données

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

Flux de données dans les scripts shell

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

Binaires strippés

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

Balayage de preuves à l'échelle du système de fichiers

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

Requête d'invariants basée sur le code source

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

Sécurité

  • L'émulation exécute du code de fournisseur non fiable.
  • Consultez SECURITY.md avant de traiter des images non fiables ou d'exposer un service émulé sur un réseau.
  • Il est de votre responsabilité de disposer de l'autorisation pour les cibles sur lesquelles vous travaillez.

Guides détaillés

DocumentContenu
INSTALL.mdOutils externes et configuration des composants optionnels
docs/commands.mdRéférence complète des commandes, regroupées par tâche
docs/capabilities.mdExport de graphes, recherche de chaînes, crypto, Edge AI, intention de démarrage, packs de ré-hébergement
docs/epistemics.mdComment lire les résultats de FAT : ce que les résultats prouvent et ne prouvent pas
docs/architecture.mdCrates de l'espace de travail et points d'extension
DEVELOPMENT.mdWorkflow de compilation et de test
CONTRIBUTING.mdConfiguration, liste de contrôle des PR et guide de contribution

Mainteneurs

FAT a été créé par adi0x90, qui en est également le mainteneur actuel et le principal contributeur. Le projet est maintenu sous Attify.

Licence

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.

Catégories