- •От издательства
- •О техническом обозревателе
- •О соавторах
- •Об авторах
- •Вступительное слово
- •Благодарности
- •Предисловие
- •Почему важна защита интернета вещей?
- •Чем защита интернета вещей отличается от традиционной ИТ-защиты?
- •Законы хакинга интернета вещей
- •Заключение
- •Моделирование угроз для интернета вещей
- •Схема моделирования угроз
- •Определение архитектуры
- •Разбивка архитектуры на компоненты
- •Выявление угроз
- •Использование деревьев атак для обнаружения угроз
- •Распространенные угрозы интернета вещей
- •Атаки с подавлением сигнала
- •Атаки с воспроизведением
- •Атаки со взломом настроек
- •Клонирование узла
- •Заключение
- •Пассивная разведка
- •Физический или аппаратный уровень
- •Периферийные интерфейсы
- •Среда загрузки
- •Блокировки
- •Предотвращение и обнаружение несанкционированного доступа
- •Прошивка
- •Интерфейсы отладки
- •Физическая устойчивость
- •Разведка
- •Атаки на сетевой протокол и службы
- •Тестирование беспроводного протокола
- •Оценка веб-приложений
- •Картирование приложений
- •Элементы управления на стороне клиента
- •Аутентификация
- •Управление сеансом
- •Проверка ввода
- •Логические ошибки
- •Сервер приложений
- •Исследование конфигурации хоста
- •Учетные записи пользователей
- •Привилегии учетной записи
- •Уровни патчей
- •Удаленное обслуживание
- •Управление доступом к файловой системе
- •Шифрование данных
- •Неверная конфигурация сервера
- •Мобильное приложение и облачное тестирование
- •Заключение
- •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 |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
мяти ARP) и прокси, который может сохранять дамп двоичных дан- |
|
|
to |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
m |
|||
|
w Click |
|
|
|
|
|
|
||||
|
w |
|
|
|
|
|
|
|
|
|
|
ных в файл. |
|
w |
|
df-x chan |
|
o |
|
||||
|
. |
.c |
|
||||||||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
На многих устройствах также можно выгрузить микропрограмму с помощью начального загрузчика устройства. Доступ к загрузчи- ку обычно осуществляется разными способами – например, через встроенные последовательные порты RS232, с помощью специаль- ных сочетаний клавиш или по сети. Кроме того, в большинстве по- требительских устройств загрузчик запрограммирован так, чтобы разрешать операции чтения и записи флеш-памяти.
Если оборудование содержитоткрытые программные интерфейсы, такие как UART, JTAG и SPI, попробуйте подключиться к этим интер- фейсам напрямую, чтобы прочитать флеш-память. В главах 7 и 8 со- держится подробное объяснение того, как обнаруживать и использо- вать эти интерфейсы.
Последний и самый сложный метод – извлечение микропрограм- мы напрямую из любого чипа флеш-памяти (через SPI, например) или микроконтроллера (MCU).MCU–это чип,установленный на пла- ту устройства, который содержит ЦП, память, тактовый генератор и блок управления. Для извлечения прошивки из микроконтроллера или флеш-памяти вам понадобится программатор микросхем.
Взлом маршрутизатора Wi-Fi
В этом разделе мы нацелимся на прошивку оченьпопулярного марш- рутизатора,Netgear D6000.Сначала извлечем файловую систему про- шивки и найдем в ней учетные данные пользователя. Затем будем эмулировать работу прошивки в маршрутизаторедлядинамического анализа.
Чтобы найти прошивку, перейдите на сайт поставщика и откройте страницу поддержки для модели устройства (https://www.netgear.com/ support/product/D6000.aspx).Вы увидите списокдоступныхдля загрузки микропрограмм и программного обеспечения (рис. 9.2).
Рис.9.2.Страница поддержки Netgear D6000
250 Глава 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 |
|
формате, используйте команду unzip для ее распаковки. Вы можетеdf-x chan |
.c |
|
||||||||
|
. |
|
|
|
|
|
|
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
e |
|
установить unzip с помощью apt-get:
$ mkdir d6000 && cd d6000
$ wget http://www.downloads.netgear.com/files/GDC/D6000/D6000_V1.0.0.41_1.0.1_FW.zip unzip D6000_V1.0.0.41_1.0.1_FW.zip
Команда wget –служебная программа Unix,которая загружаетфай- лы из интернета неинтерактивным способом. Без дополнительных аргументов wget сохранит файл в текущем рабочем каталоге. Затем утилита распаковки создает папку с именем D6000_V1.0.0.41_1.0.1_ FW, содержащую два файла: D6000-V1.0.0.41_1.0.1.bin, который явля- ется микропрограммой устройства, и D6000_V1.0.0.41_1.0.1_Software_ Release_Notes. Html, который содержит примечания поставщика для ручной установки этой прошивки на устройство.
После того как вы приобрели прошивку,можете протестировать ее на предмет проблем с безопасностью.
Извлечение файловой системы
Прошивка для большинства маршрутизаторов потребительского уровня содержит файловую систему устройства в сжатом формате. Иногда микропрограммное обеспечение сжимается несколько раз с использованием различных алгоритмов (таких как LZMA и LZMA2). Давайте извлечем эту файловую систему, смонтируем ее и поищем уязвимости безопасности . Чтобы найти файловую систему в файле прошивки,используйтеbinwalk,которыйпредварительноустановлен в Kali Linux:
$ binwalk -e -M D6000-V1.0.0.41_1.0.1.bin
Параметр -e извлекает из прошивки любой идентифицированный файл, такой как загрузчик и файловая система. Параметр -M рекур- сивно сканирует извлеченные файлы и выполняет анализ сигнатур для определениятипов файлов на основе общих шаблонов.Но будьте осторожны: если binwalk не в состоянии правильно определить типы файлов, он может переполнить ваш жесткий диск. Теперь у вас долж-
на появиться папка с именем _D6000-V1.0.0.41_1.0.1.bin.extracted,
куда записано извлеченное содержимое.
Обратите внимание, что мы использовали binwalk версии 2.1. 2-a0c5315. Некоторые более ранние версии не могли правильно из- влечь файловую систему.Мы рекомендуем вам использовать послед- нюю версию binwalk, которая доступна на GitHub по адресу https:// github.com/ReFirmLabs/binwalk/.
Взлом прошивки 251
|
|
|
|
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 |
|
|
|||
Статический анализ содержимого файловой системы |
w Click |
to |
|
|
|
|
m |
|||||
|
|
|
|
|
||||||||
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
|
|
p |
|
|
|
|
g |
|
|
|
Теперь, когда мы извлекли файловую систему, можно перемещаться |
|
|
df |
|
|
n |
e |
|
||||
|
|
|
|
|
|
-x cha |
|
|
|
|
по файлам и пытаться найти полезную информацию. Хороший под- ход – начать с поиска малоизвестных результатов,таких как учетные данные, хранящиеся в файлах конфигурации, или устаревшие и уяз- вимые версии общих двоичных файлов с общедоступными рекомен- дациями. Найдите любые файлы, называемые passwd или shadow, которыечастосодержатинформациюобовсехучетныхзаписяхполь- зователей в системе, включая пароли пользователей. Вы можете сде- латьэто с помощью обычных утилит,таких как grep или find,которые предустановлены в любой системе Unix:
~/d600/_D6000-V1.0.0.41_1.0.1.bin.extracted$ find . -name passwd
./squashfs-root/usr/bin/passwd
./squashfs-root/usr/etc/passwd
Используя команду ,, мы инструктируем инструмент Find (Найти) вести поиск в текущем рабочем каталоге файла,указанного парамет ром -name. В данном случае мы ищем файл passwd. Как видите, обна- ружились два файла с таким названием.
Двоичный файл bin/passwd не дает нам полезной информации в его текущем виде. Зато файл etc/passwd имеет читаемый формат. Его можно прочитать с помощью утилиты cat:
$ cat ./squashfs-root/usr/etc/passwd admin:$1$$iC.dUsGpxNNJGeOm1dFio/:0:0:root:/:/bin/sh$
Файл etc/passwd содержит текстовую базу данных, где перечисле- ны пользователи, которые могут пройти аутентификацию в системе. В настоящее время существует только одна запись, предназначенная для администратора устройства. Запись имеет следующие поля, раз- деленные двоеточиями: имя пользователя,хеш пароля пользователя, идентификатор пользователя, идентификатор группы, дополнитель- ная информация о пользователе,путь к домашней папке пользовате- ля; программа запускается при входе пользователя в систему. Обра-
тим внимание на хеш пароля ($ 1 $$ iC.dUsGpxNNJGeOm1dFio /).
Взлом учетных данных администратора устройства
Используйте hashid, чтобы определить тип хеша пароля администра- тора. Этот инструмент предустановлен в Kali Linux и может определять более220уникальныхтиповхешейспомощьюрегулярныхвыражений:
$ hashid $1$$iC.dUsGpxNNJGeOm1dFio/
Analyzing '$1$$iC.dUsGpxNNJGeOm1dFio/'
[+]MD5 Crypt
[+]Cisco-IOS(MD5)
[+]FreeBSD MD5
252 Глава 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 |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
||
Согласновыходнымданным,мынашлихештипаMD5Crypt.Теперь |
|
|
|
|
|
m |
|||||||
|
|
w Click |
|
|
|
|
|
|
|
||||
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
можно попытаться взломать этот пароль с помощью инструментаdf-x chan |
.c |
|
|||||||||||
|
|
|
. |
|
|
|
|
|
|
|
|||
|
|
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
|
перебора, например john или hashcat. Эти инструменты циклически |
|
|
|
|
|
|
|||||||
перебирают список потенциальных паролей в поисках того, который |
|
|
|
|
|
|
|||||||
соответствует хешу. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
$ hashcat -a 3 -m 500 ./squashfs-root/usr/etc/passwd |
|
|
|
|
|
|
|
|
|
|
|
||
… |
|
|
|
|
|
|
|
|
|
|
|
|
|
Session..........: hashcat |
|
|
|
|
|
|
|
|
|
|
|
|
|
Status...........: Exhausted |
|
|
|
|
|
|
|
|
|
|
|
|
|
Hash.Type........: md5crypt, MD5 (Unix), Cisco-IOS $1$ (MD5) |
|
|
|
|
|
|
|
|
|
|
|
||
Hash.Target......: $1$$iC.dUsGpxNNJGeOm1dFio/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
Time.Started.....: Sat Jan 11 18:36:43 2020 (7 secs) |
|
|
|
|
|
|
|
|
|
|
|
||
Time.Estimated...: Sat Jan 11 18:36:50 2020 (0 secs) |
|
|
|
|
|
|
|
|
|
|
|
||
Guess.Mask.......: ?1?2?2 [3] |
|
|
|
|
|
|
|
|
|
|
|
|
|
Guess.Charset....: -1 ?l?d?u, -2 ?l?d, -3 ?l?d*!$@_, -4 Undefined |
|
|
|
|
|
|
|
|
|
|
|
||
Guess.Queue......: 3/15 (20.00%) |
|
|
|
|
|
|
|
|
|
|
|
|
|
Speed.#2.........: |
2881 H/s (0.68ms) @ Accel:32 Loops:15 Thr:8 Vec:1 |
|
|
|
|
|
|
|
|
|
|
|
|
Speed.#3.........: |
9165 H/s (1.36ms) @ Accel:32 Loops:15 Thr:64 Vec:1 |
|
|
|
|
|
|
|
|
|
|
|
|
Speed.#*.........: |
12046 H/s |
|
|
|
|
|
|
|
|
|
|
|
|
Recovered........: 0/1 (0.00%) Digests, 0/1 (0.00%) Salts |
|
|
|
|
|
|
|
|
|
|
|
||
Progress.........: 80352/80352 (100.00%) |
|
|
|
|
|
|
|
|
|
|
|
|
|
Rejected.........: 0/80352 (0.00%) |
|
|
|
|
|
|
|
|
|
|
|
|
|
Restore.Point....: 205/1296 (15.82%) |
|
|
|
|
|
|
|
|
|
|
|
|
|
Restore.Sub.#2...: Salt:0 Amplifier:61-62 Iteration:990-1000 |
|
|
|
|
|
|
|
|
|
|
|
||
Restore.Sub.#3...: Salt:0 Amplifier:61-62 Iteration:990-1000 |
|
|
|
|
|
|
|
|
|
|
|
||
Candidates.#2....: Xar -> Xpp |
|
|
|
|
|
|
|
|
|
|
|
|
|
Candidates.#3....: Xww -> Xqx |
|
|
|
|
|
|
|
|
|
|
|
|
|
$1$$iC.dUsGpxNNJGeOm1dFio/:1234 |
[s]tatus [p]ause [b]ypass [c] |
|
|
|
|
|
|
|
|
|
|||
heckpoint [q]uit => |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Параметр -a определяет режим атаки, используемый для подбора паролей в виде открытого текста. Мы выбираем режим 3, чтобы вы- полнить атаку полным перебором. В режиме 0 выполняется атака по списку слов, а в режиме 1 – комбинаторная атака, которая добавляет каждое слово в словаре к каждому слову в другом словаре. Вы также можете выполнить более специализированные атаки с использова- нием режимов 6 и 7.Например,если вы знали,что последний символ в пароле был числом, вы могли настроить инструмент для проверки паролей, заканчивающихся только цифрой.
Параметр-m определяеттипхеша,которыймыпытаемсявзломать, а 500 означает MD5 Crypt. Более подробную информацию о поддер- живаемыхтипах хешей можно найти на веб-странице hashcat (https:// hashcat.net/hashcat/). Мы восстановили пароль 1234. На его подбор ушло меньше минуты!
Поиск учетных данных в файлах конфигурации
Используя подход,аналогичныйтому,который описан в начале этого раздела (когда мы нашли файл passwd), поищем в прошивке другие
Взлом прошивки 253
|
|
|
|
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 |
|
df-x chan |
|
o |
|
|||||
в файлах конфигурации с расширением .cfg. Устройство использует |
. |
.c |
|
||||||||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
эти файлы для настройки исходного состояния службы. Найдем cfg-файлы с помощью команды find:
$ find . -name *cfg
./userfs/profile.cfg
./userfs/romfile.cfg
./boaroot/html/NETGEAR_D6000.cfg
./boaroot/html/romfile.cfg
./boaroot/html/NETGEAR_D6010.cfg
./boaroot/html/NETGEAR_D3610.cfg
./boaroot/html/NETGEAR_D3600.cfg
Затем вы можете просмотреть файлы конфигурации для получе- ния соответствующей информации.Например,в romfile.cfg мы нахо- дим ряд жестко заданных учетных данных пользователя:
$ cat ./squashfs-root/userfs/romfile.cfg
…
<Account>
<Entry0 username="admin" web_passwd="password" console_passwd="password" display_mask="FF FF F7 FF FF FF FF FF FF" old_passwd="password" changed="1" temp_passwd="password" expire_ time="5" firstuse="0" blank_password="0"/>
<Entry1 username="qwertyuiopqwertyuiopqwertyuiopqwertyuiopqwertyuiopqwertyui opqwertyuiopqwertyuiopqwertyuiopqwertyuiopqwertyuiopqwertyuiopqwertyui" web_pas swd="123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678" display_mask="F2 8C 84 8C 8C 8C 8C 8C 8C"/>
<Entry2 username="anonymous" web_passwd="anon@localhost" display_mask="FF FF F7 FF FF FF FF FF FF"/>
</Account>
…
Мы обнаружилитрех новых пользователей с именами admin,qwerty uiopqwertyuiopqwertyuiopqwertyuiopqwertyuiopqwertyuiopqwertyuiopq wertyuiopqwertyuiopqwertyuiopqwertyuiopqwertyuioponymous и anonymous с их соответствующими паролями в виде обычного текста.
Мы уже взломали учетные данные для учетной записи админи- стратора, но восстановленный нами пароль не соответствует ука- занному здесь. Вполне вероятно, что первый найденный нами па- роль будет заменен указанным в файле конфигурации при первой загрузке. Поставщики часто используют файлы конфигурации для внесения изменений, связанных с безопасностью , при инициали- зации устройства. Этот подход также позволяет поставщикам раз- вертывать одну и ту же прошивку на устройствах, которые поддер- живают различные функции и требуют определенных настроек для успешной работы.
254 Глава 9