关于 offensive-lorawan-sub-ghz
涵盖 LoRaWAN 和专有 Sub-GHz 无线协议的安全测试技能,帮助授权测试人员识别信号、捕获分析数据包、评估重放或注入风险,并记录协议与加密发现。
主要功能
- 01频段与调制识别
- 02LoRaWAN 入网与上行分析
- 03Sub-GHz 捕获与重放指引
- 04未知协议重建
- 05密钥与帧计数器风险检查
- 06检测与报告指引
适用场景
- 01评估 LoRaWAN 设备和网络安全
- 02测试旧式固定码遥控器
- 03分析未知射频数据包格式
- 04评估重放与欺骗风险
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ snailsploit/ claude-red --skill offensive-lorawan-sub-ghz安装后在 Claude Code 中输入/offensive-lorawan-sub-ghz确认已加载。
详细介绍
LoRaWAN 和 Sub-GHz 攻击
LoRaWAN 为 IoT 提供远距离、低比特率通信,常用于智慧城市、资产追踪和工业遥测。在 LoRaWAN 之外,433 / 868 / 915 MHz ISM 频段还承载着车库门、门铃、智能插座、气象站和 TPMS 的通信,其中大多数设备的加密能力薄弱,甚至完全没有加密。
快速工作流
- 确定频段和调制方式(LoRa CSS 或简单的 OOK/FSK)
- 使用合适的硬件捕获传输信号(HackRF / RTL-SDR / Flipper Zero)
- 对于 LoRaWAN:捕获入网请求和上行数据;分析密钥派生过程
- 对于专有 Sub-GHz 协议:解调、识别数据包格式,然后重放或构造数据包
硬件
| 工具 | 范围 | 用途 |
|---|---|---|
| RTL-SDR | 仅 RX,24 MHz–1.7 GHz | 低成本侦察 |
| HackRF One | RX/TX,1 MHz–6 GHz | 全功能收发器 |
| Flipper Zero | RX/TX,Sub-GHz | 快速重放、固定码攻击 |
| LimeSDR / BladeRF | RX/TX,较宽频段 | 更高保真度的 LoRaWAN 测试 |
| YARD Stick One | 侧重 TX 的 Sub-GHz 设备 | 定向重放 |
| LoRa 专用网关(RAK / Heltec) | LoRaWAN 双向通信 | 符合标准的 LoRaWAN 测试 |
LoRaWAN
LoRaWAN 是运行在 LoRa 物理层(线性调频扩频)之上的 MAC 层。设备有以下两种类型:
- OTAA(空中激活)——在入网时派生会话密钥
- ABP(个性化激活)——预先烧录密钥
捕获 OTAA 入网过程
# Capture LoRa packets with HackRF + Inspectrum
hackrf_transfer -r capture.iq -f 868000000 -s 1000000 -n 60000000
# Or LoRa-specific: rak_common_for_gateway
# Decode with PHY + MAC stack
git clone https://github.com/Lora-net/LoRaMac-node
# Or use ChirpStack as a sniffing gateway
Join-Request 和 Join-Accept 使用设备的 AppKey 加密。获取 AppKey(从设备固件中提取,参见 offensive-iot)后:
- 解密 Join-Accept → 恢复 NwkSKey、AppSKey
- 解密后续流量并进行注入
ABP——预先烧录的密钥
ABP 设备在制造时会烧录 NwkSKey 和 AppSKey。常见缺陷包括:
- 数千台设备共用同一个密钥(供应商偷懒)
- 没有帧计数器回绕保护 → 可重放任意历史上行数据
- DevAddr 可预测(按顺序分配)
# If you have NwkSKey + AppSKey + DevAddr, decode/inject with lorawan-test-tools
git clone https://github.com/IoTsec/loraserver-attack-tools
python lora_inject.py --nwkskey <NWKS> --appskey <APPS> --devaddr <ADDR>
重放帧计数器
较旧的 LoRaWAN 1.0.x 在所有协议栈中都不会严格强制帧计数器单调递增。使用不同的时间戳重放上行数据 → 服务器会将其作为新数据处理。
下行注入
如果你控制了 AppSKey 和 NwkSKey,就可以向设备注入下行数据(配置更改、远程命令)。
专有 Sub-GHz 协议
快速捕获和重放(Flipper Zero / HackRF)
# RTL-SDR live monitor
rtl_433 -f 433.92M -A # auto-decode many devices
gqrx # interactive spectrum analyzer
# Flipper Zero Sub-GHz menu: Read → identify modulation → capture → save
# Then replay from the saved file
# HackRF capture
hackrf_transfer -r garage.iq -f 433920000 -s 8000000 -n 80000000
# Inspectrum to visualize, identify OOK / FSK, decode bits
KeeLoq(旧款车库门,部分汽车)
KeeLoq 使用带有厂商密钥的 32 位分组密码。多年前,主要品牌的厂商密钥已被公开提取。利用该密钥可以:
- 解密滚动码 → 预测下一个有效码
- 结合捕获重放,接管遥控器
# rolling-code-tools (research)
git clone https://github.com/AndrewMohawk/RollingPwn
近 5 年部署的 KeeLoq 系统已轮换厂商密钥,但旧款硬件(较旧的车库门、部分工业设备)仍在测试范围内。
固定码遥控器
许多廉价车库门开启器、门铃和智能插座都使用固定码——每次按下按钮时发送的都是同一个数据包。捕获一次,即可无限重放。
# Flipper Zero: Read → Save → Send (from saved file)
# Or with RFCat:
python -c "import rflib; ..."
# OR with HackRF:
hackrf_transfer -t replay.iq -f 433920000 -s 8000000
TPMS 欺骗
胎压监测传感器会在 315/433 MHz 频段广播,且没有身份验证。伪造低胎压警报:
# Capture legitimate TPMS
rtl_433 -f 315M -F json | grep TPMS
# Synthesize crafted alerts (custom modulator with HackRF)
# Useful for testing TPMS-aware vehicle systems or as denial-of-trust attack
重建未知协议
# Universal Radio Hacker (URH) — visual reverse engineering
urh
# Load .iq capture, identify modulation visually,
# auto-detect symbols, decode bits, identify packet structure
即使没有文档,URH 也能引导你从原始 RF 信号逐步解析出协议描述。
测试速查表
# 1. Identify band + modulation
rtl_433 -f <freq> -A # auto-detect known protocols
gqrx # spectrum view to find activity
# 2. For LoRaWAN
# - Set up gateway (or HackRF + LoRa decoding)
# - Capture joins + uplinks
# - Extract keys from device firmware (see offensive-iot)
# 3. For proprietary sub-GHz
# - Capture with HackRF / RTL-SDR
# - Visualize / decode with Inspectrum or URH
# - Replay or craft
# 4. Document modulation, frequency, packet format, replay viability
检测
- LoRaWAN 网络有服务器端异常检测(帧计数器、信号强度、地理位置)——不同运营方的能力差异很大
- Sub-GHz 消费类产品通常没有监控
- TPMS / 工业设备对 RF 异常的遥测能力有限
报告
- 针对每台设备,确定确切的频率、调制方式、波特率和数据包格式
- 区分捕获重放攻击与构造帧攻击
- 记录加密状态(明文 / 弱固定密钥 / 符合标准)
- 对于 LoRaWAN:确定固件中 AppKey / NwkSKey / AppSKey 的存储位置
关键参考资料
- rtl_433 协议数据库:github.com/merbanan/rtl_433
- Universal Radio Hacker:github.com/jopohl/urh
- RollingPwn(KeeLoq 研究):github.com/AndrewMohawk/RollingPwn
- LoRaWAN 规范:lora-alliance.org
- 来源:https://github.com/SnailSploit/offensive-checklist/blob/main/wireless.md