
# MacStealer: वाई-फाई क्लाइंट आइसोलेशन बायपास
इस रिपॉजिटरी में MacStealer शामिल है। यह Wi-Fi नेटवर्कों में क्लाइंट आइसोलेशन बाइपास की जाँच कर सकता है (CVE-2022-47522)। हमारा हमला MAC परत पर अन्य क्लाइंटों की ओर जाने वाले ट्रैफ़िक को इंटरसेप्ट (चुरा) सकता है, तब भी जब क्लाइंटों को एक-दूसरे से संचार करने से रोका गया हो। यह भेद्यता उन Wi-Fi नेटवर्कों को प्रभावित करती है जिनमें दुर्भावनापूर्ण इनसाइडर मौजूद हों, और हमारा हमला क्लाइंट आइसोलेशन को बाइपास कर सकता है, जिसे कभी-कभी AP आइसोलेशन भी कहा जाता है। यह हमला Dynamic ARP inspection (DAI) को भी बाइपास कर सकता है, और संभवतः उन अन्य तरीकों को भी बाइपास कर सकता है जो क्लाइंटों को एक-दूसरे पर हमला करने से रोकते हैं। इस हमले को security context override attack भी कहा जाता है, देखें हमारे USENIX Security '23 पेपर की धारा 5 (रिपोजिटरी)।
प्रभावित होने वाले संभावित नेटवर्कों के ठोस उदाहरण हैं:
एंटरप्राइज़ नेटवर्क जहाँ उपयोगकर्ता एक-दूसरे पर भरोसा नहीं कर सकते हैं, और जहाँ क्लाइंट आइसोलेशन या ARP inspection जैसी तकनीकों का उपयोग उपयोगकर्ताओं को एक-दूसरे पर हमला करने से रोकने के लिए किया जाता है। उदाहरण के लिए, ऐसे कंपनी नेटवर्क जिनमें मेहमानों और कर्मचारियों दोनों के लिए खाते हों, eduroam और govroam जैसे नेटवर्क, आदि।
Passpoint (पहले Hotspot 2.0) द्वारा सुरक्षित सार्वजनिक हॉटस्पॉट। ये ऐसे हॉटस्पॉट हैं जिनसे आप स्वचालित रूप से और सुरक्षित रूप से कनेक्ट हो सकते हैं। उदाहरण के लिए, यह आपके फ़ोन के SIM कार्ड का उपयोग करके आपको निर्बाध रूप से प्रमाणित कर सकता है।
होम WPA2 या WPA3 नेटवर्क जिनमें क्लाइंट आइसोलेशन सक्षम हो। इसमें मेहमानों या असुरक्षित (IoT) उपकरणों के लिए अलग SSID वाले नेटवर्क शामिल हैं। इसमें ऐसे नेटवर्क भी शामिल हैं जहाँ उपकरणों को और अधिक अलग करने के लिए कई पासवर्ड का उपयोग किया जाता है, जिसे Multi-PSK, Identity PSK, per-station PSK, या EasyPSK के रूप में भी जाना जाता है। अतिरिक्त जानकारी के लिए खतरा मॉडल चर्चा देखें।
WPA3 SAE-PK पर आधारित सार्वजनिक हॉटस्पॉट। ये ऐसे हॉटस्पॉट हैं जो एक साझा सार्वजनिक पासवर्ड द्वारा सुरक्षित होते हैं, लेकिन जहाँ कोई प्रतिद्वंद्वी इस सार्वजनिक रूप से ज्ञात पासवर्ड का दुरुपयोग नहीं कर सकता।
हम ध्यान दिलाते हैं कि हमारा हमला VLAN को बाइपास नहीं कर सकता। दूसरे शब्दों में, वर्तमान प्रयोगों के आधार पर, हमारा हमला किसी अन्य VLAN में मौजूद डिवाइस का शोषण करने के लिए उपयोग नहीं किया जा सकता।
हमारे USENIX Security '23 के अन्य परिणामों की रिपोजिटरी भी उपलब्ध है।
हमले के पीछे मुख्य विचार यह है कि क्लाइंटों को प्रमाणित करने का तरीका इस बात से असंबंधित है कि पैकेट को सही Wi-Fi क्लाइंट तक कैसे रूट किया जाता है। अर्थात्, प्रमाणीकरण पासवर्ड, उपयोगकर्ता नाम, 802.1X पहचान और/या प्रमाणपत्रों के आधार पर किया जाता है, लेकिन एक बार क्लाइंट कनेक्ट हो जाने पर पैकेटों का रूटिंग MAC पते के आधार पर किया जाता है। एक दुर्भावनापूर्ण इनसाइडर पीड़ित को डिस्कनेक्ट करके और फिर पीड़ित के MAC पते के अंतर्गत कनेक्ट होकर (प्रतिद्वंद्वी के क्रेडेंशियल्स का उपयोग करके) एक Wi-Fi क्लाइंट की ओर जाने वाले डेटा को इंटरसेप्ट करने के लिए इसका दुरुपयोग कर सकता है। कोई भी पैकेट जो अभी भी पीड़ित की ओर जा रहे थे, जैसे कि वेबसाइट डेटा जिसे पीड़ित अभी भी लोड कर रहा था, अब इसके बजाय प्रतिद्वंद्वी को प्राप्त होंगे।
अधिक सटीक रूप से, हमला तीन चरणों में होता है:
पीड़ित से डेटा अनुरोध करवाना: प्रतिद्वंद्वी पहले तब तक इंतज़ार करता है जब तक पीड़ित (क्लाइंट)
कमजोर Access Point (AP) के साथ Wi-Fi कनेक्शन स्थापित नहीं कर लेता। हम मानते हैं कि पीड़ित
फिर इंटरनेट पर किसी सर्वर को अनुरोध भेजेगा। उदाहरण के लिए, पीड़ित example.com (सादे पाठ) वेबसाइट पर
HTTP अनुरोध भेज सकता है। प्रतिद्वंद्वी का लक्ष्य वेबसाइट द्वारा भेजे जाने वाले प्रतिक्रिया (response) को
इंटरसेप्ट करना है।
पीड़ित के MAC पते के अंतर्गत कनेक्ट होना: पीड़ित द्वारा डेटा अनुरोध करने के बाद, उदाहरण के लिए
HTTP Request पैकेट भेजकर, प्रतिद्वंद्वी प्रतिक्रिया आने से पहले पीड़ित को जबरन नेटवर्क से डिस्कनेक्ट कर देगा।
हमारे उदाहरण में, इसका मतलब है कि example.com से प्रतिक्रिया AP पर पहुंचने से पहले पीड़ित डिस्कनेक्ट हो जाता है।
पीड़ित के डिस्कनेक्ट होते ही, प्रतिद्वंद्वी पीड़ित के MAC पते को स्पूफ करता है और प्रतिद्वंद्वी अपने स्वयं के
क्रेडेंशियल्स का उपयोग करके नेटवर्क से कनेक्ट होगा। इसका मतलब है कि प्रतिद्वंद्वी एक दुर्भावनापूर्ण इनसाइडर है जो अपने क्रेडेंशियल्स का उपयोग करके
नेटवर्क से कनेक्ट हो सकता है, उदाहरण के लिए, किसी Enterprise Wi-Fi नेटवर्क में अपने स्वयं के उपयोगकर्ता नाम और पासवर्ड का उपयोग करके।
प्रतिक्रिया को इंटरसेप्ट करना: एक बार जब प्रतिद्वंद्वी पीड़ित के MAC पते के अंतर्गत कनेक्ट हो जाता है,
AP प्रतिद्वंद्वी द्वारा नवनिर्मित एन्क्रिप्शन कुंजियों को पीड़ित के MAC पते के साथ संबद्ध कर देगा।
परिणामस्वरूप, जब सर्वर से प्रतिक्रिया Wi-Fi नेटवर्क पर पहुंचती है, या सामान्य रूप से पीड़ित की ओर कोई भी इनकमिंग ट्रैफ़िक,
राउटर इन इनकमिंग पैकेटों को पीड़ित के MAC पते पर अग्रेषित करेगा। हमारे उदाहरण में, इसका मतलब है कि example.com से प्रतिक्रिया राउटर द्वारा
पीड़ित के MAC पते पर अग्रेषित की जाती है। हालाँकि, प्रतिद्वंद्वी अब इस MAC पते का उपयोग कर रहा है। इसका मतलब है कि
AP प्रतिक्रिया को प्रतिद्वंद्वी की कुंजियों का उपयोग करके एन्क्रिप्ट करेगा। दूसरे शब्दों में, प्रतिद्वंद्वी को अब
पीड़ित की ओर जा रहा कोई भी लंबित ट्रैफ़िक प्राप्त होगा।
हम ध्यान दिलाते हैं कि इंटरसेप्ट किया गया ट्रैफ़िक उच्च-परत एन्क्रिप्शन, जैसे TLS और HTTPS, द्वारा सुरक्षित हो सकता है। फिर भी, भले ही उच्च-परत एन्क्रिप्शन का उपयोग किया जा रहा हो, हमारा हमला उस IP पते का खुलासा करता है जिसके साथ पीड़ित संचार कर रहा है। यह बदले में उन वेबसाइटों का खुलासा करता है जिन्हें पीड़ित विज़िट कर रहा है, जो अपने आप में संवेदनशील जानकारी हो सकती है।
डिफ़ॉल्ट रूप से, हमला पीड़ित द्वारा भेजे गए ट्रैफ़िक को इंटरसेप्ट नहीं करता है, बल्कि केवल पीड़ित की ओर भेजे गए ट्रैफ़िक को इंटरसेप्ट कर सकता है। हालाँकि, एक प्रतिद्वंद्वी बाद के हमलों का प्रयास करके पीड़ित द्वारा भेजे गए ट्रैफ़िक को भी इंटरसेप्ट कर सकता है। विशेष रूप से, पीड़ित को DNS उत्तर को इंटरसेप्ट करके, प्रतिद्वंद्वी DNS उत्तर को स्पूफ कर सकता है और पीड़ित की ओर भेजे गए और पीड़ित द्वारा भेजे गए सभी IP ट्रैफ़िक को इंटरसेप्ट कर सकता है।
उपरोक्त हमला करना तभी उचित है जब लक्षित नेटवर्क में क्लाइंट आइसोलेशन सक्षम हो। अन्यथा, यदि क्लाइंट आइसोलेशन अक्षम है, तो एक दुर्भावनापूर्ण इनसाइडर सीधे अन्य क्लाइंटों पर ARP स्पूफिंग जैसी तकनीकों का उपयोग करके हमला कर सकता है (देखें क्लाइंट आइसोलेशन परीक्षण)।
यह हमला Enterprise WPA1, WPA2 और WPA3 नेटवर्कों के विरुद्ध समान है। ऐसा इसलिए है क्योंकि यह हमला Wi-Fi की किसी क्रिप्टोग्राफ़िक विशेषता का शोषण नहीं करता है, बल्कि यह दुरुपयोग करता है कि नेटवर्क कैसे निर्धारित करता है कि पैकेट किस क्लाइंट को भेजे जाने चाहिए, अर्थात् रूट किए जाने चाहिए।
हमले के अतिरिक्त विवरण के लिए, हमारे पेपर Framing Frames: Bypassing Wi-Fi Encryption by Manipulating Transmit Queues में security context override attack (धारा 5) देखें।
हमारे हमले को कम करने के लिए, एक AP अस्थायी रूप से क्लाइंटों को कनेक्ट होने से रोक सकता है यदि वे ऐसे MAC पते का उपयोग कर रहे हैं जो हाल ही में AP से कनेक्ट हुआ था। यह एक प्रतिद्वंद्वी को MAC पता स्पूफ करने और पीड़ित की ओर जाने वाले लंबित या क्यू किए गए फ्रेमों को इंटरसेप्ट करने से रोकता है। जब यह सुनिश्चित किया जा सकता है कि MAC पते के पीछे का उपयोगकर्ता नहीं बदला है, तो क्लाइंट को तुरंत पुनः कनेक्ट करने की अनुमति दी जा सकती है। ध्यान दें कि यह जाँच उन सभी AP पर की जानी चाहिए जो एक ही वितरण प्रणाली (distribution system) का हिस्सा हैं, और अधिक विशेष रूप से, उन सभी AP पर जिनके बीच क्लाइंट अपना वर्तमान IP पता बनाए रखते हुए रोमिंग कर सकते हैं।
हाल ही में कनेक्ट हुए उपयोगकर्ताओं को सुरक्षित रूप से पहचानने के लिए, एक AP क्लाइंट के MAC पते और उनके कैश्ड सुरक्षा संघों (जैसे, उनका कैश्ड PMK) के बीच एक मैपिंग संग्रहीत कर सकता है। किसी क्लाइंट को हाल ही में उपयोग किए गए MAC पते के अंतर्गत तुरंत (पुनः) कनेक्ट करने की अनुमति दी जा सकती है, यह साबित करके कि उनके पास इस MAC पते से जुड़ा कैश्ड सुरक्षा संघ है, उदाहरण के लिए, सही कैश्ड PMK का उपयोग करके कनेक्ट करके।
multi-PSK का उपयोग करते समय, जिसे per-station PSK या Identity PSK के रूप में भी जाना जाता है, AP हाल ही में कनेक्ट हुए MAC पतों और उनके द्वारा उपयोग किए गए (अद्वितीय) पासवर्ड की मैपिंग रख सकता है। जब कोई क्लाइंट कनेक्ट होता है, तो AP जाँचता है कि उसका MAC पता हाल ही में उपयोग हुआ था या नहीं। यदि नहीं, या यदि हुआ है और क्लाइंट पहले जैसा ही पासवर्ड उपयोग कर रहा है, तो क्लाइंट सामान्य रूप से कनेक्ट हो सकता है। हालाँकि, यदि उसी MAC पते का उपयोग किसी भिन्न पासवर्ड के साथ किया जाता है, तो क्लाइंट को सफलतापूर्वक कनेक्ट होने में सक्षम होने से पहले पूर्वनिर्धारित समय तक प्रतीक्षा करने के लिए बाध्य किया जाता है।
हॉटस्पॉट को सुरक्षित करने के लिए SAE-PK का उपयोग करते समय, हमारी जानकारी में यह सुरक्षित रूप से पहचानने का एकमात्र तरीका कि किसी MAC पते का पुनः उपयोग उसी उपयोगकर्ता द्वारा किया जा रहा है जैसा पहले हुआ था, कैश्ड सुरक्षा संघों (जैसे, MAC पते से जुड़ा कैश्ड PMK) पर निर्भर करना है।
उपरोक्त सुरक्षा उपाय यह मानते हैं कि एक निश्चित देरी के बाद, पीड़ित के लिए कोई और लंबित पैकेट नहीं आएगा। इस देरी से परे लीक को रोकने के लिए, क्लाइंट उन सेवाओं के साथ एंड-टू-एंड एन्क्रिप्शन (जैसे TLS) का उपयोग कर सकते हैं जिनके साथ वे संचार करते हैं।
802.1X EAP-आधारित प्रमाणीकरण का उपयोग करते समय, हाल ही में कनेक्ट हुए उपयोगकर्ताओं को सुरक्षित रूप से पहचानने का एक वैकल्पिक बेहतर तरीका उस EAP पहचान पर आधारित है जिसका उपयोग उन्होंने 802.1X प्रमाणीकरण के दौरान किया था। एक AP RADIUS सर्वर से EAP पहचान सीख सकता है जिसने क्लाइंट को प्रमाणित किया था, और हाल ही में कनेक्ट हुए MAC पतों और उनकी संगत EAP पहचान की मैपिंग रख सकता है। जब कोई क्लाइंट कनेक्ट होता है, तो AP जाँचता है कि उसका MAC पता हाल ही में उपयोग हुआ था या नहीं। यदि नहीं, या यदि हुआ है और क्लाइंट पहले जैसी ही EAP पहचान का उपयोग कर रहा है, तो क्लाइंट सामान्य रूप से कनेक्ट हो सकता है। हालाँकि, यदि उसी MAC पते का उपयोग किसी भिन्न EAP पहचान के अंतर्गत किया जाता है, तो क्लाइंट को सफलतापूर्वक कनेक्ट होने में सक्षम होने से पहले पूर्वनिर्धारित समय तक प्रतीक्षा करने के लिए बाध्य किया जाता है।
एक चुनौती यह है कि गोपनीयता संबंधी चिंताओं के कारण AP को किसी क्लाइंट की 802.1X पहचान हमेशा ज्ञात नहीं हो सकती है। उदाहरण के लिए, यह जानकारी केवल होम AAA सर्वर पर उपलब्ध हो सकती है, और AP को RADIUS सर्वर से केवल एक Chargeable User Identity प्राप्त होगी। यह पहचान AP को एक ही डिवाइस/क्रेडेंशियल्स के दो संघों को पहचानने की अनुमति नहीं देती है क्योंकि इसका मान लगातार बदल सकता है। AP को EAP-Response/Identity में अनाम पहचान प्राप्त होती है, जैसे anonymous@realm, और वह कम से कम विभिन्न realm के उपयोगकर्ताओं को पहचानने के लिए उस पर भरोसा कर सकता है।
एक ही realm के उपयोगकर्ताओं को एक-दूसरे पर हमला करने से रोकने के लिए, बिना क्लाइंट की पहचान AP को बताए, RADIUS सर्वर में सहयोग और परिवर्तनों की आवश्यकता होती है। विशेष रूप से, RADIUS सर्वर को यह पता लगाने में मदद करने के लिए अपडेट किया जा सकता है कि क्या MAC पता हाल ही में उसी realm के किसी अन्य उपयोगकर्ता द्वारा (दिए गए स्थानीय नेटवर्क में) उपयोग किया जा रहा था। फिर RADIUS सर्वर को सूचित किया जाना आवश्यक होगा जब कोई क्लाइंट डिस्कनेक्ट होता है, ताकि उसे पता चले कि कोई MAC पता आखिरी बार उसके किसी उपयोगकर्ता द्वारा कब उपयोग किया गया था, और उसे कनेक्ट करने का प्रयास करने वाले किसी भी क्लाइंट के MAC पते के बारे में सूचित किया जाना आवश्यक है।
अंतिम टिप्पणी यह है कि, हालाँकि EAP पहचान पर निर्भर रहने का यह दृष्टिकोण विभिन्न उपयोगकर्ताओं को एक-दूसरे पर हमला करने से रोकेगा, यह एक समझौता किए गए डिवाइस को उसी उपयोगकर्ता के किसी अन्य डिवाइस पर हमला करने से नहीं रोकेगा। अर्थात्, हमले केवल विभिन्न उपयोगकर्ताओं के बीच रोके जाएँगे, लेकिन एक ही उपयोगकर्ता के विभिन्न डिवाइसों के बीच नहीं।
यह ध्यान देने योग्य है कि हमारा हमला केवल Wi-Fi क्लाइंटों को जाने वाले पैकेटों को इंटरसेप्ट करने तक सीमित नहीं है। एक प्रतिद्वंद्वी डिफ़ॉल्ट गेटवे या स्थानीय नेटवर्क में किसी अन्य सर्वर के MAC पते के साथ संबद्ध (associate) होने का प्रयास भी कर सकता है। ऐसे हमलों को रोकने के लिए, AP या कंट्रोलर क्लाइंटों को डिफ़ॉल्ट गेटवे के बराबर MAC पते का उपयोग करने से रोक सकता है। अधिक सामान्यतः, जब कोई Wi-Fi क्लाइंट नेटवर्क से कनेक्ट हो रहा हो तो डुप्लिकेट MAC पता पहचान का उपयोग किया जा सकता है, ताकि Wi-Fi क्लाइंटों को ऐसे MAC पते का उपयोग करने से रोका जा सके जो नेटवर्क में अन्य डिवाइसों द्वारा भी उपयोग में है।
प्रबंधन फ्रेम सुरक्षा (MFP) का उपयोग करने से हमला कठिन हो जाएगा लेकिन असंभव नहीं। पिछले कार्य में, हमने कुछ ऐसे तरीके खोजे जिनसे क्लाइंटों को डिस्कनेक्ट/डी-ऑथेंटिकेट किया जा सकता है, तब भी जब MFP का उपयोग किया जा रहा हो। उस अनुभव के आधार पर, ऐसा प्रतीत होता है कि किसी क्लाइंट को नेटवर्क से जबरन डिस्कनेक्ट करने की कोई विधि हमेशा मौजूद रहती है, तब भी जब MFP का उपयोग किया जा रहा हो। दूसरे शब्दों में, डिस्कनेक्शन और डी-ऑथेंटिकेशन हमलों को पूरी तरह से रोकना कठिन है। फिर भी, व्यवहार में हमला करते समय MFP एक अतिरिक्त बाधा होगी, इसलिए यह हमले को कठिन (लेकिन असंभव नहीं) बनाने के लिए एक उपयोगी शमन उपाय हो सकता है।
प्रारंभिक प्रयोगों के आधार पर, हमला विभिन्न VLAN के बीच काम नहीं करता है। दूसरे शब्दों में, हमला करने वाला दुर्भावनापूर्ण इनसाइडर पीड़ित के समान VLAN में होना चाहिए। इसलिए एक शमन उपाय यह है कि विभिन्न उपयोगकर्ता समूहों को विभिन्न VLAN में रखा जाए। हालाँकि, एक दुर्भावनापूर्ण इनसाइडर अभी भी उसी VLAN के अन्य उपयोगकर्ताओं के विरुद्ध हमला (अर्थात् क्लाइंट आइसोलेशन को बाइपास) करने में सक्षम होगा।
ध्यान दें कि multi-PSK (उर्फ per-station PSK या identity PSK) का उपयोग करते समय, आप क्लाइंटों को उनके द्वारा उपयोग किए जाने वाले पासवर्ड के आधार पर विभिन्न VLAN में रख सकते हैं। दूसरे शब्दों में, आप प्रत्येक पासवर्ड के लिए एक VLAN का उपयोग कर सकते हैं। यह विभिन्न पासवर्ड वाले क्लाइंटों को एक-दूसरे पर हमला करने से रोकता है।
MacStealer टूल Linux द्वारा समर्थित किसी भी नेटवर्क कार्ड के साथ काम करता है। हमने MacStealer का परीक्षण Ubuntu 22.04 पर किया। Ubuntu 22.04 पर आवश्यक निर्भरताएँ स्थापित करने के लिए निष्पादित करें:
sudo apt update
sudo apt install libnl-3-dev libnl-genl-3-dev libnl-route-3-dev libssl-dev \
libdbus-1-dev git pkg-config build-essential net-tools python3-venv \
aircrack-ng rfkill
अब इस रिपॉजिटरी को क्लोन करें, टूल्स बनाएं, और एक वर्चुअल python3 वातावरण कॉन्फ़िगर करें:
git clone https://github.com/vanhoefm/macstealer.git macstealer
cd macstealer/research
./build.sh
./pysetup.sh
उपरोक्त निर्देशों को केवल एक बार निष्पादित करना होता है।
git का उपयोग करके नया कोड खींचने के बाद आपको ./build.sh और ./pysetup.sh फिर से निष्पादित करना होगा।
समन्वित प्रकटीकरण शुरू होने के बाद से MacStealer में अपडेट के विस्तृत अवलोकन के लिए परिवर्तन लॉग देखें।
जब भी आप MacStealer का उपयोग करना चाहें, आपको पहले वर्चुअल python3 वातावरण को root के रूप में लोड करना होगा। यह इस प्रकार किया जा सकता है:
cd research
sudo su
source venv/bin/activate
अब आपको अपने नेटवर्क मैनेजर में Wi-Fi को अक्षम करना चाहिए
ताकि यह MacStealer के साथ हस्तक्षेप न करे। वैकल्पिक रूप से sudo airmon-ng check का उपयोग करके जाँचें कि
कौन सी अन्य प्रक्रियाएँ वायरलेस नेटवर्क कार्ड का उपयोग कर रही हैं और MacStealer के साथ हस्तक्षेप कर सकती हैं।
अगला चरण उस नेटवर्क की जानकारी के साथ client.conf को संपादित करना है जिसे आप परीक्षण करना चाहते हैं।
यह wpa_supplicant के लिए एक कॉन्फ़िगरेशन है
जिसमें दो नेटवर्क ब्लॉक होने चाहिए: एक पीड़ित का प्रतिनिधित्व करता है और एक
हमलावर का प्रतिनिधित्व करता है। काल्पनिक नेटवर्क kuleuven का परीक्षण करने के लिए एक उदाहरण कॉन्फ़िगरेशन फ़ाइल निम्नलिखित है:
# Don't change this line, other MacStealer won't work
ctrl_interface=wpaspy_ctrl
network={
# Don't change this field, the script relies on it
id_str="victim"
# Network to test: fill in properties of the network to test
ssid="kuleuven"
key_mgmt=WPA-EAP
eap=PEAP
phase2="auth=MSCHAPV2"
# Victim login: fill in login credentials representing the victim
identity="[email protected]"
password="SuperSecret"
}
network={
# Don't change this field, the script relies on it
id_str="attacker"
# Network to test: you can copy this from the previous block
ssid="kuleuven"
key_mgmt=WPA-EAP
eap=PEAP
phase2="auth=MSCHAPV2"
# Attacker login: fill in login credentials representing the attacker
identity="[email protected]"
password="SomePassword"
}
"network to test" भाग में आपको परीक्षण किए जा रहे नेटवर्क का नाम और उसकी सुरक्षा कॉन्फ़िगरेशन प्रदान करनी होगी। विभिन्न प्रकार के Wi-Fi नेटवर्कों के लिए कॉन्फ़िगरेशन फ़ाइलें लिखने/संपादित करने के तरीके और उदाहरण नेटवर्क ब्लॉक के लिए wpa_supplicant.conf देखें। पहले नेटवर्क ब्लॉक में, "victim login" के अंतर्गत, आपको सिम्युलेटेड पीड़ित का प्रतिनिधित्व करने वाले मान्य लॉगिन क्रेडेंशियल्स निर्दिष्ट करने होंगे। दूसरे नेटवर्क ब्लॉक में, आप "network to test" के अंतर्गत बिल्कुल समान जानकारी प्रदान कर सकते हैं, लेकिन आपको सिम्युलेटेड हमलावर का प्रतिनिधित्व करने वाले लॉगिन क्रेडेंशियल्स प्रदान करने होंगे।
उपरोक्त उदाहरण में, MacStealer एक ऐसे हमले का परीक्षण करेगा जहाँ हमलावर [email protected] है
और यह हमलावर पीड़ित [email protected] की ओर भेजे गए ट्रैफ़िक को इंटरसेप्ट करने का प्रयास करेगा।
डिफ़ॉल्ट रूप से स्क्रिप्ट client.conf कॉन्फ़िगरेशन फ़ाइल का उपयोग करती है। आप --config network.conf पैरामीटर प्रदान करके एक अलग
कॉन्फ़िगरेशन फ़ाइल का उपयोग कर सकते हैं, जहाँ आप network.conf को उस कॉन्फ़िगरेशन फ़ाइल से बदल सकते हैं जिसे आप उपयोग करना चाहते हैं।
इस रिपॉजिटरी में निम्नलिखित उदाहरण कॉन्फ़िगरेशन फ़ाइलें भी शामिल हैं:
multipsk.conf: एक ऐसे नेटवर्क का परीक्षण करने के लिए कॉन्फ़िगरेशन फ़ाइल जो
multi-PSK का उपयोग करता है, जहाँ एक पासवर्ड विश्वसनीय डिवाइसों द्वारा उपयोग किया जाता है और दूसरा पासवर्ड
मेहमानों को दिया जाता है।
saepk.conf: एक सार्वजनिक हॉटस्पॉट का परीक्षण करने के लिए कॉन्फ़िगरेशन फ़ाइल जो
SAE-PK का उपयोग करता है।
ध्यान दें कि किसी विशिष्ट AP/BSS का परीक्षण करने के लिए नेटवर्क ब्लॉक(ों) को संपादित करना भी संभव है।
डिफ़ॉल्ट रूप से, MacStealer सभी परीक्षणों में पोर्ट 443 पर 8.8.8.8 को एक TCP SYN पैकेट भेजेगा, जो
Google का DNS सर्वर है। यदि आप कोई भिन्न सर्वर या पोर्ट उपयोग करना चाहते हैं, तो आप
--server पैरामीटर का उपयोग करके एक प्रदान कर सकते हैं। उदाहरण के लिए:
./macstealer.py wlan0 --server 208.67.222.222
आप TCP SYN पैकेटों में उपयोग किया जाने वाला पोर्ट भी जोड़ सकते हैं:
./macstealer.py wlan0 --server 208.67.222.222:80
wlan0 को अपने Wi-Fi इंटरफ़ेस के नाम से और IP पते को उस सर्वर से बदलें
जिसका आप उपयोग करना चाहते हैं।
इस सर्वर को TCP SYN/ACK उत्तरों का पुनः प्रसारण करना चाहिए और आदर्श रूप से, MacStealer द्वारा प्रारंभिक TCP SYN संचारित करने के
10 सेकंड से अधिक समय बाद भी एक पुनः प्रसारित SYN/ACK भेजना चाहिए। आप इस पुनः प्रसारण व्यवहार का परीक्षण --ping पैरामीटर का उपयोग करके निम्नानुसार कर सकते हैं:
./macstealer.py wlan0 --server 208.67.222.222 --ping
यदि सर्वर में आवश्यक पुनः प्रसारण व्यवहार है, तो MacStealer निम्नलिखित आउटपुट देगा:
[22:53:15] Received SYN/ACK 15.265095233917236 seconds after sending SYN.
[22:53:20] >>> Ping test done, everything looks good so far. You can continue with other tests.
यदि प्रदान किया गया सर्वर TCP SYN/ACK उत्तर नहीं भेजता है, या उन्हें पर्याप्त देरी से पुनः प्रसारित नहीं करता है, तो MacStealer निम्नलिखित आउटपुट देगा:[22:52:05] Received SYN/ACK 1.0727121829986572 seconds after sending SYN. [22:52:24] >>> Ping test done. Consider using a server that retransmits SYN/ACK for a longer time.
सर्वर को 10 सेकंड से अधिक समय बाद भी SYN/ACK को पुनः प्रेषित (retransmit) करने की आवश्यकता इसलिए है, क्योंकि सिम्युलेटेड हमलावर के रूप में पुनः कनेक्ट होने में कभी-कभी कई सेकंड लग सकते हैं। यह पुनः कनेक्शन प्रक्रिया सर्वर द्वारा अंतिम पुनः प्रेषित TCP SYN/ACK पैकेट भेजे जाने से पहले पूरी हो जानी चाहिए।
निम्न तालिका में सामान्य कमांड दिए गए हैं जिन्हें आप नेटवर्क का परीक्षण करते समय निष्पादित करेंगे, साथ ही प्रत्येक कमांड के कार्य का संक्षिप्त विवरण भी। तालिका के नीचे प्रत्येक कमांड के पीछे का विवरण समझाया गया है।
यदि परीक्षण किया जा रहा नेटवर्क मैनेजमेंट फ्रेम प्रोटेक्शन (Management Frame Protection, 802.11w) का उपयोग करता है, तो टूल यह मान लेता है कि हमलावर पीड़ित को नेटवर्क से जबरन डिस्कनेक्ट कर सकता है। यह धारणा हालिया शोध पर आधारित है, जिसने दिखाया कि MFP का उपयोग करने पर डिस्कनेक्शन हमले आमतौर पर फिर भी संभव होते हैं, भले ही वे कम सीधे या कम सामान्य हों।
भेद्यताओं का परीक्षण करने से पहले, आप यह पुष्टि करने के लिए निम्नलिखित दो कमांड का उपयोग कर सकते हैं कि MacStealer नेटवर्क से पीड़ित और हमलावर दोनों के रूप में कनेक्ट हो सकता है:
./macstealer.py wlan0 --ping: पीड़ित के क्रेडेंशियल का उपयोग करके नेटवर्क से कनेक्ट होता है।
कनेक्ट होने के बाद, सर्वर को एक TCP SYN भेजा जाता है (जो डिफ़ॉल्ट रूप से 8.8.8.8 है और बदला जा सकता है)।
MacStealer जाँच करेगा कि SYN/ACK को (पुनः) प्रेषित किया जाता है या नहीं और कितनी बार। आप इसका उपयोग
यह पुष्टि करने के लिए कर सकते हैं कि पीड़ित के क्रेडेंशियल सही हैं और यह जाँचने के लिए कि कॉन्फ़िगर किया गया
सर्वर SYN/ACK उत्तरों को ठीक से पुनः प्रेषित कर रहा है।
./macstealer.py wlan0 --ping --flip: उपरोक्त परीक्षण के समान, लेकिन अब स्क्रिप्ट हमलावर के
क्रेडेंशियल का उपयोग करके कनेक्ट होगी। आप इसका उपयोग यह पुष्टि करने के लिए कर सकते हैं कि
हमलावर के क्रेडेंशियल सही हैं।
./macstealer.py wlan0: MAC एड्रेस स्टीलर हमले के डिफ़ॉल्ट वैरिएंट का परीक्षण करें। हमलावर
पीड़ित के समान AP/BSS से पुनः कनेक्ट होगा।
./macstealer.py wlan0 --other-bss: हमलावर उसी नेटवर्क के एक अलग AP/BSS से कनेक्ट होगा। जो नेटवर्क
इस परीक्षण के प्रति (भी) संवेदनशील है, उसका शोषण करना व्यवहार में आसान होता है। यदि रेडियो रेंज के भीतर
केवल एक ही AP/BSS है, तो हमलावर के रूप में कनेक्ट करते समय स्क्रिप्ट टाइमआउट हो जाएगी।
MAC एड्रेस चोरी भेद्यता का शोषण करना तभी समझ में आता है जब क्लाइंट आइसोलेशन सक्षम हो या जब क्लाइंटों को एक-दूसरे पर हमला करने से रोकने के लिए ARP इंस्पेक्शन जैसी तकनीकों का उपयोग किया जाता है। अन्यथा, एक हमलावर ट्रैफ़िक को इंटरसेप्ट करने के लिए ARP पॉइज़निंग जैसे आसान हमलों का उपयोग कर सकता है। यह परीक्षण करने के लिए कि क्लाइंट आइसोलेशन सक्षम है या नहीं, या नेटवर्क द्वारा ARP इंस्पेक्शन का उपयोग किया जाता है या नहीं, आप निम्नलिखित कमांड का उपयोग कर सकते हैं:
./macstealer.py wlan0 --c2c wlan1: इन तर्कों के साथ, MacStealer यह परीक्षण करता है कि नेटवर्क हमलावर (wlan1) से पीड़ित (wlan0) की ओर क्लाइंट-से-क्लाइंट ARP पॉइज़निंग ट्रैफ़िक की अनुमति देता है या नहीं। यहाँ wlan1 एक दूसरा वायरलेस नेटवर्क इंटरफ़ेस है। फिर स्क्रिप्ट यह परीक्षण करेगी कि क्या हमलावर से पीड़ित को दुर्भावनापूर्ण ARP पैकेट भेजे जा सकते हैं।
./macstealer.py wlan0 --c2c-eth wlan1: यह उपरोक्त परीक्षण के समान है, लेकिन दुर्भावनापूर्ण ARP पैकेट भेजने के बजाय, हमलावर पीड़ित को DNS पैकेट भेजेगा।
MAC एड्रेस चोरी भेद्यता को व्यवहार में एक जोखिम माना जाना चाहिए यदि उपरोक्त दोनों परीक्षणों में से किसी में भी क्लाइंट-से-क्लाइंट ट्रैफ़िक अवरुद्ध होता है (अर्थात जब क्लाइंट आइसोलेशन सक्षम हो या जब उपयोगकर्ताओं को एक-दूसरे पर हमला करने से रोकने के लिए ARP इंस्पेक्शन जैसी अन्य तकनीकों का उपयोग किया जाता है)।
डिफ़ॉल्ट रूप से, MacStealer दोनों इंटरफ़ेस का उपयोग करके एक ही AP/BSS से कनेक्ट करने का प्रयास करेगा, इसलिए यह महत्वपूर्ण है कि दोनों नेटवर्क कार्ड समान नेटवर्क देख सकें (अर्थात सुनिश्चित करें कि दोनों नेटवर्क इंटरफ़ेस समान फ़्रीक्वेंसी बैंड और चैनलों का समर्थन करते हैं)। यदि आप चाहते हैं कि दोनों क्लाइंट एक अलग AP/BSS से कनेक्ट हों, तो आप --other-bss पैरामीटर का उपयोग कर सकते हैं।
आप --flip-id पैरामीटर का उपयोग यह परीक्षण करने के लिए कर सकते हैं कि क्या पीड़ित (wlan0) से हमलावर (wlan1) की ओर ट्रैफ़िक की अनुमति है।
यदि MacStealer काम नहीं कर रहा प्रतीत होता है, तो निम्नलिखित जाँचें:
जाँचें कि कोई अन्य प्रोसेस नेटवर्क कार्ड का उपयोग नहीं कर रहा है (उदाहरण के लिए अपने नेटवर्क मैनेजर को बंद करें)।
यदि कोई अन्य प्रोसेस भी नेटवर्क कार्ड का उपयोग कर रहा है, तो आपको kernel reports: match already configured आउटपुट दिख सकता है।
यदि पहले सब कुछ काम कर रहा था, तो अपना Wi-Fi डोंगल निकालने का प्रयास करें, अपने कंप्यूटर या वर्चुअल मशीन को पुनः आरंभ करें, और फिर पुनः प्रयास करें।
पुष्टि करें कि आप सही नेटवर्क से कनेक्ट हो रहे हैं। client.conf को दोबारा जाँचें।
यदि आपने git का उपयोग करके कोड अपडेट किया है, तो ./build.sh और ./pysetup.sh को फिर से चलाएँ (देखें पूर्वापेक्षाएँ)।
यदि आप वर्चुअल मशीन का उपयोग कर रहे हैं, तो MacStealer को नेटिव Linux इंस्टॉलेशन से चलाने का प्रयास करें।
wpa_supplicant और MacStealer से अतिरिक्त डिबग आउटपुट प्राप्त करने के लिए MacStealer को अतिरिक्त पैरामीटर -dd के साथ चलाएँ।
डिफ़ॉल्ट क्लाइंट आइसोलेशन परीक्षण जाँच करेंगे कि क्या ईथरनेट लेयर पर ट्रैफ़िक क्लाइंट्स के बीच अनुमत है। निम्न कमांड का उपयोग करके यह परीक्षण करना भी संभव है कि क्या IP लेयर ट्रैफ़िक क्लाइंट्स के बीच अनुमत है:
./macstealer.py wlan0 --c2c-ip wlan1 [--flip-id]
जब क्लाइंट्स के बीच IP लेयर ट्रैफ़िक की अनुमति होती है, तब भी क्लाइंट एक-दूसरे पर हमला कर सकते हैं। उदाहरण के लिए, ICMP रीडायरेक्ट हमले तब भी संभव हो सकते हैं। ऐसे हमले ARP स्पूफिंग की तुलना में अधिक बोझिल होते हैं, लेकिन आदर्श रूप से क्लाइंट्स के बीच IP लेयर ट्रैफ़िक को भी अवरुद्ध करके इन्हें रोका जाना चाहिए।
निम्नलिखित परीक्षण किसी नेटवर्क के सामान्य गुणों का परीक्षण करने के लिए चलाए जा सकते हैं। ये परीक्षण सीधे तौर पर भेद्यताओं से संबंधित नहीं हैं, लेकिन नेटवर्क के व्यवहार को बेहतर ढंग से समझने के लिए उपयोग किए जा सकते हैं।
./macstealer.py wlan0 --same-id [--other-bss] [--flip]: परीक्षण करें कि क्या किसी एक्सेस पॉइंट से डिस्कनेक्ट करने और पुनः कनेक्ट करने के बाद TCP कनेक्शन जीवित रहते हैं। यदि पुनः कनेक्ट करने के बाद कनेक्शन जीवित नहीं रहते हैं, तो संभवतः नेटवर्क MAC एड्रेस चोरी हमलों के प्रति संवेदनशील नहीं है। हालाँकि, इस व्यवहार का एक बड़ा दोष यह है कि वैध क्लाइंट को इस नेटवर्क से पुनः कनेक्ट होने पर नए TCP कनेक्शन खोलने पड़ते हैं, जिससे यह नेटवर्क धीमा और अविश्वसनीय दिखाई देता है (इसलिए इसके स्थान पर बेहतर सुरक्षा उपाय का उपयोग किया जाना चाहिए)।
आप उसी नेटवर्क के किसी भिन्न AP/BSS से पुनः कनेक्ट करने के लिए --other-bss पैरामीटर का उपयोग कर सकते हैं।
आप इस परीक्षण को पीड़ित पहचान के बजाय हमलावर पहचान के अंतर्गत करने के लिए --flip तर्क का उपयोग कर सकते हैं।
./macstealer.py wlan0 --flip: सामान्य MAC एड्रेस चोरी हमले का परीक्षण करें, लेकिन हमलावर और पीड़ित की भूमिकाएँ बदल दें। दूसरे शब्दों में, हमलावर कॉन्फ़िगरेशन फ़ाइल में दिए गए "victim credentials" का उपयोग करेगा, और पीड़ित "adversary credentials" का उपयोग करेगा।
./macstealer.py wlan0 --c2c wlan1 --same-id [--flid-id]: परीक्षण करें कि क्या एक ही उपयोगकर्ता के दो डिवाइसों के बीच क्लाइंट-से-क्लाइंट ट्रैफ़िक की अनुमति है। wlan1 पैरामीटर के दस्तावेज़ीकरण के लिए क्लाइंट आइसोलेशन परीक्षण देखें।
आप इस परीक्षण को पीड़ित पहचान के बजाय हमलावर पहचान के अंतर्गत करने के लिए --flip तर्क का उपयोग कर सकते हैं।
--delay seconds: आप हमलावर के रूप में पुनः कनेक्ट करने से पहले seconds में देरी निर्दिष्ट करने के लिए --delay पैरामीटर का उपयोग कर सकते हैं।
-d या -dd: इनमें से कोई एक पैरामीटर जोड़ने से स्क्रिप्ट और अंतर्निहित wpa_supplicant इंस्टेंस की डिबग वर्बोसिटी बढ़ जाती है।
डिफ़ॉल्ट रूप से, MacStealer कनेक्ट करने और परीक्षण करने के लिए नेटवर्क का एक AP/BSS स्वचालित रूप से चुन लेगा। यदि आपके नेटवर्क में कई AP/BSS हैं, तो आप bssid कीवर्ड का उपयोग करके पीड़ित के नेटवर्क ब्लॉक में उस AP/BSS को निर्दिष्ट करके किसी विशिष्ट AP/BSS का परीक्षण कर सकते हैं। उदाहरण के लिए, आप उपयोग कर सकते हैं:
...
network={
# Don't change this field, the script relies on it
id_str="victim"
# Network to test: fill in properties of the network to test
ssid="kuleuven"
key_mgmt=WPA-EAP
eap=PEAP
phase2="auth=MSCHAPV2"
# Victim login: fill in login credentials representing the victim
identity="[email protected]"
password="SuperSecret"
# This a specific AP/BSS
bssid=00:11:22:33:44:55
}
...
उपरोक्त कॉन्फ़िगरेशन के साथ, MacStealer 00:11:22:33:44:55 का परीक्षण करेगा। इसका अर्थ है कि यह पीड़ित और हमलावर दोनों के रूप में इस AP से कनेक्ट होगा।
आप इसे --other-bss पैरामीटर के साथ भी जोड़ सकते हैं। उस स्थिति में, पीड़ित 00:11:22:33:44:55 से कनेक्ट होगा, और हमलावर उसी नेटवर्क के किसी भिन्न AP/BSS से कनेक्ट होगा।
एक अन्य विकल्प पीड़ित और हमलावर दोनों के नेटवर्क ब्लॉक में एक स्पष्ट BSS/AP निर्दिष्ट करना है।
ध्यान दें कि MacStealer दिए गए AP/BSS को अधिकतम 30 सेकंड तक खोजेगा। यदि उसे निर्दिष्ट AP/BSS नहीं मिलता है, तो टूल बंद हो जाएगा।
आप निम्नलिखित कॉन्फ़िगरेशन फ़ाइल का उपयोग करके SAE-PK नेटवर्क का परीक्षण कर सकते हैं। ध्यान दें कि SAE-PK नेटवर्क के लिए पीड़ित और हमलावर के प्रमाणीकरण के तरीके में कोई अंतर नहीं है, अर्थात दोनों समान पासवर्ड का उपयोग करते हैं।
# Don't change this line, other MacStealer won't work
ctrl_interface=wpaspy_ctrl
# WPA3/SAE: support both hunting-and-pecking loop and hash-to-element
sae_pwe=2
network={
# Don't change this field, the script relies on it
id_str="attacker"
# Network to test - attacker login
ssid="test-saepk"
psk="7iip-ytnz-qa25"
key_mgmt=SAE
ieee80211w=2
}
network={
# Don't change this field, the script relies on it
id_str="victim"
# Network to test - victim login
ssid="test-saepk"
psk="7iip-ytnz-qa25"
key_mgmt=SAE
ieee80211w=2
}
व्यवहार में, क्लाइंट आइसोलेशन का उपयोग उन नेटवर्कों में भी किया जाता है जो पूर्व-साझा पासवर्ड द्वारा सुरक्षित होते हैं। उदाहरण के लिए, कई राउटरों में मेहमानों या असुरक्षित (IoT) डिवाइसों के लिए नेटवर्क बनाने का विकल्प होता है, जहाँ इस नेटवर्क के क्लाइंट आइसोलेटेड होते हैं ताकि वे एक-दूसरे पर हमला न कर सकें। हालाँकि, इस परिदृश्य में क्लाइंट आइसोलेशन का उपयोग करने का सुरक्षा लाभ प्रश्नवाचक हो सकता है। क्लाइंट आइसोलेशन को किसी दुर्भावनापूर्ण अंदरूनी व्यक्ति को दूसरों पर हमला करने से रोकना चाहिए। लेकिन यदि दुर्भावनापूर्ण अंदरूनी व्यक्ति पूर्व-साझा पासवर्ड जानता है, तो वह एक नकली क्लोन (evil twin) बना सकता है, पीड़ितों को नेटवर्क की इस दुर्भावनापूर्ण प्रति से कनेक्ट होने के लिए धोखा दे सकता है, और फिर अन्य क्लाइंटों पर हमला कर सकता है! दूसरे शब्दों में, क्लाइंट आइसोलेशन का उपयोग करना पासवर्ड से सुरक्षित नेटवर्क में कोई मजबूत सुरक्षा प्रदान नहीं करता, एक दुर्भावनापूर्ण क्लाइंट अन्य क्लाइंटों पर हमला करने के लिए एक रॉग AP बना सकता है।
फिर भी, यह तर्क दिया जा सकता है कि रॉग AP बनाने का पता नेटवर्क व्यवस्थापक लगा सकता है, जिसका अर्थ है कि क्लाइंट आइसोलेशन वास्तव में हमलों को कठिन बना देता है। इसके अतिरिक्त, जब कोई हल्का उपकरण (दूरस्थ रूप से) समझौता किया जाता है, तो उसके पास रॉग AP के रूप में (आसानी से) कार्य करने के संसाधन नहीं हो सकते हैं। यह क्लाइंट आइसोलेशन का उपयोग करने पर हमलों को कठिन बनाता है, लेकिन असंभव नहीं। कुल मिलाकर, यद्यपि क्लाइंट आइसोलेशन पासवर्ड-संरक्षित नेटवर्क में कोई मजबूत सुरक्षा गारंटी प्रदान नहीं करता, यह तर्क दिया जा सकता है कि यह हमलों को करने की व्यावहारिक कठिनाई को बढ़ाता है।
हमारा MacStealing हमला रॉग AP बनाने की तुलना में करना आसान है। दुर्भावनापूर्ण अंदरूनी व्यक्ति, जैसे कि एक हल्का समझौता किया गया IoT डिवाइस, को बस एक MAC एड्रेस स्पूफ करना और नेटवर्क से (पुनः) कनेक्ट करना होता है। ऐसे हमले का पता लगाना भी अधिक कठिन होता है। इस अवलोकन के आधार पर, हमारा नया हमला स्थिति को और खराब कर देता है, और इसलिए कोई यह तर्क दे सकता है कि पूर्व-साझा पासवर्ड से सुरक्षित नेटवर्कों में भी हमारे हमले को प्रासंगिक माना जाना चाहिए।
निष्कर्ष: जब आप पासवर्ड-संरक्षित नेटवर्क में क्लाइंट आइसोलेशन का उपयोग करते हैं, तो आप यह धारणा बना रहे हैं कि कोई दुर्भावनापूर्ण अंदरूनी व्यक्ति रॉग AP नहीं बनाएगा। अन्यथा, सुरक्षा दृष्टिकोण से क्लाइंट आइसोलेशन का उपयोग अर्थहीन है। MacStealing हमला रॉग AP बनाए बिना भी किया जा सकता है और इसलिए हमलों को आसान बना देता है।
हमारे हमले का लक्ष्य एक्सेस पॉइंट पर MAC एड्रेस अस्वीकार/अनुमति सूची को बायपास करना नहीं है। MAC एड्रेस फ़िल्टरिंग को बायपास करने के लिए MAC एड्रेस स्पूफ करना एक अलग और ज्ञात हमला है।
हमारे हमले का लक्ष्य Wi-Fi हॉटस्पॉट में किसी की भुगतान वाली कनेक्शन को हाईजैक करना नहीं है। उदाहरण के लिए, कुछ खुले (या संरक्षित) हॉटस्पॉट में उपयोगकर्ता को इंटरनेट एक्सेस करने की अनुमति मिलने से पहले भुगतान करना आवश्यक होता है। अक्सर भुगतान करने वाले ग्राहक की पहचान उनके MAC एड्रेस के आधार पर की जाती है, और एक हमलावर इंटरनेट तक पहुँच प्राप्त करने के लिए पीड़ित के MAC एड्रेस को स्पूफ कर सकता है। यह हमारे हमले का उद्देश्य नहीं है; MacStealer का लक्ष्य क्लाइंट आइसोलेशन को बायपास करना है।
हमारा हमला उन नेटवर्कों को भी प्रभावित करता है जो Hole 196 भेद्यता से बचाव करते हैं। उदाहरण के लिए, Passpoint (पूर्व में Hotspot 2.0) नेटवर्कों को Hole 196 भेद्यता को रोकना आवश्यक होता है, लेकिन वे अभी भी हमारे हमले के प्रति संवेदनशील हैं।
हमारा हमला उन नेटवर्कों में भी काम करता है जो ARP स्पूफिंग से बचाव करते हैं। खराब सुरक्षा वाले Wi-Fi नेटवर्कों में, एक हमलावर पीड़ित के ट्रैफ़िक को इंटरसेप्ट करने के लिए आसानी से ARP स्पूफिंग कर सकता है, और हमारा हमला वास्तव में व्यावहारिक नहीं होता। हालाँकि, आधुनिक नेटवर्क, जिनमें दुर्भावनापूर्ण अंदरूनी व्यक्ति हो सकते हैं, मशीन-इन-द-मिडिल हमलों को रोकने के लिए क्लाइंट आइसोलेशन या अन्य तरीकों पर निर्भर करते हैं। हमारा हमलावर इन सभी आधुनिक सुरक्षा उपायों को बायपास करता है और फिर भी एक हमलावर को पीड़ित की ओर जाने वाले ट्रैफ़िक को इंटरसेप्ट करने में सक्षम बनाता है।
संक्षेप में, हमारा हमला उन Wi-Fi नेटवर्कों को प्रभावित करता है जहाँ क्लाइंटों को एक-दूसरे पर हमला करने से रोका जाता है, जिससे एक हमलावर किसी अन्य क्लाइंट के ट्रैफ़िक को इंटरसेप्ट कर सकता है।
अधिकांश विक्रेता CVE-2022-47522 का उपयोग इस git रिपॉजिटरी में चर्चित Wi-Fi क्लाइंट आइसोलेशन बायपास भेद्यता को संदर्भित करने के लिए कर रहे हैं। यह भेद्यता हमारे पेपर के अनुभाग 5 में वर्णित हमले से मेल खाती है।
दुर्भाग्य से, अन्य विक्रेता भी इस CVE का उपयोग हमारे पेपर के अनुभाग 3 में चर्चित (कड़ाई से कहें तो असंबंधित) भेद्यता को संदर्भित करने के लिए कर रहे हैं। वास्तव में, MITRE पर पाई जाने वाली CVE की वास्तविक विवरण, हमारी राय में, केवल हमारे पेपर के अनुभाग 3 में वर्णित हमले का वर्णन करती है। व्यवहार में, ऐसा लगता है कि CVE-2022-47522 का उपयोग हमारे पेपर के सभी हमलों को संदर्भित करने के लिए किया जा रहा है, भले ही वे तकनीकी रूप से भिन्न हों।
संस्करण 1.2 (निर्माणाधीन)
README में सुधार: CVE पहचानकर्ता के उपयोग को स्पष्ट किया गया।
README में सुधार: परिचय को क्लाइंट आइसोलेशन बायपास करने पर केंद्रित किया गया, 802.1X टिप्पणियों के साथ सुरक्षा उपायों को अपडेट किया गया और डिफ़ॉल्ट गेटवे के MAC एड्रेस की चोरी को रोकने के लिए अपडेट किया गया।
हमलावर के रूप में पुनः कनेक्ट करने से पहले seconds में देरी निर्दिष्ट करने के लिए --delay पैरामीटर जोड़ा गया।
संस्करण 1.1 (18 जनवरी 2023)
डिफ़ॉल्ट रूप से सर्वर के रूप में 216.58.208.100 के बजाय 8.8.8.8 का उपयोग करें (दोनों Google सर्वर हैं)।
क्लाइंट आइसोलेशन परीक्षण अपडेट किए गए: डिफ़ॉल्ट रूप से ईथरनेट लेयर पर ARP पॉइज़निंग का उपयोग करके परीक्षण करें। ईथरनेट लेयर पर फ़ॉरवर्डिंग के साथ UDP डेटा भेजने का विकल्प भी प्रदान करें, और IP लेयर पर फ़ॉरवर्डिंग के साथ एक परीक्षण प्रदान करें।
README में सुधार: प्रभावित होने वाले नेटवर्क के प्रकार अपडेट किए गए। क्या पासवर्ड-संरक्षित WPA2 या WPA3 नेटवर्क प्रभावित होते हैं, इसकी चर्चा शामिल की गई। क्लाइंट-से-क्लाइंट ईथरनेट या IP लेयर ट्रैफ़िक का परीक्षण करने के लिए विभिन्न कमांडों का स्पष्टीकरण।
README में सुधार: MFP की चर्चा, शमन के रूप में VLAN की चर्चा, यह स्पष्ट करना कि पहचान जाँच किन APs पर की जानी चाहिए, सर्वर का पोर्ट निर्दिष्ट करना,
MacStealer के आउटपुट में सुधार।
संस्करण 1.0 (3 जनवरी 2023):
| कमांड | संक्षिप्त विवरण |
|---|
./macstealer.py wlan0 --ping | पीड़ित के रूप में कनेक्ट करें और सर्वर के पुनः प्रेषण व्यवहार का परीक्षण करें। |
./macstealer.py wlan0 --ping --flip | हमलावर के रूप में कनेक्ट करें और सर्वर के पुनः प्रेषण व्यवहार का परीक्षण करें। |
./macstealer.py wlan0 | MAC एड्रेस चोरी हमले के डिफ़ॉल्ट वैरिएंट का परीक्षण करें। |
./macstealer.py wlan0 --other-bss | हमलावर को पीड़ित से भिन्न AP से कनेक्ट होने दें। |
./macstealer.py wlan0 --c2c wlan1 | क्लाइंट-से-क्लाइंट ईथरनेट लेयर ट्रैफ़िक (ARP पॉइज़निंग) का परीक्षण करें। |
./macstealer.py wlan0 --c2c-eth wlan1 | क्लाइंट-से-क्लाइंट ईथरनेट लेयर ट्रैफ़िक (DNS) का परीक्षण करें। |