hacktricks/src/todo/radio-hacking/low-power-wide-area-network.md

95 lines
8.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Low-Power Wide Area Network
{{#include ../../banners/hacktricks-training.md}}
## Introduction
**Low-Power Wide Area Network** (LPWAN) — це група бездротових, низькопотужних, широкосмугових технологій, призначених для **дальніх комунікацій** з низькою швидкістю передачі даних. Вони можуть досягати більше **шісти миль**, а їх **батареї** можуть працювати до **20 років**.
Long Range (**LoRa**) наразі є найбільш розгорнутим фізичним рівнем LPWAN, а його відкрита специфікація MAC-рівня — **LoRaWAN**.
---
## LPWAN, LoRa та LoRaWAN
* LoRa фізичний рівень Chirp Spread Spectrum (CSS), розроблений компанією Semtech (приватний, але задокументований).
* LoRaWAN відкритий MAC/мережевий рівень, що підтримується LoRa-Alliance. Версії 1.0.x та 1.1 є поширеними в полі.
* Типова архітектура: *кінцевий пристрій → шлюз (пакетний пересилальник) → мережевий сервер → сервер додатків*.
> **Модель безпеки** базується на двох кореневих ключах AES-128 (AppKey/NwkKey), які генерують сеансові ключі під час процедури *приєднання* (OTAA) або закодовані (ABP). Якщо будь-який ключ витече, зловмисник отримує повний доступ на читання/запис відповідного трафіку.
---
## Підсумок поверхні атаки
| Рівень | Слабкість | Практичний вплив |
|-------|----------|------------------|
| PHY | Реактивне / селективне глушіння | 100 % втрата пакетів, продемонстрована з одним SDR та <1 Вт виходу |
| MAC | Повторення Join-Accept та data-frame (повторне використання nonce, обертання лічильника ABP) | Спуфінг пристроїв, ін'єкція повідомлень, DoS |
| Мережевий сервер | Небезпечний пакетний пересилальник, слабкі фільтри MQTT/UDP, застаріле прошивання шлюзів | RCE на шлюзах перехід в OT/IT мережу |
| Додаток | Жорстко закодовані або передбачувані AppKeys | Брутфорс/дешифрування трафіку, видавання за сенсори |
---
## Останні вразливості (2023-2025)
* **CVE-2024-29862** *ChirpStack gateway-bridge & mqtt-forwarder* приймали TCP пакети, які обходили правила станового брандмауера на шлюзах Kerlink, що дозволяло вразливість віддаленого управлінського інтерфейсу. Виправлено в 4.0.11 / 4.2.1 відповідно.
* **Dragino LG01/LG308 series** Багато CVE 2022-2024 (наприклад, 2022-45227 перехід по директоріях, 2022-45228 CSRF) все ще спостерігаються без виправлень у 2025 році; дозволяють неавтентифікований дамп прошивки або перезапис конфігурації на тисячах публічних шлюзів.
* Переповнення *пакетного пересилальника UDP* Semtech (неопубліковане повідомлення, виправлено 2023-10): створений uplink більше 255 B викликав переповнення стеку > RCE на референсних шлюзах SX130x (виявлено на Black Hat EU 2023 “LoRa Exploitation Reloaded”).
---
## Практичні техніки атаки
### 1. Перехоплення та дешифрування трафіку
```bash
# Capture all channels around 868.3 MHz with an SDR (USRP B205)
python3 lorattack/sniffer.py \
--freq 868.3e6 --bw 125e3 --rate 1e6 --sf 7 --session smartcity
# Bruteforce AppKey from captured OTAA join-request/accept pairs
python3 lorapwn/bruteforce_join.py --pcap smartcity.pcap --wordlist top1m.txt
```
### 2. OTAA join-replay (повторне використання DevNonce)
1. Захопіть легітимний **JoinRequest**.
2. Негайно повторно передайте його (або збільшіть RSSI) перед тим, як оригінальний пристрій знову передасть дані.
3. Сервер мережі виділяє новий DevAddr та ключі сесії, поки цільовий пристрій продовжує використовувати стару сесію → атакуючий володіє вільною сесією і може вводити підроблені uplink.
### 3. Зниження адаптивної швидкості передачі даних (ADR)
Примусьте SF12/125 kHz збільшити час ефіру → вичерпайте цикл обов'язків шлюзу (відмова в обслуговуванні), зберігаючи низький вплив на батарею атакуючого (просто надсилайте команди MAC на рівні мережі).
### 4. Реактивне глушіння
*HackRF One*, що працює з GNU Radio flowgraph, активує широкосмуговий сигнал, коли виявляється преамбула блокує всі фактори розповсюдження з ≤200 мВт TX; повне відключення вимірюється на відстані 2 км.
---
## Наступальні інструменти (2025)
| Інструмент | Призначення | Примітки |
|------------|-------------|----------|
| **LoRaWAN Auditing Framework (LAF)** | Створення/парсинг/атака на LoRaWAN фрейми, аналізатори на базі БД, брутфорсер | Docker-образ, підтримує Semtech UDP вхід |
| **LoRaPWN** | Утиліта Trend Micro на Python для брутфорсу OTAA, генерації downlink, розшифровки навантажень | Демонстрація випущена 2023, SDR-агностична |
| **LoRAttack** | Багатоканальний sniffing + повтор з USRP; експортує PCAP/LoRaTap | Хороша інтеграція з Wireshark |
| **gr-lora / gr-lorawan** | Блоки GNU Radio OOT для базової передачі/прийому | Основи для кастомних атак |
---
## Рекомендації щодо захисту (чек-лист для пентестера)
1. Вибирайте **OTAA** пристрої з дійсно випадковим DevNonce; моніторте дублікати.
2. Впроваджуйте **LoRaWAN 1.1**: 32-бітні лічильники кадрів, відмінні FNwkSIntKey / SNwkSIntKey.
3. Зберігайте лічильник кадрів у пам'яті з непостійним доступом (**ABP**) або переходьте на OTAA.
4. Впроваджуйте **secure-element** (ATECC608A/SX1262-TRX-SE) для захисту кореневих ключів від витоку прошивки.
5. Вимкніть порти для віддаленого UDP-пакетного пересилання (1700/1701) або обмежте їх за допомогою WireGuard/VPN.
6. Тримайте шлюзи в актуальному стані; Kerlink/Dragino надають патчі 2024 року.
7. Реалізуйте **виявлення аномалій трафіку** (наприклад, аналізатор LAF) позначайте скидання лічильників, дубльовані приєднання, раптові зміни ADR.
## Посилання
* LoRaWAN Auditing Framework (LAF) [https://github.com/IOActive/laf](https://github.com/IOActive/laf)
* Огляд Trend Micro LoRaPWN [https://www.hackster.io/news/trend-micro-finds-lorawan-security-lacking-develops-lorapwn-python-utility-bba60c27d57a](https://www.hackster.io/news/trend-micro-finds-lorawan-security-lacking-develops-lorapwn-python-utility-bba60c27d57a)
{{#include ../../banners/hacktricks-training.md}}