
Платформа для исследования безопасности прошивок, объединяющая бинарный анализ, отслеживание потоков данных (taint tracing) и эмуляцию для IoT, периферийного ИИ, мобильных устройств и робототехники.
Скачать последний релиз · Список изменений · Установка
Firmware Analysis Toolkit — это набор инструментов для исследования безопасности прошивок в области IoT, Physical AI, мобильных устройств и робототехники. Он создан в первую очередь для обучения по программе "Offensive IoT Exploitation", проводимого компанией Attify.
Он построен на основе реального практического опыта — того, что действительно важно при проведении настоящих исследований безопасности прошивок.
Цель FAT — не только создать исключительный, передовой набор инструментов мирового класса для исследования безопасности прошивок, но и воспитать профессионалов и практиков, работающих на пике своих возможностей, для которых инструмент становится когнитивной суперсилой при определённом использовании, оставаясь при этом достаточно простым для тех, кто только начинает работать в этой области.
Некоторые из возможностей включают классификацию неизвестных прошивок, извлечение файловых систем, картирование кода, связанного с доверием, отслеживание распространения данных (taint) и координацию эмуляции QEMU.
Скачайте бинарный пакет со страницы Releases или соберите последний регулярный релиз с помощью Rust 1.90 или новее:
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
В Arch Linux или Omarchy начните с шагов установки для Arch для установки необходимых пакетов и дополнительных инструментов.
Установщик «в один клик» для поддерживаемых систем:
./scripts/install.sh --install-system-deps
См. INSTALL.md для опций установщика и дополнительных инструментов.
fat -hfat $firmware или 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 — это сокращение для fat identify --file ./firmware.bin.
Он даёт компактный обзор идентичности и структуры файла.
Добавьте --details для получения вспомогательных таблиц.
Для образов raw MCU исследуйте отображение, запуск, прерывания и аппаратное обеспечение:
fat inspect mcu --file ./firmware.bin
fat inspect mcu --file ./firmware.bin --details
Обе команды поддерживают --json для получения полного структурированного отчёта анализа.
Конвейер из раздела «Быстрый старт», от начала до конца:
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
Найдите приёмники статически, затем подготовьте runtime-хуки для тех же адресов:
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