
विंडोज और लिनक्स के लिए सरल कीस्ट्रोक इंजेक्शन उपकरण जो संग्रहीत वाईफाई डेटा (SSID और पासवर्ड) को बाहर निकालता है।

क्या आपने कभी कोई फिल्म देखी है जहाँ एक हैकर एक सामान्य दिखने वाली USB ड्राइव को कंप्यूटर में लगाकर तुरंत डेटा चुरा लेता है? आज, आप एक ऐसा उपकरण बनाएँगे जो बिल्कुल यही करता है।
⚠️ अस्वीकरण:
इस प्रोजेक्ट की सभी सामग्री केवल सुरक्षा अनुसंधान उद्देश्यों के लिए है।
2022 की गर्मियों में, मैंने एक ऐसा उपकरण बनाने का निश्चय किया जो लक्ष्य कंप्यूटर से डेटा निकालने में सक्षम हो। लेकिन वास्तव में मैलवेयर कैसे तैनात किया जाए और जानकारी कैसे निकाली जाए? निम्नलिखित खंडों में, मैं एक कस्टम कीस्ट्रोक इंजेक्शन उपकरण बनाने में शामिल आवश्यक कदमों, अंतर्निहित अवधारणाओं और तकनीकी बारीकियों के बारे में बताऊँगा। जबकि यह प्रोजेक्ट विशेष रूप से WiFi क्रेडेंशियल्स को लक्षित करता है, पेलोड को आसानी से अधिक उन्नत या दुर्भावनापूर्ण उद्देश्यों के लिए संशोधित किया जा सकता है—एकमात्र वास्तविक सीमाएँ आपकी रचनात्मकता और तकनीकी विशेषज्ञता हैं।
समय के साथ, इस प्रोजेक्ट में विभिन्न प्रकार की स्क्रिप्ट और उपकरण शामिल हो गए हैं। यह मूल रूप से एक रबर डकी की क्षमताओं को प्रदर्शित करने के लिए बनाया गया था—विशेष रूप से, Raspberry Pi Pico (RPi Pico) का उपयोग करके एक लागत-प्रभावी संस्करण। वर्तमान में, प्रोजेक्ट के दो मुख्य घटक हैं:
पीड़ित के अनलॉक कंप्यूटर तक भौतिक पहुँच।
नेटवर्क माध्यम पर एक्सफ़िलट्रेशन के लिए SMTP का उपयोग करके चुराए गए डेटा को भेजने के लिए कंप्यूटर में इंटरनेट एक्सेस होना चाहिए।
लिनक्स शोषण के लिए पीड़ित के कंप्यूटर पासवर्ड का ज्ञान।
पिको-डकी बनाने के बाद, आपको केवल संशोधित पेलोड (विंडोज शोषण के लिए आपके SMTP विवरण के अनुसार समायोजित और/या लिनक्स पासवर्ड और USB ड्राइव नाम के लिए समायोजित) को RPi Pico में कॉपी करना होगा।
[!NOTE]
इस उपकरण को रबर डकी का उपयोग करके बनाना संभव है, लेकिन ध्यान रखें कि RPi Pico की कीमत लगभग $4.00 है और रबर डकी की कीमत $80.00 है।
हालाँकि, जबकि पिको-डकी एक अच्छा और बजट-अनुकूल समाधान है, रबर डकी छिपने की क्षमता और नवीनतम DuckyScript संस्करण का उपयोग जैसी चीजें प्रदान करता है।
अपने RPi Pico पर पेलोड लिखने के लिए डकी स्क्रिप्ट का उपयोग करने के लिए, आपको पहले इसे पिको-डकी में बदलना होगा। पिको-डकी बनाने के लिए इन सरल चरणों का पालन करें।
एक कीस्ट्रोक इंजेक्शन उपकरण, एक बार होस्ट मशीन से कनेक्ट हो जाने पर, उपयोगकर्ता द्वारा दर्ज की गई कीस्ट्रोक्स की नकल करने वाला कोड चलाकर दुर्भावनापूर्ण कमांड निष्पादित करता है। जबकि यह एक USB ड्राइव की तरह दिखता है, यह एक कीबोर्ड की तरह काम करता है जो पूर्व-प्रोग्रामित पेलोड टाइप करता है। रबर डकी जैसे उपकरण प्रति मिनट 1,000 से अधिक शब्द टाइप कर सकते हैं। एक बार बन जाने पर, भौतिक पहुँच वाला कोई भी व्यक्ति इस पेलोड को आसानी से तैनात कर सकता है।
पेलोड इंजेक्शन कीस्ट्रोक्स को संसाधित करने के लिए STRING कमांड का उपयोग करता है। यह एक या अधिक अल्फ़ान्यूमेरिक/विराम चिह्न वर्णों को स्वीकार करता है और लक्ष्य मशीन में शेष पंक्ति को यथावत टाइप करेगा। ENTER/SPACE कीबोर्ड कुंजियों के दबाने का अनुकरण करेगा।
हम पेलोड के निष्पादन को अस्थायी रूप से रोकने के लिए DELAY कमांड का उपयोग करते हैं। यह तब उपयोगी होता है जब पेलोड को किसी तत्व, जैसे कमांड लाइन, के लोड होने की प्रतीक्षा करनी होती है। शुरुआत में विलंब उपयोगी होता है, जब एक नया USB उपकरण लक्ष्य कंप्यूटर से जुड़ा होता है। प्रारंभ में, कंप्यूटर को इनपुट कमांड स्वीकार करना शुरू करने से पहले क्रियाओं का एक सेट पूरा करना होता है। HID के मामले में सेटअप समय बहुत कम होता है। अधिकांश मामलों में, इसमें एक सेकंड का एक अंश लगता है क्योंकि ड्राइवर अंतर्निहित होते हैं। हालाँकि, कुछ उदाहरणों में, धीमा PC पिको-डकी को पहचानने में अधिक समय ले सकता है। सामान्य सलाह यह है कि अपने लक्ष्य के अनुसार विलंब समय को समायोजित करें।
डेटा एक्सफ़िलट्रेशन कंप्यूटर/डिवाइस से डेटा का अनधिकृत स्थानांतरण है। एक बार डेटा एकत्र हो जाने के बाद, एक प्रतिद्वंद्वी एन्क्रिप्शन या संपीड़न का उपयोग करके नेटवर्क पर डेटा भेजते समय पहचान से बचने के लिए इसे पैकेज कर सकता है। एक्सफ़िलट्रेशन के दो सबसे सामान्य तरीके हैं:
यह दृष्टिकोण विंडोज शोषण के लिए उपयोग किया गया था। पूरा पेलोड यहाँ देखा जा सकता है।
यह दृष्टिकोण लिनक्स शोषण के लिए उपयोग किया गया था। पूरा पेलोड यहाँ देखा जा सकता है।
विंडोज पेलोड (payload1.dd) का उपयोग करने के लिए, आपको पिनों के बीच कोई जम्पर वायर कनेक्ट करने की आवश्यकता नहीं है।
एक बार पासवर्ड .txt फ़ाइल में निर्यात हो जाने के बाद, पेलोड याहू SMTP का उपयोग करके नियुक्त ईमेल पर डेटा भेजेगा। अधिक विस्तृत निर्देशों के लिए, निम्नलिखित लिंक पर जाएँ। साथ ही, पेलोड टेम्पलेट को आपकी SMTP जानकारी के साथ अपडेट करने की आवश्यकता है, जिसका अर्थ है कि आपको RECEIVER_EMAIL, SENDER_EMAIL, और अपना ईमेल PASSWORD अपडेट करना होगा। इसके अतिरिक्त, आप ईमेल की बॉडी और विषय को भी अपडेट कर सकते हैं।
[!NOTE]
ईमेल पर डेटा भेजने के बाद,
.txtफ़ाइल हटा दी जाती है।आप किसी अन्य ईमेल प्रदाता से SMTP का उपयोग भी कर सकते हैं, लेकिन आपको उन SMTP सर्वर और पोर्ट नंबरों के बारे में सावधान रहना चाहिए जिन्हें आप पेलोड में लिखेंगे।
ध्यान रखें कि कुछ नेटवर्क फ़ायरवॉल पर अज्ञात SMTP के उपयोग को अवरुद्ध कर सकते हैं।
लिनक्स पेलोड (payload2.dd) का उपयोग करने के लिए, आपको अपने RPi Pico पर code.py में कोड का अनुपालन करने के लिए GND और GPIO5 के बीच एक जम्पर वायर कनेक्ट करना होगा। अपने RPi Pico पर एकाधिक पेलोड सेट करने के तरीके के बारे में अधिक जानकारी के लिए, इस लिंक पर जाएँ।
चित्र 1: लिनक्स पर शोषण
एक बार पासवर्ड कंप्यूटर से निर्यात हो जाने के बाद, डेटा निर्दिष्ट USB फ्लैश ड्राइव में सहेजा जाएगा। इस पेलोड के ठीक से काम करने के लिए, इसे आपकी USB ड्राइव के सही नाम के साथ अपडेट करने की आवश्यकता है, जिसका अर्थ है कि आपको दो स्थानों पर USBSTICK को अपनी USB ड्राइव के नाम से बदलना होगा।
इसके अतिरिक्त, आपको पेलोड में तीन स्थानों पर लिनक्स PASSWORD को भी अपडेट करना होगा। जैसा कि ऊपर कहा गया है, इस शोषण के सफल होने के लिए, आपको पीड़ित के लिनक्स मशीन के पासवर्ड को जानना होगा, जो इस हमले को कम संभावित बनाता है।
wifi_passwords_print.sh स्क्रिप्ट चलाने के लिए, आपको स्क्रिप्ट को अपने USB स्टिक के सही नाम के साथ अपडेट करना होगा, जिसके बाद आप अपने टर्मिनल में निम्नलिखित कमांड टाइप कर सकते हैं:
echo PASSWORD | sudo -S sh wifi_passwords_print.sh USBSTICK
जहाँ PASSWORD आपके खाते का पासवर्ड है और USBSTICK आपके USB उपकरण का नाम है।
NetworkManager कनेक्शन प्रोफाइल की अवधारणा पर आधारित है, और यह डेटा पढ़ने/लिखने के लिए प्लगइन्स का उपयोग करता है। यह .ini-style कीफ़ाइल स्वरूप का उपयोग करता है और नेटवर्क कॉन्फ़िगरेशन प्रोफाइल संग्रहीत करता है। कीफ़ाइल एक प्लगइन है जो NetworkManager के पास सभी कनेक्शन प्रकारों और क्षमताओं का समर्थन करता है। फ़ाइलें /etc/NetworkManager/system-connections/ में स्थित होती हैं। कीफ़ाइल प्रारूप के आधार पर, पेलोड रुचि के डेटा को निकालने के लिए regex के साथ grep कमांड का उपयोग करता है। फ़ाइल फ़िल्टरिंग के लिए, एक संशोधित सकारात्मक लुकबिहाइंड असर्शन ((?<=keyword)) का उपयोग किया गया था। जबकि सकारात्मक लुकबिहाइंड असर्शन स्ट्रिंग में एक निश्चित स्थान पर मेल खाएगा, sc. कीवर्ड के ठीक बाद की स्थिति पर, उस टेक्स्ट को मैच का हिस्सा बनाए बिना, regex (?<=keyword).* कीवर्ड के बाद किसी भी टेक्स्ट से मेल खाएगा। यह पेलोड को SSID और psk (पूर्व-साझा कुंजी) कीवर्ड के बाद के मानों से मेल खाने की अनुमति देता है।
NetworkManager के बारे में अधिक जानकारी के लिए यहाँ कुछ उपयोगी लिंक दिए गए हैं:
नीचे एक .txt फ़ाइल में पीड़ित की मशीन से एक्सफ़िलट्रेटेड और स्वरूपित डेटा का एक उदाहरण दिया गया है।
RPi Pico पर रबर डकी का एक लाभ यह है कि प्लग इन करने पर यह USB मास स्टोरेज डिवाइस के रूप में दिखाई नहीं देता। एक बार कंप्यूटर में प्लग होने पर, मशीन इसे केवल USB कीबोर्ड के रूप में देखती है। यह RPi Pico के लिए डिफ़ॉल्ट व्यवहार नहीं है। यदि आप अपने RPi Pico को प्लग इन करने पर USB मास स्टोरेज डिवाइस के रूप में दिखने से रोकना चाहते हैं, तो आपको पिन 18 (GND) और पिन 20 (GPIO15) के बीच एक जम्पर वायर कनेक्ट करना होगा। अधिक विवरण के लिए इस लिंक पर जाएँ।
💡 सुझाव:
- पिन कनेक्ट करने से पहले अपना पेलोड RPi Pico पर अपलोड करें।
- पिनों को सोल्डर न करें क्योंकि आप शायद किसी बिंदु पर पेलोड को बदलना/अपडेट करना चाहेंगे।
एक कार्यशील पेलोड फ़ाइल बनाते समय, आप writer.py स्क्रिप्ट का उपयोग कर सकते हैं, या आप मैन्युअल रूप से टेम्पलेट फ़ाइल को बदल सकते हैं। स्क्रिप्ट को सफलतापूर्वक चलाने के लिए, आपको स्क्रिप्ट फ़ाइल नाम के अलावा, OS का नाम (windows या linux) और पेलोड फ़ाइल का नाम (जैसे payload1.dd) पास करना होगा। नीचे आप विंडोज पेलोड बनाते समय writer स्क्रिप्ट चलाने का एक उदाहरण पा सकते हैं।
python3 writer.py windows payload1.dd
कुछ छोटे संशोधनों के साथ, पहले उपयोग की गई स्क्रिप्ट को बैश बन्नी पर चलाने के लिए भी अनुकूलित किया जा सकता है। बैश बन्नी एक विश्वसनीय USB उपकरण का अनुकरण करके काम करता है [1]। इस प्रोजेक्ट के लिए, हम इसे निम्नलिखित कमांड का उपयोग करके एक फ्लैश स्टोरेज उपकरण का अनुकरण करने के लिए कॉन्फ़िगर करेंगे [1, 2]:
ATTACKMODE HID STORAGE
DuckyScript ATTACKMODE कमांड का उपयोग करके, हम परिभाषित कर सकते हैं कि बैश बन्नी को किस प्रकार के उपकरण का अनुकरण करना चाहिए [1]। प्रत्येक आक्रमण मोड एक अद्वितीय USB विक्रेता ID (VID) और उत्पाद ID (PID) का उपयोग करके सिस्टम में पंजीकृत होता है [1]। एकाधिक आक्रमण मोड को एक साथ जोड़कर संयोजित करना भी संभव है।
चित्र 2: बैश बन्नी मार्क I PC में प्लग किया गया
बैश बन्नी मूल DuckyScript कमांड का समर्थन करता है, यही कारण है कि मैं रबर डकी अनुभाग की स्क्रिप्ट का पुन: उपयोग करने में सक्षम था। इन कमांड को इनलाइन उपयोग करने के लिए, हमें उन्हें QUACK कमांड [1] के साथ उपसर्ग करना होगा। उदाहरण के लिए, WINDOWS r लिखने के बजाय, हम Q WINDOWS r लिखते हैं।
बैश बन्नी पर पेलोड लोड करने के लिए, डिवाइस को आर्मिंग मोड (स्विच पोजीशन 3—USB प्लग के सबसे करीब वाला) पर सेट होना चाहिए [1]। एक बार कनेक्ट होने के बाद, payload.txt और exfil.txt को payloads\switch1 में कॉपी करें। पेलोड का नाम payload.txt होना चाहिए [1,2], जबकि पेलोड द्वारा संदर्भित किसी भी सहायक फ़ाइल को स्वतंत्र रूप से नाम दिया जा सकता है।
संदर्भ के लिए, बैश बन्नी मास स्टोरेज निर्देशिका संरचना इस प्रकार है [2]:
BashBunny/
├── loot/
│ └── (पेलोड से निकाला गया डेटा यहाँ सहेजा जाएगा)
└── payloads/
├── library/
│ └── (पुन: प्रयोज्य स्क्रिप्ट या मॉड्यूल)
├── switch1/
│ ├── payload.txt
│ └── (वैकल्पिक फ़ाइलें, जैसे, exfil.txt, स्क्रिप्ट, आदि)
└── switch2/
├── payload.txt
└── (वैकल्पिक फ़ाइलें)
चित्र 3: बैश बन्नी मास स्टोरेज निर्देशिका संरचना
एक बार स्क्रिप्ट का निष्पादन समाप्त हो जाने पर, परिणाम loot\wifi_pass.txt में सहेजे जाएँगे। यदि लक्ष्य कंप्यूटर में कोई सहेजा गया WiFi पासवर्ड नहीं है, तो फ़ाइल खाली होगी।
[!NOTE]
चूँकि बैश बन्नी आक्रमण एक PowerShell स्क्रिप्ट (
exfil.txt) पर निर्भर करता है, इसका उपयोग केवल विंडोज सिस्टम पर ही किया जा सकता है। लिनक्स पर समान दृष्टिकोण का उपयोग करने के लिए, आपको पेलोड को संशोधित करना होगा और PowerShell स्क्रिप्ट को ऊपर लिनक्स अनुभाग में संदर्भित बैश स्क्रिप्ट से बदलना होगा।
यह पिको-डकी वर्तमान में केवल विंडोज OS पर काम करता है।
इस हमले के लिए सफलतापूर्वक तैनात होने के लिए एक अनलॉक डिवाइस तक भौतिक पहुँच आवश्यक है।
लिनक्स शोषण के सफल होने की संभावना बहुत कम है, क्योंकि सफल होने के लिए, आपको न केवल एक अनलॉक डिवाइस तक भौतिक पहुँच की आवश्यकता है, बल्कि आपको लिनक्स मशीन के एडमिन पासवर्ड को भी जानना होगा।
मशीन का फ़ायरवॉल या नेटवर्क का फ़ायरवॉल नेटवर्क माध्यम पर चुराए गए डेटा को भेजने से रोक सकता है।
हमला करने के लिए उपयोग किए जाने वाले विभिन्न कंप्यूटरों की अलग-अलग गति के कारण पेलोड विलंब अपर्याप्त हो सकता है।
पिको-डकी उपकरण वास्तव में छिपा हुआ नहीं है, वास्तव में यह इसके विपरीत है, यह विशेष रूप से तब भारी होता है जब आप पिनों को सोल्डर करते हैं।
साथ ही, पिको-डकी उपकरण समान स्क्रिप्ट चलाने वाले रबर डकी की तुलना में काफी धीमा है।
यदि Caps Lock चालू है, तो कुछ पेलोड कोड निष्पादित नहीं होगा और शोषण विफल हो जाएगा।
यदि कंप्यूटर में गैर-अंग्रेज़ी वातावरण सेट है, तो यह शोषण सफल नहीं होगा।
वर्तमान में, पिको-डकी DuckyScript 3.0 का समर्थन नहीं करता है, केवल DuckyScript 1.0 का उपयोग किया जा सकता है। यदि आपको संस्करण 3.0 की आवश्यकता है, तो आपको रबर डकी का उपयोग करना होगा। इस शोषण के लिए संस्करण 3.0 की आवश्यकता नहीं है!