
firmware-analysis-toolkit v2.0.0-alpha.1
Plataforma de pesquisa de segurança de firmware que combina análise binária, rastreamento de taint e emulação em IoT, IA de borda, dispositivos móveis e robótica.
FAT — Firmware Analysis Toolkit
Baixe a versão mais recente · Changelog · Instalação
O Firmware Analysis Toolkit é um toolkit de pesquisa em segurança para investigar a segurança de firmware em IoT, Physical AI, Dispositivos Móveis e Robótica. Ele foi construído principalmente para o treinamento "Offensive IoT Exploitation" conduzido pela Attify.
Ele foi construído com base em experiência prática real de campo sobre o que realmente importa quando se trata de investigações reais de segurança de firmware que importam.
O objetivo do FAT não é apenas construir um toolkit excepcional de classe mundial e de ponta para Pesquisa em Segurança de Firmware, mas também formar profissionais e praticantes que atuam em seu auge, onde a ferramenta se torna um superpoder cognitivo se usada de certas maneiras, sendo ao mesmo tempo fácil o suficiente para ser usada por aqueles que são novos na área.
Alguns dos recursos incluem classificar firmware desconhecido, extrair sistemas de arquivos, mapear código relevante para confiança, rastrear taint e coordenar emulação QEMU.
O que o FAT pode analisar
- Blobs e diretórios desconhecidos: containers, membros comprimidos, regiões de alta entropia, sinais de MCU e arquivos candidatos a firmware
- Imagens de firmware: cabeçalhos, envelopes de atualização, partições, bootloaders e diferenças entre imagens
- Sistemas de arquivos Linux extraídos: inventário, intenção de inicialização, binários que carregam confiança, material criptográfico e evidências em strings
- Binários ELF: imports, exports, tabelas de handlers, sinks de código stripped, descompilação e taint de source-to-sink
- Imagens bare-metal e MCU: tabelas de vetores, mapas de memória, dicas de periféricos, autoridade de escrita em flash e evidências de handoff de boot
- Artefatos de Edge AI: arquivos MAGIK/JZDL, TFLite, ONNX e Qualcomm DLC, além de runtimes de inferência visíveis
- Aplicações Android: inventário de APK, pistas de descoberta, localidade, cadeias de capacidade e limites de handoff
- Repositórios de código-fonte: consultas de invariantes, orientação de patches e buscas por variantes próximas
Início rápido
Baixe um pacote binário em Releases, ou compile a versão regular mais recente com Rust 1.90 ou superior:
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
No Arch Linux ou Omarchy, comece com os passos de instalação no Arch para pacotes de pré-requisitos e ferramentas opcionais.
Instalador One-Shot para hosts suportados:
./scripts/install.sh --install-system-deps
Consulte INSTALL.md para opções do instalador e ferramentas opcionais.
Referência rápida de comandos
- Ajuda :
fat -h - Identificar um firmware:
fat $firmwareoufat identify --file $firmware - Novo Projeto :
fat new $firmware - Extrair sistema de arquivos :
fat extract $firmware - Analisar :
fat analyze $firmware - Emulação :
fat emulate --project $firmware
Primeiro contato com um arquivo desconhecido
fat ./firmware.bin
fat inspect update --file ./firmware.bin --rootfs ./rootfs --reference ./older.bin
fat ./firmware.bin é um atalho para fat identify --file ./firmware.bin.
Ele fornece uma visão geral compacta da identidade e estrutura do arquivo.
Adicione --details para tabelas de suporte.
Para imagens MCU brutas, inspecione o mapeamento, inicialização, interrupções e hardware:
fat inspect mcu --file ./firmware.bin
fat inspect mcu --file ./firmware.bin --details
Ambos os comandos suportam --json para o relatório completo de análise estruturada.
Da Imagem ao Runtime
O pipeline do Início rápido, de ponta a ponta:
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
Triagem de binários e fluxo de dados
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
Fluxo de dados em shell script
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
Binários stripped
Encontre sinks estaticamente, depois prepare hooks de runtime para os mesmos endereços:
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
Varredura de evidências em todo o sistema de arquivos
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
Consulta de invariantes com base no código-fonte
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
Segurança
- A emulação executa código de fornecedor não confiável.
- Revise o SECURITY.md antes de processar imagens não confiáveis ou expor um serviço emulado a uma rede.
- É sua responsabilidade ter autorização para os alvos nos quais você trabalha.