- •От издательства
- •О техническом обозревателе
- •О соавторах
- •Об авторах
- •Вступительное слово
- •Благодарности
- •Предисловие
- •Почему важна защита интернета вещей?
- •Чем защита интернета вещей отличается от традиционной ИТ-защиты?
- •Законы хакинга интернета вещей
- •Заключение
- •Моделирование угроз для интернета вещей
- •Схема моделирования угроз
- •Определение архитектуры
- •Разбивка архитектуры на компоненты
- •Выявление угроз
- •Использование деревьев атак для обнаружения угроз
- •Распространенные угрозы интернета вещей
- •Атаки с подавлением сигнала
- •Атаки с воспроизведением
- •Атаки со взломом настроек
- •Клонирование узла
- •Заключение
- •Пассивная разведка
- •Физический или аппаратный уровень
- •Периферийные интерфейсы
- •Среда загрузки
- •Блокировки
- •Предотвращение и обнаружение несанкционированного доступа
- •Прошивка
- •Интерфейсы отладки
- •Физическая устойчивость
- •Разведка
- •Атаки на сетевой протокол и службы
- •Тестирование беспроводного протокола
- •Оценка веб-приложений
- •Картирование приложений
- •Элементы управления на стороне клиента
- •Аутентификация
- •Управление сеансом
- •Проверка ввода
- •Логические ошибки
- •Сервер приложений
- •Исследование конфигурации хоста
- •Учетные записи пользователей
- •Привилегии учетной записи
- •Уровни патчей
- •Удаленное обслуживание
- •Управление доступом к файловой системе
- •Шифрование данных
- •Неверная конфигурация сервера
- •Мобильное приложение и облачное тестирование
- •Заключение
- •4. Оценка сети
- •Переход в сеть IoT
- •VLAN и сетевые коммутаторы
- •Спуфинг коммутатора
- •Двойное тегирование
- •Имитация устройств VoIP
- •Идентификация устройств IoT в сети
- •Обнаружение паролей службами снятия отпечатков
- •Атаки MQTT
- •Настройка тестовой среды
- •Написание модуля MQTT Authentication-Cracking в Ncrack
- •Тестирование модуля Ncrack на соответствие MQTT
- •Заключение
- •5. Анализ сетевых протоколов
- •Проверка сетевых протоколов
- •Сбор информации
- •Анализ
- •Создание прототипов и разработка инструментов
- •Работа с Lua
- •Общие сведения о протоколе DICOM
- •Генерация трафика DICOM
- •Включение Lua в Wireshark
- •Определение диссектора
- •Определение основной функции диссектора
- •Завершение диссектора
- •Создание диссектора C-ECHO
- •Начальная загрузка данных функции диссектора
- •Анализ полей переменной длины
- •Тестирование диссектора
- •Разработка сканера служб DICOM для механизма сценариев Nmap
- •Написание библиотеки сценариев Nmap для DICOM
- •Коды и константы DICOM
- •Написание функций создания и уничтожения сокетов
- •Создание заголовков пакетов DICOM
- •Написание запросов контекстов сообщений A-ASSOCIATE
- •Чтение аргументов скрипта в движке сценариев Nmap
- •Определение структуры запроса A-ASSOCIATE
- •Анализ ответов A-ASSOCIATE
- •Создание окончательного сценария
- •Заключение
- •6. Использование сети с нулевой конфигурацией
- •Использование UPnP
- •Стек UPnP
- •Распространенные уязвимости UPnP
- •Злоупотребление UPnP через интерфейсы WAN
- •Другие атаки UPnP
- •Использование mDNS и DNS-SD
- •Как работает mDNS
- •Как работает DNS-SD
- •Проведение разведки с помощью mDNS и DNS-SD
- •Злоупотребление на этапе проверки mDNS
- •Атаки «человек посередине» на mDNS и DNS-SD
- •Использование WS-Discovery
- •Как работает WS-Discovery
- •Подделка камер в вашей сети
- •Создание атак WS-Discovery
- •Заключение
- •UART
- •Аппаратные средства для связи с UART
- •Как найти порты UART
- •Определение скорости передачи UART
- •JTAG и SWD
- •JTAG
- •Как работает SWD
- •Аппаратные средства для взаимодействия с JTAG и SWD
- •Идентификация контактов JTAG
- •Взлом устройства с помощью UART и SWD
- •Целевое устройство STM32F103C8T6 (Black Pill)
- •Настройка среды отладки
- •Кодирование целевой программы на Arduino
- •Отладка целевого устройства
- •Заключение
- •Как работает SPI
- •Как работает I2C
- •Настройка архитектуры шины I2C типа «контроллер–периферия»
- •Заключение
- •9. Взлом прошивки
- •Прошивка и операционные системы
- •Получение доступа к микропрограмме
- •Взлом маршрутизатора Wi-Fi
- •Извлечение файловой системы
- •Статический анализ содержимого файловой системы
- •Эмуляция прошивки
- •Динамический анализ
- •Внедрение бэкдора в прошивку
- •Нацеливание на механизмы обновления микропрограмм
- •Компиляция и установка
- •Код клиента
- •Запуск службы обновления
- •Уязвимости служб обновления микропрограмм
- •Заключение
- •10. Радио ближнего действия: взлом rFID
- •Радиочастотные диапазоны
- •Пассивные и активные технологии RFID
- •Структура меток RFID
- •Низкочастотные метки RFID
- •Высокочастотные RFID-метки
- •Настройка Proxmark3
- •Обновление Proxmark3
- •Клонирование низкочастотных меток
- •Клонирование высокочастотных меток
- •Имитация RFID-метки
- •Изменение содержимого RFID-меток
- •Команды RAW для небрендированных или некоммерческих RFID-тегов
- •Подслушивание обмена данными между меткой и считывателем
- •Извлечение ключа сектора из перехваченного трафика
- •Атака путем подделки RFID
- •Автоматизация RFID-атак с помощью механизма скриптов Proxmark3
- •Пользовательские сценарии использования RFID-фаззинга
- •Заключение
- •11. Bluetooth Low Energy (BLE)
- •Как работает BLE
- •Необходимое оборудование BLE
- •BlueZ
- •Настройка интерфейсов BLE
- •Обнаружение устройств и перечисление характеристик
- •GATTTool
- •Bettercap
- •Взлом BLE
- •Настройка BLE CTF Infinity
- •Приступаем к работе
- •Заключение
- •12. Радиоканалы средней дальности: взлом Wi-Fi
- •Как работает Wi-Fi
- •Атаки Wi-Fi на беспроводные клиенты
- •Деаутентификация и атаки «отказ в обслуживании»
- •Атаки на Wi-Fi путем подключения
- •Wi-Fi Direct
- •Атаки на точки доступа Wi-Fi
- •Взлом WPA/WPA2
- •Взлом WPA/WPA2 Enterprise для сбора учетных данных
- •Методология тестирования
- •Заключение
- •13. Радио дальнего действия: LPWAN
- •Захват трафика LoRa
- •Настройка платы разработки Heltec LoRa 32
- •Настройка LoStik
- •Превращаем USB-устройство CatWAN в сниффер LoRa
- •Декодирование протокола LoRaWAN
- •Формат пакета LoRaWAN
- •Присоединение к сетям LoRaWAN
- •Атаки на LoRaWAN
- •Атаки с заменой битов
- •Генерация ключей и управление ими
- •Атаки воспроизведения
- •Подслушивание
- •Подмена ACK
- •Атаки, специфичные для приложений
- •Заключение
- •14. Взлом мобильных приложений
- •Разбивка архитектуры на компоненты
- •Выявление угроз
- •Защита данных и зашифрованная файловая система
- •Подписи приложений
- •Аутентификация пользователя
- •Управление изолированными аппаратными компонентами и ключами
- •Проверенная и безопасная загрузка
- •Анализ приложений iOS
- •Подготовка среды тестирования
- •Статический анализ
- •Динамический анализ
- •Атаки путем инъекции
- •Хранилище связки ключей
- •Реверс-инжиниринг двоичного кода
- •Перехват и изучение сетевого трафика
- •Анализ приложений Android
- •Подготовка тестовой среды
- •Извлечение файла APK
- •Статический анализ
- •Обратная конвертация двоичных исполняемых файлов
- •Динамический анализ
- •Перехват и анализ сетевого трафика
- •Утечки по побочным каналам
- •Заключение
- •15. Взлом умного дома
- •Физический доступ в здание
- •Клонирование RFID-метки умного дверного замка
- •Глушение беспроводной сигнализации
- •Воспроизведение потока с IP-камеры
- •Общие сведения о протоколах потоковой передачи
- •Анализ сетевого трафика IP-камеры
- •Извлечение видеопотока
- •Атака на умную беговую дорожку
- •Перехват управления интеллектуальной беговой дорожкой на базе Android
- •Заключение
- •Инструменты для взлома интернета вещей
- •Предметный указатель
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
|
X |
|
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
|||
|
|
F |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
t |
|
||
|
P |
D |
|
|
|
|
|
|
|
|
o |
|
|
|
|
|
|
NOW! |
r |
||||||
|
|
|
|
|
|
BUY |
|
|
||||
Автоматизация анализа прошивки |
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
w |
|
|
|
|
|
|
|
|
|
m |
||
w Click |
|
|
|
|
|
|
o |
|||||
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
|
p |
df |
|
|
|
|
e |
|
||
|
|
|
|
|
|
g |
|
|
|
|||
|
|
|
|
|
|
n |
|
|
|
|
||
|
|
|
|
|
-x cha |
|
|
|
|
|
||
ИнструментFirmwalkerможетавтоматизироватьпроцесссбораиана- |
|
|
|
|
|
|
|
лиза информации,описанный выше.Установите инструмент с https:// github.com/craigz28/firmwalker/, а затем запустите:
$ git clone https://github.com/craigz28/firmwalker $ cd firmwalker
$ ./firmwalker.sh ../d6000/_D6000-V1.0.0.41_1.0.1.bin.extracted/squashfs-root/
***Firmware Directory***
../d6000/_D6000-V1.0.0.41_1.0.1.bin.extracted/squashfs-root/
***Search for password files***
##################################### passwd /usr/etc/passwd
/usr/bin/passwd
##################################### shadow
##################################### *.psk
***Search for Unix-MD5 hashes***
***Search for SSL related files***
##################################### *.crt /usr/etc/802_1X/Certificates/client.crt
##################################### *.pem /usr/etc/key.pem /usr/etc/802_1X/CA/cacert.pem /usr/etc/cert.pem
…
/usr/etc/802_1X/PKEY/client.key
…
##################################### *.cfg
…
/userfs/romfile.cfg
…
Firmwalker автоматически обнаружил не только файлы, которые мы идентифицировали вручную, но и другие, которые также выгля- дят подозрительно. Изучать эти новые файлы мы предоставим вам самостоятельно – в качестве тренировки.
Netgear исправил уязвимость, вызванную жестко заданными учет- ными данными в последней прошивке,и опубликовал рекомендации в бюллетене по безопасности (https://kb.netgear.com/30560/CVE-2015- 8288-Use-of-Hard-coded-Cryptographic-Key/), который информирует кли-
ентов об этой проблеме.
Эмуляция прошивки
В этом разделе мы покажем вам, как эмулировать прошивку. Сделав это, мы сможем выполнять тесты динамического анализа, которые возможны только при нормальной работе микропрограммы. Задей- ствуем два метода эмуляции: двоичную, с использованием Quick
Взлом прошивки 255
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
X |
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
||
|
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|||
P |
|
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
Emulator (QEMU), и полную эмуляцию микропрограммы с ипользо- |
|
|
|
to |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
m |
||
w Click |
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
df-x chan |
|
o |
|
|||||
ванием FIRMADYNE. QEMU – это эмулятор и анализатор компьютера |
. |
.c |
|
||||||||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
с открытым исходным кодом, который работает с несколькими опе- рационными системами и программами; FIRMADYNE (https://github. com/firmadyne/firmadyne/) – платформа для автоматизации эмуляция и динамического анализа микропрограмм на базе Linux.
Двоичная эмуляция
Эмуляцияотдельногодвоичногофайлавмикропрограммномобеспе- чении – это быстрый способ вывести соответствующую бизнес-логи- ку и динамически анализировать предоставленную функциональ- ность на предмет уязвимостей. Этот подход также позволяет вам использоватьспециализированныеинструменты бинарногоанализа, дизассемблеры и фреймворки, которые вы обычно не можете уста- новить в средах с ограниченными ресурсами. Эти среды включают встроенные системы или те, которые недостаточно мощны для ис- пользования с большими и сложными вычислительными нагрузка- ми, например полным микропрограммным обеспечением устрой- ства. К сожалению, вы не сможете эмулировать двоичные файлы, которые имеют специальные требования к оборудованию и ищут определенные последовательные порты или кнопки устройства.Кро- ме того, могут возникнуть проблемы с эмуляцией двоичных файлов, зависящихотразделяемыхбиблиотек,которыезагружаютсявовремя выполнения,или тех,которые для успешной работы должны взаимо- действовать с другими двоичными файлами платформы.
Чтобы эмулировать отдельный двоичный файл, сначала нужно определить порядок байтов в нем и архитектуру ЦП, для которой он был скомпилирован. Вы можете найти основные двоичные фай- лы в дистрибутивах Linux в папке bin и перечислить их с помощью команды ls, предустановленной в Kali Linux:
$ ls -l ./squashfs-root/bin/ |
|
|
|
|
||
total 492 |
|
|
|
|
|
|
lrwxrwxrwx 1 root |
root |
7 |
Jan 24 |
2015 |
ash -> busybox |
|
-rwxr-xr-x 1 root |
root 502012 Jan 24 |
2015 |
busybox |
|||
lrwxrwxrwx 1 root |
root |
7 |
Jan 24 |
2015 |
cat -> busybox |
|
lrwxrwxrwx 1 |
root |
root |
7 |
Jan 24 |
2015 |
chmod -> busybox |
… |
|
|
|
|
|
|
lrwxrwxrwx 1 |
root |
root |
7 |
Jan 24 |
2015 |
zcat -> busybox |
|
|
|
|
|
|
|
Параметр -l отображает дополнительную информацию о файлах, включая пути символических ссылок (ссылок на другие файлы или каталоги). Как вы видите, все двоичные файлы в каталоге являются символическими ссылками на исполняемый файл busybox. В ограни- ченныхсредах,такихкаквстроенныесистемы,частоестьтолькоодин двоичный файл под названием busybox. Этот двоичный файл выпол- няет задачи, аналогичные задачам исполняемых файлов операцион- ной системы Unix,но используетменьше ресурсов.Злоумышленники
256 Глава 9
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
X |
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
||
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
успешно атаковали ранние версии busybox, но в последних версиях |
|
|
|
|
|
m |
|||||
|
w Click |
|
|
|
|
|
|
||||
|
w |
|
|
|
|
|
|
|
|
|
|
выявленные уязвимости были устранены. |
|
w |
|
df-x chan |
|
o |
|
||||
|
. |
.c |
|
||||||||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
Чтобы увидеть формат файла исполняемого файла busybox, ис- пользуйте команду file:
$ file ./squashfs-root/bin/busybox
./squashfs-root/bin/busybox: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
Формат исполняемого файла соответствует архитектуре ЦП MIPS, которая очень распространена в простых встроенных устройствах. Метка MSB в выходных данных указывает, что исполняемый файл использует обратный порядок байтов (в отличие от вывода, содержа- щего метку LSB, что указывает на прямой порядок байтов).
Теперь мы можем эмулировать исполняемый файл busybox с по мощью QEMU.Установите его с помощью apt-get:
$ sudo apt-get install qemu qemu-user qemu-user-static qemu-system-arm qemusystemmips qemu-system-x86 qemu-utils
Поскольку исполняемые файлы скомпилированы для MIPS и ис- пользуют обратный порядок байтов, мы будем использовать эмуля- тор QEMU qemu-mips.Чтобы эмулироватьисполняемые файлы с пря- мым порядком байтов, нам нужно выбрать эмулятор, имя которого оканчивается на el, в данном случае qemu-mipsel:
$ qemu-mips -L ./squashfs-root/ ./squashfs-root/bin/zcat
zcat: compressed data not read from terminal. Use -f to force it.
Оставшуюся часть динамического анализа можно выполнить с по мощьюфаззинга,отладкиилидажесимвольноговыполнения.Вымо- жете узнать больше об этих методах в книге Денниса Андриеса Prac- tical Binary Analysis (No Starch Press, 2018).
Полная эмуляция микропрограммы
Дляэмуляциивсеймикропрограммывместоодногодвоичногофайла вы можете использовать приложение с открытым исходным кодом под названием FIRMADYNE. Оно основано на QEMU и предназначе- но для автоматического конфигурирования среды QEMU и хост-си- стемы за вас, что упрощает эмуляцию. Но обратите внимание, что FIRMADYNE не всегда полностью стабилен,особенно когда прошивка взаимодействует с очень специализированными аппаратными ком- понентами, такими как кнопки устройства или микросхемы защи- щенного анклава. Эти части эмулируемой прошивки могут работать некорректно.
Взлом прошивки 257
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
X |
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
||
|
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|||
P |
|
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
Перед тем как использовать FIRMADYNE, необходимо подготовить |
|
|
|
to |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
m |
||
w Click |
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
df-x chan |
|
o |
|
|||||
среду.Следующиекомандыустановятпакеты,необходимыедлярабо- |
. |
.c |
|
||||||||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
ты этого инструмента,и клонируют его репозиторий в нашу систему:
$ sudo apt-get install busybox-static fakeroot git dmsetup kpartx netcat-openbsd nmap pythonpsycopg2 python3-psycopg2 snmp uml-utilities util-linux vlan
$ git clone --recursive https://github.com/firmadyne/firmadyne.git
На этом этапе в вашей системе должна быть папка firmadyne. Что- бы быстро настроить инструмент, перейдите в каталог инструмента и запустите ./setup.sh. В качестве альтернативы можно настроить его вручную, следуя инструкциям, приведенным здесь. Следуя указани- ям, вы сможете выбрать подходящие менеджеры пакетов и инстру- менты для вашей системы.
Также потребуется установить базу данных PostgreSQL для хране- ния информации,используемой для эмуляции.Создайте пользовате- ля FIRMADYNE с помощью флага -P. В этом примере мы используем в качестве пароля слово firmadyne, как рекомендовано авторами ин- струмента:
$ sudo apt-get install postgresql $ sudo service postgresql start
$ sudo -u postgres createuser -P firmadyne
Затем создайте новую базу данных и загрузите ее со схемой базы данных,доступной в папке репозитория firmadyne:
$ sudo -u postgres createdb -O firmadyne firmware
$ sudo -u postgres psql -d firmware < ./firmadyne/database/schema
Теперь, когда база данных настроена, загрузите предварительно созданные двоичные файлы для всех компонентов FIRMADYNE, за- пустив сценарий download.sh, расположенный в папке репозитория. Использование предварительно созданных двоичных файлов значи- тельно сократит общее время установки.
$ cd ./firmadyne; ./download.sh
ЗатемустановитепеременнуюFIMWARE_DIRтак,чтобыонауказы- вала на текущий рабочий репозиторий в файле firmadyne.config, рас- положенном в той же папке. Это изменение позволяет FIRMADYNE находить двоичные файлы в файловой системе Kali Linux.
FIRMWARE_DIR=/home/root/Desktop/firmadyne
…
258 Глава 9
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
В этом примере папка сохраняется на рабочем столе,но вам следу- |
|
|
|
|
|
m |
||||
w Click |
|
|
|
|
|
|
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
ет заменить путь на местоположение папки в вашей системе. Теперьdf-x chan |
.c |
|
||||||||
|
. |
|
|
|
|
|
|
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
e |
|
скопируйте или загрузите микропрограмму для устройства D6000 (см. раздел «Взлом маршрутизатора Wi-Fi») в эту папку:
$ wget http://www.downloads.netgear.com/files/GDC/D6000/D6000_V1.0.0.41_1.0.1_FW.zip
FIRMADYNE включает автоматизированный скрипт Python для извлечения микропрограммы. Но, чтобы использовать скрипт, вы должны сначала установить модуль Python binwalk:
$ git clone https://github.com/ReFirmLabs/binwalk.git $ cd binwalk
$ sudo python setup.py install
Мы используем команду python для инициализации и настройки binwalk. Затем нам нужны еще два пакета Python, которые можно установить с помощью диспетчера пакетов Python pip:
$ sudo -H pip install git+https://github.com/ahupp/python-magic $ sudo -H pip install git+https://github.com/sviehb/Jefferson
Теперь используйте сценарий FIRMADYNE extractor.py для извле- чения микропрограммы из сжатого файла:
$ ./sources/extractor/extractor.py -b Netgear -sql 127.0.0.1 -np -nk "D6000_V1.0.0.41_1.0.1_
FW.zip" images
>> Database Image ID: 1 /home/user/Desktop/firmadyne/D6000_V1.0.0.41_1.0.1_FW.zip >> MD5: 1c4ab13693ba31d259805c7d0976689a
>>Tag: 1
>>Temp: /tmp/tmpX9SmRU
>> Status: Kernel: True, Rootfs: False, Do_Kernel: False, Do_Rootfs: True
>>>> Zip archive data, at least v2.0 to extract, compressed size: 9667454, uncompressed size: 9671530, name: D6000-V1.0.0.41_1.0.1.bin
>> Recursing into archive ...
/tmp/tmpX9SmRU/_D6000_V1.0.0.41_1.0.1_FW.zip.extracted/D6000-V1.0.0.41_1.0.1.bin
>>MD5: 5be7bba89c9e249ebef73576bb1a5c33
>>Tag: 1
>>Temp: /tmp/tmpa3dI1c
>> |
Status: Kernel: True, Rootfs: False, Do_Kernel: False, |
Do_Rootfs: True |
>> |
Recursing into archive ... |
|
>>>>Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 8252568 bytes, 1762 inodes, blocksize: 131072 bytes, created: 2015-01-24 10:52:26
Found Linux filesystem in /tmp/tmpa3dI1c/_D6000-V1.0.0.41_1.0.1.bin.extracted/squashfs- root!
>>Skipping: completed!
>>Cleaning up /tmp/tmpa3dI1c...
Взлом прошивки 259
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
||
|
|
X |
|
|
|
|
|
|
||
|
- |
|
|
|
|
d |
|
|||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
>> Skipping: completed! |
|||||
|
|
|
|
|
||||||
w |
|
|
|
|
||||||
w Click |
|
|
|
|
|
o |
m |
|||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
>>eCleaning up /tmp/tmpX9SmRU... |
|||||
|
|
p |
df |
|
|
|
g |
.c |
|
|
|
|
|
|
|
n |
|
|
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Параметр -b указывает имя, используемое для хранения результа- тов извлечения. Мы решили использовать название производителя микропрограмм. Параметр -sql устанавливает расположение базы данных SQL.Затем мы используем два флага,рекомендованные в до- кументации приложения. Параметр -nk предотвращает извлечение любого ядра Linux, включенного в микропрограмму, что ускоряет процесс. Параметр -np указывает, что никакая параллельная опера- ция не будет выполняться.
Если сценарий завершится успешно, последние строки вывода бу- дут содержать сообщение, указывающее, что обнаружена файловая система Linux . Тег 1 указывает, что извлеченные образы микро- программы находятся в ./images/1.tar.gz.
Используйте сценарий getArch.sh для автоматического определе- ния архитектуры микропрограммы и сохраните его в базе данных
FIRMADYNE:
$ ./scripts/getArch.sh ./images/1.tar.gz
./bin/busybox: mipseb
FIRMADYNE определила формат исполняемого файла mipseb, ко- торый соответствует системам с прямым порядком байтов MIPS. Вы должныбылиожидатьтакогорезультата,потомучтомыполучилитот же результат,когда использовали команду file (см.раздел «Двоичная эмуляция») для анализа заголовка отдельного двоичного файла.
Теперь будем использовать сценарии tar2db.py и makeImage.sh для хранения информации из извлеченного образа в базе данных и соз- дания образа QEMU, который мы можем эмулировать.
$./scripts/tar2db.py -i 1 -f ./images/1.tar.gz $./scripts/makeImage.sh 1
Querying database for architecture... Password for user firmadyne: mipseb
…
Removing /etc/scripts/sys_resetbutton!
----Setting up FIRMADYNE----
----Unmounting QEMU Image----
loop deleted : /dev/loop0
Мы указываем имя тега с параметром -i и местоположение извле- ченной микропрограммы с параметром -f.
Также следует настроить хост-устройство, чтобы оно могло полу- чить доступ к сетевым интерфейсам эмулируемого устройства и вза- имодействовать с ними. Значит, нам нужно настроить адрес IPv4 и правильные сетевые маршруты. Скрипт inferNetwork.sh может ав- томатически определять соответствующие настройки:
260 Глава 9