
BtleJuice ब्लूटूथ स्मार्ट (LE) मैन-इन-द-मिडिल फ्रेमवर्क
BtleJuice ब्लूटूथ स्मार्ट डिवाइसों (जिन्हें ब्लूटूथ लो एनर्जी भी कहा जाता है) पर मैन-इन-द-मिडल हमले करने के लिए एक पूर्ण फ्रेमवर्क है। इसमें शामिल हैं:
BtleJuice को स्थापित करना बहुत आसान है। सबसे पहले, सुनिश्चित करें कि आपका सिस्टम Node.js (>=4.3.2) और npm के हाल के संस्करण का उपयोग करता है। फिर, सुनिश्चित करें कि सभी आवश्यक निर्भरताएँ स्थापित करें:
sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev
sudo yum install bluez bluez-libs bluez-libs-devel npm
अंत में, npm का उपयोग करके BtleJuice स्थापित करें:
sudo npm install -g btlejuice
यदि सब कुछ ठीक रहा, तो BtleJuice उपयोग के लिए तैयार है !
BtleJuice दो मुख्य घटकों से बना है: एक इंटरसेप्शन प्रॉक्सी और एक कोर। इन दो घटकों को स्वतंत्र मशीनों पर चलाने की आवश्यकता होती है ताकि एक साथ दो ब्लूटूथ 4.0+ एडाप्टर संचालित हो सकें। BtleJuice Proxy डॉकर कंटेनर में काम नहीं करता।
एक वर्चुअल मशीन का उपयोग इस फ्रेमवर्क को एक ही कंप्यूटर पर काम करने में मदद कर सकता है।
अपनी वर्चुअल मशीन से, btlejuice स्थापित करें और सुनिश्चित करें कि आपका USB BT4 एडाप्टर वर्चुअल मशीन से उपलब्ध है:
$ sudo hciconfig
hci0: Type: BR/EDR Bus: USB
BD Address: 10:02:B5:18:07:AD ACL MTU: 1021:5 SCO MTU: 96:6
DOWN
RX bytes:1433 acl:0 sco:0 events:171 errors:0
TX bytes:30206 acl:0 sco:0 commands:170 errors:0
$ sudo hciconfig hci0 up
फिर, सुनिश्चित करें कि आपकी वर्चुअल मशीन के पास होस्ट से पहुंचने योग्य एक IP पता है।
अपनी वर्चुअल मशीन में प्रॉक्सी लॉन्च करें:
$ sudo btlejuice-proxy
अपनी होस्ट मशीन पर, ब्लूटूथ सेवा को रोकना न भूलें और सुनिश्चित करें कि HCI डिवाइस खुला/प्रारंभित रहे:
$ sudo service bluetooth stop
$ sudo hciconfig hci0 up
अंत में, अपनी होस्ट मशीन पर निम्न कमांड चलाएँ:
$ sudo btlejuice -u <Proxy IP address> -w
-w फ्लैग BtleJuice को वेब इंटरफ़ेस शुरू करने के लिए कहता है जबकि -u विकल्प प्रॉक्सी का IP पता निर्दिष्ट करता है।
वेब उपयोगकर्ता इंटरफ़ेस अब http://localhost:8080 पर उपलब्ध है। ध्यान दें कि वेब सर्वर पोर्ट को कमांड-लाइन के माध्यम से बदला जा सकता है।
BtleJuice का वेब इंटरफ़ेस शीर्ष-दाएं कोने में इंटरसेप्शन कोर को नियंत्रित करने के लिए लिंक का एक सेट प्रदान करता है, जैसा कि नीचे दिखाया गया है।

पहले, Select target बटन पर क्लिक करें और एक डायलॉग दिखाई देगा जो इंटरसेप्शन कोर द्वारा पाए गए सभी उपलब्ध ब्लूटूथ लो एनर्जी डिवाइसों को प्रदर्शित करेगा:

वांछित लक्ष्य पर डबल-क्लिक करें, और इंटरफ़ेस के तैयार होने की प्रतीक्षा करें (ब्लूटूथ बटन का स्वरूप बदल जाएगा)। एक बार डमी डिवाइस तैयार हो जाने पर, डमी डिवाइस से कनेक्ट करने के लिए संबंधित मोबाइल एप्लिकेशन या किसी अन्य डिवाइस का उपयोग करें (यह इस पर निर्भर करता है कि क्या अपेक्षित है)। यदि कनेक्शन सफल होता है, तो मुख्य इंटरफ़ेस पर एक Connected ईवेंट दिखाया जाएगा।

फिर सभी इंटरसेप्ट किए गए GATT ऑपरेशन उनके संबंधित सेवाओं और विशेषताओं के UUID के साथ प्रदर्शित होते हैं, और निश्चित रूप से उनके साथ जुड़ा डेटा भी। डेटा डिफ़ॉल्ट रूप से HexII प्रारूप (Ange Albertini द्वारा डिज़ाइन किए गए प्रारूप का एक प्रकार) में दिखाया जाता है, लेकिन आप डेटा पर क्लिक करके HexII से Hex (और वापस) पर स्विच कर सकते हैं। Hex और HexII दोनों प्रारूप BtleJuice द्वारा समर्थित हैं।
किसी भी GATT ऑपरेशन को राइट-क्लिक करके और फिर Replay विकल्प चुनकर रीप्ले करना संभव है, जैसा नीचे दिखाया गया है:


