USBCoercer: एक TinyUSB-आधारित WPAD कोएर्शन डिवाइस
USBCoercer, नेटिव USB-OTG वाले ESP32 डेवलपमेंट बोर्ड को एक ईथरनेट-ओवर-USB गैजेट में बदल देता है जो WPAD के माध्यम से प्रॉक्सी कॉन्फ़िगरेशन को मजबूर करने में सक्षम है। यह TinyUSB नेटवर्क कंट्रोल मॉडल (NCM) उदाहरण पर आधारित है और एक न्यूनतम DHCP सर्वर जोड़ता है जो DHCP विकल्प 252 (WPAD/PAC) इंजेक्ट करता है और, इसके अतिरिक्त, आवश्यकता पड़ने पर EDR टेलीमेट्री को ब्लॉक करने के लिए क्लासलेस स्टैटिक रूट्स (विकल्प 121) भी इंजेक्ट करता है।
यह प्रोजेक्ट सुरक्षा परीक्षण और प्रयोगशाला प्रदर्शनों के लिए है। उपयोग करने से पहले हमेशा स्पष्ट प्राधिकरण प्राप्त करें।
मुख्य विशेषताएँ
- TinyUSB-आधारित USB NCM ईथरनेट गैजेट
- एम्बेडेड DHCP सर्वर जो वैकल्पिक क्लासलेस स्टैटिक रूट्स (विकल्प 121) और कॉन्फ़िगर करने योग्य WPAD/PAC URL (विकल्प 252) प्रदान करता है।
- स्टेटस LED इंडिकेटर जो AtomS3U हार्डवेयर पर नेटवर्क स्टैक तैयार होने के बाद हरा, DHCP Discovery/Offer चरण के बाद पीला और DHCP Request/ACK पूरा होने पर नीला हो जाता है।
आवश्यकताएँ
हार्डवेयर
- नेटिव USB-OTG वाला ESP32-S3 बोर्ड
- (कुछ मॉडलों में) SoC OTG पोर्ट को टारगेट मशीन से जोड़ने वाली USB केबल।
सॉफ़्टवेयर
- TinyUSB समर्थन सक्षम के साथ Espressif ESP-IDF v5.5 (या नया)।
- मानक
install.sh/export.sh स्क्रिप्ट्स के माध्यम से स्थापित ESP-IDF टूलचेन और Python वातावरण।
- महत्वपूर्ण: यह फर्मवेयर espressif/esp_tinyusb की 1.x शाखा के साथ विकसित किया गया है और इसे 2.x शाखा में पोर्ट नहीं किया गया है। 2.x शाखा का उपयोग करने पर कंपाइलेशन त्रुटियाँ होंगी। अधिकतम समर्थित संस्करण espressif/esp_tinyusb 1.6.0 है।
त्वरित आरंभ
- ESP-IDF सेट करें
. $HOME/esp/esp-idf/export.sh
- प्रोजेक्ट कॉन्फ़िगर करें (वैकल्पिक)
स्थानीय IP, DHCP पूल, WPAD सेटिंग्स आदि को अनुकूलित करने के लिए
USBCoercer Configuration मेनू की समीक्षा करें।
- बिल्ड करें
- फ्लैश करें
कॉन्फ़िगरेशन संदर्भ
प्रोजेक्ट एक समर्पित USBCoercer Configuration मेनू प्रदान करता है
idf.py menuconfig के अंदर:
- इंटरफ़ेस – USB-मुखी IPv4 पता, सबनेट मास्क और गेटवे के साथ-साथ
होस्ट को विज्ञापित स्थानीय रूप से प्रशासित MAC पता सेट करें।
- DHCP सर्वर – लीज़ पूल प्रारंभ/अंत, लीज़ समय, वैकल्पिक DNS
सर्वर और डोमेन सफ़िक्स (विकल्प 15) को नियंत्रित करें।
- WPAD – विकल्प 252 को टॉगल करें और कनेक्टेड होस्ट्स को दिए जाने वाले URL को परिभाषित करें।
- स्टैटिक रूट्स – विकल्प 121 सक्षम करें और अर्धविराम-पृथक रूट्स की सूची
प्रदान करें,
destination/prefix,gateway सिंटैक्स का उपयोग करते हुए (उदाहरण के लिए,
3.121.6.180/32,192.168.7.1)। विकल्प को छोड़ने के लिए सूची खाली छोड़ दें।
डिफ़ॉल्ट कॉन्फ़िगरेशन
sdkconfig.defaults एक प्रयोगशाला-अनुकूल सेटअप प्रदान करता है:
- स्थानीय IP:
192.168.7.1/24 बिना किसी डिफ़ॉल्ट गेटवे के।
- तीन पतों का DHCP पूल (
192.168.7.2 – 192.168.7.4)।
- DHCP डोमेन:
badnet।
- WPAD सक्षम,
http://192.168.7.1/wpad.dat की ओर इंगित करता है। कॉन्फ़िगर किए गए ओरिजिन पर PAC फ़ाइल होस्ट करें
या आवश्यकतानुसार URL अनुकूलित करें।
- DNS विकल्प अक्षम (होस्ट अपने मौजूदा DNS सर्वर बनाए रखते हैं)।
- स्टैटिक रूट्स डिफ़ॉल्ट रूप से अक्षम (विकल्प 121 केवल कॉन्फ़िगर होने पर भेजा जाता है)।
अपने परीक्षणों के अनुसार वातावरण को अनुकूलित करने के लिए sdkconfig.defaults समायोजित करें या menuconfig का उपयोग करें। कोई भी पैरामीटर बदलने के बाद फर्मवेयर को पुनः बिल्ड करें (idf.py build)।
नेटवर्क व्यवहार
- डिवाइस कॉन्फ़िगर किए गए MAC पते का उपयोग करके स्वयं को USB NCM ईथरनेट एडॉप्टर के रूप में प्रस्तुत करता है।
- एम्बेडेड DHCP सर्वर कॉन्फ़िगर किए गए पैरामीटरों के साथ
DISCOVER/REQUEST संदेशों का उत्तर देता है।
- जब क्लासलेस रूट्स सक्षम होते हैं, तो विकल्प 121 गतिशील रूप से उत्पन्न होता है।
- WPAD सक्षम है और एक गैर-खाली URL प्रदान किया गया है, इसलिए होस्ट निर्दिष्ट ओरिजिन से PAC फ़ाइल प्राप्त करता है और प्रॉक्सी सेटिंग्स लागू करता है।
NTLM कोएर्शन तंत्र का उपयोग करना
वर्तमान में, परिनियोजन के लिए NTLM-प्रमाणित प्रॉक्सी प्रदान करने और प्रमाणीकरण को मजबूर करने हेतु एक बाहरी सर्वर की आवश्यकता होती है। Responder इस कार्य के लिए उपयोगी है। WPAD.DAT फ़ाइल को सर्व करने के लिए एक बाहरी सर्वर वैकल्पिक है।
चेतावनियाँ
- WPAD या स्टैटिक रूट्स में हेरफेर करने से कनेक्टेड मशीन का ट्रैफ़िक पुनर्निर्देशित हो सकता है। इस फर्मवेयर का उपयोग केवल नियंत्रित वातावरण में सूचित सहमति के साथ करें।
- यह प्रोजेक्ट प्रयोगशाला परिदृश्यों को लक्षित करता है; यह अतिरिक्त सुरक्षा नियंत्रण या कॉन्फ़िगरेशन स्थिरता लागू नहीं करता है।
परीक्षण
इस फर्मवेयर का परीक्षण M5Stack AtomS3U पर किया गया है और यह ठीक से काम करता है।
आभार
- आधिकारिक ESP-IDF TinyUSB NCM उदाहरणों पर कमोबेश निकटता या दूर से आधारित।
- Codex के साथ रिफैक्टर और बेहतर किया गया।
हैप्पी (और जिम्मेदार) हैकिंग!