Az - Cloud Kerberos Trust
Reading time: 9 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।
यह पोस्ट https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/ से एक सारांश है, जिसे हमले के बारे में अधिक जानकारी के लिए चेक किया जा सकता है। इस तकनीक पर भी टिप्पणी की गई है https://www.youtube.com/watch?v=AFay_58QubY।
Kerberos Trust Relationship Overview
Cloud Kerberos Trust (Entra ID -> AD) -- यह सुविधा (Windows Hello for Business का हिस्सा) एक-तरफा विश्वास स्थापित करती है जहां ऑन-प्रेम AD Entra ID पर भरोसा करता है कि वह AD के लिए Kerberos टिकट जारी करे। इसे सक्षम करने से AD में एक AzureADKerberos$ कंप्यूटर ऑब्जेक्ट बनता है (जो Read-Only Domain Controller के रूप में प्रकट होता है) और एक लिंक किया गया krbtgt_AzureAD
खाता (एक द्वितीयक KRBTGT)। Entra ID इन खातों के लिए कुंजी रखता है और AD उपयोगकर्ताओं के लिए "आंशिक" Kerberos TGTs जारी कर सकता है। AD डोमेन नियंत्रक इन टिकटों का सम्मान करेंगे, लेकिन RODC-जैसी प्रतिबंधों के साथ: डिफ़ॉल्ट रूप से, उच्च-विशेषाधिकार समूह (Domain Admins, Enterprise Admins, आदि) को अस्वीकृत किया गया है और सामान्य उपयोगकर्ताओं को अनुमति दी गई है। यह सामान्य परिस्थितियों में Entra ID को डोमेन प्रशासकों को विश्वास के माध्यम से प्रमाणित करने से रोकता है। हालाँकि, जैसा कि हम देखेंगे, पर्याप्त Entra ID विशेषाधिकार वाला एक हमलावर इस विश्वास डिज़ाइन का दुरुपयोग कर सकता है।
Pivoting from Entra ID to On-Prem AD
परिदृश्य: लक्षित संगठन ने Cloud Kerberos Trust को पासवर्ड रहित प्रमाणीकरण के लिए सक्षम किया है। एक हमलावर ने Entra ID (Azure AD) में Global Administrator विशेषाधिकार प्राप्त कर लिए हैं लेकिन अभी तक ऑन-प्रेम AD को नियंत्रित नहीं किया है। हमलावर के पास एक डोमेन नियंत्रक (VPN या हाइब्रिड नेटवर्क में Azure VM के माध्यम से) तक नेटवर्क पहुंच के साथ एक पैर जमाने का स्थान भी है। क्लाउड ट्रस्ट का उपयोग करते हुए, हमलावर Azure AD नियंत्रण का लाभ उठाकर AD में Domain Admin-स्तरीय पैर जमाने का स्थान प्राप्त कर सकता है।
पूर्वापेक्षाएँ:
-
Cloud Kerberos Trust हाइब्रिड वातावरण में कॉन्फ़िगर किया गया है (संकेत: AD में एक
AzureADKerberos$
RODC खाता मौजूद है)। -
हमलावर के पास Entra ID टेनेन्ट में Global Admin (या Hybrid Identity Admin) अधिकार हैं (ये भूमिकाएँ AD Connect सिंक्रनाइज़ेशन API का उपयोग करके Azure AD उपयोगकर्ताओं को संशोधित कर सकती हैं)।
-
कम से कम एक हाइब्रिड उपयोगकर्ता खाता (जो AD और AAD दोनों में मौजूद है) है जिसे हमलावर प्रमाणित कर सकता है। इसे उसके क्रेडेंशियल्स को जानकर या रीसेट करके या एक पासवर्ड रहित विधि (जैसे, एक अस्थायी एक्सेस पास) को असाइन करके प्राथमिक रिफ्रेश टोकन (PRT) उत्पन्न करने के लिए प्राप्त किया जा सकता है।
-
एक ऑन-प्रेम AD लक्ष्य खाता जिसमें उच्च विशेषाधिकार हैं जो डिफ़ॉल्ट RODC "अस्वीकृति" नीति में नहीं है। व्यावहारिक रूप से, एक अच्छा लक्ष्य AD Connect सिंक खाता है (जिसे अक्सर MSOL_* कहा जाता है), जिसमें AD में DCSync (प्रतिकृति) अधिकार होते हैं लेकिन यह आमतौर पर अंतर्निहित प्रशासनिक समूहों का सदस्य नहीं होता है। यह खाता आमतौर पर Entra ID के साथ समन्वयित नहीं होता है, जिससे इसके SID को बिना संघर्ष के अनुकरण करने के लिए उपलब्ध कराया जा सकता है।
हमला चरण:
- Azure AD सिंक API एक्सेस प्राप्त करें: Global Admin खाते का उपयोग करते हुए, Azure AD Provisioning (sync) API के लिए एक एक्सेस टोकन प्राप्त करें। यह ROADtools या AADInternals जैसे उपकरणों के साथ किया जा सकता है। उदाहरण के लिए, ROADtools (roadtx) के साथ:
# Using roadtx to get an Azure AD Graph token (no MFA)
roadtx gettokens -u <GlobalAdminUPN> -p <Password> --resource aadgraph
(वैकल्पिक रूप से, AADInternals' Connect-AADInt
का उपयोग Global Admin के रूप में प्रमाणित करने के लिए किया जा सकता है।)
- हाइब्रिड उपयोगकर्ता के ऑन-प्रेम गुणों में संशोधन करें: Azure AD सिंक्रनाइज़ेशन API का उपयोग करके एक चुने हुए हाइब्रिड उपयोगकर्ता के onPremises Security Identifier (SID) और onPremises SAMAccountName को लक्षित AD खाते से मेल खाने के लिए सेट करें। यह प्रभावी रूप से Azure AD को बताता है कि क्लाउड उपयोगकर्ता उस ऑन-प्रेम खाते से मेल खाता है जिसे हम अनुकरण करना चाहते हैं। ओपन-सोर्स ROADtools Hybrid टूलकिट का उपयोग करते हुए:
# Example: modify a hybrid user to impersonate the MSOL account
python3 modifyuser.py -u <GlobalAdminUPN> -p <Password>\
--sourceanchor <ImmutableID_of_User>\
--sid <TargetAD_SID> --sam <TargetAD_SAMName>
उपयोगकर्ता का
sourceAnchor
(अपरिवर्तनीय ID) Azure AD ऑब्जेक्ट की पहचान के लिए आवश्यक है जिसे संशोधित करना है। उपकरण हाइब्रिड उपयोगकर्ता का ऑन-प्रेम SID और SAM खाता नाम को लक्षित के मानों (जैसे, MSOL_xxxx खाते का SID और SAM) पर सेट करता है। Azure AD सामान्यतः ग्राफ़ के माध्यम से इन विशेषताओं को बदलने की अनुमति नहीं देता (ये केवल पढ़ने के लिए हैं), लेकिन सिंक सेवा API इसे अनुमति देती है और ग्लोबल एडमिन इस सिंक कार्यक्षमता को सक्रिय कर सकते हैं।
- Azure AD से एक आंशिक TGT प्राप्त करें: संशोधन के बाद, हाइब्रिड उपयोगकर्ता के रूप में Azure AD में प्रमाणीकरण करें (उदाहरण के लिए, किसी डिवाइस पर PRT प्राप्त करके या उनके क्रेडेंशियल का उपयोग करके)। जब उपयोगकर्ता साइन इन करता है (विशेष रूप से एक डोमेन-जोड़े गए या Entra जुड़े Windows डिवाइस पर), Azure AD उस खाते के लिए एक आंशिक Kerberos TGT (TGTAD) जारी करेगा क्योंकि Cloud Kerberos Trust सक्षम है। यह आंशिक TGT AzureADKerberos$ RODC कुंजी के साथ एन्क्रिप्ट किया गया है और इसमें लक्षित SID शामिल है जिसे हमने सेट किया है। हम ROADtools के माध्यम से उपयोगकर्ता के लिए PRT का अनुरोध करके इसका अनुकरण कर सकते हैं:
roadtx getprt -u <HybridUserUPN> -p <Password> -d <DeviceID_or_Cert>
यह एक .prt
फ़ाइल आउटपुट करता है जिसमें आंशिक TGT और सत्र कुंजी होती है। यदि खाता केवल क्लाउड पासवर्ड था, तो Azure AD अभी भी PRT प्रतिक्रिया में एक TGT_AD शामिल करता है।
- Exchange Partial TGT for Full TGT (on AD): आंशिक TGT को अब ऑन-प्रेम डोमेन कंट्रोलर के सामने प्रस्तुत किया जा सकता है ताकि लक्षित खाते के लिए पूर्ण TGT प्राप्त किया जा सके। हम इसे
krbtgt
सेवा (डोमेन की प्राथमिक TGT सेवा) के लिए TGS अनुरोध करके करते हैं -- मूल रूप से टिकट को पूर्ण PAC के साथ सामान्य TGT में अपग्रेड करना। इस विनिमय को स्वचालित करने के लिए उपकरण उपलब्ध हैं। उदाहरण के लिए, ROADtools Hybrid के स्क्रिप्ट का उपयोग करते हुए:
# Use the partial TGT from the PRT file to get a full TGT and NTLM hash
python3 partialtofulltgt.py -p roadtx.prt -o full_tgt.ccache --extract-hash
यह स्क्रिप्ट (या Impacket समकक्ष) डोमेन कंट्रोलर से संपर्क करेगी और लक्षित AD खाते के लिए एक मान्य TGT प्राप्त करेगी, जिसमें विशेष Kerberos एक्सटेंशन का उपयोग करने पर खाते का NTLM हैश शामिल है। KERB-KEY-LIST-REQ
एक्सटेंशन स्वचालित रूप से शामिल किया गया है ताकि DC से लक्षित खाते का NTLM हैश एन्क्रिप्टेड उत्तर में लौटाने के लिए कहा जा सके। परिणाम एक क्रेडेंशियल कैश (full_tgt.ccache
) है लक्षित खाते के लिए या पुनर्प्राप्त NTLM पासवर्ड हैश।
- लक्षित व्यक्ति का अनुकरण करें और डोमेन एडमिन में वृद्धि करें: अब हमलावर प्रभावी रूप से लक्षित AD खाते को नियंत्रित करता है। उदाहरण के लिए, यदि लक्षित AD कनेक्ट MSOL खाता था, तो इसके पास निर्देशिका पर पुनरुत्पादन अधिकार हैं। हमलावर उस खाते के क्रेडेंशियल या Kerberos TGT का उपयोग करके AD से पासवर्ड हैश को डंप करने के लिए DCSync हमले को अंजाम दे सकता है (जिसमें डोमेन KRBTGT खाता शामिल है)। उदाहरण के लिए:
# Using impacket's secretsdump to DCSync as the MSOL account (using NTLM hash)
secretsdump.py 'AD_DOMAIN/<TargetSAM>$@<DC_IP>' -hashes :<NTLM_hash> LOCAL
यह सभी AD उपयोगकर्ता पासवर्ड हैश को डंप करता है, हमलावर को KRBTGT हैश देता है (जिससे वे इच्छानुसार डोमेन Kerberos टिकट बना सकते हैं) और प्रभावी रूप से डोमेन एडमिन विशेषाधिकार प्रदान करता है। यदि लक्षित खाता कोई अन्य विशेषाधिकार प्राप्त उपयोगकर्ता होता, तो हमलावर उस उपयोगकर्ता के रूप में किसी भी डोमेन संसाधन तक पहुँचने के लिए पूर्ण TGT का उपयोग कर सकता था।
- सफाई: वैकल्पिक रूप से, हमलावर उसी API के माध्यम से संशोधित Azure AD उपयोगकर्ता के मूल
onPremisesSAMAccountName
और SID को पुनर्स्थापित कर सकता है या बस किसी भी अस्थायी उपयोगकर्ता को हटा सकता है। कई मामलों में, अगला Azure AD कनेक्ट सिंक चक्र स्वचालित रूप से समन्वयित विशेषताओं पर अनधिकृत परिवर्तनों को पूर्ववत कर देगा। (हालांकि, इस बिंदु तक नुकसान हो चुका है -- हमलावर के पास DA विशेषाधिकार हैं।)
warning
क्लाउड ट्रस्ट और सिंक तंत्र का दुरुपयोग करके, Azure AD का एक ग्लोबल एडमिन लगभग किसी भी AD खाते का अनुकरण कर सकता है जिसे RODC नीति द्वारा स्पष्ट रूप से सुरक्षित नहीं किया गया है, भले ही उस खाते को कभी क्लाउड-सिंक नहीं किया गया हो। एक डिफ़ॉल्ट कॉन्फ़िगरेशन में, यह Azure AD समझौते से ऑन-प्रेम AD समझौते तक एक पूर्ण विश्वास को जोड़ता है।
संदर्भ
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।