offensive-lorawan-sub-ghz について
LoRaWANと独自のSub-GHz無線プロトコルを扱うセキュリティテスト用スキルです。許可を得たテスト担当者が信号を特定し、パケットを解析して、リプレイや注入のリスクを評価・記録できます。
主な機能
- 01周波数帯と変調方式の特定
- 02LoRaWANの参加要求と上り通信の解析
- 03Sub-GHzのキャプチャとリプレイの手順
- 04未知プロトコルの再構成
- 05鍵とフレームカウンターのリスク確認
- 06検知と報告のガイダンス
活用シーン
- 01LoRaWANデバイスとネットワークの評価
- 02旧式の固定コードリモコンのテスト
- 03未知のRFパケット形式の解析
- 04リプレイと偽装リスクの評価
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ snailsploit/ claude-red --skill offensive-lorawan-sub-ghzインストール後、Claude Code で/offensive-lorawan-sub-ghzを入力して読み込まれたか確認します。
詳細
LoRaWAN とサブGHz帯への攻撃
LoRaWAN は IoT 向けに長距離・低ビットレートの通信を提供します。スマートシティ、資産追跡、産業用テレメトリーなどで広く使われています。LoRaWAN 以外では、433/868/915 MHz の ISM 帯域にガレージドア、ドアベル、スマートプラグ、気象観測所、TPMS などがあり、そのほとんどは暗号化が弱いか、まったく使われていません。
クイックワークフロー
- 帯域と変調方式を特定します(LoRa CSS か、単純な OOK/FSK か)
- 適切なハードウェア(HackRF/RTL-SDR/Flipper Zero)で送信をキャプチャします
- LoRaWAN の場合:Join とアップリンクをキャプチャし、鍵導出を分析します
- 独自のサブGHzプロトコルの場合:復調し、パケット形式を特定して、リプレイまたは作成します
ハードウェア
| ツール | 範囲 | 用途 |
|---|---|---|
| RTL-SDR | RX 専用、24 MHz–1.7 GHz | 低コストの偵察 |
| HackRF One | RX/TX、1 MHz–6 GHz | フルトランシーバー |
| Flipper Zero | RX/TX、サブGHz | 手軽なリプレイ、固定コード攻撃 |
| LimeSDR / BladeRF | RX/TX、より広い帯域 | LoRaWAN の高精度なテスト |
| YARD Stick One | サブGHzの TX 中心 | 対象を絞ったリプレイ |
| LoRa 専用ゲートウェイ(RAK / Heltec) | LoRaWAN 双方向 | 規格準拠の LoRaWAN テスト |
LoRaWAN
LoRaWAN は LoRa 物理層(チャープスペクトラム拡散)上の MAC 層です。デバイスは次のいずれかを使用します。
- OTAA(Over-the-Air Activation)— Join 時にセッション鍵を導出します
- ABP(Activation By Personalization)— 鍵を事前に書き込みます
OTAA Join のキャプチャ
# 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 を制御できる場合、デバイスにダウンリンク(設定変更、リモートコマンド)をインジェクションできます。
サブ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 ネットワークにはサーバー側の異常検知(フレームカウンター、信号強度、地理的位置)がありますが、事業者によって大きく異なります
- サブ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