Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
[#IoTSecJP Tokyo #4] LoRaWANとセキュリティの話し/How Can I Hack LoRaWAN?
Search
tokina (himitu)
September 15, 2018
Technology
1
2.5k
[#IoTSecJP Tokyo #4] LoRaWANとセキュリティの話し/How Can I Hack LoRaWAN?
IoTSecJP Tokyo #4にてお話したスライドになります.
(後日一部更新しました)
tokina (himitu)
September 15, 2018
Tweet
Share
More Decks by tokina (himitu)
See All by tokina (himitu)
[SecHack367] What I can tell you as SecHack367 Vehicle Security Team #SecHack365 #SecHack367
himitu23
0
700
[SecurityCamp2018] Talk of LoRaWAN's Security
himitu23
0
1.1k
SORACOM UG Tokyo 201807 LT #4 - CloudSolution for Vehicle with SORACOM
himitu23
0
260
[JAWS-Security 09 Tokyo] Cloud Solution for management and observation vehicle
himitu23
1
3.7k
車の情報×クラウドを使って 安全・快適なカーライフをしたい! @SecHack365 '17 by 自動車セキュリティチーム
himitu23
0
1k
Other Decks in Technology
See All in Technology
サーバーとは何かを理解して、コンテナ1つで実行しよう | PHPerKaigi2024
sadnessojisan
31
11k
『LeanとDevOpsの科学』をきちんと解読する 〜Four Keys だけじゃ絶対もったいなくなる話〜
bonotake
27
6.5k
The Twelve-Factor App とクラウドアプリケーションのコスト
ny7760
3
260
滑空スポーツ講習会2023 航空安全講習会 第4回 日常整備に役立ちそうな雑情報 / JSA Safety Seminar 2023 glider maintenance
jsaseminar
0
100
進化する事業とデータ構造 ~Cloudbaseの場合~
tockn
2
220
[AWS Expert Online for JAWS-UG]AWS SAW を使ったトラブルシューティング効率化のススメ
furuton
0
160
「わたしたちのコード」を安定させるためにフレームワークとの距離を保つ / phperkaigi2024
blue_goheimochi
5
790
OCI Data Science Service 製品概要
oracle4engineer
PRO
0
110
スプリント内で試験を完了させるには?アジャイル・スクラム開発に参加したQAエンジニアの悩みと対策
cybozuinsideout
PRO
1
110
DevOps Topologies 10 years on: what have we learned about silos, collaboration, and flow? - Matthew Skelton, Conflux
matthewskelton
PRO
2
420
10年モノのレガシーPHPアプリケーションを移植しきるまでの泥臭くも長い軌跡 / legacy-php-app-migration
toshimaru
0
690
Azure AI サービス全体像と Prompt flow 紹介 - Forkwell Library
shohei1029
1
590
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
330
56k
Debugging Ruby Performance
tmm1
68
11k
RailsConf 2023
tenderlove
0
500
Principles of Awesome APIs and How to Build Them.
keavy
119
16k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
1
1.2k
A Philosophy of Restraint
colly
195
15k
How STYLIGHT went responsive
nonsquared
92
4.7k
The Power of CSS Pseudo Elements
geoffreycrofte
58
4.9k
Rebuilding a faster, lazier Slack
samanthasiow
72
8.1k
What's in a price? How to price your products and services
michaelherold
236
11k
Git: the NoSQL Database
bkeepers
PRO
421
63k
The MySQL Ecosystem @ GitHub 2015
samlambert
242
12k
Transcript
ిؾ௨৴େֶେֶӃ !@UPLJOB *P54FD+1 5PLZP-P3B8"/ʹ͍ͭͯͷηΩϡϦςΟͷ -P3B8"/ͱηΩϡϦςΟͱ͋ͱࡉ͔͍ 1 )PX$BO*IBDL-P3B8"/
"HFOEB nࣗݾհ n-18" -18"/ ͱ-P3B8"/ n-P3B8"/ͷٕज़తͳΈͱ๏ nωοτϫʔΫϨϕϧͷηΩϡϦςΟ n࣮ફʂ-P3B8"/εχοϑΟϯάʂʂ n·ͱΊ 2
ࣗݾհ nॴଐɿిؾ௨৴େֶେֶӃ ౡࢢཱେֶଔ p情報ネットワーク専攻 NOTセキュリティ pR社でバイトしてます p御社で自動車セキュリティをする予定 nݚڀɿ-P3B8"/ʹ͓͚ΔωοτϫʔΫޮԽʹ͍ͭͯ pかつては自動車のセキュリティについて研究 pMAC層や物理層とか少し詳しいかもしれない
nڵຯɿ3BT1J "84 ࣗಈंηΩϡϦςΟ -P3B8"/ *P5 4FD FUD n*P54FD+1̏ճͷࢀՃʹͳΓ·͢ʂ n͜ͷલηΩϡϦςΟɾΩϟϯϓͷνϡʔλΛͨ͠Γͱ͔ͯ͠·ͨ͠ )( 3
-P3B8"/ɺͬͯ·͔͢ʁ 2017/08 https://www.rs-online.com/designspark/building-a-lorawan-enabled-bat-detector-jp 4
࠷ۙΑ͘ฉ͘-18"/ͱ-P3B8"/ *P5 ۙڑ ڑ (
) km -18"/-PX1PXFS8JEF"SFB/FUXPSL ྫ -P3B8"/ɼ4JHGPYɽ-5..ɼ8J'J )BMMPX BI →Long Range WAN 5
-P3B8"/ͷΠϝʔδ Server AP AP 6
(mobility) LoRaWAN 10km
-P3B8"/ͷಛ nʂলిྗ p通常の乾電池で10年持つなど nʂڑ௨৴Մೳ p最大10km以上とも言われている n໔ڐෆཁͰར༻Մೳʴن֨ඪ४͕ެ։͞Ε͍ͯΔ GW nʂ௨৴͕͍ p送信できるデータはわずか nʂ௨৴͕ඇޮ
pMACにpureALOHAを採用 LoRa→ ←LoRaWAN (~10km) Server ηϯαͳͲͷతͰ ࠓޙͬͱΘΕͦ͏Ͱʁʁ ී௨ͷ௨৴ʹ͏ͷ͍͠ɾɾɾ 7
https://news.goo.ne.jp/article/newswitch/business/newswitch-8880.html “IoT>LP5</]?S@C (#)OWURM87” 413_D:H%*$ 5<9F"K `' &"IJA^/]?S" @C ,Z-/[0N\Y!XQ
Z-=2".B6E"; V5<G8"T+ 8
౦ژۙ߫ͷ-P3B (BUFXBZઃஔঢ়گʢ55/ʹొ͍ͯ͠Δͷʣ https://www.thethingsnetwork.org/map 9
-P3B8"/ͷٕज़తͳΈͱ๏ 10 Technology and Radio Law of LoRaWAN
-P3B8"/୭͕ఏڙ͍ͯ͠Δͷ͔ʁ nجຊతͳ༷ʢ௨৴ɼόοΫΤϯυͳͲʣެ։͞Ε͍ͯΔ p௨৴ͷ༷ެ։͞Ε͍ͯΔʢૹ৴νοϓͷ༷ެ։͞Ε͍ͯͳ͍ʣ pݱࡏͷ༷ͷ࠷৽൛ࡢʹެ։͞ΕͨW MPSBXBO TQFDJGJDBUJPO pࡉ͔͍ϩʔΧϥΠζ༷"4.)[*4# CBOEʹͯఆٛ https://lora-alliance.org/ 11
ຊͰͷݱঢ় nιϑτόϯΫɺ,%%* XJUI403"$0.ͳͲ͕αʔϏεΛఏڙ͍ͯ͠Δ pΩϟϦΞఏڙαʔϏεࣄۀ nిͷ๏ r "3*# 45%5 p࠷৽W
u༗ྉͩΑʂʢࢲݚڀඅͰങͬͨΑʂʣ p-P3B8"/ͷѻ͍ɿ ಛఆখిྗແઢہɺ্Ҡಈہ pपd.)[ d.)[ uΞϯϥΠηϯεόϯυʢ໔ڐෆཁʣ pΩϟϦΞηϯεɿNTҎ্ɼVTҎ্ p࿈ଓૹ৴࣌ؒɿTɼNT pσϡʔςΟαΠΫϧɿͳ͠ɼTҎԼ ˠૹ৴Ͱ͖ΔσʔλCZUFdेCZUF ch200kHz →Bandwidth125kHz *923.4MHz 20mW → (GW ) 12
-P3B8"/ 4QFDJGJDBUJPO n$MBTT pLoRaWANには「Class」という通信方法の概念がある u現在はClass Bがテスト実装段階(一応考慮はされている) n$MBTT" puplinkの通信タイミングはランダム = pureALOHA
(unslotted ALOHA) pメッセージの到達性を高めるため連送を行う u同時に2つのメッセージを送信、受信ウィンドウを2つ開く 13 $MBTT ϊʔυͷಈ࡞ͳͲ ಛ " • શσόΠε͕αϙʔτ͢Δ • ҙͷλΠϛϯάͰ6QMJOL͕ൃੜ • Ԇେ • ফඅిྗ # • Ϗʔίϯૹ৴ͷͨΊͷΫϥε • ωοτϫʔΫओಋͷ௨৴͕Մೳ • %PXOMJOLʹରԠ $ • ड৴εϩοτΛৗʹ։͘ • ৗ࣌ిྗڙڅՄೳͳϊʔυΛఆ • Ԇখ • ফඅిྗେ
-P3B8"/ͷηΩϡϦςΟ جຊ nͲΜͳ߈ܸ͕͋Δʁ pEvasedropping/盗聴 uトラフィックを盗聴,他の攻撃の参考になったりする pReplay attack/リプレイ攻撃 u盗聴したデータをそのまま再送する.データの中身が不明でもOK. pMan in
the middle attack/中間者攻撃 uやりとりの間に割り込んでデータを(場合によってはリアルタイムに改ざ んして)中継する pDenial of service/DoS攻撃 pKey cracking 14
-P3B8"/ͷηΩϡϦςΟ ൃల pセッションハイジャック uこの場合ほとんど中間者攻撃と同じ p不正なアクセスポイントの設置 uもともとあるゲートウェイ,もしくは完全に新しいゲートウェイとして動作 様々な攻撃が可能に pゲートウェイに対する改ざん uゲートウェイは遠隔ログイン可能な場合が多く,不正に改ざん利用される可能性 pMACスプーフィング
uLoRaWANではMACアドレスを利用せず,独自の割当アドレスを利用している そこで,そのアドレスを勝手になりすまし,データの不正取得などの可能性 15
ηΩϡϦςΟͷ ʙωοτϫʔΫϨϕϧͷʙ ࢀߟɿ -P3B8"/ 4QFDJGJDBTUJPO W BWBJMBCMFBUMPSBBMMJBODFPSH SFG &T
&FG WBO l-P3B8"/ WVMOFSBCJMJUZBOBMZTJT JO WBMJEBUJPOPGQPTTJCMFWVMOFSBCJMJUJFTJOUIF -P3B8"/ QSPUPDPMTQFDJGJDBUJPO z.BTUFSTUIFTJT 0QFO6OJWFSTJUFJU/FEFSMBOE 16 Attack to LoRaWAN in Network Level
ࠓճհ͢ΔͷͲΜͳ߈ܸʁ nμϯϦϯΫ௨৴ʢήʔτΣΠˠϊʔυʣʹண pLoRaWANにおいて様々な設定はMACメッセージで行われる uDutyCycle,参加,通信タイミング,チャンネルなど pClass Bビーコンによる情報の通知,ノードの受信ウィンドウの操作 u周期的に動作する各ノードにイベント的にダウンリンク通信を行う pReplay attack/リプレイ攻撃 u盗聴したデータをそのまま再送する.データの中身が不明でもOK.
「MACメッセージ」と「ビーコン」のリプレイ攻撃について紹介 17
-P3B8"/ ."$ .FTTBHF 'PSNBU Preamble PHDR PHDR CRC PHY Payload
CRC MHDR MAC Payload MIC FHDR FPort FRM Payload Dev Addr FCtrl FCnt FOpts Phy Phy Payload MAC Payload FHDR MH DR Dev Addr FCtrl FCnt FOpts FPort FRM Payload MIC 8 32 8 16 120 8 N 32 (bit) () 1'/ MAC %$ FPort 0x00 CID 0xXX Payload FRM Payload MIC&*!+0-# Phy Payload 18 0-# "./,
."$ϝοηʔδͷϦϓϨΠ߈ܸ ϝοηʔδͷྫ MIC 0x00 0x01 0x19
0x76 → 0x76 0x19 0x01 0x00 19
."$ϝοηʔδͷϦϓϨΠ߈ܸ nదͳ.*$ͱΧϯλΛઃఆग़དྷͨ߹ n͔͠͠ɺ.*$ͷܭࢉʹ"&4ΞϧΰϦζϜ͕࠾༻͞Ε͍ͯΔ p鍵が奪われない限り、計算能力的に現実時間的に攻撃は不可能・・・ MIC 128bit left
32-bits of a CMAC results into ( 1 / 232 ) * 2128 = 296 20
."$ϝοηʔδͷϦϓϨΠ߈ܸ n࣮҉߸Խ.*$ͷܭࢉखॱͳͲ֤ࣗͷ࣮ʹґଘ͍ͯ͠Δ nྫ͑ɾɾɾ p以前のLoRaWAN SpecificationではFOptsの暗号化がマストになっていなかった u現在のSpecification v1.1では暗号化がMUSTとなっている pこうした細かいところの実装をセキュリティを意識して実装すべき nԿ͕ى͜Δʁ pMAC層はネットワーク層より先に実行される(レイヤー的に)
p暗号化されていない(平文)+MICはネットワーク層で計算される →先にMACコマンドが処理されてしまう! 21
#FBDPO'SBNF'PSNBU n-P3B8"/ 4QFDJGJDBUJPOʹهࡌ pここにCRCの計算方法についても書かれている nϏʔίϯͷ༷Γ֤࣮ʹґଘ͍ͯ͠Δ ˠͳΓ͢·͠༰қʁ RFU Time CRC GwSpecific
CRC BCN Payload RFU... Reserved Future Used CRC... 24 32 8(16) 56 16 (bit) InfoDesc Latitude Longitude EU868 Frame format (AS923 ) 22
ϏʔίϯͷϦϓϨΠ߈ܸ nશ͘ಉ͡Ϗʔίϯͷ࠶ૹ p同じビーコンを処理しない実装にしている場合は意味がない 23
ϏʔίϯͷϦϓϨΠ߈ܸ n࣌ؒϑΟʔϧυΛมߋͯ͠Έͨྫ p同時にCRCが実装されている場合はCRCも計算する pこれにより時間フィールドの値が変更され、起動タイミングの強制的な変更などに つながる可能性がある 24
ϏʔίϯͷϦϓϨΠ߈ܸ n(BUFXBZʹ͍ͭͯͷใΛมߋͨ͠ྫ p先と同様CRCについても必要に応じて変更する必要がある pノードの位置情報がその他の情報やGW間連携などの予期しない動作に繋がる可能性 25
26 LoRaWANHackRF ONE Let’s Sniff LoRaWAN
using HackRF ONE
01/07 ݄ ࠷ऴ໘ ޚࣾʮ΄͍͠ػࡐ͋Δʁʯ ࢲʮʢνϟϯεʂʣ͋ɺ͍·)BDL3' 0/&͍ͬͯ͏ΨδΣοτ͕ʯ 27 07/07 09/02 ࢜ࢁ
09/03 ࢲʮಧ͍ͨʂʯ (Εͯͨ) (ͱΓ͋͑ͣ์ஔ)
Γ͍ͨ͜ͱ )BDL3' 0/&Λͬͯ-P3B8"/ͷใΛ͘ʂ nڥ pHackRF ONE (2017 model) pLoRa mini-JP
(ATmega328P MCU) p温度&湿度センサ (DHT11) pPC (OSX/Xubuntu 18.04 LTS on Mac) n༻ҙ͢Διϑτ pGNU Radio pGqrx prpp0/gr-lora (https://github.com/rpp0/gr-lora) u依存関係が大変 28 AP
ϊʔυɿ-P3B NJOJ+1 "5NFHB1.$6 ϓϩάϥϜ IUUQTHJUIVCDPNPQFOXBWFDPKQ-P3B5P5IJOH4QFBL ࠓճ҉߸Խͳ͠ ηϯαͷσʔλΛ-P3B8"/Ͱ%JTUSJCVUF 29
%&.0͍ͨ͠ 30
(RSYͰ-P3B8"/ͷిΛ؍ଌ nެࣜαΠτΛࢀߟʹΠϯετʔϧʢIUUQHRSYELUBHNBDPTYʣ 31 Class A
Ͳ͏ʹ͔σʔλΛ͚ͳ͍͔ʁ ʮMPSBXBO TOJGGIBDLSGʯͳͲͰݕࡧˠ SQQHSMPSB͕ώοτ ґଘؔͷͰɺ ࠓճ9VCVOUVʹڥΛ༻ҙ 32 LoRaWAN Decode
ઃఆͦͷ··Ͱπʔϧར༻Ͱ͖ͳ͍ͷͰҰ෦मਖ਼ 33 ϊʔυͷϓϩάϥϜ पͱ4'Λमਖ਼ HSMPSBͷMPSB@SFDFJWF@SFBMUJNFQZ σϑΥϧτͷ4' 4QSFBEJOH'BDPS ʢ࠷
Ͱ͖ͨʂ 34
ͲΜͳσʔλ͕ݟ͍͑ͯΔͷ͔ʁ ϊʔυͷϓϩάϥϜ ༷Λͱʹղੳ ྫ CGGGGG DGCE ˠಛʹҙຯͳ͍ ˠ࣪
ˠ D ˠؾԹ D ˠ 35 (DevAddr) CS ( ) )BDL3'Ͱ-P3B8"/ͷ σʔλΛ͚ͨʂʂ
֬ೝͯ͠ΈΑ͏ 36 ϊʔυEFWUUZ64#ʹݟ͑ΔͷͰ SPPUͰDBU͢Δͱίϯιʔϧ͕ݟ͑Δ
·ͱΊ n-P3B8"/͍ͬͯΖ͍ΖͰ͖ͦ͏ʂ p実際に最近IoTベンチャー増えてますよね pSORACOMが先導していろんなサービス事例を作っているようです(最近はSigfox..) n."$ίϚϯυͷͳΓ͢·ͦ͠͠͏͕ͩʁ p野外にノードは配置されるし、物理的なハックも不可能ではないかも・・・ p暗号化とMICの処理はきちんと,新しい仕様をきちんと確認する pビーコンの利用はまだまだ検討段階 37
·ͱΊ n)BDL3' 0/&Ͱ4%3ॳମݧʂ-P3B8"/ͷσʔλΛ͚ͨʂ p実はまだ2日しか触ってないです() p今は受信Onlyでしか検証していないので、今度は送信を試してみたい p車のキーレスなどでも検証できる? 38 Good Hack Dayʂ
ิࢿྉ 39
nIUUQTRJJUBDPNBNNPJUFNTEGCEDG n-P3B8"/Ͱ͑Δप -P3B8"/ͷपʹ͍ͭͯ 40 AS923
nӡ༻ϧʔϧ .)[ଳςϨϝʔλ༻ɺςϨίϯτϩʔϧ༻ٴͼσʔλૹ༻ແઢ ઃඋ "3*#45%5 p電波産業界で策定、全体は有料 p最新版(v1.2)は2018/01/2 u2012/02/14 v1.0 → 2017/10/17
v1.1 .)[ଳʹ͍ͭͯఆΊͨ"3*#45%5 41 .)[ଳͷपͷར༻͕͕Γɺ-18"ͳͲ༷ʑͳ௨৴χʔζʹ ରԠͨ͠ΞΫςΟϒܥখిྗແઢγεςϜʢ্ҠಈہɿN8ʣʣ ͷಋೖ͕ਐΉதͰɺ͜ͷΑ͏ͳγεςϜ͕ΑΓޮతʹӡ༻Ͱ͖ΔΑ͏ɺ νϟωϧͷ֦ுٴͼؔ࿈ͷӡ༻نఆΛՃ͢ΔͷͰ͋Δɻ
nதࠃͳͲΛআ͘ΞδΞҬͷ༷ "4.)[*4.#BOE ˠຊͰ.)[ n"3*#45%ʹΑΔͱˠ pただしノードのみなら~928MHzも可 nར༻Ͱ͖Δνϟϯωϧ -P3B8"/Ͱར༻Ͱ͖Δνϟωϧʁ 42
"3*# 45%5ΑΓ 43 ଞͷແઢઃඋ͔Βͷཁٻʢૹ৴͠Α͏ͱ͢Δແઢνϟωϧʹ͍ͭͯΩϟϦΞηϯεΛ ߦͳͬͨͷʹݶΔʣʹԠ͢Δ߹Ͱ͋ͬͯɺҎԼͷ݅Λຬͨ͢ૹ৴ʹ͍ͭͯ ΩϟϦΞηϯεΛཁͣ͞ɺ࣌ؒΓͷૹ৴࣌ؒͷ૯ʹؚ·ͳ͍͜ͱͱ͢Δɻ ᶃಉ࣌༻νϟωϧ͕ͷ߹ɺཁٻͷड৴Λྃͨ͠ޙNTҎʹ։࢝͢Δૹ৴ Ͱ͋ͬͯɺཁٻͷड৴Λྃͨ͠ޙNTҎʹྃ͢Δૹ৴ ᶄಉ࣌༻νϟωϧ͕
ͷ߹ɺཁٻͷड৴Λྃͨ͠ޙNTҎʹ։࢝ ͢Δૹ৴Ͱ͋ͬͯɺཁٻͷड৴Λྃͨ͠ޙNTҎʹྃ͢Δૹ৴ ACK 3.4.3 Ԡ࣌ͷΩϟϦΞηϯεআ֎
n ૹ৴੍࣌ؒݶஔɺ ΩϟϦΞηϯεٴͼ Ԡ࣌ ͷΩϟϦΞηϯεআ֎Ͱنఆ͞Ε͍ͯΔύϥϝʔλͷΈ߹Θͤ "3*# 45%5ΑΓ 44
n5IF5IJOHT/FUXPSLͷ࣭ p2016/4に投稿されるも議論が活発に ~2017/3 6OJWFSTBM-P3B 8"/ HBUFXBZMJNJUBUJPOT CFDBVTFQIZTJDT 45 SF=7, size:
25byte PER(PacketerrorRate) "! Packet Error Rate 1 25byte 1,000 450 lost -> 45% error University of Antwerp in Belgium
nXJUIL)XJUIEFWJDFTUSBOTNJUUJOHSBOEPNMZXJUIJO TFDPOET -P3B QBDLFUDPMMJTJPOTJNVMBUJPO 46 (* 10ms) SF SF
n-P3B NPEVMBUJPOͱ͕ؔ͋ΔΒ͍͠ nࢀߟʹͳΔಈը͕հ͞Ε͍ͯΔ phttps://youtu.be/T3dGLqZrjIQ?t=2122 4'ͱ"JSUJNFͷؔ 47 ! TTN &
https://www.thethingsnetwork.org/forum/t/how-spreading-factor-influence-time-on-air/5068 #$ % "