- •От издательства
- •О техническом обозревателе
- •О соавторах
- •Об авторах
- •Вступительное слово
- •Благодарности
- •Предисловие
- •Почему важна защита интернета вещей?
- •Чем защита интернета вещей отличается от традиционной ИТ-защиты?
- •Законы хакинга интернета вещей
- •Заключение
- •Моделирование угроз для интернета вещей
- •Схема моделирования угроз
- •Определение архитектуры
- •Разбивка архитектуры на компоненты
- •Выявление угроз
- •Использование деревьев атак для обнаружения угроз
- •Распространенные угрозы интернета вещей
- •Атаки с подавлением сигнала
- •Атаки с воспроизведением
- •Атаки со взломом настроек
- •Клонирование узла
- •Заключение
- •Пассивная разведка
- •Физический или аппаратный уровень
- •Периферийные интерфейсы
- •Среда загрузки
- •Блокировки
- •Предотвращение и обнаружение несанкционированного доступа
- •Прошивка
- •Интерфейсы отладки
- •Физическая устойчивость
- •Разведка
- •Атаки на сетевой протокол и службы
- •Тестирование беспроводного протокола
- •Оценка веб-приложений
- •Картирование приложений
- •Элементы управления на стороне клиента
- •Аутентификация
- •Управление сеансом
- •Проверка ввода
- •Логические ошибки
- •Сервер приложений
- •Исследование конфигурации хоста
- •Учетные записи пользователей
- •Привилегии учетной записи
- •Уровни патчей
- •Удаленное обслуживание
- •Управление доступом к файловой системе
- •Шифрование данных
- •Неверная конфигурация сервера
- •Мобильное приложение и облачное тестирование
- •Заключение
- •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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
пользовать пультдистанционного управления для активации илиwде- |
|
|
|
|
|
m |
|||||
активации режима охраны. |
w Click |
|
|
|
|
|
o |
||||
|
w |
|
df-x chan |
|
|
||||||
|
. |
.c |
|
||||||||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
Возможно,болеедорогиеисложныесистемысигнализацииобнару- жат помехи на частоте беспроводной связи и попытаются уведомить об этом пользователя. Во избежание обнаружения вы можете попы- таться заблокировать подключение к Wi-Fi базовой станции систе- мы охранной сигнализации, выполнив атаку деаутентификации, как обсуждалось в главе 12. Дополнительные сведения об использовании пакета Aircrack-ng вы найдете в этой главе.
Воспроизведение потока с IP-камеры
Допустим,выдействуетеотлицазлоумышленника,каким-тообразом получившего доступ к сети, в которой есть IP-камеры. Как выглядит эффективная атака с серьезными последствиями для конфиденци- альности, притом что вы не прикасаетесь к камерам? Это воспроиз- ведение видеопотока с камеры! Даже если в камерах нетуязвимостей (что маловероятно), злоумышленник, который занимает позицию «человек посередине», может захватить трафик из любых потенци- ально небезопасных каналов связи. Плохая (или хорошая – это уж с какой стороны посмотреть!) новость заключается в том,что многие современные камеры все еще используютнезашифрованные сетевые протоколы для потоковой передачи видео.Захват сетевого трафика– одно, а возможность продемонстрировать заинтересованным сторо- нам, что можно воспроизвести видео из этого дампа,–другое.
Вы можете легко занять позицию «человек посередине»,используя такие методы, как отравление кеша ARP или подмена DHCP (мы об этом упоминали в главе 3), если сеть не имеет сегментации. В при- мере с видеопотоком камеры мы предполагаем, что это уже было достигнуто и что вы захватили файл видеопотока сетевой камеры
вформате pcap, передаваемый через протокол потоковой передачи
вреальном времени (RTSP), транспортный протокол реального вре- мени (RTP) и протокол управления RTP (RTCP),о которых пойдетречь
вследующем разделе.
Общие сведения о протоколах потоковой передачи
Протоколы RTSP, RTP и RTCP обычно работают сообща. Не вдаваясь в подробности их внутренней работы, приведем краткое описание каждого.
zzRTSP – это протокол клиент–сервер, который действует как се- тевое средство дистанционного управления мультимедийными серверами с прямыми трансляциями и сохраненными клипами в качестве источников данных. Вы можете рассматривать RTSP какисточниккоманд,которыйможетотправлятьсерверукоман- ды «воспроизведение», «пауза», «запись», словно обычному ви- деопроигрывателю. RTSP обычно работает через TCP.
Взлом умного дома 437
|
|
|
|
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 |
|
|
|||
|
RTP выполняет передачу мультимедийных данных. RTP работа- |
|
|
to |
|
|
|
|
|
|||
zz |
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
m |
||||
|
w |
|
|
|
|
|
|
|
|
|||
|
ет через UDP и совместно с RTCP. |
w Click |
|
|
|
|
|
o |
||||
|
|
w |
|
df-x chan |
|
|
||||||
|
|
. |
.c |
|
||||||||
|
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
zzRTCP периодически отправляет отчеты, которые содержат ста- тистику канала (например, количество отправленных и по- терянных пакетов и джиттер) участникам RTP. При этом RTP обычно отправляется через UDP-портс четным номером,а RTCP отправляется через следующий UDP-порт с нечетным номером: это можно увидеть в дампе Wireshark на рис. 15.7.
Анализ сетевого трафика IP-камеры
В нашем примере IP-камера имеет IP-адрес 192.168.4.180, а клиент, который должен принимать видеопоток, – IP-адрес 192.168.5.246. Клиентом может быть браузер пользователя или видеопроигрыва-
тель вроде VLC media player.
На правах злоумышленника, занимающего положение «человек посередине»,мы записали диалог,который показан на рис.15.7 в Wi reshark.
Рис.15.7.Вывод Wireshark для типичного мультимедийного сеанса,установленного через RTSP
и RTP
Трафик представляет собой типичный мультимедийный сеанс RTSP/RTP между клиентом и IP-камерой.Клиент начинает с отправки на камеру запроса RTSP OPTIONS . Этот запрос запрашивает у сервера типы запросов,которые он примет.Принятые типы затем содержатся в ответе RTSP REPLY .В этом случае это DESCRIBE,SETUP,TEARDOWN,PLAY, SET_PARAMETER,GET_PARAMETER иPAUSE (читателям,которые помнятэпо-
ху видеомагнитофонов VHS,это покажется знакомым)–см.рис.15.8.
Рис.15.8.Ответ камеры RTSP OPTIONS содержит типы запросов,которые она принимает
438 Глава 15
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Затем клиент отправляет запрос RTSP DESCRIBE , который включа- |
|
|
|
|
|
m |
||||
w Click |
|
|
|
|
|
|
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
ет URL-адрес RTSP (ссылка для просмотра канала камеры, в данномdf-x chan |
.c |
|
||||||||
|
. |
|
|
|
|
|
|
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
e |
|
случае rtsp://192.168.4.180:554/video. mp4). В этом запросе клиент запрашивает описание URL и уведомляет сервер с описанием форма- тов, понятных клиенту, используя заголовок Accept в форме Accept: application/sdp. Ответ сервера обычно имеет формат протокола описания сеанса (SDP), показанный на рис. 15.9. Ответ сервера име- ет для нас большое значение, потому что мы будем использовать эту информацию для создания основы файла SDP. Он содержит важные поля, такие как атрибуты мультимедиа (например, кодирование ви- део H.264 с частотой дискретизации 90 000 Гц) и используемые режи- мы пакетирования.
Рис.15.9.Ответ RTSP камеры на запрос DESCRIBE включает часть SDP
Следующие два запроса RTSP–это SETUP и PLAY.Первый просит ка- меру выделить ресурсы и начать сеанс RTSP, второй – начать отправ- ку данных в потоке, выделенном с помощью SETUP. Запрос SETUP включает два порта клиента для получения данных RTP (видео и ау- дио) и данных RTCP (статистика и управляющая информация). Ответ камеры на запрос SETUP подтверждает порты клиента и добавляет соответствующие выбранные порты сервера (рис. 15.10).
Рис.15.10.Ответ камеры на запрос SETUP клиента
После запроса PLAY сервер начинаетпередачу потока RTP и не- которых пакетов RTCP .Вернитесь к рис.15.7,где показано,что этот обмен происходит между согласованными по запросу SETUP портами.
Извлечение видеопотока
Теперь нам нужно извлечь байты из пакета SDP и экспортировать их в файл. Поскольку пакет SDP содержит важные сведения о том, как кодируется видео, эта информация нужна нам для воспроизведения видеопотока. Вы можете извлечь пакет SDP, выбрав пакет RTSP/SDP
Взлом умного дома 439
|
|
|
|
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 и Session Description Protocol (Протокол |
|
|
|
to |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
m |
||
w Click |
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
df-x chan |
|
o |
|
|||||
описания сеанса), а затем щелкнув правой кнопкой мыши и отметив |
. |
.c |
|
||||||||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
Export Packet Bytes (Экспортировать байты пакета) – рис. 15.11. Со- храните байты в файл на диске.
Рис.15.11.Выберите часть SDP пакета RTSP в Wireshark и экспортируйте байты пакета в файл
Созданный файл SDP будет выглядеть примерно так, как в листин-
ге 15.1.
Листинг 15.1. Исходный файл SDP, сохраненный путем экспорта пакета
SDP из дампа Wireshark
v=0
o=- 0 0 IN IP4 192.168.4.180 s=LIVE VIEW
c=IN IP4 0.0.0.0 t=0 0
a=control:*
m=video 0 RTP/AVP 35 a=rtpmap:35 H264/90000 a=rtpmap:102 H265/90000 a=control:video a=recvonly
a=fmtp:35 packetization-mode=1;profile-level-id=4d4033;sprop-parameter-sets=Z0 1AM42NYBgAbNgLUBDQECA=,aO44gA==
Мы отметили наиболее важные части файла, которые нам нужно изменить. Мы видим владельца сеанса (-), идентификатор сеанса (0) и сетевой адрес отправителя . Для точности, поскольку отправи- телем этого сеанса будет наш локальный хост, мы можем изменить IP-адрес 127.0.0.1 или полностью удалить эту строку.Далее мы видим имя сеанса . Можно опустить эту строку или оставить ее как есть. В последнем случае ненадолго появится строка LIVE VIEW («прямое включение»), когда VLC воспроизведет файл. Далее выведен адрес
440 Глава 15
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
прослушивающей сети .Следует изменить его на 127.0.0.1,чтобы не |
|
|
|
|
|
m |
|||||
|
w Click |
|
|
|
|
|
|
||||
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
открывать инструмент FFmpeg, который мы позже будем использоd-f-x chan |
.c |
|
|||||||||
|
|
. |
|
|
|
|
|
|
|||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
|
вать в сети, потому что будем отправлять данные в FFmpeg локально |
|
|
|
|
|
|
|||||
через сетевой интерфейс. |
|
|
|
|
|
|
|
|
|
|
|
Самая важная часть файла – это значение, содержащее сетевой |
|
|
|
|
|
|
|||||
порт для RTP . В исходном SDP-файле это 0, потому что порт был |
|
|
|
|
|
|
|||||
согласован позже с помощью |
запроса RTSP SETUP. Нам нужно изме- |
|
|
|
|
|
|
нить этот порт на допустимое в нашем случае ненулевое значение. Мы произвольно выбрали 5000.
В листинге 15.2 показан измененный SDP-файл. Мы сохранили его под именем camera.sdp.
Листинг 15.2. Измененный файл SDP
v=0
c=IN IP4 127.0.0.1 m=video 5000 RTP/AVP 35 a=rtpmap:35 H264/90000 a=rtpmap:102 H265/90000 a=control:video a=recvonly
a=fmtp:35 packetization-mode=1;profile-level-id=4d4033;sprop-parameter-sets=Z0 1AM42NYBgAbNgLUBDQECA=,aO44gA==
Второйшаг–извлечениепотокаRTPизWireshark.RTP-потоксодер- житзакодированные видеоданные.Откройте файл pcap,содержащий захваченные пакеты RTP в Wireshark; затем щелкните Telephony > RTP Streams (Телефония>ПотокиRTP).Выберитепоказанныйпоток, щелкните по нему правой кнопкой мыши и выберите Prepare Filter (Подготовить фильтр). Еще раз щелкнув правой кнопкой мыши, вы- берите Export as RTPDump (Экспортировать как RTPDump). Затем сохранитевыбранныйпотокRTPкакфайлrtpdump(мысохранилиего как camera.rtpdump).
Чтобы извлечь видео из файла rtpdump и воспроизвести его, вам потребуются следующие инструменты: инструменты RTP для чтения
ивоспроизведения сеанса RTP, FFmpeg для преобразования потока
иVLC для воспроизведения окончательного видеофайла. Если вы ис- пользуетеDebianнаосноведистрибутива,такогокакKaliLinux,може- те легко установить первые два инструмента с помощью apt:
$ apt-get install vlc
$ apt-get install ffmpeg
Вам нужно будет загрузить инструменты RTP вручную либо с веб-
сайта (https://github.com/irtlab/rtptools/), либо из репозитория GitHub.
Используя git, вы можете клонировать последнюю версию репози-
тория GitHub:
Взлом умного дома 441
|
|
|
|
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 |
|
|
|
|
$ git clone https://github.com/cu-irt/rtptools.git
Затем скомпилируйте инструменты RTP:
|
|
|
|
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 |
|
|
|
|
$ cd rtptools
$ ./configure && make
Запустите FFmpeg, используя следующие параметры:
$ ffmpeg -v warning -protocol_whitelist file,udp,rtp -f sdp -i camera.sdp -copyts -c copy -y out.mkv
Мы заносим в белый список разрешенные протоколы (файл, UDP и SDP),потому что это правильный подход–указывать разрешенные протоколы в явном виде. Параметр -f устанавливает формат входно- го файла SDP независимо от расширения файла. Параметр -i предо- ставляет измененный файл camera.sdp в качестве входных данных. Параметр -copyts означает, что входные временные метки не будут обрабатываться. Параметр -c copy показывает, что поток не должен перекодироваться, он только выводится; параметр -y перезаписыва- ет файлы вывода без запроса на удаление старого файла. Последний аргумент (out.mkv) – это выходной видеофайл.
Теперь запустите RTP Play, указав путь к файлу rtpdump в качестве аргумента для переключателя -f:
~/rtptools-1.22$ ./rtpplay -T -f ../camera.rtpdump 127.0.0.1/5000
Последний аргумент– это сетевой адрес назначения и порт, на ко- торый будет воспроизводиться сеанс RTP. Этот аргумент должен со- ответствовать одному потоку FFmpeg, прочитанному через файл SDP (помните, что мы выбрали 5000 в измененном файле camera.sdp).
Обратите внимание, что вы должны выполнить команду rtpplay сразу после запуска FFmpeg,потому что по умолчанию FFmpeg завер- шает работу, если в ближайшее время не поступит входящий поток. Инструмент FFmpeg затем декодирует воспроизведенный сеанс RTP и выведет файл out.mkv.
ПРИМЕЧАНИЕ Если вы используете Kali Linux, как показано в нашем примере, следует запустить все соответствующие инструменты от имени пользователя без полномочий root.Причина в том,что вредонос- ные данные могут существовать где угодно, и существуют известные уязвимости, связанные с повреждением памяти в сложном программ- ном обеспечении,таком как видеокодеры и декодеры.
Наконец,VLC сможет воспроизвести видеофайл:
$ vlc out.mkv
442 Глава 15