Binbloom — Автоматический анализ бинарных прошивок без головной боли
Репозиторий давно не обновлялся
Последнее обновление было 2 года назад.
Когда бинарный файл — это черный ящик
Представьте ситуацию: вам в руки попадает сырой бинарный файл прошивки для встраиваемого устройства. Ни документации, ни исходников — только непонятный набор байтов. Знакомая проблема для тех, кто работает с reverse engineering или анализирует firmware? Именно для таких случаев команда Quarkslab создала binbloom — инструмент, который буквально «расшифровывает» бинарные прошивки.
Что умеет этот анализатор
Binbloom — это консольная утилита на C, которая выполняет три ключевые задачи:
- Определяет адрес загрузки — критически важный параметр для последующего анализа
- Выявляет порядок байт (endianness) — little-endian или big-endian
- Находит UDS базу данных — полезно при работе с автомобильными ECU
Причем делает это автоматически, используя статистические методы и эвристики.
Как это работает на практике
Установка проста — стандартный набор для проектов на C:
git clone https://github.com/quarkslab/binbloom.git
cd binbloom
autoreconf -i
./configure
make
sudo make install
А вот пример анализа 32-битной прошивки:
binbloom firmware.bin
[i] 32-bit architecture selected.
[i] File read (20480 bytes)
[i] Endianness is LE
[i] 6 strings indexed
[i] Found 3 base addresses to test
[i] Base address seems to be 0x60000000 (not sure)
Всего одна команда — и вы уже знаете архитектуру, порядок байт и возможные базовые адреса.
Особые случаи
Для небольших прошивок (<10 КБ) автоматическое определение endianness может давать сбои. В таких случаях можно явно указать порядок байт:
binbloom -e be firmware.bin
А для 64-битных систем просто добавляем флаг -a 64.
Автомобильный кейс: поиск UDS базы
Одна из самых полезных функций — поиск Unified Diagnostic Services database в прошивках автомобильных блоков управления. Выглядит это так:
binbloom -a 32 -e be -b 0x0 firmware.bin
[i] 32-bit architecture selected.
[i] Selected big-endian architecture.
[i] Base address 0x0000000000000000 provided.
[i] 764 strings indexed
Most probable UDS DB is located at @000ee8c8, found 7 different UDS RID
Конечно, результат требует проверки — это эвристика, но инструмент значительно сужает область поиска.
Под капотом
Технически binbloom:
- Написана на C
- Использует многопоточность (
-tдля ускорения) - Имеет экспериментальный «глубокий» режим поиска (
-d) - Поддерживает подробный вывод (
-v)
Кому пригодится
- Инженерам, работающим с встраиваемыми системами
- Специалистам по обратной разработке
- Аналитикам безопасности IoT устройств
- Автомобильным диагностикам
Binbloom — не панацея, но отличный помощник на начальных этапах анализа прошивок. Простота использования сочетается с мощной функциональностью. Если ваша работа связана с бинарными прошивками — определенно стоит попробовать.
Проект с открытым исходным кодом (Apache 2.0), разрабатывается экспертами Quarkslab. Звезды на GitHub (545+) говорят сами за себя — инструмент действительно полезен сообществу.
