
Wi-Fi फ्रेमवर्क प्रूफ-ऑफ-कॉन्सेप्ट, स्वचालित प्रयोग, परीक्षण सूट, फज़र और अधिक बनाने के लिए।
हम एक फ्रेमवर्क प्रस्तुत करते हैं जो Wi-Fi प्रयोगों को अधिक आसानी से करने में मदद करता है। इसका उपयोग फज़र बनाने, नए हमलों को लागू करने, कमजोरियों का परीक्षण करने के लिए प्रूफ-ऑफ-कॉन्सेप्ट बनाने, प्रयोगों को स्वचालित करने, परीक्षण सूट लागू करने आदि के लिए किया जा सकता है।
फ्रेमवर्क का मुख्य लाभ यह है कि यह आपको Linux की Wi-Fi कार्यक्षमता का पुन: उपयोग करके हमलों और/या परीक्षणों को अधिक आसानी से लागू करने की अनुमति देता है। उदाहरण के लिए, फ्रेमवर्क आपके लिए (संरक्षित) Wi-Fi नेटवर्क से जुड़ सकता है और क्लाइंट का परीक्षण करते समय आपके लिए बीकन प्रसारित कर सकता है। सामान्यतः, Linux की किसी भी Wi-Fi कार्यक्षमता का पुन: उपयोग करके हमलों/परीक्षणों को अधिक तेजी से लागू किया जा सकता है। फ्रेमवर्क hostap यूज़र स्पेस डेमॉन के ऊपर टेस्ट केस निष्पादित करके इसे प्राप्त करता है।
Wi-Fi डेमॉन और फ्रेमवर्क घटकों का अवलोकन।
यदि आप Linux पर Wi-Fi प्रयोग करने में नए हैं, तो पहले libwifi Linux Tutorial पढ़ने की अत्यधिक अनुशंसा की जाती है। जब आप Linux कार्यक्षमता का पुन: उपयोग करने की आवश्यकता के बिना बुनियादी Wi-Fi हमलों को लागू कर रहे हैं, तो फ्रेमवर्क सीमित लाभ प्रदान करता है और आप इसके बजाय Scapy में सीधे हमलों को लागू करने और वैकल्पिक रूप से libwifi लाइब्रेरी का उपयोग करने पर विचार कर सकते हैं।
फ्रेमवर्क का उपयोग करने के लिए:
इसे ./setup.sh चलाकर इंस्टॉल करें। यह स्क्रिप्ट क्या करती है यह जानने के लिए setup देखें।
उपयोग ट्यूटोरियल पढ़ें।
मान लीजिए आप यह परीक्षण करना चाहते हैं कि क्या कोई क्लाइंट कभी सभी-शून्य कुंजी का उपयोग करके फ्रेम को एन्क्रिप्ट करता है। यह कुंजी पुनर्स्थापना हमले के दौरान हो सकता है। फ्रेमवर्क का उपयोग करके आपको एक्सेस प्वाइंट की सभी कार्यक्षमता को पुन: लागू करने की आवश्यकता नहीं है, बल्कि केवल निम्नलिखित टेस्ट केस लिखना होगा:
class ExampleKrackZerokey(Test):
name = "example-krack-zero-key"
kind = Test.Authenticator
def __init__(self):
super().__init__([
# Replay 4-Way Handshake Message 3/4.
Action( trigger=Trigger.Connected, action=Action.Function ),
# Receive all frames and search for one encrypted with an all-zero key.
Action( trigger=Trigger.NoTrigger, action=Action.Receive ),
# When we receive such a frame, we can terminate the test.
Action( trigger=Trigger.Received, action=Action.Terminate )
])
def resend(self, station):
# Resend 4-Way Handshake Message 3/4.
station.wpaspy_command("RESEND_M3 " + station.clientmac )
def receive(self, station, frame):
if frame[Dot11].addr2 != station.clientmac or not frame.haslayer(Dot11CCMP):
return False
# Check if CCMP-encrypted frame can be decrypted using an all-zero key
plaintext = decrypt_ccmp(frame.getlayer(Dot11), tk=b"\x00"*16)
if plaintext is None: return False
# We received a valid plaintext frame!
log(STATUS,'Client encrypted a frame with an all-zero key!', color="green")
return True
उपरोक्त टेस्ट केस एक एक्सेस प्वाइंट बनाएगा जिससे क्लाइंट कनेक्ट हो सकते हैं। क्लाइंट के कनेक्ट होने के बाद, क्लाइंट को 4-वे हैंडशेक में एक नया तीसरा संदेश भेजा जाएगा। एक कमजोर क्लाइंट फिर सभी-शून्य एन्क्रिप्शन कुंजी का उपयोग करना शुरू कर देगा, जिसे टेस्ट केस स्वचालित रूप से पहचान लेता है।
आप उपरोक्त टेस्ट केस को सिम्युलेटेड Wi-Fi रेडियो का उपयोग करके निम्नानुसार चला सकते हैं:
./setup/setup-hwsim.sh 4
source setup/venv/bin/activate
./run.py wlan1 example-krack-zero-key
आप परीक्षण करने के लिए बनाए गए एक्सेस प्वाइंट से कनेक्ट कर सकते हैं (पासवर्ड passphrase के साथ नेटवर्क testnetwork):
./hostap.py wlan2
नेटवर्क कॉन्फ़िगरेशन] बदलकर इस AP को आसानी से WPA2 या WPA3 और/या एंटरप्राइज़ प्रमाणीकरण का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है, बिना हमारे द्वारा लिखे गए टेस्ट केस में कोई बदलाव किए! इस उदाहरण में फ्रेमवर्क का उपयोग करने के अतिरिक्त लाभ हैं:
अधिक उदाहरणों के लिए हमारे सभी उदाहरणों का विस्तृत विवरण देखें।
यह कार्य ACM सम्मेलन ऑन सिक्योरिटी एंड प्राइवेसी इन वायरलेस एंड मोबाइल नेटवर्क्स (WiSec '21) में प्रकाशित हुआ:
वे कार्य जिन्होंने इस फ्रेमवर्क या इसी तरह के एक का उपयोग किया है: