Resource-based Constrained Delegation
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)
यह मूल Constrained Delegation के समान है लेकिन इसके बजाय किसी ऑब्जेक्ट को किसी सेवा के खिलाफ किसी भी उपयोगकर्ता का अनुकरण करने के लिए अनुमतियाँ देने के। Resource-based Constrained Delegation उस ऑब्जेक्ट में सेट करता है जो इसके खिलाफ किसी भी उपयोगकर्ता का अनुकरण कर सकता है।
इस मामले में, सीमित ऑब्जेक्ट में एक विशेषता होगी जिसे msDS-AllowedToActOnBehalfOfOtherIdentity कहा जाता है जिसमें उस उपयोगकर्ता का नाम होगा जो इसके खिलाफ किसी अन्य उपयोगकर्ता का अनुकरण कर सकता है।
इस Constrained Delegation से अन्य डेलीगेशनों में एक और महत्वपूर्ण अंतर यह है कि किसी भी उपयोगकर्ता के पास एक मशीन खाते पर लिखने के लिए अनुमतियाँ (GenericAll/GenericWrite/WriteDacl/WriteProperty/etc) हो सकती हैं जो msDS-AllowedToActOnBehalfOfOtherIdentity सेट कर सकता है (अन्य डेलीगेशन के रूपों में आपको डोमेन प्रशासक विशेषाधिकार की आवश्यकता थी)।
Constrained Delegation में कहा गया था कि TrustedToAuthForDelegation
ध्वज उपयोगकर्ता के userAccountControl मान के अंदर S4U2Self करने के लिए आवश्यक है। लेकिन यह पूरी तरह से सच नहीं है।
वास्तविकता यह है कि भले ही उस मान के बिना, आप किसी भी उपयोगकर्ता के खिलाफ S4U2Self कर सकते हैं यदि आप एक सेवा हैं (एक SPN है) लेकिन, यदि आपके पास TrustedToAuthForDelegation
है तो लौटाया गया TGS Forwardable होगा और यदि आपके पास वह ध्वज नहीं है तो लौटाया गया TGS Forwardable नहीं होगा।
हालांकि, यदि S4U2Proxy में उपयोग किया गया TGS NOT Forwardable है तो basic Constrain Delegation का दुरुपयोग करने की कोशिश करना काम नहीं करेगा। लेकिन यदि आप Resource-Based constrain delegation का शोषण करने की कोशिश कर रहे हैं, तो यह काम करेगा (यह एक भेद्यता नहीं है, यह एक विशेषता है, स्पष्ट रूप से)।
यदि आपके पास Computer खाते पर लिखने के समकक्ष विशेषाधिकार हैं तो आप उस मशीन में विशेषाधिकार प्राप्त पहुँच प्राप्त कर सकते हैं।
मान लीजिए कि हमलावर के पास पहले से ही शिकार कंप्यूटर पर लिखने के समकक्ष विशेषाधिकार हैं।
हमलावर एक खाते को समझौता करता है जिसमें एक SPN है या एक बनाता है (“Service A”)। ध्यान दें कि कोई भी Admin User बिना किसी अन्य विशेष विशेषाधिकार के बना सकता है 10 Computer objects (MachineAccountQuota) और उन्हें एक SPN सेट कर सकता है। इसलिए हमलावर बस एक Computer object बना सकता है और एक SPN सेट कर सकता है।
हमलावर शिकार कंप्यूटर (ServiceB) पर अपने WRITE विशेषाधिकार का दुरुपयोग करता है ताकि resource-based constrained delegation को कॉन्फ़िगर किया जा सके ताकि ServiceA किसी भी उपयोगकर्ता का अनुकरण कर सके उस शिकार कंप्यूटर (ServiceB) के खिलाफ।
हमलावर Rubeus का उपयोग करके पूर्ण S4U हमला (S4U2Self और S4U2Proxy) Service A से Service B के लिए एक उपयोगकर्ता के लिए विशेषाधिकार प्राप्त पहुँच के साथ Service B का उपयोग करता है।
S4U2Self (समझौता/बनाए गए खाते से SPN): मुझसे Administrator का TGS मांगें (Not Forwardable)।
S4U2Proxy: पिछले चरण के not Forwardable TGS का उपयोग करके Administrator से शिकार होस्ट के लिए एक TGS मांगें।
भले ही आप एक not Forwardable TGS का उपयोग कर रहे हों, क्योंकि आप Resource-based constrained delegation का शोषण कर रहे हैं, यह काम करेगा।
हमलावर पास-दी-टिकट कर सकता है और उपयोगकर्ता का अनुकरण कर सकता है ताकि शिकार ServiceB तक पहुँच प्राप्त कर सके।
डोमेन के MachineAccountQuota की जाँच करने के लिए आप उपयोग कर सकते हैं:
आप powermad** का उपयोग करके डोमेन के अंदर एक कंप्यूटर ऑब्जेक्ट बना सकते हैं:**
activedirectory PowerShell मॉड्यूल का उपयोग करना
पॉवerview का उपयोग करना
सबसे पहले, हमने नए कंप्यूटर ऑब्जेक्ट को पासवर्ड 123456
के साथ बनाया, इसलिए हमें उस पासवर्ड का हैश चाहिए:
यह उस खाते के लिए RC4 और AES हैश प्रिंट करेगा। अब, हमला किया जा सकता है:
आप Rubeus के /altservice
पैरामीटर का उपयोग करके केवल एक बार पूछकर अधिक टिकट उत्पन्न कर सकते हैं:
ध्यान दें कि उपयोगकर्ताओं के पास "Cannot be delegated" नामक एक विशेषता होती है। यदि किसी उपयोगकर्ता की यह विशेषता True है, तो आप उसकी नकल नहीं कर पाएंगे। यह संपत्ति ब्लडहाउंड के अंदर देखी जा सकती है।
अंतिम कमांड लाइन **पूर्ण S4U हमले को निष्पादित करेगी और TGS को Administrator से पीड़ित होस्ट में मेमोरी में इंजेक्ट करेगी। इस उदाहरण में, Administrator से CIFS सेवा के लिए एक TGS का अनुरोध किया गया था, इसलिए आप C$: तक पहुँच सकेंगे।
उपलब्ध सेवा टिकटों के बारे में यहाँ जानें।
KDC_ERR_ETYPE_NOTSUPP
: इसका मतलब है कि केर्बेरोस को DES या RC4 का उपयोग नहीं करने के लिए कॉन्फ़िगर किया गया है और आप केवल RC4 हैश प्रदान कर रहे हैं। Rubeus को कम से कम AES256 हैश प्रदान करें (या बस इसे rc4, aes128 और aes256 हैश प्रदान करें)। उदाहरण: [Rubeus.Program]::MainString("s4u /user:FAKECOMPUTER /aes256:CC648CF0F809EE1AA25C52E963AC0487E87AC32B1F71ACC5304C73BF566268DA /aes128:5FC3D06ED6E8EA2C9BB9CC301EA37AD4 /rc4:EF266C6B963C0BB683941032008AD47F /impersonateuser:Administrator /msdsspn:CIFS/M3DC.M3C.LOCAL /ptt".split())
KRB_AP_ERR_SKEW
: इसका मतलब है कि वर्तमान कंप्यूटर का समय DC के समय से भिन्न है और केर्बेरोस सही तरीके से काम नहीं कर रहा है।
preauth_failed
: इसका मतलब है कि दिया गया उपयोगकर्ता नाम + हैश लॉगिन करने के लिए काम नहीं कर रहे हैं। आप हैश उत्पन्न करते समय उपयोगकर्ता नाम के अंदर "$" डालना भूल गए होंगे (.\Rubeus.exe hash /password:123456 /user:FAKECOMPUTER$ /domain:domain.local
)
KDC_ERR_BADOPTION
: इसका मतलब हो सकता है:
जिस उपयोगकर्ता का आप अनुकरण करने की कोशिश कर रहे हैं, वह इच्छित सेवा तक पहुँच नहीं सकता (क्योंकि आप इसका अनुकरण नहीं कर सकते या क्योंकि इसके पास पर्याप्त विशेषाधिकार नहीं हैं)
मांगी गई सेवा मौजूद नहीं है (यदि आप winrm के लिए एक टिकट मांगते हैं लेकिन winrm चल नहीं रहा है)
बनाए गए fakecomputer ने कमजोर सर्वर पर अपने विशेषाधिकार खो दिए हैं और आपको उन्हें वापस देना होगा।
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)