Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[#IoTSecJP Tokyo #4] LoRaWANとセキュリティの話し/How Can I Hack LoRaWAN?

tokina (himitu)
September 15, 2018

[#IoTSecJP Tokyo #4] LoRaWANとセキュリティの話し/How Can I Hack LoRaWAN?

IoTSecJP Tokyo #4にてお話したスライドになります.
(後日一部更新しました)

tokina (himitu)

September 15, 2018
Tweet

More Decks by tokina (himitu)

Other Decks in Technology

Transcript

  1.  ిؾ௨৴େֶେֶӃ ೥ !@UPLJOB *P54FD+1 5PLZP-P3B8"/ʹ͍ͭͯͷηΩϡϦςΟͷ࿩࿮ -P3B8"/ͱηΩϡϦςΟͱ͋ͱ͸ࡉ͔͍࿩ 1 )PX$BO*IBDL-P3B8"/

  2. "HFOEB nࣗݾ঺հ n-18" -18"/ ͱ-P3B8"/ n-P3B8"/ͷٕज़తͳ࢓૊Έͱ๏཯ nωοτϫʔΫϨϕϧͷηΩϡϦςΟ n࣮ફʂ-P3B8"/εχοϑΟϯάʂʂ n·ͱΊ 2

  3. ࣗݾ঺հ nॴଐɿిؾ௨৴େֶେֶӃ ޿ౡࢢཱେֶଔ p情報ネットワーク専攻 NOTセキュリティ pR社でバイトしてます p御社で自動車セキュリティをする予定 nݚڀɿ-P3B8"/ʹ͓͚ΔωοτϫʔΫޮ཰Խʹ͍ͭͯ pかつては自動車のセキュリティについて研究 pMAC層や物理層とか少し詳しいかもしれない

    nڵຯɿ3BT1J "84 ࣗಈंηΩϡϦςΟ -P3B8"/ *P5 4FD FUD n*P54FD+1͸̏ճ໨ͷࢀՃʹͳΓ·͢ʂ n͜ͷલηΩϡϦςΟɾΩϟϯϓͷνϡʔλΛͨ͠Γͱ͔ͯ͠·ͨ͠ )( 3
  4. -P3B8"/ɺ஌ͬͯ·͔͢ʁ 2017/08 https://www.rs-online.com/designspark/building-a-lorawan-enabled-bat-detector-jp 4

  5. ࠷ۙΑ͘ฉ͘-18"/ͱ-P3B8"/ *P5     ۙڑ཭ ௒ ௕ڑ཭ (

     )    km -18"/-PX1PXFS8JEF"SFB/FUXPSL ྫ -P3B8"/ɼ4JHGPYɽ-5..ɼ8J'J )BMMPX BI →Long Range WAN 5
  6. -P3B8"/ͷΠϝʔδ Server AP AP 6     

    (mobility)   LoRaWAN 10km
  7. -P3B8"/ͷಛ௃ n௒ʂলిྗ p通常の乾電池で10年持つなど n௒ʂ௕ڑ཭௨৴Մೳ p最大10km以上とも言われている n໔ڐෆཁͰར༻Մೳʴن֨΍ඪ४͕ެ։͞Ε͍ͯΔ GW n௒ʂ௨৴଎౓͕஗͍ p送信できるデータはわずか n௒ʂ௨৴͕ඇޮ཰

    pMACにpureALOHAを採用 LoRa→ ←LoRaWAN (~10km) Server ηϯαͳͲͷ໨తͰ ࠓޙ΋ͬͱ࢖ΘΕͦ͏Ͱ͸ʁʁ ී௨ͷ௨৴ʹ࢖͏ͷ͸೉͍͠ɾɾɾ 7
  8. 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
  9. ౦ژۙ߫ͷ-P3B (BUFXBZઃஔঢ়گʢ55/ʹొ࿥͍ͯ͠Δ΋ͷʣ https://www.thethingsnetwork.org/map 9

  10. -P3B8"/ͷٕज़తͳ࢓૊Έͱ๏཯ 10 Technology and Radio Law of LoRaWAN

  11. -P3B8"/͸୭͕ఏڙ͍ͯ͠Δͷ͔ʁ nجຊతͳ࢓༷ʢ௨৴ɼόοΫΤϯυͳͲʣ͸ެ։͞Ε͍ͯΔ p௨৴ͷ࢓༷͸ެ։͞Ε͍ͯΔʢૹ৴νοϓͷ࢓༷͸ެ։͞Ε͍ͯͳ͍ʣ pݱࡏͷ࢓༷ͷ࠷৽൛͸ࡢ೥຤ʹެ։͞ΕͨW MPSBXBO TQFDJGJDBUJPO pࡉ͔͍ϩʔΧϥΠζ࢓༷͸"4.)[*4# CBOEʹͯఆٛ https://lora-alliance.org/ 11

  12. ೔ຊͰͷݱঢ় 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
  13. -P3B8"/ 4QFDJGJDBUJPO n$MBTT pLoRaWANには「Class」という通信方法の概念がある u現在はClass Bがテスト実装段階(一応考慮はされている) n$MBTT" puplinkの通信タイミングはランダム = pureALOHA

    (unslotted ALOHA) pメッセージの到達性を高めるため連送を行う u同時に2つのメッセージを送信、受信ウィンドウを2つ開く 13 $MBTT ϊʔυͷಈ࡞ͳͲ ಛ௃ " • શσόΠε͕αϙʔτ͢Δ • ೚ҙͷλΠϛϯάͰ6QMJOL͕ൃੜ • ஗Ԇେ • ফඅిྗ௿ # • Ϗʔίϯૹ৴ͷͨΊͷΫϥε • ωοτϫʔΫओಋͷ௨৴͕Մೳ • %PXOMJOLʹରԠ $ • ड৴εϩοτΛৗʹ։͘ • ৗ࣌ిྗڙڅՄೳͳϊʔυΛ૝ఆ • ஗Ԇখ • ফඅిྗେ
  14. -P3B8"/ͷηΩϡϦςΟ جຊ nͲΜͳ߈ܸ͕͋Δʁ pEvasedropping/盗聴 uトラフィックを盗聴,他の攻撃の参考になったりする pReplay attack/リプレイ攻撃 u盗聴したデータをそのまま再送する.データの中身が不明でもOK. pMan in

    the middle attack/中間者攻撃 uやりとりの間に割り込んでデータを(場合によってはリアルタイムに改ざ んして)中継する pDenial of service/DoS攻撃 pKey cracking 14
  15. -P3B8"/ͷηΩϡϦςΟ ൃల pセッションハイジャック uこの場合ほとんど中間者攻撃と同じ p不正なアクセスポイントの設置 uもともとあるゲートウェイ,もしくは完全に新しいゲートウェイとして動作 様々な攻撃が可能に pゲートウェイに対する改ざん uゲートウェイは遠隔ログイン可能な場合が多く,不正に改ざん利用される可能性 pMACスプーフィング

    uLoRaWANではMACアドレスを利用せず,独自の割当アドレスを利用している そこで,そのアドレスを勝手になりすまし,データの不正取得などの可能性 15
  16. ηΩϡϦςΟͷ࿩ ʙωοτϫʔΫϨϕϧͷ࿩ʙ ࢀߟɿ -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
  17. ࠓճ঺հ͢Δͷ͸ͲΜͳ߈ܸʁ nμ΢ϯϦϯΫ௨৴ʢήʔτ΢ΣΠˠϊʔυʣʹண໨ pLoRaWANにおいて様々な設定はMACメッセージで行われる uDutyCycle,参加,通信タイミング,チャンネルなど pClass Bビーコンによる情報の通知,ノードの受信ウィンドウの操作 u周期的に動作する各ノードにイベント的にダウンリンク通信を行う pReplay attack/リプレイ攻撃 u盗聴したデータをそのまま再送する.データの中身が不明でもOK.

    「MACメッセージ」と「ビーコン」のリプレイ攻撃について紹介 17
  18. -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-# "./,
  19. ."$ϝοηʔδͷϦϓϨΠ߈ܸ ϝοηʔδͷྫ  MIC    0x00 0x01 0x19

    0x76 → 0x76 0x19 0x01 0x00 19
  20. ."$ϝοηʔδͷϦϓϨΠ߈ܸ nద੾ͳ.*$ͱΧ΢ϯλΛઃఆग़དྷͨ৔߹ n͔͠͠ɺ.*$ͷܭࢉʹ͸"&4ΞϧΰϦζϜ͕࠾༻͞Ε͍ͯΔ p鍵が奪われない限り、計算能力的に現実時間的に攻撃は不可能・・・   MIC  128bit left

    32-bits of a CMAC results into ( 1 / 232 ) * 2128 = 296 20
  21. ."$ϝοηʔδͷϦϓϨΠ߈ܸ n࣮͸҉߸Խ΍.*$ͷܭࢉखॱͳͲ͸֤ࣗͷ࣮૷ʹґଘ͍ͯ͠Δ nྫ͑͹ɾɾɾ p以前のLoRaWAN SpecificationではFOptsの暗号化がマストになっていなかった u現在のSpecification v1.1では暗号化がMUSTとなっている pこうした細かいところの実装をセキュリティを意識して実装すべき nԿ͕ى͜Δʁ pMAC層はネットワーク層より先に実行される(レイヤー的に)

    p暗号化されていない(平文)+MICはネットワーク層で計算される →先にMACコマンドが処理されてしまう! 21
  22. #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
  23. ϏʔίϯͷϦϓϨΠ߈ܸ nશ͘ಉ͡Ϗʔίϯͷ࠶ૹ p同じビーコンを処理しない実装にしている場合は意味がない 23

  24. ϏʔίϯͷϦϓϨΠ߈ܸ n࣌ؒϑΟʔϧυΛมߋͯ͠Έͨྫ p同時にCRCが実装されている場合はCRCも計算する pこれにより時間フィールドの値が変更され、起動タイミングの強制的な変更などに つながる可能性がある 24

  25. ϏʔίϯͷϦϓϨΠ߈ܸ n(BUFXBZʹ͍ͭͯͷ৘ใΛมߋͨ͠ྫ p先と同様CRCについても必要に応じて変更する必要がある pノードの位置情報がその他の情報やGW間連携などの予期しない動作に繋がる可能性 25

  26. 26  LoRaWANHackRF ONE    Let’s Sniff LoRaWAN

    using HackRF ONE
  27. 01/07 ݄๭೔ ࠷ऴ໘઀ ޚࣾʮ΄͍͠ػࡐ͋Δʁʯ ࢲʮʢνϟϯεʂʣ͋ɺ͍·)BDL3' 0/&͍ͬͯ͏ΨδΣοτ͕ʯ 27 07/07 09/02 ෋࢜ࢁ

    09/03 ࢲʮಧ͍ͨʂʯ (๨Εͯͨ) (ͱΓ͋͑ͣ์ஔ)
  28. ΍Γ͍ͨ͜ͱ )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
  29. ϊʔυɿ-P3B NJOJ+1 "5NFHB1.$6 ϓϩάϥϜ IUUQTHJUIVCDPNPQFOXBWFDPKQ-P3B5P5IJOH4QFBL ࠓճ͸҉߸Խͳ͠ ηϯαͷσʔλΛ-P3B8"/Ͱ%JTUSJCVUF 29

  30. %&.0͍ͨ͠ 30

  31. (RSYͰ-P3B8"/ͷి೾Λ؍ଌ nެࣜαΠτΛࢀߟʹΠϯετʔϧʢIUUQHRSYELUBHNBDPTYʣ 31    Class A  

  32. Ͳ͏ʹ͔σʔλΛ೷͚ͳ͍͔ʁ ʮMPSBXBO TOJGGIBDLSGʯͳͲͰݕࡧˠ SQQHSMPSB͕ώοτ ґଘؔ܎ͷ໰୊Ͱɺ ࠓճ͸9VCVOUVʹ؀ڥΛ༻ҙ 32  LoRaWAN Decode

     
  33. ઃఆͦͷ··Ͱ͸πʔϧ͸ར༻Ͱ͖ͳ͍ͷͰҰ෦मਖ਼ 33 ϊʔυͷϓϩάϥϜ प೾਺ͱ4'Λमਖ਼ HSMPSBͷMPSB@SFDFJWF@SFBMUJNFQZ σϑΥϧτͷ4' 4QSFBEJOH'BDPS ͸ʢ࠷௿

  34. Ͱ͖ͨʂ 34 

  35. ͲΜͳσʔλ͕ݟ͍͑ͯΔͷ͔ʁ ϊʔυͷϓϩάϥϜ ࢓༷Λ΋ͱʹղੳ ྫ CGGGGG DGCE ˠಛʹҙຯͳ͍ ˠ࣪౓  

    ˠ D ˠؾԹ D  ˠ౓ 35 (DevAddr)  CS  (  ) )BDL3'Ͱ-P3B8"/ͷ σʔλΛ೷͚ͨʂʂ
  36. ֬ೝͯ͠ΈΑ͏ 36 ϊʔυ͸EFWUUZ64#ʹݟ͑ΔͷͰ SPPUͰDBU͢Δͱίϯιʔϧ͕ݟ͑Δ

  37. ·ͱΊ n-P3B8"/͍ͬͯΖ͍ΖͰ͖ͦ͏ʂ p実際に最近IoTベンチャー増えてますよね pSORACOMが先導していろんなサービス事例を作っているようです(最近はSigfox..) n."$ίϚϯυͷͳΓ͢·͠͸೉ͦ͠͏͕ͩʁ p野外にノードは配置されるし、物理的なハックも不可能ではないかも・・・ p暗号化とMICの処理はきちんと,新しい仕様をきちんと確認する pビーコンの利用はまだまだ検討段階 37

  38. ·ͱΊ n)BDL3' 0/&Ͱ4%3ॳମݧʂ-P3B8"/ͷσʔλΛ೷͚ͨʂ p実はまだ2日しか触ってないです() p今は受信Onlyでしか検証していないので、今度は送信を試してみたい p車のキーレスなどでも検証できる? 38 Good Hack Dayʂ

  39. ิ଍ࢿྉ 39

  40. nIUUQTRJJUBDPNBNNPJUFNTEGCEDG n-P3B8"/Ͱ࢖͑Δप೾਺ -P3B8"/ͷप೾਺ʹ͍ͭͯ 40 AS923

  41. 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ʣʣ ͷಋೖ͕ਐΉதͰɺ͜ͷΑ͏ͳγεςϜ͕ΑΓޮ཰తʹӡ༻Ͱ͖ΔΑ͏ɺ νϟωϧͷ֦ுٴͼؔ࿈ͷӡ༻نఆΛ௥Ճ͢Δ΋ͷͰ͋Δɻ
  42. nதࠃͳͲΛআ͘ΞδΞ஍Ҭͷ࢓༷ "4.)[*4.#BOE ˠ೔ຊͰ͸.)[ n"3*#45%ʹΑΔͱˠ pただしノードのみなら~928MHzも可 nར༻Ͱ͖Δνϟϯωϧ͸ -P3B8"/Ͱར༻Ͱ͖Δνϟωϧ͸ʁ 42  

    
  43. "3*# 45%5ΑΓ 43 ଞͷແઢઃඋ͔Βͷཁٻʢૹ৴͠Α͏ͱ͢Δແઢνϟωϧʹ͍ͭͯΩϟϦΞηϯεΛ ߦͳͬͨ΋ͷʹݶΔʣʹԠ౴͢Δ৔߹Ͱ͋ͬͯɺҎԼͷ৚݅Λຬͨ͢ૹ৴ʹ͍ͭͯ͸ ΩϟϦΞηϯεΛཁͣ͞ɺ࣌ؒ౰Γͷૹ৴࣌ؒͷ૯࿨ʹ͸ؚ·ͳ͍͜ͱͱ͢Δɻ ᶃಉ࣌࢖༻νϟωϧ਺͕ͷ৔߹ɺཁٻͷड৴Λ׬ྃͨ͠ޙNTҎ಺ʹ։࢝͢Δૹ৴ Ͱ͋ͬͯɺཁٻͷड৴Λ׬ྃͨ͠ޙNTҎ಺ʹ׬ྃ͢Δૹ৴ ᶄಉ࣌࢖༻νϟωϧ਺͕ 

     ͷ৔߹ɺཁٻͷड৴Λ׬ྃͨ͠ޙNTҎ಺ʹ։࢝ ͢Δૹ৴Ͱ͋ͬͯɺཁٻͷड৴Λ׬ྃͨ͠ޙNTҎ಺ʹ׬ྃ͢Δૹ৴ ACK  3.4.3 Ԡ౴࣌ͷΩϟϦΞηϯεআ֎
  44. n ૹ৴੍࣌ؒݶ૷ஔɺ ΩϟϦΞηϯεٴͼ Ԡ౴࣌ ͷΩϟϦΞηϯεআ֎Ͱنఆ͞Ε͍ͯΔύϥϝʔλͷ૊Έ߹Θͤ "3*# 45%5ΑΓ 44

  45. 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
  46. nXJUIL)XJUIEFWJDFTUSBOTNJUUJOHSBOEPNMZXJUIJO TFDPOET -P3B QBDLFUDPMMJTJPOTJNVMBUJPO 46  (* 10ms) SF SF

         
  47. 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 #$   % "