FirmAE

Hardware & Industrial v1.0 · 23.11.2020 не обновлялся >2 лет

Платформа для эмуляции прошивок IoT-устройств в QEMU с целью динамического анализа и пентеста. Автоматически определяет архитектуру (MIPS, ARM, x86), настраивает сеть, запускает веб-интерфейс. Поддерживает 1124+ прошивок роутеров: Netgear, TP-Link, D-Link, ASUS.

v1.0
23.11.2020 current
Добавлен 13.07.2026 · Обновлён 13.07.2026 · Hardware & Industrial
Установка
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 — это полностью автоматизированный фреймворк для выполнения эмуляции и анализа уязвимостей. FirmAE значительно повышает частоту успешной эмуляции (с 16,28% в Firmadyne до 79,36%) с помощью пяти техник арбитража. Мы тестировали FirmAE на 1124 образах прошивок беспроводных маршрутизаторов и IP-камер от восьми ведущих производителей.

Мы также разработали инструмент динамического анализа для обнаружения уязвимостей нулевого дня (0-day), который выводит информацию о веб-сервисе на основе файловой системы и журналов ядра целевой прошивки. Запустив наш инструмент на успешно эмулированных образах прошивок, мы обнаружили 12 новых уязвимостей нулевого дня, затрагивающих 23 устройства.

Установка

Обратите внимание, что мы тестировали FirmAE на Ubuntu 20.04.

  1. Клонируйте FirmAE.
$ git clone --recursive https://github.com/pr0v3rbs/FirmAE
  1. Запустите скрипт download.sh.
$ ./download.sh
  1. Запустите скрипт install.sh.
$ ./install.sh

Использование

  1. Выполните скрипт init.sh.
$ ./init.sh
  1. Подготовьте образ прошивки.
$ wget https://github.com/pr0v3rbs/FirmAE/releases/download/v1.0/DIR-868L_fw_revB_2-05b02_eu_multi_20161117.zip
  1. Проверьте эмуляцию.
$ sudo ./run.sh -c <brand> <firmware>
  1. Анализ целевой прошивки

  2. Режим анализа использует анализатор FirmAE.

$ sudo ./run.sh -a <brand> <firmware>
  • Режим запуска помогает тестировать веб-сервис или выполнять пользовательский анализатор.
$ sudo ./run.sh -r <brand> <firmware>

Отладка

После завершения run.sh -c.

1. Утилита базовой отладки на уровне пользователя.

Полезна при проверке доступности эмулированной прошивки в сети. * Поддерживает соединения socat, обратные оболочки nc (порт 31337) и соединения telnet (порт 31338). * Настройка выполняется автоматически.

$ sudo ./run.sh -d <brand> <firmware>

2. Отладка загрузки на уровне ядра.

$ 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.

$ ./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 — загрузка

CVE

ASUS

Belkin

D-Link

TRENDNet

Авторы

Этот исследовательский проект был проведен в 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}
}
Комментарии
Войдите, чтобы оставить комментарий