Kerberos Double Hop Problem
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)
Kerberos "Double Hop" समस्या तब उत्पन्न होती है जब एक हमलावर Kerberos प्रमाणीकरण का उपयोग करने की कोशिश करता है दो हॉप्स के बीच, उदाहरण के लिए PowerShell/WinRM का उपयोग करते हुए।
जब Kerberos के माध्यम से प्रमाणीकरण होता है, तो क्रेडेंशियल्स मेमोरी में कैश नहीं होते। इसलिए, यदि आप mimikatz चलाते हैं, तो आप मशीन में उपयोगकर्ता के क्रेडेंशियल्स नहीं पाएंगे, भले ही वह प्रक्रियाएँ चला रहा हो।
यह इसलिए है क्योंकि Kerberos के साथ कनेक्ट करते समय ये कदम होते हैं:
User1 क्रेडेंशियल्स प्रदान करता है और डोमेन कंट्रोलर User1 को एक Kerberos TGT लौटाता है।
User1 TGT का उपयोग करके सेवा टिकट का अनुरोध करता है Server1 से कनेक्ट करने के लिए।
User1 Server1 से कनेक्ट होता है और सेवा टिकट प्रदान करता है।
Server1 के पास User1 के क्रेडेंशियल्स या User1 का TGT कैश नहीं होता। इसलिए, जब User1 Server1 से दूसरे सर्वर में लॉगिन करने की कोशिश करता है, तो वह प्रमाणित नहीं हो पाता।
यदि PC में unconstrained delegation सक्षम है, तो यह नहीं होगा क्योंकि Server प्रत्येक उपयोगकर्ता के लिए एक TGT प्राप्त करेगा जो इसे एक्सेस करता है। इसके अलावा, यदि unconstrained delegation का उपयोग किया जाता है, तो आप शायद डोमेन कंट्रोलर से समझौता कर सकते हैं। Unconstrained delegation पृष्ठ पर अधिक जानकारी।
इस समस्या से बचने का एक और तरीका जो विशेष रूप से असुरक्षित है, वह है क्रेडेंशियल सुरक्षा समर्थन प्रदाता। Microsoft से:
CredSSP प्रमाणीकरण स्थानीय कंप्यूटर से दूरस्थ कंप्यूटर पर उपयोगकर्ता क्रेडेंशियल्स को डेलीगेट करता है। यह प्रथा दूरस्थ संचालन के सुरक्षा जोखिम को बढ़ाती है। यदि दूरस्थ कंप्यूटर से समझौता किया जाता है, तो जब क्रेडेंशियल्स इसे पास किए जाते हैं, तो क्रेडेंशियल्स का उपयोग नेटवर्क सत्र को नियंत्रित करने के लिए किया जा सकता है।
यह अत्यधिक अनुशंसा की जाती है कि CredSSP को उत्पादन प्रणालियों, संवेदनशील नेटवर्क और समान वातावरण में सुरक्षा चिंताओं के कारण बंद कर दिया जाए। यह निर्धारित करने के लिए कि CredSSP सक्षम है या नहीं, Get-WSManCredSSP
कमांड चलाया जा सकता है। यह कमांड CredSSP स्थिति की जांच करने की अनुमति देता है और इसे दूरस्थ रूप से भी निष्पादित किया जा सकता है, बशर्ते WinRM सक्षम हो।
डबल हॉप समस्या को संबोधित करने के लिए, एक नेस्टेड Invoke-Command
का उपयोग करने की विधि प्रस्तुत की गई है। यह समस्या को सीधे हल नहीं करता है, लेकिन विशेष कॉन्फ़िगरेशन की आवश्यकता के बिना एक वर्कअराउंड प्रदान करता है। यह दृष्टिकोण एक प्रारंभिक हमलावर मशीन से या पहले सर्वर के साथ पहले से स्थापित PS-सेशन के माध्यम से एक द्वितीयक सर्वर पर एक कमांड (hostname
) निष्पादित करने की अनुमति देता है। यहाँ यह कैसे किया जाता है:
वैकल्पिक रूप से, पहले सर्वर के साथ एक PS-Session स्थापित करना और $cred
का उपयोग करके Invoke-Command
चलाना कार्यों को केंद्रीकृत करने के लिए सुझावित है।
डबल हॉप समस्या को बायपास करने के लिए एक समाधान Enter-PSSession
के साथ Register-PSSessionConfiguration
का उपयोग करना है। यह विधि evil-winrm
की तुलना में एक अलग दृष्टिकोण की आवश्यकता होती है और एक सत्र की अनुमति देती है जो डबल हॉप सीमा से प्रभावित नहीं होता है।
स्थानीय प्रशासकों के लिए एक मध्यवर्ती लक्ष्य पर, पोर्ट फॉरवर्डिंग अंतिम सर्वर पर अनुरोध भेजने की अनुमति देता है। netsh
का उपयोग करते हुए, पोर्ट फॉरवर्डिंग के लिए एक नियम जोड़ा जा सकता है, साथ ही फॉरवर्डेड पोर्ट की अनुमति देने के लिए एक Windows फ़ायरवॉल नियम।
winrs.exe
का उपयोग WinRM अनुरोधों को अग्रेषित करने के लिए किया जा सकता है, यदि PowerShell निगरानी एक चिंता का विषय है तो यह एक कम पहचानने योग्य विकल्प हो सकता है। नीचे दिए गए कमांड इसका उपयोग प्रदर्शित करते हैं:
पहले सर्वर पर OpenSSH स्थापित करने से डबल-हॉप समस्या के लिए एक वर्कअराउंड सक्षम होता है, जो विशेष रूप से जंप बॉक्स परिदृश्यों के लिए उपयोगी है। इस विधि के लिए Windows के लिए OpenSSH की CLI स्थापना और सेटअप की आवश्यकता होती है। जब इसे पासवर्ड प्रमाणीकरण के लिए कॉन्फ़िगर किया जाता है, तो यह मध्यवर्ती सर्वर को उपयोगकर्ता की ओर से TGT प्राप्त करने की अनुमति देता है।
नवीनतम OpenSSH रिलीज़ ज़िप को लक्षित सर्वर पर डाउनलोड और स्थानांतरित करें।
ज़िप निकालें और Install-sshd.ps1
स्क्रिप्ट चलाएँ।
पोर्ट 22 खोलने के लिए एक फ़ायरवॉल नियम जोड़ें और सुनिश्चित करें कि SSH सेवाएँ चल रही हैं।
Connection reset
त्रुटियों को हल करने के लिए, अनुमतियों को अपडेट करने की आवश्यकता हो सकती है ताकि सभी को OpenSSH निर्देशिका पर पढ़ने और निष्पादित करने की अनुमति मिल सके।
सीखें और AWS हैकिंग का अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) सीखें और GCP हैकिंग का अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)