
BLE एन्क्रिप्शन को क्रैक और डिक्रिप्ट करें

क्रैकल BLE एन्क्रिप्शन (उर्फ ब्लूटूथ स्मार्ट) को क्रैक करता है।
क्रैकल BLE पेयरिंग प्रक्रिया में एक खामी का फायदा उठाता है जो एक हमलावर को TK (अस्थायी कुंजी) का अनुमान लगाने या बहुत तेज़ी से ब्रूट फोर्स करने की अनुमति देता है। TK और पेयरिंग प्रक्रिया से एकत्रित अन्य डेटा के साथ, STK (अल्पकालिक कुंजी) और बाद में LTK (दीर्घकालिक कुंजी) एकत्र की जा सकती हैं।
STK और LTK के साथ, मास्टर और स्लेव के बीच सभी संचार को डिक्रिप्ट किया जा सकता है।
क्रैकल का उपयोग करने का प्रयास करने से पहले, FAQ की समीक्षा करें ताकि यह निर्धारित किया जा सके कि यह आपकी स्थिति में उपयोग करने के लिए उपयुक्त उपकरण है या नहीं।
क्रैकल माइक रयान [email protected] द्वारा लिखा गया था अधिक जानकारी के लिए वेब साइट देखें: http://lacklustre.net/projects/crackle/
क्रैकल के दो मुख्य संचालन तरीके हैं: TK क्रैक करें और LTK के साथ डिक्रिप्ट करें।
यह डिफ़ॉल्ट मोड है जब क्रैकल को -i का उपयोग करके इनपुट फ़ाइल प्रदान की जाती है।
TK क्रैक मोड में, क्रैकल BLE पेयरिंग इवेंट के दौरान उपयोग किए गए TK को ब्रूट फोर्स करता है। क्रैकल इस तथ्य का फायदा उठाता है कि जस्ट वर्क्स (tm) और 6-अंकीय PIN में TK एक मान है जो [0,999999] की सीमा में 128 बिट्स तक पैड किया गया है।
क्रैकल इस ब्रूट फोर्स को करने के लिए कई विधियों का उपयोग करता है: एक बहुत तेज़ विधि यदि सभी पेयरिंग पैकेट इनपुट फ़ाइल में मौजूद हैं, और एक धीमी विधि यदि पैकेट का न्यूनतम सेट मौजूद है।
इस मोड का उपयोग करने के लिए, क्रैकल को एक इनपुट PCAP या PcapNG फ़ाइल के साथ लॉन्च करें जिसमें BLE पेयरिंग वार्तालाप के साथ एक या अधिक कनेक्शन हों। क्रैकल सभी कनेक्शनों का विश्लेषण करेगा, यह निर्धारित करेगा कि किसी दिए गए कनेक्शन को क्रैक करना संभव है या नहीं, और स्वचालित रूप से प्रत्येक को क्रैक करने के लिए सबसे अच्छी रणनीति चुनेगा।
यदि TK सफलतापूर्वक क्रैक हो जाता है, तो क्रैकल शेष कनेक्शन को एन्क्रिप्ट करने के लिए उपयोग की जाने वाली शेष कुंजियाँ प्राप्त करेगा और उसके बाद आने वाले किसी भी एन्क्रिप्टेड पैकेट को डिक्रिप्ट करेगा। यदि LTK का आदान-प्रदान किया जाता है (आमतौर पर एन्क्रिप्शन स्थापित होने के बाद पहली चीज़) तो क्रैकल इस मान को stdout पर आउटपुट करेगा। LTK का उपयोग दो एंडपॉइंट के बीच किसी भी भविष्य के संचार को डिक्रिप्ट करने के लिए किया जा सकता है।
आउटपुट फ़ाइल बनाने के लिए क्रैकल को -o के साथ एक आउटपुट फ़ाइल प्रदान करें जिसमें डिक्रिप्टेड डेटा (पहले से अनएन्क्रिप्टेड डेटा के अतिरिक्त) हो।
उपयोग का उदाहरण:
$ crackle -i input.pcap -o decrypted.pcap
LTK के साथ डिक्रिप्ट मोड में, क्रैकल मास्टर और स्लेव के बीच संचार को डिक्रिप्ट करने के लिए उपयोगकर्ता द्वारा प्रदान किए गए LTK का उपयोग करता है। यह मोड TK क्रैक मोड के डिक्रिप्शन भाग के समान है।
उपयोग का उदाहरण:
$ crackle -i encrypted.pcap -o decrypted.pcap -l 81b06facd90fe7a6e9bbd9cee59736a7
TK क्रैक मोड में, क्रैकल को एक PCAP फ़ाइल की आवश्यकता होती है जिसमें BLE पेयरिंग इवेंट हो। ऐसी फ़ाइल उत्पन्न करने का सबसे अच्छा तरीका मास्टर और स्लेव के बीच एक पेयरिंग इवेंट को कैप्चर करने के लिए Ubertooth का उपयोग करना है।
यह जांचने के लिए कि क्या आपकी PCAP फ़ाइल में सभी आवश्यक पैकेट हैं, -i विकल्प के साथ क्रैकल चलाएँ:
crackle -i <file.pcap>
क्रैकल इनपुट फ़ाइल में प्रत्येक कनेक्शन का विश्लेषण करेगा और अपने विश्लेषण के परिणामों को stdout पर आउटपुट करेगा। यदि आपके पास पेयरिंग वार्तालाप के सभी घटक हैं, तो आउटपुट इस तरह दिखेगा:
Analyzing connection 0:
xx:xx:xx:xx:xx:xx (public) -> yy:yy:yy:yy:yy:yy (public)
Found 13 encrypted packets
Cracking with strategy 0, 20 bits of entropy
!!!
TK found: 412741
!!!
Decrypted 12 packets
LTK found: 81b06facd90fe7a6e9bbd9cee59736a7
Specify an output file with -o to decrypt packets!
सभी पैकेट को डिक्रिप्ट करने के लिए, -o विकल्प जोड़ें:
crackle -i <file.pcap> -o <output.pcap>
आउटपुट फ़ाइल में मूल PCAP के सभी एन्क्रिप्टेड पैकेट के डिक्रिप्टेड संस्करण, साथ ही सभी अनएन्क्रिप्टेड पैकेट शामिल होंगे। ध्यान दें कि CRC की पुनर्गणना नहीं की जाती है, इसलिए डिक्रिप्टेड पैकेट के CRC गलत होंगे।
LTK के साथ डिक्रिप्ट मोड में, क्रैकल को कम से कम LL_ENC_REQ और LL_ENC_RSP पैकेट वाली PCAP फ़ाइल और संचार को एन्क्रिप्ट करने के लिए उपयोग किए गए LTK की आवश्यकता होती है।
LTK का प्रारूप 128 बिट का हेक्साडेसीमल नंबर है जिसमें कोई स्थान या विभाजक नहीं है, सबसे महत्वपूर्ण ऑक्टेट से सबसे कम महत्वपूर्ण ऑक्टेट तक। उदाहरण:
-l 81b06facd90fe7a6e9bbd9cee59736a7
यह जांचने के लिए कि क्या आपकी PCAP फ़ाइल में सभी आवश्यक पैकेट हैं, -i और -l के साथ क्रैकल चलाएँ:
crackle -i <file.pcap> -l <ltk>
यदि आपके पास दोनों आवश्यक पैकेट हैं, तो प्रोग्राम को इस तरह का आउटपुट उत्पन्न करना चाहिए:
Analyzing connection 0:
xx:xx:xx:xx:xx:xx (public) -> yy:yy:yy:yy:yy:yy (public)
Found 9 encrypted packets
Decrypted 6 packets
Specify an output file with -o to decrypt packets!
सभी पैकेट को डिक्रिप्ट करने के लिए, -o विकल्प जोड़ें:
crackle -i <file.pcap> -o <out.pcap> -l <ltk>
आउटपुट फ़ाइल ऊपर वर्णित आउटपुट फ़ाइल के समान ही उत्पन्न होगी।
tests निर्देशिका में शामिल परीक्षण फ़ाइलें क्रैकल के साथ खेलने के लिए दिलचस्प इनपुट के रूप में काम करती हैं। प्रत्येक परीक्षण के उपनिर्देशिका में शामिल README फ़ाइलों की समीक्षा करें।
क्रैकल के साथ क्रैक करने के लिए कुछ नमूना फ़ाइलें प्राप्त करें। अधिक जानकारी के लिए tarball के अंदर README देखें:
https://lacklustre.net/bluetooth/crackle-sample.tgz
हमने अक्सर पूछे जाने वाले प्रश्नों की एक सूची तैयार की है।
Ubertooth परियोजना के माइक ओसमैन और डोमिनिक स्पिल को बहुत-बहुत धन्यवाद। उनके बिना यह सब संभव नहीं होता।
PCAP फ़ाइलें बनाने और उनके साथ काम करने में मदद के लिए Kismet के माइक केरशॉ/ड्रैगॉर्न को बहुत-बहुत धन्यवाद।
irc.freenode.net पर #ubertooth के बाकी सभी लोगों को धन्यवाद।