
BLE Man-in-the-Middle फ्रेमवर्क जो वेब-आधारित इंटरसेप्शन प्रॉक्सी के माध्यम से Bluetooth Smart डिवाइसों और मोबाइल ऐप्स के बीच GATT ट्रैफ़िक को इंटरसेप्ट, रीप्ले और संशोधित करता है।
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 Docker कंटेनर में काम नहीं करता।
वर्चुअल मशीन का उपयोग इस फ्रेमवर्क को एक ही कंप्यूटर पर काम कराने में मदद कर सकता है।
अपनी वर्चुअल मशीन से, 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 के लेखक भी हैं।
Copyright (c) 2016 Econocom Digital Security
इसके द्वारा, निःशुल्क, इस सॉफ्टवेयर और संबंधित दस्तावेज़ीकरण फ़ाइलों ("सॉफ्टवेयर") की एक प्रति प्राप्त करने वाले किसी भी व्यक्ति को, बिना किसी प्रतिबंध के सॉफ्टवेयर से निपटने की अनुमति प्रदान की जाती है, जिसमें बिना किसी सीमा के उपयोग, प्रतिलिपि, संशोधन, विलय, प्रकाशन, वितरण, उपलाइसेंस और/या सॉफ्टवेयर की प्रतियां बेचने के अधिकार शामिल हैं, और जिन व्यक्तियों को सॉफ्टवेयर प्रदान किया जाता है उन्हें भी ऐसा करने की अनुमति देने के लिए, निम्नलिखित शर्तों के अधीन:
उपरोक्त कॉपीराइट नोटिस और यह अनुमति नोटिस सॉफ्टवेयर की सभी प्रतियों या महत्वपूर्ण भागों में शामिल किए जाएंगे।
सॉफ्टवेयर "जैसा है" (AS IS) प्रदान किया जाता है, बिना किसी प्रकार की वारंटी के, व्यक्त या निहित, जिसमें व्यापारिकता, किसी विशेष उद्देश्य के लिए उपयुक्तता और अनुल्लंघनीयता की वारंटियाँ शामिल हैं लेकिन इन्हीं तक सीमित नहीं हैं। किसी भी स्थिति में लेखक या कॉपीराइट धारक किसी भी दावे, क्षति या अन्य दायित्व के लिए उत्तरदायी नहीं होंगे, चाहे वह अनुबंध की कार्रवाई में हो, टोर्ट में या अन्यथा, सॉफ्टवेयर से या सॉफ्टवेयर के उपयोग या अन्य कार्यों से उत्पन्न या संबंधित हो।