संबंधित GATT ऑपरेशन को रीप्ले करने के लिए Write (या Read) बटन पर क्लिक करें। यह ऑपरेशन मुख्य इंटरफ़ेस में लॉग किया जाएगा।
अंतिम लेकिन महत्वपूर्ण, इंटरफ़ेस किसी भी GATT ऑपरेशन को स्थानीय या वैश्विक रूप से इंटरसेप्ट कर सकता है और फ्लाई पर डेटा संशोधन की अनुमति देता है। आप या तो शीर्ष-दाएं कोने में Intercept बटन पर क्लिक करके वैश्विक इंटरसेप्शन का उपयोग कर सकते हैं या किसी दी गई सेवा और विशेषता पर हुक को सक्षम या अक्षम करने के लिए प्रासंगिक मेनू का उपयोग कर सकते हैं। जब भी कोई GATT ऑपरेशन इंटरसेप्ट किया जाता है, निम्न डायलॉग बॉक्स दिखाई देगा:

संस्करण 1.0.6 के बाद से, इंटरफ़ेस एक डेटा निर्यात सुविधा प्रदान करता है जो पठनीय और JSON निर्यात की अनुमति देता है। ये निर्यात इंटरसेप्ट किए गए GATT ऑपरेशनों के आधार पर उत्पन्न होते हैं, लेकिन इसमें लक्ष्य डिवाइस के बारे में जानकारी भी शामिल होती है। जब Export बटन पर क्लिक किया जाता है, तो निम्न डायलॉग दिखाई देगा:

इंटरसेप्ट किए गए डेटा का JSON (या टेक्स्ट) संस्करण डाउनलोड करने के लिए डायलॉग बॉक्स के नीचे Export बटन पर क्लिक करें।
सेटिंग्स डायलॉग वर्तमान में एक एकल विकल्प प्रदान करता है जो लक्ष्य डिवाइस के डिस्कनेक्ट होने पर प्रॉक्सी को स्वचालित रूप से पुनः कनेक्ट करने की अनुमति देता है। यह उन डिवाइसों से निपटने में उपयोगी हो सकता है जो थोड़े समय के लिए सक्रिय होते हैं।

जब प्रॉक्सी सक्रिय है तो शीर्ष-दाएं Select Target बटन पर क्लिक करने से यह रुक जाएगा और लक्ष्य चयन फिर से संभव हो जाएगा।
BtleJuice के Node.js बाइंडिंग्स को भी npm के माध्यम से स्थापित किया जा सकता है:
$ sudo npm install -g btlejuice-bindings
Node.js बाइंडिंग्स का उपयोग कैसे करें इसके बारे में अधिक जानकारी के लिए पैकेज दस्तावेज़ीकरण देखें।
Slawomir Jasek को विशेष धन्यवाद जिन्होंने मोबाइल एप्लिकेशन के साथ समस्याओं से बचने के लिए कई noble/bleno ट्रिक्स बताए, और DEF CON 24 के दौरान BLE MITM रणनीतियाँ साझा कीं =)। वह Gattacker के लेखक भी हैं।
कॉपीराइट (c) 2016 Econocom Digital Security
इसके द्वारा, किसी भी व्यक्ति को जो इस सॉफ्टवेयर और संबंधित दस्तावेज़ फ़ाइलों (सॉफ्टवेयर) की एक प्रति प्राप्त करता है, बिना किसी प्रतिबंध के सॉफ्टवेयर में सौदा करने की अनुमति दी जाती है, जिसमें बिना सीमा के, सॉफ्टवेयर की प्रतियों का उपयोग, नकल, संशोधन, विलय, प्रकाशित, वितरित, उप-लाइसेंस, और/या बेचने के अधिकार शामिल हैं, और जिन व्यक्तियों को सॉफ्टवेयर प्रदान किया जाता है, उन्हें ऐसा करने की अनुमति दी जाती है, निम्नलिखित शर्तों के अधीन:
उपरोक्त कॉपीराइट नोटिस और यह अनुमति नोटिस सॉफ्टवेयर की सभी प्रतियों या महत्वपूर्ण भागों में शामिल किए जाएंगे।
सॉफ्टवेयर "जैसा है" प्रदान किया जाता है, बिना किसी प्रकार की वारंटी के, स्पष्ट या निहित, जिसमें बिना सीमा के व्यापारिकता, किसी विशेष उद्देश्य के लिए उपयुक्तता और उल्लंघन की वारंटी शामिल है। किसी भी स्थिति में लेखक या कॉपीराइट धारक किसी भी दावे, क्षति या अन्य देयता के लिए उत्तरदायी नहीं होंगे, चाहे वह अनुबंध, अपकृत्य या अन्यथा के कार्य में, सॉफ्टवेयर या सॉफ्टवेयर के उपयोग या अन्य सौदों से उत्पन्न हो।