Torna agli aggiornamenti
New releaseSep 9, 2026

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

Piattaforma di ricerca sulla sicurezza del firmware che combina analisi binaria, tracciamento del taint ed emulazione su IoT, edge AI, dispositivi mobili e robotica.

Condividi

FAT — Firmware Analysis Toolkit

Firmware Analysis Toolkit è un toolkit di ricerca sulla sicurezza progettato per investigare la sicurezza del firmware per IoT, Physical AI, dispositivi mobili e robotica. È stato costruito principalmente per il training "Offensive IoT Exploitation" condotto da Attify.

È stato sviluppato sulla base di esperienza pratica sul campo reale, concentrandosi su ciò che conta davvero nelle indagini reali sulla sicurezza del firmware.

L'obiettivo di FAT non è solo quello di costruire un toolkit eccezionale e all'avanguardia per la ricerca sulla sicurezza del firmware, ma anche di formare professionisti e operatori che lavorino al massimo delle loro capacità, dove lo strumento diventa un superpotere cognitivo se usato in determinati modi, pur rimanendo abbastanza semplice da essere utilizzato da chi è nuovo nel settore.

Alcune delle funzionalità includono la classificazione di firmware sconosciuti, l'estrazione di filesystem, la mappatura del codice rilevante per la fiducia, il tracciamento del taint e il coordinamento dell'emulazione QEMU.

Cosa può analizzare FAT

  • Blob e directory sconosciuti: contenitori, membri compressi, regioni ad alta entropia, segnali MCU e file firmware candidati
  • Immagini firmware: header, envelope di aggiornamento, partizioni, bootloader e differenze tra immagini
  • Filesystem Linux estratti: inventario, intento di avvio, binari che gestiscono dati sensibili, materiale crittografico ed evidenze nelle stringhe
  • Binari ELF: import, export, tabelle di handler, sink in codice strippato, decompilazione e taint source-to-sink
  • Immagini bare-metal e MCU: tabelle dei vettori, mappe di memoria, indizi sulle periferiche, autorità di scrittura flash ed evidenze di handoff di avvio
  • Artefatti Edge AI: file MAGIK/JZDL, TFLite, ONNX e Qualcomm DLC oltre ai runtime di inferenza visibili
  • Applicazioni Android: inventario APK, indizi di discovery, località, catene di capacità e confini di handoff
  • Repository sorgente: query invarianti, indicazioni sulle patch e ricerche di varianti simili

Avvio rapido

Clona il repository, compila con Rust 1.90 o successivo e installa:

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

Installer One-Shot:

./scripts/install.sh --install-system-deps

Fare riferimento a INSTALL.md per ulteriori personalizzazioni del processo di installazione.

Riferimento rapido ai comandi

  • Aiuto: fat -h
  • Identifica un firmware: fat $firmware oppure fat identify --file $firmware
  • Nuovo progetto: fat new $firmware
  • Estrai filesystem: fat extract $firmware
  • Analizza: fat analyze $firmware
  • Emulazione: fat emulate --project $firmware

Primo contatto con un file sconosciuto

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

Dall'immagine al runtime

La pipeline dall'avvio rapido, end-to-end:

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 binario e flusso dei dati

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

Flusso dei dati negli script 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

Binari strippati

Trova i sink in modo statico, quindi prepara hook runtime per gli stessi indirizzi:

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

Analisi delle evidenze a livello di filesystem

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

Query invariante basata sul codice sorgente

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

Sicurezza

  • L'emulazione esegue codice del vendor non attendibile.
  • Rivedere SECURITY.md prima di elaborare immagini non attendibili o esporre un servizio emulato a una rete.
  • È tua responsabilità disporre dell'autorizzazione per i target su cui lavori.

Guide dettagliate

DocumentoCosa contiene?
INSTALL.mdStrumenti esterni e configurazione dei componenti opzionali
docs/commands.mdRiferimento completo ai comandi, raggruppati per attività
docs/capabilities.mdEsportazione grafi, ricerca stringhe, crittografia, Edge AI, intento di avvio, pacchetti di rehosting
docs/epistemics.mdCome interpretare l'output di FAT: cosa i risultati dimostrano e cosa non dimostrano
docs/architecture.mdCrate del workspace e punti di estensione
DEVELOPMENT.mdWorkflow di build e test
CONTRIBUTING.mdConfigurazione, checklist per le PR e guida ai contributi

Maintainer

FAT è stato creato da adi0x90, che ne è anche l'attuale maintainer e principale contributore. Il progetto è mantenuto sotto Attify.

Licenza

FAT 2.0 è disponibile con sorgente aperta sotto FSL-1.1-ALv2. Vedere LICENSING.md e THIRD_PARTY_NOTICES.md per maggiori dettagli.

Categorie