500/udp - Pentesting IPsec/IKE VPN
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
IPsec को नेटवर्क (LAN-to-LAN) के बीच संचार को सुरक्षित करने और दूरस्थ उपयोगकर्ताओं से नेटवर्क गेटवे (दूरस्थ पहुंच) तक संचार के लिए मुख्य तकनीक के रूप में व्यापक रूप से मान्यता प्राप्त है, जो उद्यम VPN समाधानों के लिए रीढ़ के रूप में कार्य करता है।
दो बिंदुओं के बीच सुरक्षा संघ (SA) की स्थापना IKE द्वारा प्रबंधित की जाती है, जो ISAKMP के तहत कार्य करता है, जो प्रमाणीकरण और कुंजी विनिमय के लिए एक प्रोटोकॉल है। यह प्रक्रिया कई चरणों में होती है:
चरण 1: दो अंत बिंदुओं के बीच एक सुरक्षित चैनल बनाया जाता है। यह एक पूर्व-शेयर की गई कुंजी (PSK) या प्रमाणपत्रों का उपयोग करके प्राप्त किया जाता है, मुख्य मोड का उपयोग करते हुए, जिसमें तीन जोड़े संदेश होते हैं, या आक्रामक मोड।
चरण 1.5: हालांकि यह अनिवार्य नहीं है, इस चरण को विस्तारित प्रमाणीकरण चरण के रूप में जाना जाता है, जो उपयोगकर्ता की पहचान की पुष्टि करता है जो कनेक्ट करने का प्रयास कर रहा है, एक उपयोगकर्ता नाम और पासवर्ड की आवश्यकता होती है।
चरण 2: यह चरण डेटा को ESP और AH के साथ सुरक्षित करने के लिए पैरामीटर पर बातचीत करने के लिए समर्पित है। यह परफेक्ट फॉरवर्ड सीक्रेसी (PFS) सुनिश्चित करने के लिए चरण 1 में उपयोग किए गए एल्गोरिदम से भिन्न एल्गोरिदम के उपयोग की अनुमति देता है, जिससे सुरक्षा बढ़ती है।
डिफ़ॉल्ट पोर्ट: 500/udp
IPSec कॉन्फ़िगरेशन केवल एक या कुछ परिवर्तनों को स्वीकार करने के लिए तैयार किया जा सकता है। एक परिवर्तन मानों का एक संयोजन है। प्रत्येक परिवर्तन में DES या 3DES जैसे एन्क्रिप्शन एल्गोरिदम, SHA या MD5 जैसे अखंडता एल्गोरिदम, एक पूर्व-शेयर की के रूप में प्रमाणीकरण प्रकार, Diffie-Hellman 1 या 2 के रूप में कुंजी वितरण एल्गोरिदम और 28800 सेकंड के रूप में जीवनकाल जैसे कई गुण होते हैं।
फिर, आपको जो पहला काम करना है वह है एक मान्य परिवर्तन ढूंढना, ताकि सर्वर आपसे बात कर सके। ऐसा करने के लिए, आप उपकरण ike-scan का उपयोग कर सकते हैं। डिफ़ॉल्ट रूप से, Ike-scan मुख्य मोड में काम करता है, और एक ISAKMP हेडर के साथ गेटवे को एक पैकेट भेजता है और इसके अंदर आठ परिवर्तनों के साथ एकल प्रस्ताव भेजता है।
प्रतिक्रिया के आधार पर, आप एंडपॉइंट के बारे में कुछ जानकारी प्राप्त कर सकते हैं:
As you can see in the previous response, there is a field called AUTH with the value PSK. This means that the vpn is configured using a preshared key (and this is really good for a pentester). The value of the last line is also very important:
0 returned handshake; 0 returned notify: इसका मतलब है कि लक्ष्य IPsec गेटवे नहीं है।
1 returned handshake; 0 returned notify: इसका मतलब है कि लक्ष्य IPsec के लिए कॉन्फ़िगर किया गया है और IKE बातचीत करने के लिए इच्छुक है, और आप द्वारा प्रस्तावित एक या अधिक परिवर्तन स्वीकार्य हैं (एक मान्य परिवर्तन आउटपुट में दिखाया जाएगा)।
0 returned handshake; 1 returned notify: VPN गेटवे एक सूचित संदेश के साथ प्रतिक्रिया करते हैं जब कोई भी परिवर्तन स्वीकार्य नहीं है (हालांकि कुछ गेटवे ऐसा नहीं करते हैं, इस मामले में आगे विश्लेषण और एक संशोधित प्रस्ताव का प्रयास किया जाना चाहिए)।
Then, in this case we already have a valid transformation but if you are in the 3rd case, then you need to brute-force a little bit to find a valid transformation:
First of all you need to create all the possible transformations:
और फिर प्रत्येक को ike-scan का उपयोग करके ब्रूट-फोर्स करें (इसमें कई मिनट लग सकते हैं):
यदि ब्रूट-फोर्स काम नहीं करता है, तो शायद सर्वर बिना हैंडशेक के भी मान्य ट्रांसफॉर्म्स का उत्तर दे रहा है। फिर, आप उसी ब्रूट-फोर्स को आक्रामक मोड का उपयोग करके आजमा सकते हैं:
उम्मीद है कि एक मान्य परिवर्तन वापस प्रतिध्वनित होता है। आप iker.py का उपयोग करके समान हमला करने की कोशिश कर सकते हैं। आप ikeforce के साथ परिवर्तनों को ब्रूट फोर्स करने की भी कोशिश कर सकते हैं:
In DH Group: 14 = 2048-बिट MODP और 15 = 3072-बिट
2 = HMAC-SHA = SHA1 (इस मामले में)। --trans
प्रारूप है $Enc,$Hash,$Auth,$DH
Cisco यह संकेत देता है कि DH समूह 1 और 2 का उपयोग करने से बचें क्योंकि वे पर्याप्त मजबूत नहीं हैं। विशेषज्ञों का मानना है कि जिन देशों के पास बहुत सारे संसाधन हैं, वे आसानी से इन कमजोर समूहों का उपयोग करने वाले डेटा की एन्क्रिप्शन को तोड़ सकते हैं। यह एक विशेष विधि का उपयोग करके किया जाता है जो उन्हें कोड को जल्दी से क्रैक करने के लिए तैयार करती है। हालांकि इस विधि को स्थापित करने में बहुत पैसा लगता है, यह इन शक्तिशाली देशों को वास्तविक समय में एन्क्रिप्टेड डेटा पढ़ने की अनुमति देती है यदि यह किसी कमजोर समूह (जैसे 1,024-बिट या छोटे) का उपयोग कर रहा है।
फिर, आप ike-scan का उपयोग करके उपकरण के विक्रेता का पता लगाने की कोशिश कर सकते हैं। उपकरण एक प्रारंभिक प्रस्ताव भेजता है और पुनः खेलने से रुक जाता है। फिर, यह सर्वर से प्राप्त संदेशों और मेल खाने वाले प्रतिक्रिया पैटर्न के बीच समय के अंतर का विश्लेषण करेगा, पेंटेस्टर सफलतापूर्वक VPN गेटवे विक्रेता का फिंगरप्रिंट बना सकता है। इसके अलावा, कुछ VPN सर्वर वैकल्पिक विक्रेता आईडी (VID) पेलोड का उपयोग IKE के साथ करेंगे।
यदि आवश्यक हो तो मान्य परिवर्तन निर्दिष्ट करें (using --trans)
यदि IKE यह पता लगाता है कि विक्रेता कौन है, तो यह इसे प्रिंट करेगा:
यह nmap स्क्रिप्ट ike-version के साथ भी प्राप्त किया जा सकता है
हैश को कैप्चर करने की अनुमति पाने के लिए आपको एक मान्य ट्रांसफॉर्मेशन की आवश्यकता है जो आक्रामक मोड का समर्थन करता है और सही ID (समूह नाम) होना चाहिए। आपको शायद मान्य समूह नाम नहीं पता होगा, इसलिए आपको इसे ब्रूट-फोर्स करना होगा। इसके लिए, मैं आपको 2 विधियों की सिफारिश करूंगा:
सबसे पहले, एक नकली ID के साथ एक अनुरोध करने की कोशिश करें जिससे हैश इकट्ठा किया जा सके ("-P"):
यदि कोई हैश वापस नहीं किया गया है, तो शायद यह ब्रूट फोर्सिंग की विधि काम करेगी। यदि कुछ हैश वापस किया गया है, तो इसका मतलब है कि एक नकली हैश एक नकली आईडी के लिए वापस भेजा जाएगा, इसलिए यह विधि आईडी को ब्रूट-फोर्स करने के लिए विश्वसनीय नहीं होगी। उदाहरण के लिए, एक नकली हैश वापस किया जा सकता है (यह आधुनिक संस्करणों में होता है):
लेकिन यदि जैसा कि मैंने कहा, कोई हैश वापस नहीं किया गया है, तो आपको ike-scan का उपयोग करके सामान्य समूह नामों को ब्रूट-फोर्स करने का प्रयास करना चाहिए।
यह स्क्रिप्ट संभावित आईडी को ब्रूट-फोर्स करने का प्रयास करेगी और उन आईडी को वापस करेगी जहाँ एक मान्य हैंडशेक वापस किया गया है (यह एक मान्य समूह नाम होगा)।
यदि आपने एक विशिष्ट परिवर्तन खोजा है, तो इसे ike-scan कमांड में जोड़ें। और यदि आपने कई परिवर्तनों की खोज की है, तो उन्हें सभी को आजमाने के लिए एक नया लूप जोड़ने में संकोच न करें (आपको तब तक सभी को आजमाना चाहिए जब तक उनमें से एक सही ढंग से काम नहीं कर रहा है)।
आप सामान्य समूह नामों को ब्रूट-फोर्स करने के लिए ikeforce का शब्दकोश या seclists में एक का उपयोग कर सकते हैं:
Or use this dict (is a combination of the other 2 dicts without repetitions):
iker.py भी संभावित समूह नामों को ब्रूटफोर्स करने के लिए ike-scan का उपयोग करता है। यह ike-scan के आउटपुट के आधार पर एक मान्य ID खोजने के लिए अपनी विधि का पालन करता है।
ikeforce.py एक उपकरण है जिसका उपयोग IDs को ब्रूट फोर्स करने के लिए किया जा सकता है। यह उपकरण विभिन्न कमजोरियों का लाभ उठाने की कोशिश करेगा जो एक मान्य और गैर-मान्य ID के बीच अंतर करने के लिए उपयोग की जा सकती हैं (इसमें झूठे सकारात्मक और झूठे नकारात्मक हो सकते हैं, यही कारण है कि मैं संभवतः ike-scan विधि का उपयोग करना पसंद करता हूं)।
डिफ़ॉल्ट रूप से ikeforce शुरुआत में कुछ यादृच्छिक IDs भेजेगा ताकि सर्वर के व्यवहार की जांच की जा सके और उपयोग करने की रणनीति निर्धारित की जा सके।
पहली विधि समूह नामों को ब्रूट-फोर्स करने के लिए Dead Peer Detection DPD की जानकारी की खोज करना है जो Cisco सिस्टम के लिए है (यह जानकारी केवल तब सर्वर द्वारा पुनः भेजी जाती है जब समूह नाम सही होता है)।
उपलब्ध दूसरी विधि यह है कि प्रत्येक प्रयास के लिए भेजे गए उत्तरों की संख्या की जांच करें क्योंकि कभी-कभी सही ID का उपयोग करने पर अधिक पैकेट भेजे जाते हैं।
तीसरी विधि गलत ID के जवाब में "INVALID-ID-INFORMATION" की खोज करना है।
अंत में, यदि सर्वर जांचों के लिए कुछ भी पुनः भेजता नहीं है, तो ikeforce सर्वर को ब्रूट फोर्स करने की कोशिश करेगा और जांच करेगा कि जब सही ID भेजी जाती है तो सर्वर कुछ पैकेट के साथ पुनः भेजता है। स्पष्ट है, ID का ब्रूट फोर्सिंग का लक्ष्य PSK प्राप्त करना है जब आपके पास एक मान्य ID हो। फिर, ID और PSK के साथ आपको XAUTH को ब्रूटफोर्स करना होगा (यदि यह सक्षम है)।
यदि आपने एक विशिष्ट परिवर्तन खोजा है तो इसे ikeforce कमांड में जोड़ें। और यदि आपने कई परिवर्तनों की खोज की है तो उन्हें सभी को आजमाने के लिए एक नया लूप जोड़ने में संकोच न करें (आपको तब तक सभी को आजमाना चाहिए जब तक उनमें से एक सही ढंग से काम न करे)।
(From the book Network Security Assessment: Know Your Network): यह संभव है कि VPN क्लाइंट और सर्वर के बीच कनेक्शन को स्निफ़ करके मान्य उपयोगकर्ता नाम प्राप्त किए जा सकें, क्योंकि पहले आक्रामक मोड पैकेट जिसमें क्लाइंट ID होती है, स्पष्ट रूप से भेजी जाती है।
अंत में, यदि आपने एक मान्य परिवर्तन और समूह नाम पाया है और यदि आक्रामक मोड की अनुमति है, तो आप बहुत आसानी से क्रैक करने योग्य हैश प्राप्त कर सकते हैं:
The hash hash.txt के अंदर सहेजा जाएगा।
आप psk-crack, john ( ikescan2john.py का उपयोग करते हुए) और hashcat का उपयोग करके हैश को crack कर सकते हैं:
आक्रामक मोड IKE को पूर्व-शेयर की (PSK) के साथ मिलाकर समूह प्रमाणीकरण उद्देश्यों के लिए सामान्यतः उपयोग किया जाता है। इस विधि को XAuth (विस्तारित प्रमाणीकरण) द्वारा बढ़ाया जाता है, जो उपयोगकर्ता प्रमाणीकरण की एक अतिरिक्त परत पेश करता है। ऐसा प्रमाणीकरण सामान्यतः Microsoft Active Directory, RADIUS, या तुलनीय प्रणालियों जैसी सेवाओं का उपयोग करता है।
IKEv2 में संक्रमण करते समय, एक महत्वपूर्ण बदलाव देखा जाता है जहाँ EAP (विस्तार योग्य प्रमाणीकरण प्रोटोकॉल) का उपयोग XAuth के स्थान पर उपयोगकर्ताओं को प्रमाणीकरण करने के लिए किया जाता है। यह परिवर्तन सुरक्षित संचार प्रोटोकॉल के भीतर प्रमाणीकरण प्रथाओं में एक विकास को रेखांकित करता है।
तो आप fiked का उपयोग करके लॉगिन का डेटा कैप्चर कर सकते हैं और देख सकते हैं कि क्या कोई डिफ़ॉल्ट उपयोगकर्ता नाम है (आपको sniffing के लिए IKE ट्रैफ़िक को fiked
पर पुनर्निर्देशित करने की आवश्यकता है, जिसे ARP spoofing की मदद से किया जा सकता है, अधिक जानकारी). Fiked एक VPN एंडपॉइंट के रूप में कार्य करेगा और XAuth क्रेडेंशियल्स को कैप्चर करेगा:
Also, IPSec का उपयोग करके MitM हमला करने की कोशिश करें और पोर्ट 500 पर सभी ट्रैफ़िक को ब्लॉक करें, यदि IPSec टनल स्थापित नहीं हो सकता है तो शायद ट्रैफ़िक स्पष्ट रूप से भेजा जाएगा।
XAUTH (जब आप एक मान्य समूह नाम id और psk जानते हैं) को ब्रूट फोर्स करने के लिए, आप एक उपयोगकर्ता नाम या उपयोगकर्ता नामों की सूची और पासवर्डों की सूची का उपयोग कर सकते हैं:
इस तरह, ikeforce प्रत्येक username:password के संयोजन का उपयोग करके कनेक्ट करने की कोशिश करेगा।
यदि आपने एक या एक से अधिक मान्य ट्रांसफॉर्म पाए हैं, तो बस उन्हें पिछले चरणों की तरह उपयोग करें।
Kali में, VPNC IPsec टनल स्थापित करने के लिए उपयोग किया जाता है। प्रोफाइल को निर्देशिका /etc/vpnc/
में स्थित होना चाहिए। आप vpnc कमांड का उपयोग करके इन प्रोफाइल को आरंभ कर सकते हैं।
निम्नलिखित कमांड और कॉन्फ़िगरेशन VPNC के साथ VPN कनेक्शन सेट करने की प्रक्रिया को दर्शाते हैं:
In this setup:
[VPN_GATEWAY_IP]
को VPN गेटवे के वास्तविक IP पते से बदलें।
[VPN_CONNECTION_ID]
को VPN कनेक्शन के पहचानकर्ता से बदलें।
[VPN_GROUP_SECRET]
को VPN के समूह गुप्त से बदलें।
[VPN_USERNAME]
और [VPN_PASSWORD]
को VPN प्रमाणीकरण क्रेडेंशियल्स से बदलें।
[PID]
उस प्रक्रिया ID का प्रतीक है जो vpnc
प्रारंभ करते समय असाइन की जाएगी।
VPN कॉन्फ़िगर करते समय प्लेसहोल्डर्स को बदलने के लिए वास्तविक, सुरक्षित मानों का उपयोग सुनिश्चित करें।
Network Security Assessment 3rd Edition
port:500 IKE
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)