
DNS रीबाइंडिंग हमले बनाने के लिए एक फ्रंट-एंड जावास्क्रिप्ट टूलकिट।
डेमो | सुरक्षा परामर्श | शामिल पेलोड | FAQ
अस्वीकरण: यह सॉफ्टवेयर केवल शैक्षिक उद्देश्यों के लिए है। इस सॉफ्टवेयर का उपयोग अवैध गतिविधियों के लिए नहीं किया जाना चाहिए। लेखक इसके उपयोग के लिए जिम्मेदार नहीं है। मूर्ख मत बनो।
DNS रिबाइंड टूलकिट एक फ्रंटएंड जावास्क्रिप्ट फ्रेमवर्क है जो स्थानीय क्षेत्र नेटवर्क (LAN) पर कमजोर होस्ट और सेवाओं के खिलाफ DNS रिबाइंडिंग शोषण विकसित करने के लिए है। इसका उपयोग Google Home, Roku, Sonos WiFi स्पीकर, WiFi राउटर, "स्मार्ट" थर्मोस्टैट और अन्य IoT उपकरणों जैसे उपकरणों को लक्षित करने के लिए किया जा सकता है। इस टूलकिट के साथ, एक दूरस्थ हमलावर राउटर के फ़ायरवॉल को बायपास कर सकता है और पीड़ित के घरेलू नेटवर्क पर उपकरणों के साथ सीधे बातचीत कर सकता है, निजी जानकारी बाहर निकाल सकता है और कुछ मामलों में, कमजोर उपकरणों को नियंत्रित भी कर सकता है।
हमले के लिए लक्ष्य नेटवर्क पर पीड़ित को केवल एक लिंक का अनुसरण करने या एक दुर्भावनापूर्ण iframe वाला HTML विज्ञापन दिखाए जाने की आवश्यकता होती है। वहां से, पीड़ित के वेब ब्राउज़र का उपयोग प्रॉक्सी के रूप में किया जाता है ताकि उनके घरेलू नेटवर्क से जुड़े अन्य होस्ट तक सीधे पहुंच सकें। ये लक्ष्य मशीनें और सेवाएं अन्यथा इंटरनेट से हमलावर के लिए उपलब्ध नहीं होंगी। दूरस्थ हमलावर को यह नहीं पता हो सकता है कि वे सेवाएं क्या हैं, या वे पीड़ित के नेटवर्क पर कौन से IP पते रखती हैं, लेकिन DNS रिबाइंड टूलकिट सैकड़ों संभावित IP पतों को ब्रूट फोर्स करके इससे निपटता है।
हुड के तहत, यह उपकरण DNS रिबाइंडिंग हमले को निष्पादित करने और पीड़ित के वेब ब्राउज़र को समान-मूल नीति का उल्लंघन करने के लिए मूर्ख बनाने के लिए rebind.network:53 पर चल रहे एक सार्वजनिक whonow DNS सर्वर का उपयोग करता है। वहां से, यह पीड़ित के निजी IP पते को लीक करने के लिए WebRTC का उपयोग करता है, मान लीजिए 192.168.1.36। यह नेटवर्क के सबनेट का अनुमान लगाने के लिए इस स्थानीय IP पते के पहले तीन ऑक्टेट का उपयोग करता है और फिर 192.168.1.0-255 से 256 iframes इंजेक्ट करता है, जो नेटवर्क सबनेट पर संभावित प्रत्येक होस्ट को एक पेलोड प्रदान करता है।
इस टूलकिट का उपयोग आपके स्वयं के DNS रिबाइंडिंग हमलों को विकसित करने और तैनात करने के लिए किया जा सकता है। इस टूलकिट के साथ payloads/ निर्देशिका में कई वास्तविक दुनिया के हमले पेलोड शामिल हैं। इन पेलोड में Google Home और Roku उत्पादों सहित कुछ लोकप्रिय IoT उपकरणों के खिलाफ जानकारी निकालने (और रिकरोल मूर्खता) हमले शामिल हैं।
यह टूलकिट DNS रिबाइंडिंग हमलों में स्वतंत्र सुरक्षा अनुसंधान का उत्पाद है। आप उस मूल शोध के बारे में यहाँ पढ़ सकते हैं।
# रिपो को क्लोन करें
git clone https://github.com/brannondorsey/dns-rebind-toolkit.git
cd dns-rebind-toolkit
# निर्भरताएं स्थापित करें
npm install
# रूट का उपयोग करके सर्वर चलाएं ताकि विशेषाधिकार प्राप्त पोर्ट 80 तक पहुंच प्रदान हो सके
# यह स्क्रिप्ट www/, /examples, /share, और /payloads निर्देशिकाओं से फ़ाइलों की सेवा करता है
sudo node server
डिफ़ॉल्ट रूप से, server.js क्रमशः पोर्ट 8008, 8060, 1400, 80 और 80 पर अपनी सेवाएं चलाने वाले Google Home, Roku, Sonos स्पीकर, Phillips Hue लाइट बल्ब और Radio Thermostat उपकरणों को लक्षित करने वाले पेलोड प्रदान करता है। यदि आपके घरेलू नेटवर्क पर इनमें से कोई उपकरण है, तो एक अच्छे आश्चर्य के लिए http://rebind.network पर नेविगेट करें ;)। डेवलपर कंसोल खोलें और देखें कि कैसे इन सेवाओं का हानिरहित रूप से शोषण किया जाता है, जिससे उनसे डेटा चुराया जाता है और server.js को बाहर निकाला जाता है।
यह टूलकिट दो जावास्क्रिप्ट ऑब्जेक्ट प्रदान करता है जिन्हें DNS रिबाइंडिंग हमले बनाने के लिए एक साथ उपयोग किया जा सकता है:
DNSRebindAttack: इस ऑब्जेक्ट का उपयोग किसी ज्ञात पोर्ट पर चल रही एक कमजोर सेवा के खिलाफ हमला शुरू करने के लिए किया जाता है। यह आपके द्वारा लक्षित प्रत्येक IP पते के लिए एक पेलोड उत्पन्न करता है। DNSRebindAttack ऑब्जेक्ट का उपयोग कई DNSRebindNode ऑब्जेक्ट बनाने, प्रबंधित करने और उनके साथ संवाद करने के लिए किया जाता है। DNSRebindAttack द्वारा लॉन्च किए गए प्रत्येक पेलोड में एक DNSRebindNode ऑब्जेक्ट होना चाहिए।DNSRebindNode: इस स्थैतिक वर्ग ऑब्जेक्ट को प्रत्येक HTML पेलोड फ़ाइल में शामिल किया जाना चाहिए। इसका उपयोग एक होस्ट पर चल रही एक सेवा को लक्षित करने के लिए किया जाता है। यह उस DNSRebindAttack ऑब्जेक्ट के साथ संवाद कर सकता है जिसने इसे उत्पन्न किया और इसमें DNS रिबाइंडिंग हमले को निष्पादित करने (DNSRebindNode.rebind(...) का उपयोग करके) के साथ-साथ हमले के दौरान खोजे गए डेटा को server.js (DNSRebindNode.exfiltrate(...)) में बाहर निकालने के लिए सहायक कार्य हैं।इन दो स्क्रिप्ट्स का उपयोग फ़ायरवॉल-संरक्षित LAN पर अज्ञात होस्ट के खिलाफ हमले को निष्पादित करने के लिए एक साथ किया जाता है। एक बुनियादी हमला इस तरह दिखता है:
http://example.com/launcher.html। launcher.html में DNSRebindAttack का एक उदाहरण होता है।http://example.com/launcher.html iframe के रूप में एम्बेडेड होता है। इससे launcher.html पर DNSRebindAttack हमला शुरू कर देता है।DNSRebindAttack पीड़ित मशीन का स्थानीय IP पता खोजने के लिए WebRTC लीक का उपयोग करता है (उदाहरण के लिए 192.168.10.84)। हमलावर पीड़ित के LAN पर लक्षित IP पतों की एक श्रेणी चुनने के लिए इस जानकारी का उपयोग करता है (उदाहरण के लिए 192.168.10.0-255)।launcher.html पीड़ित के सबनेट पर IP पतों की एक श्रेणी के खिलाफ DNS रिबाइंडिंग हमला शुरू करता है ( DNSRebindAttack.attack(...) का उपयोग करके), एक एकल सेवा को लक्षित करता है (उदाहरण के लिए पोर्ट 8008 पर उपलब्ध अप्रलेखित Google Home REST API)।DNSRebindAttack एक iframe को launcher.html पेज में एम्बेड करता है जिसमें payload.html होता है। प्रत्येक iframe में एक DNSRebindNode ऑब्जेक्ट होता है जो हमले के द्वारा लक्षित IP पतों की श्रेणी में परिभाषित एक होस्ट के पोर्ट 8008 के खिलाफ हमला निष्पादित करता है। यह इंजेक्शन प्रक्रिया तब तक जारी रहती है जब तक कि हमले द्वारा लक्षित प्रत्येक IP पते के लिए एक iframe इंजेक्ट नहीं हो जाता।payload.html फ़ाइल एक whonow DNS सर्वर के साथ संचार करके रिबाइंड हमले का प्रयास करने के लिए DNSRebindNode का उपयोग करती है। यदि यह सफल होता है, तो समान-मूल नीति का उल्लंघन होता है और payload.html सीधे Google Home उत्पाद के साथ संवाद कर सकता है। आमतौर पर payload.html इस तरह से लिखा जाएगा कि वह लक्ष्य उपकरण के लिए कुछ API कॉल करता है और हमले को समाप्त करने और स्वयं को नष्ट करने से पहले परिणामों को example.com पर चल रहे server.js में बाहर निकालता है।ध्यान दें, यदि किसी उपयोगकर्ता के नेटवर्क पर एक अज्ञात IP पते वाला एक Google Home उपकरण है और पूरे 192.168.1.0/24 सबनेट के खिलाफ हमला शुरू किया जाता है, तो एक DNSRebindNode का रिबाइंड हमला सफल होगा और 254 विफल होंगे।
एक हमले में तीन समन्वित स्क्रिप्ट्स और फ़ाइलें होती हैं:
DNSRebindAttack का एक उदाहरण होता है (जैसे launcher.html)payload.html)। यह फ़ाइल DNSRebindAttack द्वारा प्रत्येक लक्षित IP पते के लिए launcher.html में एम्बेड की जाती है।server.js)।launcher.html