- •От издательства
- •О техническом обозревателе
- •О соавторах
- •Об авторах
- •Вступительное слово
- •Благодарности
- •Предисловие
- •Почему важна защита интернета вещей?
- •Чем защита интернета вещей отличается от традиционной ИТ-защиты?
- •Законы хакинга интернета вещей
- •Заключение
- •Моделирование угроз для интернета вещей
- •Схема моделирования угроз
- •Определение архитектуры
- •Разбивка архитектуры на компоненты
- •Выявление угроз
- •Использование деревьев атак для обнаружения угроз
- •Распространенные угрозы интернета вещей
- •Атаки с подавлением сигнала
- •Атаки с воспроизведением
- •Атаки со взломом настроек
- •Клонирование узла
- •Заключение
- •Пассивная разведка
- •Физический или аппаратный уровень
- •Периферийные интерфейсы
- •Среда загрузки
- •Блокировки
- •Предотвращение и обнаружение несанкционированного доступа
- •Прошивка
- •Интерфейсы отладки
- •Физическая устойчивость
- •Разведка
- •Атаки на сетевой протокол и службы
- •Тестирование беспроводного протокола
- •Оценка веб-приложений
- •Картирование приложений
- •Элементы управления на стороне клиента
- •Аутентификация
- •Управление сеансом
- •Проверка ввода
- •Логические ошибки
- •Сервер приложений
- •Исследование конфигурации хоста
- •Учетные записи пользователей
- •Привилегии учетной записи
- •Уровни патчей
- •Удаленное обслуживание
- •Управление доступом к файловой системе
- •Шифрование данных
- •Неверная конфигурация сервера
- •Мобильное приложение и облачное тестирование
- •Заключение
- •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 |
|
|
|||
цинских устройствах и клинических системах. Тем не менее почти |
|
|
|
to |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
m |
|||
|
w Click |
|
|
|
|
|
|
|||||
|
w |
|
|
|
|
|
|
|
|
|
|
|
никакие инструменты безопасности |
|
w |
|
df-x chan |
|
o |
|
|||||
не поддерживают DICOM, так |
. |
.c |
|
|||||||||
|
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
что эта глава пригодится вам в работе с любым необычным сетевым протоколом, с которым вы можете столкнуться в будущем.
Проверка сетевых протоколов
Когда вы работаете с необычными протоколами, лучше всего анали- зировать их в соответствии с методологией. Следуйте процессу, опи- санному в этом разделе, при оценке безопасности сетевого прото- кола. Мы пытаемся охватить наиболее важные задачи, включая сбор информации,анализ,создание прототипов и проверку безопасности .
Сбор информации
На этапе сбора информации постарайтесь найти все доступные вам соответствующие ресурсы. Но сначала выясните, хорошо ли задоку- ментирован протокол: поищите его официальную и неофициальную документацию.
Перечисление и установка клиентов
Когда у вас появится доступ к документации, найдите все приложе- ния-клиенты,которые могутсвязываться с протоколом,и установите их. Вы можете использовать их для репликации и создания трафика по желанию.Различные клиенты могутреализовыватьпротокол с не- большими вариациями – обратите внимание на эти различия! Так- же проверьте, написали ли программисты реализации протокола на разных языках программирования. Чем больше клиентов и реализа- ций вы найдете,тем выше ваши шансы собрать полную информацию и воспроизвести сетевые сообщения.
Обнаружение зависимых протоколов
Выясните, действительно ли протокол зависит от других протоко- лов.Например,протокол Server Message Block (SMB) обычно работает сNetBiosчерезTCP/IP(NBT).Есливыпишетеновыеинструменты,вам необходимо знать все зависимости протокола, чтобы читать и пони- мать сообщения, а также создавать и отправлять новые. Обязательно выясните, какой транспортный протокол использует ваш протокол. Это TCP или UDP? А может быть, что-то еще – SCTP?
Определение порта протокола
Определите номер порта по умолчанию для протокола и установите, способенли протокол работатьна альтернативных портах.Определе- ние порта по умолчанию и возможность изменения этого порта–по- лезная информация,которую вы будете использовать при написании сканеров или инструментов для сбора информации. Например, сце-
122 Глава 5
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
нарии исследования сети Nmap могут не работать, если мы напишем |
|
|
|
|
|
m |
||||
w Click |
|
|
|
|
|
|
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
некорректное правило, а Wireshark может использовать неправильd-f-x chan |
.c |
|
||||||||
|
. |
|
|
|
|
|
|
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
e |
|
ный анализатор/дешифратор низкого уровня (диссектор). Хотя есть обходные пути для решения этих проблем, лучше с самого начала иметь надежные правила сканирования.
Поиск дополнительной документации
Дляполучениядополнительнойдокументацииилипримеровзахвата посетите веб-сайт Wireshark. Проект Wireshark часто включает в себя захват пакетов и в целом является отличным источником информа-
ции.В проекте используется wiki (https://gitlab.com/wireshark/wireshark/-/ wikis/home/), что позволяет участникам редактировать каждую стра- ницу.
Также обратите внимание, в каких областях отсутствует докумен- тация.Можете ли вы определить функции,которые недостаточно хо- рошо описаны? Отсутствие документации может натолкнуть вас на интересные открытия.
Тестирование диссекторов Wireshark
Проверьте, все ли диссекторы Wireshark правильно работают с ис- пользуемым протоколом. Может ли Wireshark правильно интерпре- тировать и читать все поля в сообщениях протокола?
Для этого сначала проверьте, есть ли в Wireshark анализатор для протокола и включен ли он: нажмите Analyze > Enabled Protocols (Анализировать > Включенные протоколы) – рис. 5.1.
Рис.5.1.Окно включения поддержки протоколов в Wireshark
Анализ сетевых протоколов 123
|
|
|
|
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 |
|
|||||
тесь, что все поля указаны правильно. Диссекторы часто допускают |
. |
.c |
|
||||||||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
ошибки, особенно в том, что касается сложных протоколов. Если вы заметили какие-либо ошибки, обратите на них пристальное внима- ние. Чтобы получить больше идей, просмотрите список Common Vul- nerabilities and Exposures (CVE, известные уязвимости и угрозы), для которого существуют диссекторы Wireshark.
Анализ
На этапе анализа сгенерируйте и воспроизведите трафик, чтобы по- нять,как работает протокол.Цель состоит в том,чтобы получить чет- кое представление об общей структуре протокола,включая еготранс- портный уровень, сообщения и доступные операции.
Получение копии сетевого трафика
В зависимости от типа устройства существуют разные способы полу- чения сетевого трафика, который необходимо анализировать. Неко- торые из них могут поддерживать конфигурации прокси сразу после установки! Определите, нужно ли вам выполнять активный или пас- сивный анализ сетевого трафика. (Вы можете найти несколько при- меровтого,как это сделать,в книге Джеймса Форшоу «Атака сетей на уровне протоколов».) Попробуйте генерировать трафик для каждого доступного варианта использования, причем генерировать как мож- но больше. Наличие разных клиентов поможет вам понять отличия и нюансы в существующих реализациях.
Одним из первых шагов на этапе анализа должны стать отслежи- вание трафика и проверка отправленных и полученных пакетов. Мо- гут возникнуть некоторые очевидные проблемы, поэтому полезно сделать это, прежде чем переходить к активному анализу. Веб-сайт https://gitlab.com/wireshark/wireshark/-/wikis/SampleCaptures/ – отличный ресурс для поиска общедоступных захватов.
Анализ сетевого трафика с помощью Wireshark
ЕсливWiresharkестьдиссектор,которыйможетанализироватьсгене- рированный вамитрафик,включите его,установив флажок напротив его названия в окне Enabled Protocols (Включенные протоколы) –
рис. 5.2.
Теперь попробуйте найти следующее.
zzПервые байты в сообщении. Иногда первые байты в первона- чальном соединении или сообщениях являются магическими: они позволяют быстро идентифицировать службу.
zzПервоначальное соединение. Это важная функция любого протокола.Обычно на этом этапе вы узнаете о версии протокола и поддерживаемых функциях, включая такие функции безопас ности, как шифрование. Повторение этого шага также поможет
124 Глава 5
|
|
|
|
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 |
|
||||
|
. |
.c |
|
||||||||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
zzЛюбые потоки TCP/UDP и общие структуры данных, ис-
пользуемые в протоколе.Иногда вы будете идентифицировать строки в открытом тексте или общие структуры данных, такие как пакеты,длина которых добавляется к началу сообщения.
zzПорядок байтов в протоколе. Некоторые протоколы использу- ют смешанный порядок следования байтов, что может вызвать проблемы, если не будет выявлено на ранней стадии. Порядок байтов сильно отличается от протокола к протоколу,но он необ- ходим для создания правильных пакетов.
zzСтруктура сообщений. Определите различные заголовки и структуры сообщений, а также способы инициализации и за- крытия соединения.
Рис.5.2.Отключенный анализатор протокола в окне Enabled Protocols в Wireshark
Создание прототипов и разработка инструментов
Послеанализапротоколавыможетеприступитьксозданиюпрототипа или преобразованию заметок, собранных вами в результате анализа, в реальное программное обеспечение, которое вы можете использо- вать для связи со службой по протоколу. Прототип позволит вам удо- стовериться, что вы правильно поняли структуру пакета каждого типа сообщения.Наэтомэтапеважновыбратьязыкпрограммирования,ко- торый позволитвам работатьоченьбыстро.По этой причине мы пред- почитаем языки сценариев сдинамическойтипизацией,такие как Lua или Python. Проверьте, доступны ли какие-либо библиотеки и фрейм- ворки,которые можно использоватьдля ускорения разработки.
Анализ сетевых протоколов 125
|
|
|
|
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 |
|
|
|||
Если Wireshark не поддерживает протокол, разработайте анализа- |
|
|
|
to |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
m |
||
w Click |
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
df-x chan |
|
o |
|
|||||
тор для помощи с анализом.Мы обсудим этот процесс ниже,в разде- |
. |
.c |
|
||||||||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
ле «Разработка диссектора Wireshark для протокола DICOM на языке Lua». Мы также будем использовать Lua для создания прототипа мо- дуля Nmap Scripting Engine для общения со службой.
Проведение оценки безопасности
После того как вы завершили анализ, подтвердили свои предполо- жения о протоколе и создали рабочий прототип для связи с помо- щью службы DICOM, необходимо оценить безопасность протокола. В дополнение к общему процессу оценки безопасности , описанному в главе 3, проверьте следующие ключевые моменты.
Проверьте возможность атаки, связанной с аутентификацией сервера и клиента. В идеале клиент и сервер должны аутентифици- роватьдругдруга–этотпроцессизвестен каквзаимная аутентифика- ция. Если они этого не сделают, можно будет выдать себя за клиента илисервер.Такоеповедениеможетиметьсерьезныепоследствия;на- пример, мы однажды выполнили атаку с имитацией клиента, чтобы подделать компонент библиотеки лекарств и внедрить в инфузион- ную помпу мошеннические библиотеки лекарств. Хотя две конечные точкиобменивалисьданнымичерезTransportLayerSecurity(TLS),это не могло предотвратить атаку, потому что не выполнялась взаимная аутентификация.
Выполните преднамеренно ошибочное кодирование протокола и проверьте возможность атак путем флуда. Кроме того,
попытайтесь воспроизвести сбои и выявить ошибки. Фаззинг – это процесс автоматической подачи неверно сформированного ввода в систему с конечной целью поиска ошибок реализации. В большин- стве случаев это вызывает сбой системы. Чем сложнее протокол,тем выше шансы обнаружитьдефекты,связанные с повреждением памя- ти.DICOM (будетобсуждаться чутьниже)–прекрасный пример.Учи- тывая его сложность, в различных реализациях можно обнаружить переполнение буфера и другие проблемы безопасности . При атаках путем флуда злоумышленники отправляютсистеме большое количе- ство запросов, чтобы исчерпать ресурсы системы, и в результате она перестает откликаться. Типичный пример – TCP SYN, флуд-атака, вероятность успеха которой можно уменьшить с помощью файлов cookie SYN.
Проверьте шифрование и цифровую подпись. Данные кон-
фиденциальны? Можем ли мы гарантировать целостность данных? Насколько надежны криптографические алгоритмы? Мы видели слу- чаи, когда поставщики внедряли свои собственные алгоритмы шиф- рования, – это всегда имело катастрофические последствия. Кроме того,многиесетевыепротоколынетребуютцифровойподписи,кото- рая обеспечивает аутентификацию сообщений, целостность данных и невозможность отказа. Например, DICOM не использует цифровую подпись,если она не используется по безопасному протоколу,такому
126 Глава 5
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
как Transport Layer Security (TLS),который уязвим к атакетипа «чело- |
|
|
|
|
|
m |
|||||
|
w Click |
|
|
|
|
|
|
||||
|
w |
|
|
|
|
|
|
|
|
|
|
век посередине». |
|
w |
|
df-x chan |
|
o |
|
||||
|
. |
.c |
|
||||||||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
Проверьте возможность атаки на устаревшую версию. Это криптографические атаки на протокол, которые заставляют систему использовать менее качественный и менее безопасный режим ра- боты (например, тот, который отправляет данные в открытом виде).
Примеры включают атаку «болтливого оракула» на устаревшее шиф-
рование (Padding Oracle on Downgraded Legacy Encryption, POODLE)
на уровне TLS/SSL. В этой атаке злоумышленник типа «человек по- середине» вынуждает клиентов использовать SSL 3.0 и использует врожденную уязвимость протокола для кражи файлов cookie или па- ролей.
Проверьте атаку на избыточность.Эти атаки срабатывают,когда протокол имеет функции, ответ которых значительно превышает за- прос,поскольку злоумышленники могутзлоупотреблятьэтими функ- циями, чтобы вызвать отказ в обслуживании. Пример – DDoS-атака с отражением mDNS,когда некоторые реализации mDNS отвечали на одноадресныезапросы,поступавшиеизисточниковзапределамило- кальной сети. Мы рассмотрим mDNS в главе 6.
Разработка диссектора Wireshark для протокола
DICOM на языке Lua
В этом разделе показано,как написатьдиссектор,который можно ис- пользоватьсWireshark.Припроверкесетевыхпротоколов,используе- мых устройствами IoT,очень важно понимать,как происходит обмен данными, как формируются сообщения и что задействованы функ- ции, операции и механизмы безопасности . Затем мы можем начать изменять потоки данных, чтобы найти уязвимости. Чтобы написать наш диссектор, будем использовать Lua; это позволит нам быстро анализировать перехваченные сетевые коммуникации с небольшим объемом кода. Мы перейдем от представления массива информации
кчитаемым сообщениям,добавив всего несколько строк кода.
Вэтом упражнении мы сосредоточимся только на подмножестве функций, необходимых для обработки сообщений DICOM A-типа (обсуждаемых в следующем разделе). Еще одна деталь, которую сле- дует учитывать при написании диссекторов Wireshark для TCP на Lua, заключается в том, что пакеты могут быть фрагментированы. Кроме того, в зависимости от таких факторов, как повторная пере- дача пакетов, ошибки нарушения порядка или конфигурации Wire- shark, ограничивающие размер захваченных пакетов (ограничение размера пакета захвата по умолчанию составляет 262 144 байта), мы можем получить меньше или больше одного сообщения в сегменте TCP. Давайте пока проигнорируем это и сосредоточимся на запросах A-ASSOCIATE, которых будет достаточно, чтобы идентифицировать службыDICOMпринаписаниисканера.Есливыхотитеузнатьбольше отом,как бороться с фрагментацией TCP,просмотрите файл примера
Анализ сетевых протоколов 127