
Windows IPv6 डिफ़ॉल्ट कॉन्फ़िगरेशन का शोषण करके DHCPv6 के माध्यम से DNS को स्पूफ करता है, पेनिट्रेशन टेस्ट के दौरान क्रेडेंशियल रिले और मैन-इन-द-मिडिल हमलों के लिए पीड़ित के ट्रैफ़िक को रीडायरेक्ट करता है।
mitm6 एक पेनिट्रेस्ट टेस्टिंग टूल है जो विंडोज की डिफ़ॉल्ट कॉन्फ़िगरेशन का फायदा उठाकर डिफ़ॉल्ट DNS सर्वर पर नियंत्रण प्राप्त करता है। यह DHCPv6 संदेशों का उत्तर देकर पीड़ितों को एक लिंक-लोकल IPv6 एड्रेस प्रदान करता है और हमलावर के होस्ट को डिफ़ॉल्ट DNS सर्वर के रूप में सेट करता है। DNS सर्वर के रूप में, mitm6 हमलावर की पसंद के DNS क्वेरी का चयनात्मक रूप से उत्तर देगा और पीड़ितों के ट्रैफ़िक को वैध सर्वर के बजाय हमलावर मशीन पर रीडायरेक्ट करेगा। हमले की पूरी व्याख्या के लिए, हमारा mitm6 के बारे में ब्लॉग देखें। Mitm6 को impacket से ntlmrelayx के साथ मिलकर WPAD स्पूफिंग और क्रेडेंशियल रिले करने के लिए डिज़ाइन किया गया है।
mitm6 Python 2.7 और 3.x दोनों के साथ संगत है। आप pip install -r requirements.txt के साथ अपने संस्करण के लिए आवश्यकताएँ स्थापित कर सकते हैं। दोनों ही मामलों में, mitm6 निम्नलिखित पैकेज का उपयोग करता है:
Python 2.7 के लिए, यह ipaddress बैकपोर्ट मॉड्यूल का उपयोग करता है।
आप PyPI से नवीनतम रिलीज़ को के साथ, या इस गिट रिपॉजिटरी को क्लोन करने के बाद के साथ स्रोत से नवीनतम संस्करण स्थापित कर सकते हैं।
pip install mitm6python setup.py installस्थापना के बाद, mitm6 एक कमांड लाइन प्रोग्राम mitm6 के रूप में उपलब्ध होगा। चूंकि यह Scapy के साथ रॉ पैकेट कैप्चर का उपयोग करता है, इसे रूट के रूप में चलाया जाना चाहिए। mitm6 को डिफ़ॉल्ट रूप से आपकी नेटवर्क सेटिंग्स का पता लगाना चाहिए और इसके स्पूफिंग के लिए आपके प्राथमिक इंटरफ़ेस का उपयोग करना चाहिए। संभवतः आपको केवल उस AD domain को निर्दिष्ट करना होगा जिसे आप स्पूफ कर रहे हैं। उन्नत ट्यूनिंग के लिए, निम्नलिखित विकल्प उपलब्ध हैं:
usage: mitm6 [-h] [-i INTERFACE] [-l LOCALDOMAIN] [-4 ADDRESS] [-6 ADDRESS] [-m ADDRESS] [-a] [-r TARGET] [-v] [--debug]
[-d DOMAIN] [-b DOMAIN] [-hw DOMAIN] [-hb DOMAIN] [--ignore-nofqdn]
mitm6 - pwning IPv4 via IPv6
For help or reporting issues, visit https://github.com/dirkjanm/mitm6
optional arguments:
-h, --help show this help message and exit
-i INTERFACE, --interface INTERFACE
Interface to use (default: autodetect)
-l LOCALDOMAIN, --localdomain LOCALDOMAIN
Domain name to use as DNS search domain (default: use first DNS domain)
-4 ADDRESS, --ipv4 ADDRESS
IPv4 address to send packets from (default: autodetect)
-6 ADDRESS, --ipv6 ADDRESS
IPv6 link-local address to send packets from (default: autodetect)
-m ADDRESS, --mac ADDRESS
Custom mac address - probably breaks stuff (default: mac of selected interface)
-a, --no-ra Do not advertise ourselves (useful for networks which detect rogue Router Advertisements)
-r TARGET, --relay TARGET
Authentication relay target, will be used as fake DNS server hostname to trigger Kerberos auth
-v, --verbose Show verbose information
--debug Show debug information
Filtering options:
-d DOMAIN, --domain DOMAIN
Domain name to filter DNS queries on (Allowlist principle, multiple can be specified.)
-b DOMAIN, --blocklist DOMAIN, --blacklist DOMAIN
Domain name to filter DNS queries on (Blocklist principle, multiple can be specified.)
-hw DOMAIN, -ha DOMAIN, --host-allowlist DOMAIN, --host-whitelist DOMAIN
Hostname (FQDN) to filter DHCPv6 queries on (Allowlist principle, multiple can be specified.)
-hb DOMAIN, --host-blocklist DOMAIN, --host-blacklist DOMAIN
Hostname (FQDN) to filter DHCPv6 queries on (Blocklist principle, multiple can be specified.)
--ignore-nofqdn Ignore DHCPv6 queries that do not contain the Fully Qualified Domain Name (FQDN) option.
आप अधिकांश ऑटोडिटेक्ट विकल्पों को मैन्युअल रूप से ओवरराइड कर सकते हैं (हालाँकि MAC एड्रेस को ओवरराइड करना चीज़ों को तोड़ सकता है)। यदि नेटवर्क में कुछ हार्डवेयर है जो दुष्ट Router Advertisement संदेशों को ब्लॉक या डिटेक्ट करता है, तो आप उन्हें प्रसारित न करने के लिए --no-ra फ़्लैग जोड़ सकते हैं। mitm6 के काम करने के लिए Router Advertisements आवश्यक नहीं हैं क्योंकि यह मुख्य रूप से DHCPv6 संदेशों पर निर्भर करता है।
यह चुनने के लिए कि आप किन होस्टों पर हमला करना और स्पूफ करना चाहते हैं, कई फ़िल्टरिंग विकल्प उपलब्ध हैं। पहले --host-allowlist और --host-blocklist विकल्प (या संक्षेप में -hw और -hb) हैं, जो तर्क के रूप में एक (आंशिक) डोमेन लेते हैं। आने वाले DHCPv6 अनुरोधों को इस सूची के विरुद्ध फ़िल्टर किया जाएगा। जाँची जाने वाली संपत्ति DHCPv6 FQDN विकल्प है, जिसमें क्लाइंट अपना होस्टनाम प्रदान करता है।
यही DNS अनुरोधों पर भी लागू होता है, इसके लिए --domain विकल्प (या -d) उपलब्ध है, जहाँ आप बता सकते हैं कि आप किस डोमेन को स्पूफ करना चाहते हैं। विशिष्ट डोमेन को ब्लॉक करना भी --blocklist/-b के साथ संभव है। दोनों पैरामीटर को कई बार निर्दिष्ट किया जा सकता है ताकि कई डोमेन को शामिल/ब्लॉक किया जा सके (उदाहरण के लिए -d domain.local -d otherdomain.local -b somehost.domain.local -b somehost.otherdomain.local)।
होस्ट और DNS दोनों फ़िल्टरिंग के लिए, साधारण स्ट्रिंग मिलान किया जाता है। इसलिए यदि आप wpad का उत्तर देना चुनते हैं, तो यह wpad.corpdomain.com की क्वेरी का भी उत्तर देगा। यदि आप अधिक विशिष्ट फ़िल्टरिंग चाहते हैं, तो allowlist और blocklist दोनों विकल्पों का उपयोग करें, क्योंकि blocklist allowlist पर प्राथमिकता लेता है।
डिफ़ॉल्ट रूप से पहला निर्दिष्ट डोमेन DNS खोज डोमेन के रूप में उपयोग किया जाएगा, यदि आप इस डोमेन को स्वयं स्पष्ट रूप से निर्दिष्ट करना चाहते हैं तो --localdomain विकल्प का उपयोग करें।
mitm6 को एक पेनिट्रेशन टेस्टिंग टूल के रूप में डिज़ाइन किया गया है और इसलिए इसे नेटवर्क पर यथासंभव कम प्रभाव डालना चाहिए। यह मुख्य कारण है कि mitm6 वर्तमान में एक पूर्ण मशीन-इन-द-मिडल अटैक लागू नहीं करता है, जैसा कि हम उदाहरण के लिए SLAAC अटैक में देखते हैं। प्रभाव को और कम करने के लिए, आवंटित IP पतों में कम टाइम-टू-लिव (TTL) मान होते हैं। जब mitm6 को रोका जाता है, तो लीज़ 5 मिनट के भीतर समाप्त हो जाएगी, जो पीड़ितों के कॉन्फ़िगरेशन से DNS सर्वर को हटा देगी। DNS उत्तरों को कैश्ड होने से रोकने के लिए, सभी उत्तर 100 सेकंड के TTL के साथ भेजे जाते हैं, जो सुनिश्चित करता है कि टूल के बाहर निकलने के कुछ मिनटों के भीतर कैश साफ़ हो जाता है।
mitm6 को ntlmrelayx के साथ उपयोग करने के लिए डिज़ाइन किया गया है। आपको टूल्स को एक दूसरे के बगल में चलाना चाहिए, इस परिदृश्य में mitm6 DNS को स्पूफ करेगा, जिससे पीड़ित HTTP और SMB कनेक्शन के लिए ntlmrelayx से जुड़ेंगे। इसके लिए आपको ntlmrelayx को -6 विकल्प के साथ चलाना सुनिश्चित करना होगा, जो इसे IPv4 और IPv6 दोनों पर सुनने देगा। WPAD के लिए क्रेडेंशियल प्राप्त करने के लिए, -wh HOSTNAME के साथ स्पूफ करने के लिए WPAD होस्टनाम निर्दिष्ट करें (स्थानीय डोमेन में कोई भी अस्तित्वहीन होस्टनाम काम करेगा क्योंकि mitm6 DNS सर्वर है)। वैकल्पिक रूप से, यदि आपको संदेह है कि पीड़ितों पर MS16-077 पैच लागू नहीं है, तो आप WPAD फ़ाइल के लिए प्रमाणीकरण का संकेत देने के प्रयासों की संख्या के साथ -wa N पैरामीटर का भी उपयोग कर सकते हैं।
आप Kerberos प्रमाणीकरण को रिले करने के लिए भी mitm6 का उपयोग कर सकते हैं, विशेष रूप से DNS के माध्यम से। ऐसा करने के लिए, --relay पैरामीटर का उपयोग करें और उस होस्ट को निर्दिष्ट करें जिस पर आप रिले करना चाहते हैं। यह होस्ट प्रतिरूपित किया जाएगा, और mitm6 आपके पीड़ितों को krbrelayx को Kerberos प्रमाणीकरण का उपयोग करके प्रमाणित गतिशील अद्यतन भेजने के लिए मनाने का प्रयास करेगा। इस हमले के बारे में अधिक जानकारी निम्नलिखित ब्लॉग पर उपलब्ध है: https://dirkjanm.io/relaying-kerberos-over-dns-with-krbrelayx-and-mitm6/
Fox-IT Security Research Team ने धोखाधड़ी DHCPv6 ट्रैफ़िक और IPv6 पर WPAD उत्तरों का पता लगाने के लिए Snort और Suricata सिग्नेचर जारी किए हैं। सिग्नेचर यहाँ उपलब्ध हैं: https://gist.github.com/fox-srt/98f29051fe56a1695de8e914c4a2373f