Kerberos Double Hop Problem
परिचय
कर्बेरोस "डबल हॉप" समस्या उत्पन्न होती है जब एक हमलावर को कर्बेरोस प्रमाणीकरण का उपयोग करके दो हॉप के माध्यम से कोशिश करता है, उदाहरण के लिए PowerShell/WinRM का उपयोग करके।
जब कर्बेरोस के माध्यम से प्रमाणीकरण होता है, क्रेडेंशियल मेमोरी में कैश नहीं होती हैं। इसलिए, यदि आप mimikatz चलाते हैं तो आपको प्रयोक्ता के क्रेडेंशियल मशीन में नहीं मिलेंगे भले ही वह प्रक्रियाएँ चला रहा हो।
यह इसलिए है क्योंकि कर्बेरोस के साथ कनेक्ट करते समय ये कदम होते हैं:
प्रयोक्ता1 क्रेडेंशियल प्रदान करता है और डोमेन कंट्रोलर प्रयोक्ता1 को एक कर्बेरोस TGT लौटाता है।
प्रयोक्ता1 TGT का उपयोग करके सेवा टिकट का अनुरोध करता है सर्वर1 से कनेक्ट करने के लिए।
प्रयोक्ता1 सर्वर1 से कनेक्ट करता है और सेवा टिकट प्रदान करता है।
सर्वर1 में प्रयोक्ता1 के क्रेडेंशियल या TGT कैश नहीं हैं। इसलिए, जब प्रयोक्ता1 सर्वर1 से दूसरे सर्वर में लॉगिन करने की कोशिश करता है, वह प्रमाणीकरण करने में सक्षम नहीं होता है।
असीमित अधिकार
यदि PC में असीमित अधिकार सक्षम है, तो यह नहीं होगा क्योंकि सर्वर को उसे एक उपयोगकर्ता का TGT प्राप्त होगा जो इसे एक्सेस कर रहा है। इसके अतिरिक्त, यदि असीमित अधिकार का उपयोग किया जाता है तो आप शायद इससे डोमेन कंट्रोलर को कंप्रोमाइज कर सकते हैं। असीमित अधिकार पृष्ठ में अधिक जानकारी.
CredSSP
इस समस्या से बचने का एक और तरीका जो विशेष रूप से असुरक्षित है है Credential Security Support Provider। माइक्रोसॉफ्ट से:
CredSSP प्रमाणीकरण स्थानीय कंप्यूटर से रिमोट कंप्यूटर को उपयोगकर्ता क्रेडेंशियल अनुप्रेषित करता है। यह अभ्यास रिमोट संचालन का सुरक्षा जोखिम बढ़ाता है। यदि रिमोट कंप्यूटर को कंप्रोमाइज़ किया जाता है, जब क्रेडेंशियल उसे पास किए जाते हैं, तो उन क्रेडेंशियल का नेटवर्क सत्र नियंत्रण करने के लिए उपयोग किया जा सकता है।
उत्पादन सिस्टम, संवेदनशील नेटवर्क और समान परिवेशों में सुरक्षा संबंधित चिंताओं के कारण CredSSP को अक्षम करना अत्यंत सिफारिश किया जाता है। CredSSP सक्षम है या नहीं, यह निर्धारित करने के लिए, Get-WSManCredSSP
कमांड चलाया जा सकता है। यह कमांड CredSSP स्थिति की जांच करने की अनुमति देता है और यहाँ तक कि यह दूरस्थ से निष्पादित किया जा सकता है, प्रावधान है कि WinRM सक्षम हो।
उपाय
आवाहन कमांड
डबल हॉप समस्या का समाधान करने के लिए, एक nested Invoke-Command
का एक तरीका प्रस्तुत किया गया है। यह समस्या सीधे हल नहीं करता है लेकिन विशेष विन्यास की आवश्यकता न होने पर एक उपाय प्रदान करता है। यह दृष्टिकोण एक कमांड (hostname
) को एक द्वितीय सर्वर पर क्रियान्वित करने की अनुमति देता है जो एक पहले हमले वाली मशीन से या पहले सर्वर के साथ पहले स्थापित PS-Session के माध्यम से एक्जीक्यूट किया जा सकता है। यहाँ देखें कैसे किया जाता है:
पीएससत्री कॉन्फ़िगरेशन पंजीकरण
डबल हॉप समस्या को अनदेखा करने का एक समाधान Register-PSSessionConfiguration
का उपयोग Enter-PSSession
के साथ करना है। यह विधि evil-winrm
से भिन्न दृष्टिकोण आवश्यक करती है और डबल हॉप सीमा से पीड़ित नहीं होने वाली सत्र की अनुमति देती है।
पोर्ट फॉरवर्डिंग
एक बाध्य लक्ष्य पर स्थानीय प्रशासकों के लिए, पोर्ट फॉरवर्डिंग अंतिम सर्वर को भेजने की अनुरोधों को भेजने की अनुमति देता है। netsh
का उपयोग करके, एक नियम पोर्ट फॉरवर्डिंग के लिए जोड़ा जा सकता है, साथ ही एक Windows फ़ायरवॉल नियम भी जोड़ा जा सकता है जिससे फॉरवर्ड किए गए पोर्ट को अनुमति दी जा सकती है।
winrs.exe
winrs.exe
का उपयोग WinRM अनुरोधों को आगे भेजने के लिए किया जा सकता है, संभावित रूप से एक कम संवेदनशील विकल्प अगर PowerShell मॉनिटरिंग एक चिंता है। नीचे दिए गए कमांड का उपयोग दिखाता है:
OpenSSH
पहले सर्वर पर OpenSSH इंस्टॉल करने से डबल हॉप समस्या के लिए एक workaround सक्षम होता है, जो जंप बॉक्स स्थितियों के लिए विशेष रूप से उपयोगी है। इस विधि में CLI इंस्टॉलेशन और Windows के लिए OpenSSH की सेटअप की आवश्यकता होती है। जब पासवर्ड प्रमाणीकरण के लिए कॉन्फ़िगर किया जाता है, तो इससे अंतरिक्ष सर्वर को उपयोगकर्ता के पक्ष में एक TGT प्राप्त करने की अनुमति होती है।
OpenSSH इंस्टॉलेशन कदम
नवीनतम OpenSSH रिलीज़ ज़िप डाउनलोड करें और टारगेट सर्वर पर ले जाएं।
ज़िप फ़ाइल को अनज़िप करें और
Install-sshd.ps1
स्क्रिप्ट चलाएं।पोर्ट 22 खोलने के लिए फ़ायरवॉल नियम जोड़ें और सत्यापित करें कि SSH सेवाएँ चल रही हैं।
Connection reset
त्रुटियों को हल करने के लिए, अनुमतियों को अपडेट करने की आवश्यकता हो सकती है ताकि OpenSSH निर्देशिका पर सभी को पढ़ने और क्रियान्वित करने की पहुँच हो।
संदर्भ
Last updated