Платформа для эмуляции прошивок IoT-устройств в QEMU с целью динамического анализа и пентеста. Автоматически определяет архитектуру (MIPS, ARM, x86), настраивает сеть, запускает веб-интерфейс. Поддерживает 1124+ прошивок роутеров: Netgear, TP-Link, D-Link, ASUS.
git clone --recursive https://github.com/pr0v3rbs/FirmAE cd FirmAE && ./download.sh && ./install.sh sudo ./run.sh -r DLINK -f DIR-815_fw_revB.bin
FirmAE — это полностью автоматизированный фреймворк для выполнения эмуляции и анализа уязвимостей. FirmAE значительно повышает частоту успешной эмуляции (с 16,28% в Firmadyne до 79,36%) с помощью пяти техник арбитража. Мы тестировали FirmAE на 1124 образах прошивок беспроводных маршрутизаторов и IP-камер от восьми ведущих производителей.
Мы также разработали инструмент динамического анализа для обнаружения уязвимостей нулевого дня (0-day), который выводит информацию о веб-сервисе на основе файловой системы и журналов ядра целевой прошивки. Запустив наш инструмент на успешно эмулированных образах прошивок, мы обнаружили 12 новых уязвимостей нулевого дня, затрагивающих 23 устройства.
Обратите внимание, что мы тестировали FirmAE на Ubuntu 20.04.
FirmAE.$ git clone --recursive https://github.com/pr0v3rbs/FirmAE
download.sh.$ ./download.sh
install.sh.$ ./install.sh
init.sh.$ ./init.sh
$ wget https://github.com/pr0v3rbs/FirmAE/releases/download/v1.0/DIR-868L_fw_revB_2-05b02_eu_multi_20161117.zip
$ sudo ./run.sh -c <brand> <firmware>
Анализ целевой прошивки
Режим анализа использует анализатор FirmAE.
$ sudo ./run.sh -a <brand> <firmware>
$ sudo ./run.sh -r <brand> <firmware>
После завершения run.sh -c.
Полезна при проверке доступности эмулированной прошивки в сети.
* Поддерживает соединения socat, обратные оболочки nc (порт 31337) и соединения telnet (порт 31338).
* Настройка выполняется автоматически.
$ sudo ./run.sh -d <brand> <firmware>
$ sudo ./run.sh -b <brand> <firmware>
Проверьте переменные окружения для пяти видов арбитража в файле firmae.config.
$ head firmae.config
#!/bin/sh
FIRMAE_BOOT=true
FIRMAE_NETWORK=true
FIRMAE_NVRAM=true
FIRMAE_KERNEL=true
FIRMAE_ETC=true
if (${FIRMAE_ETC}); then
TIMEOUT=240
Сначала подготовьте образ Docker.
$ ./docker-init.sh
Затем выполните одну из команд ниже. Флаг -ec проверяет только эмуляцию, а -ea проверяет эмуляцию и анализирует уязвимости.
$ ./docker-helper.py -ec <brand> <firmware>
$ ./docker-helper.py -ea <brand> <firmware>
Здесь <firmware> может быть текстовым файлом, содержащим пути к образам прошивок.
Посмотрите пример файла: ./examples/test.list.
После успешной эмуляции образа прошивки.
$ ./docker-helper.py -ed <firmware>
Электронная таблица Google — просмотр
Диск Google — загрузка
Этот исследовательский проект был проведен в SysSec Lab в KAIST. * Mingeun Kim * Dongkwan Kim * Eunsoo Kim * Suryeon Kim * Yeongjin Jang * Yongdae Kim
Мы будем признательны, если вы сочтете возможным сослаться на нашу работу при использовании FirmAE.
@inproceedings{kim:2020:firmae,
author = {Mingeun Kim and Dongkwan Kim and Eunsoo Kim and Suryeon Kim and Yeongjin Jang and Yongdae Kim},
title = {{FirmAE}: Towards Large-Scale Emulation of IoT Firmware for Dynamic Analysis},
booktitle = {Annual Computer Security Applications Conference (ACSAC)},
year = 2020,
month = dec,
address = {Online}
}