Гостевая статья Работа с зашифрованной прошивкой роутера

Ранее мы уже писали об исследовании уязвимостей и возможно вы решили попробовать. Вы загрузили прошивку вашего домашнего маршрутизатора с веб-сайта продавца , закинули ее в binwalk, чтобы эмулировать его в QEMU. И затем появился следующий экран ...

Picture1 (1).png

Рис. 1. Binwalk пожимаея плечами, умывает руки и ничего не сообщает.

Что теперь?

В целом, каждая прошивка, не дружащая с binwalk, представляет собой отдельный случай, в результате чего невозможно составить уневрсальное пошаговое руководство по работе со всеми типами зашифрованных прошивок. Эта статья посвящена рассмотрению нескольких распространенных сценариев и предоставлению общего руководства по работе с микропрограммами данног типа. А также приведем пример для расшифровки прошивки D-Link DIR-882.

Оглянись и осмотрись: три распространенных сценария зашифрованных выпусков прошивки

Самый простой способ расшифровки прошивки - поиск процедуры дешифрования внутри прошивки. "Как?" справшиваете вы. Если маршрутизатор может расшифровать новую прошивку для обновления, процедура дешифрования должна быть расположена где-то в старом образе прошивки. Если вы столкнулись с зашифрованной прошивкой, перейдите на веб-сайт поставщика и найдите архивные версии прошивки, загрузите все старые версии и начинайте ковырять.

Ниже приведены три распространенных сценария выпуска прошивки:

Сценарий 1

Микропрограмма устройства не была зашифрована и не содержала никакой процедуры расшифровки, когда она была выпущена на заводе. Процедура дешифрования поставляется вместе с незашифрованной версией прошивки в более новой версии (v1.1) для последующего обновления зашифрованной прошивки. Последующие версии прошивки зашифрованы.

Picture2 (1).png

Рисунок 2: Сценарий(1) выпуска микропрограммы

В этом сценарии мы можем получить процедуру дешифрования из прошивки v1.1 и использовать ее для расшифровки последней версии прошивки 1.2.

Сценарий 2

Оригинальная версия прошивка устройства зашифрована . Поставщик решил изменить схему шифрования и выпустить незашифрованную версию перехода версии 1.2, которая содержит новую процедуру дешифрования.

Picture3 (1).png

Рисунок 3: Сценарий(2) выпуска микропрограммы

Подобно первому сценарию, мы можем получить процедуру расшифровки из образа v1.2 и применить ее к последней зашифрованной прошивке. Чтение примечаний к выпускам микропрограммы может помочь в определении незашифрованной переходной версии. Примечания к выпуску, как правило, ссылаютса на обновление до промежуточной версии перед обновлением на последнюю версию. Промежуточной версией, скорее всего, будет незашифрованная переходная прошивка.


Сценарий 3
Прошивка устройства зашифрована в оригинальной версии. Однако поставщик решил изменить схему шифрования и выпустить незашифрованную переходную версию, которая содержит новую процедуру дешифрования.

Picture4 (1).png

Рисунок 4: Сценарий(3) выпуска микропрограммы

В этом случае нет простого способа получить процедуру расшифровки. Одним из способов является приобретение устройства и извлечение незашифрованной прошивки непосредственно из оборудования. Другой возможный путь - провести дополнительный анализ прошивки в надежде «сломать шифрование».


Сценарий 3: Hex Editor

Быстрая прокрутка прошивки в шестнадцатеричном редакторе может дать нам интуитивное представление о том, с чем мы имеем дело. Просмотр в двоичном режиме; просмотреть его в шестнадцатеричном режиме. Есть ли поля размером 0xFF или 0x00? Есть ли шаблоны в файле? Это однородный blob случайных шестнадцатеричных байтов? В этом случае есть большая вероятность, что прошивка скрыта простым XOR со статическим ключом. Проверьте гистограмму, есть ли шестнадцатеричный байт, который появляется чаще других?

Сценарий 3: сжата, зашифрованна или запутанна?

Энтропия дает важную информацию о прошивке. Раздел прошивки с высокой энтропией предполагает шифрование. Секция байтов с низкой энтропией предполагает низкую случайность, структуры и предсказуемость. это позволяет нам определять, является ли она сжатой, зашифрованной или запутанной. Огромное количество вариантов binwalk может стать полезным в этой стадии анализа.

Теория работающая на практике

Давайте применим наши новые знания к зашифрованному образу прошивки D-Link DIR-882:

Picture5 (1).png

Рисунок 5: binwalk не может ничего определить в образе прошивки

С мы можем скачать все старые прошивки для этого маршрутизатора. Если мы рассмотрим самую раннюю версию прошивки v1.00B07 с binwalk, она правильно обнаружит заголовок uImage и данные сжатия LZMA:
Picture6 (1).png

Рисунок 6: результаты сканирования binwalk для ранней прошивки маршрутизатора DIR-882

После просмотра всех доступных версий образа прошивки мы обнаруживаем, что версия прошивки v1.04B02 является переходной версией и включена в пакет прошивки v1.10B02. Вы также можете рассчитать энтропию образов, чтобы быстро определить, какой из них стал зашифрованым.

Picture7.png

Рисунок 7: результаты binwalk для незашифрованной переходной версии и первой зашифрованной прошивки

Затем мы извлекаем файловую систему из прошивки v1.04B02 с помощью binwalk.

Picture8.png

Рисунок 8: binwalk извлекает корневую файловую систему для прошивки версии 1.04B02

После успешного извлечения мы можем начать исследовать процесс обновления прошивки и определить, как прошивка расшифровывается. К счастью, быстрый просмотр файловой системы нашел многообещающий двоичный файл, названный imgdecryptв в /bin каталоге.

Picture9 (1).png

Рисунок 9: Содержимое каталога / bin для извлеченной файловой системы.

Одна маленькая проблема

У нас есть небольшая проблема различий в архитектуре процессора между хостом и двоичным файлом. К счастью, мы можем выполнить кросс-архитектурную chroot с QEMU. Для этого сначала копируем qemu-mipsel-static двоичный файл в /usr/bin/ каталог корневой файловой системы прошивки. Мы также копируем зашифрованную прошивку в незашифрованную файловую систему прошивки. Наконец, мы делаем chroot в корне прошивки и получаем рабочую оболочку. Отдельное спасибо исследователю, известному как chung96vn, за то, что показали нам эту кросс-архитектурную технику chroot.

Picture10 (1).png

Рисунок 10: Использование QEMU для выполнения кросс-архитектурного chroot и расшифровки прошивки

С работающей оболочкой мы можем запустить imgdecrypt и расшифровать зашифрованную прошивку.

Picture11.png

Рисунок 11: binwalk успешно обнаруживает различные разделы дешифрованной прошивки

Вывод

Вот и оно! Вот что делать с зашифрованной прошивкой. Если вы столкнетесь со сценарием 3, не паникуйте. Потребительские маршрутизаторы часто ограничены в вычислительной мощности. Это ограничение исключает более медленное, сложное для взлома асимметричное шифрование, такое как RSA. Кроме того, поставщики иногда используют одну и ту же схему шифрования для нескольких маршрутизаторов. Фактически, imgdecrypt двоичный файл также может быть использован для расшифровки прошивки для DIR-878 и DIR-867. Ищите маршрутизаторы, которые находятся в той же линейке продуктов, с той же архитектурой процессора. В любом случае, я желаю вам удачи в ваших попытках взлома аппаратного обеспечения и с нетерпением жду ваших сообщений!

Перевод:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!