
पेनेट्रेशन टेस्टिंग / CTF चुनौतियों के लिए नेटवर्क पिवोटिंग की एक संक्षिप्त मार्गदर्शिका।
SOCKS प्रॉक्सी को परखने के लिए ICMP इको रिक्वेस्ट (ping) का उपयोग न करें।
SOCKS एक इंटरनेट प्रोटोकॉल है जो प्रॉक्सी सर्वर के माध्यम से क्लाइंट और सर्वर के बीच नेटवर्क पैकेट का आदान-प्रदान करता है। व्यवहार में, एक SOCKS सर्वर किसी भी IP पते पर TCP कनेक्शन को प्रॉक्सी करता है, और UDP पैकेट को आगे भेजने का साधन प्रदान करता है।
आपको इसे TCP-आधारित प्रोटोकॉल का उपयोग करके परखना चाहिए (जैसे कि पिवट टनल के पार किसी होस्ट से SSH करना या HTTP GET रिक्वेस्ट भेजना)।
NMAP का उपयोग TCP connect scan (-sT) और बिना ping (-Pn) के करना चाहिए।
यह version (-sV) और script scans (-sC) पर भी लागू होता है। इन्हें -sT और -Pn के साथ संयोजन में उपयोग किया जाना चाहिए।
उदाहरण:
proxychains nmap -sT -Pn -p- x.x.x.x
proxychains nmap -sT -Pn -sV -sC -p 21,80,443,445 x.x.x.x
टिप: आप naabu को पीड़ित मशीन पर अपलोड कर सकते हैं और आराम से स्कैन कर सकते हैं।
प्रॉक्सीचेन्स के साथ स्क्रिप्ट और बाइनरी का उपयोग करना
प्रॉक्सीचेन्स इस्तेमाल करने के लिए एक टिप: यह सुनिश्चित करें कि यदि आप कोई इंटरप्रेटेड प्रोग्राम (जैसे Python स्क्रिप्ट) चला रहे हैं, तो स्क्रिप्ट से पहले Python बाइनरी को स्पष्ट रूप से संदर्भित करना अच्छा है, भले ही स्क्रिप्ट हैश बैंग से शुरू होती हो, जैसे:
proxychains4 [-q -f proxychains.conf] python python_script.py
स्क्रिप्ट इंटरप्रेटर के इस स्पष्ट संदर्भ के बिना, कभी-कभी स्क्रिप्ट से उत्पन्न ट्रैफ़िक आपके इच्छित प्रॉक्सी के माध्यम से रूट नहीं हो पाता, और नेटवर्क कनेक्शन विफल हो जाता है। टिप स्रोत
/etc/proxychains.conf में "quite mode" लाइन को अनकमेंट करें ताकि stdout से बचा जा सके जो कभी-कभी कष्टप्रद होता है।
यह केवल एक सुझाव है।
यह आपको लोकल (ssh क्लाइंट) मशीन पर एक सॉकेट बनाने की सुविधा देता है, जो SOCKS प्रॉक्सी सर्वर के रूप में कार्य करता है। जब कोई क्लाइंट इस पोर्ट से कनेक्ट होता है, तो कनेक्शन रिमोट (ssh सर्वर) मशीन पर अग्रेषित किया जाता है, जिसे फिर डेस्टिनेशन मशीन के एक डायनेमिक पोर्ट पर अग्रेषित किया जाता है।
इसे सेट करने की विधि:
/etc/proxychains.conf को संपादित करें और निम्नलिखित लागू करें:
SSH डायनेमिक पोर्ट फॉरवर्डिंग सेट करें:
ssh -D 127.0.0.1:9050 user@victim-IP
उपयोग के उदाहरण:
जहाँ x.x.x.x टनल किए गए नेटवर्क के किसी होस्ट का IP पता है:
proxychains nmap -sT -Pn -p- x.x.x.x
proxychains smbmap -H x.x.x.x
proxychains ssh [email protected]
टनल के माध्यम से firefox उपयोग करने के लिए:
proxychains firefox
यदि आप पिवट टनल के माध्यम से रिवर्स शेल पाने का तरीका खोज रहे हैं, तो आपको यही चाहिए। यह आपको रिमोट (पीड़ित) मशीन के एक पोर्ट को लोकल (हमलावर) मशीन के एक पोर्ट पर अग्रेषित करने की सुविधा देता है।
इसे सेट करने की विधि:
पीड़ित मशीन में SSH करें।
/etc/ssh/sshd_config को संपादित करें और निम्नलिखित लागू करें:
*यह बहुत महत्वपूर्ण है और वेब पर कई गाइड इसका उल्लेख नहीं करते। यदि आप ऐसा नहीं करते हैं, तो आप केवल 127.0.0.1 पर टनल सेट कर पाएंगे, न कि 0.0.0.0 पर, जिसके परिणामस्वरूप जब ट्रैफ़िक localhost के अलावा किसी अन्य होस्ट से आता है तो वह अग्रेषित नहीं होगा।
sudo service ssh restartSSH रिमोट पोर्ट फॉरवर्डिंग सेट करें:
मूल रूप से, ऊपर बताए अनुसार सेट करने के बाद, कमांड इतनी सरल है:
ssh -R 2222:*:2222 user@victim-IP
इसे परखने के लिए, आप निम्न कार्य कर सकते हैं:
अपने हमलावर मशीन पर (जिस पोर्ट पर आपने रिमोट फॉरवर्ड कॉन्फ़िगर किया है, इस उदाहरण में 2222) एक लिसनर (जैसे netcat) सेट करें और पीड़ित मशीन से स्वयं (localhost) पर एक रिक्वेस्ट करें। इस उदाहरण में, वह nc 127.0.0.1 2222 होगा। यदि आपके हमलावर मशीन को कनेक्शन प्राप्त होता है, तो इसका मतलब है कि a) यह काम करता है और b) पिवोटिंग होस्ट्स से victimip:2222 पर होने वाला हर कनेक्शन हमलावर मशीन पर अग्रेषित होगा।
आप इस तरह कई पोर्ट सेट कर सकते हैं:
ssh -R 2222:*:2222 -R 3333:*:3333 user@victim-IP
सावधानी: विदेशी होस्ट (पिवोटिंग नेटवर्क) से अनुरोधों को पीड़ित आईपी पर भेजा जाना चाहिए ताकि वे वापस हमलावर मशीन पर अग्रेषित किए जा सकें।
*आप पीड़ित मशीन से हमलावर मशीन पर SSH कनेक्ट करके भी रिमोट पोर्ट फॉरवर्डिंग लागू कर सकते हैं।
लोकल पोर्ट फॉरवर्डिंग आपको लोकल (हमलावर) मशीन के एक पोर्ट को रिमोट (पीड़ित) मशीन के एक पोर्ट पर अग्रेषित करने की सुविधा देता है। यह विशेष रूप से पीड़ित पर लोकल पोर्ट स्कैन करने के लिए उपयोगी है।
उपयोग:
ssh user@victim-IP -L 8888:127.0.0.1:8086
अब आप पीड़ित मशीन पर पोर्ट 8086 को स्कैन करने के लिए उदाहरण के लिए nmap का उपयोग इस प्रकार कर सकते हैं:
nmap -Pn -n -p8888 -sV 127.0.0.1
SSH डायनेमिक पोर्ट फॉरवर्डिंग और Proxychains के साथ डबल पिवोटिंग को लागू करने का एक उदाहरण।
अवधारणा:
मान लीजिए हमारे पास निम्नलिखित 4 मशीनें हैं।
| IP | भूमिका |
|---|---|
| 10.10.10.10 | हमलावर |
| 10.10.10.11 | Jumphost1 |
| 172.16.1.12 | Jumphost2 |
| 172.16.2.13 | Jumphost3 |
हमलावर Jumphost1 तक पहुँच सकता है।
Jumphost1 Jumphost2 तक पहुँच सकता है।
Jumphost2 Jumphost3 तक पहुँच सकता है।
...
socks4 127.0.0.1 9050
socks4 127.0.0.1 9999
ssh -D 127.0.0.1:9999 user@Jumphost2
अब आपको Jumphost3 तक पहुँचने में सक्षम होना चाहिए।
sshuttle आपको ssh के माध्यम से अपनी मशीन से किसी भी रिमोट सर्वर तक VPN कनेक्शन बनाने की सुविधा देता है, बशर्ते उस सर्वर पर python 2.3 या उच्चतर हो। काम करने के लिए, आपके पास लोकल मशीन पर रूट एक्सेस होना चाहिए, लेकिन आपके पास सर्वर पर एक सामान्य खाता हो सकता है। एक ही क्लाइंट मशीन पर sshuttle को एक साथ कई बार चलाना मान्य है, हर बार एक अलग सर्वर से कनेक्ट करते हुए, ताकि आप एक साथ एक से अधिक VPN पर हो सकें। sshuttle github रिपॉजिटरी देखें।
उपयोग:
मान लें कि हम 172.16.2.0/16 में पिवोट करना चाहते हैं:
sshuttle -vvr root@victim 172.16.2.0/16
यदि आप ssh कुंजी का उपयोग करना चाहते हैं:
sshuttle -vvr root@victim --ssh-cmd 'ssh -i ~/.ssh/id_rsa' 172.16.2.0/16
Chisel एक तेज़ TCP/UDP टनल है, जो HTTP के ऊपर ट्रांसपोर्ट होती है और SSH के माध्यम से सुरक्षित होती है। एकल एक्ज़ीक्यूटेबल जिसमें क्लाइंट और सर्वर दोनों शामिल हैं। Go (golang) में लिखा गया है। यह अत्यंत शानदार और उपयोगी है।
इंस्टॉलेशन:
आप kali पर आसानी से chisel इंस्टॉल कर सकते हैं:
apt install chisel
इसे उपयोग करने के लिए, आपको पीड़ित पर chisel बाइनरी अपलोड करने की भी आवश्यकता है। आप प्रीकंपाइल्ड संस्करण यहाँ से डाउनलोड कर सकते हैं।
लोकल पोर्ट फॉरवर्डिंग उदाहरण
अपने हमलावर मशीन पर:
chisel server -p 8000 --reverse
पीड़ित मशीन पर:
./chisel_1.7.7_linux_amd64 client attacker-ip:8000 R:1234:127.0.0.1:8443
यह हमलावर मशीन के पोर्ट 1234 से पीड़ित मशीन के पोर्ट 8443 पर ट्रैफ़िक अग्रेषित करेगा।
Burpsuite प्रॉक्सी सेट करने की क्षमता का समर्थन करता है, यह एक अत्यंत उपयोगी और शक्तिशाली फीचर है।
इसे सेट करने की विधि:
Burpsuite चालू करें और निम्नलिखित लागू करें:
SSH डायनेमिक पोर्ट फॉरवर्डिंग या sshuttle सेट करने के साथ संयोजन में, अब आप Burpsuite का उपयोग करके ट्रैफ़िक को अपने localhost बाइंड पोर्ट पर भेजकर वांछित होस्ट्स तक पिवोट कर सकते हैं। टनल के माध्यम से gobuster dir brute का एक उपयोगी उदाहरण (मान लें कि आपने पोर्ट 2222 को रीडायरेक्ट पोर्ट के रूप में सेट किया है):
gobuster dir -u http://127.0.0.1:2222 -t 40 -w /some/dirlist.txt