Логотип
Главная | Статьи | Реверс-инжиниринг прошивок через Binwalk и Firmware Analysis Toolkit
Реверс-инжиниринг прошивок через Binwalk и Firmware Analysis Toolkit

Реверс-инжиниринг прошивок через Binwalk и Firmware Analysis Toolkit

5 октября, 2026

43

Реверс-инжиниринг прошивок позволяет разобрать монолитный бинарный блоб до байта, вытащить файловую систему и исследовать встроенное ПО без паяльника и программатора. Связка утилит Binwalk и Firmware Analysis Toolkit автоматизирует распаковку компонентов и поднимает полноценную виртуализированную лабораторию на базе QEMU.

Анатомия бинарного образа прошивки

Большинство образов для роутеров, IP-камер и IoT-устройств представляют собой склейку из заголовка производителя, загрузчика (чаще всего Das U-Boot), сжатого ядра Linux и корневой файловой системы. Простейший способ понять внутреннее устройство файла перед разбором — провести расчет энтропии.

Участки с низкой энтропией указывают на загрузчики, несжатые таблицы символов и текстовые конфиги. Участки с плоской высокой энтропией (значения около 0.9–1.0) соответствуют сжатым блокам (GZIP, LZMA, SquashFS) либо шифрованным данным. Если весь файл выглядит как сплошной монолитный блок с максимальной энтропией без явных перепадов, прошивка зашифрована, и сначала потребуется отыскать ключ в бутлоадере через физический дамп флеш-памяти.

Распаковка файловой системы через Binwalk

Binwalk сканирует бинарник по сигнатурам (magic bytes), определяет смещения заголовков и вырезает вложенные контейнеры. Для автоматической работы используется режим рекурсивного извлечения «матрешка»:

Флаг -M заставляет утилиту рекурсивно парсить все извлеченные архивы, а -e запускает профильные экстракторы (sasquatch, unsquashfs, unlzma, tar). В результате создается каталог _firmware.bin.extracted, внутри которого разворачивается корневая файловая система target-устройства (SquashFS, CramFS, JFFS2 или YAFFS2).

Если вендор модифицировал заголовок файловой системы, стандартный парсер выдаст ошибку. В таком случае срез данных вырезается вручную по смещению:

Статический аудит извлеченного рутфса

После получения структуры каталогов /etc, /bin, /www и /usr начинается фаза быстрого поиска захардкоженных секретов и конфигурационных ошибок.

  • Поиск мастер-паролей и хэшей учетных записей в /etc/passwd и /etc/shadow.
  • Извлечение закрытых RSA-ключей и SSL-сертификатов по маске *.pem, *.key, *.crt.
  • Анализ скриптов инициализации /etc/init.d/ и /etc/rc.local на предмет запуска недокументированных telnet-демонов.
  • Парсинг web-директории (/www, /htdocs) на наличие уязвимых CGI-скриптов и прямого выполнения системных команд.

Быстро вычленить секреты в распакованной папке помогает автоматизированный bash-пайплайн:

Динамическая эмуляция через FAT

Статический анализ дает представление о коде, но для поиска переполнений буфера и проверки логических ошибок требуется живое исполнение бинарников. Платформа FAT (Firmware Analysis Toolkit) автоматизирует запуск ядер Firmadyne под нужную архитектуру (MIPS, ARM, PPC) внутри QEMU, настраивает сетевые мосты и патчит обращения к NVRAM.

Конфигурационный файл fat.config должен указывать актуальный путь к Firmadyne и параметры базы данных PostgreSQL. Сам процесс эмуляции запускается одной командой:

FAT выполняет следующие действия:

  1. Определяет тип архитектуры процессора (MIPS little-endian, ARM big-endian и т. д.).
  2. Создает образ виртуального диска с извлеченной файловой системой.
  3. Пробрасывает системные вызовы NVRAM через предзагрузку библиотеки libnvram.so.
  4. Поднимает сетевой интерфейс и присваивает гостевой системе IP-адрес.

После завершения скрипт выводит IP-адрес сетевого моста (например, 192.168.0.1). С этого момента к веб-интерфейсу и сетевым службам устройства можно обращаться через браузер или терминал хоста точно так же, как к физическому роутеру.

Защита прошивок от анализа

Разработчикам встраиваемых систем необходимо минимизировать поверхность атаки еще на этапе компиляции.

Вектор рискаТиповая уязвимостьМетод защиты
Обновление ПОПодмена бинарникаЦифровая подпись образов через RSA/ECDSA в U-Boot
Секреты в кодеСтатические пароли в /etc/shadowГенерация уникальных учетных данных при первой инициализации
Дамп файловой системыСвободное чтение через BinwalkПолное шифрование rootfs с хранением ключа в Secure Element
Отладка в runtimeФоновый Telnet / UARTОтключение тестовых консолей и закрытие аппаратных интерфейсов JTAG

Внедрение механизма аппаратно доверенной загрузки (Hardware Root of Trust) и зачистка отладочных бинарников снижают вероятность компрометации оборудования даже при физическом доступе исследователя к устройству.