Abusing Tokens
Last updated
Last updated
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
यदि आप Windows Access Tokens क्या हैं नहीं जानते हैं, तो आगे बढ़ने से पहले इस पृष्ठ को पढ़ें:
शायद आप पहले से मौजूद टोकनों का दुरुपयोग करके विशेषाधिकार बढ़ाने में सक्षम हो सकते हैं
यह विशेषाधिकार किसी भी प्रक्रिया द्वारा धारण किया जाता है जो किसी भी टोकन का अनुकरण (लेकिन निर्माण नहीं) करने की अनुमति देता है, बशर्ते कि इसके लिए एक हैंडल प्राप्त किया जा सके। एक विशेषाधिकार प्राप्त टोकन को Windows सेवा (DCOM) से NTLM प्रमाणीकरण को एक एक्सप्लॉइट के खिलाफ प्रेरित करके प्राप्त किया जा सकता है, जिसके बाद SYSTEM विशेषाधिकार के साथ एक प्रक्रिया के निष्पादन की अनुमति मिलती है। इस भेद्यता का दुरुपयोग विभिन्न उपकरणों का उपयोग करके किया जा सकता है, जैसे juicy-potato, RogueWinRM (जिसके लिए winrm को अक्षम करना आवश्यक है), SweetPotato, और PrintSpoofer.
यह SeImpersonatePrivilege के समान है, यह एक विशेषाधिकार प्राप्त टोकन प्राप्त करने के लिए समान विधि का उपयोग करेगा। फिर, यह विशेषाधिकार एक नए/स्थगित प्रक्रिया को एक प्राथमिक टोकन असाइन करने की अनुमति देता है। विशेषाधिकार प्राप्त अनुकरण टोकन के साथ आप एक प्राथमिक टोकन (DuplicateTokenEx) उत्पन्न कर सकते हैं। इस टोकन के साथ, आप 'CreateProcessAsUser' के साथ एक नई प्रक्रिया बना सकते हैं या एक प्रक्रिया को स्थगित कर सकते हैं और टोकन सेट कर सकते हैं (सामान्यतः, आप एक चल रही प्रक्रिया के प्राथमिक टोकन को संशोधित नहीं कर सकते)।
यदि आपने इस टोकन को सक्षम किया है, तो आप KERB_S4U_LOGON का उपयोग करके किसी अन्य उपयोगकर्ता के लिए अनुकरण टोकन प्राप्त कर सकते हैं बिना क्रेडेंशियल्स को जाने, टोकन में एक मनमाना समूह (admins) जोड़ सकते हैं, टोकन के अखंडता स्तर को "मध्यम" पर सेट कर सकते हैं, और इस टोकन को वर्तमान थ्रेड पर असाइन कर सकते हैं (SetThreadToken)।
यह विशेषाधिकार किसी भी फ़ाइल (पढ़ने के संचालन तक सीमित) को सभी पढ़ने की पहुँच नियंत्रण देने का कारण बनता है। इसका उपयोग स्थानीय व्यवस्थापक खातों के पासवर्ड हैश को रजिस्ट्री से पढ़ने के लिए किया जाता है, जिसके बाद, "psexec" या "wmiexec" जैसे उपकरणों का उपयोग हैश के साथ किया जा सकता है (Pass-the-Hash तकनीक)। हालाँकि, यह तकनीक दो स्थितियों में विफल होती है: जब स्थानीय व्यवस्थापक खाता अक्षम होता है, या जब एक नीति लागू होती है जो दूरस्थ रूप से कनेक्ट करने वाले स्थानीय व्यवस्थापकों से प्रशासनिक अधिकार हटा देती है। आप इस विशेषाधिकार का दुरुपयोग कर सकते हैं:
https://www.youtube.com/watch?v=IfCysW0Od8w&t=2610&ab_channel=IppSec में IppSec का पालन करें
या जैसा कि बैकअप ऑपरेटरों के साथ विशेषाधिकार बढ़ाने के अनुभाग में समझाया गया है:
यह विशेषाधिकार किसी भी सिस्टम फ़ाइल के लिए लिखने की पहुँच की अनुमति देता है, चाहे फ़ाइल की एक्सेस कंट्रोल लिस्ट (ACL) कुछ भी हो। यह कई संभावनाओं को खोलता है, जिसमें सेवाओं को संशोधित करना, DLL Hijacking करना, और विभिन्न अन्य तकनीकों के बीच इमेज फ़ाइल निष्पादन विकल्पों के माध्यम से डिबगर सेट करना शामिल है।
SeCreateTokenPrivilege एक शक्तिशाली अनुमति है, विशेष रूप से तब उपयोगी होती है जब एक उपयोगकर्ता के पास टोकनों का अनुकरण करने की क्षमता होती है, लेकिन SeImpersonatePrivilege की अनुपस्थिति में भी। यह क्षमता उस टोकन के अनुकरण की क्षमता पर निर्भर करती है जो उसी उपयोगकर्ता का प्रतिनिधित्व करता है और जिसका अखंडता स्तर वर्तमान प्रक्रिया के स्तर से अधिक नहीं होता है।
मुख्य बिंदु:
SeImpersonatePrivilege के बिना अनुकरण: विशेष परिस्थितियों में टोकनों का अनुकरण करके EoP के लिए SeCreateTokenPrivilege का लाभ उठाना संभव है।
टोकन अनुकरण के लिए शर्तें: सफल अनुकरण के लिए लक्षित टोकन को उसी उपयोगकर्ता का होना चाहिए और इसका अखंडता स्तर उस प्रक्रिया के अखंडता स्तर से कम या बराबर होना चाहिए जो अनुकरण करने का प्रयास कर रही है।
अनुकरण टोकनों का निर्माण और संशोधन: उपयोगकर्ता एक अनुकरण टोकन बना सकते हैं और इसे एक विशेषाधिकार प्राप्त समूह के SID (सुरक्षा पहचानकर्ता) को जोड़कर बढ़ा सकते हैं।
यह विशेषाधिकार डिवाइस ड्राइवरों को लोड और अनलोड करने की अनुमति देता है, जिसमें ImagePath
और Type
के लिए विशिष्ट मानों के साथ रजिस्ट्री प्रविष्टि का निर्माण शामिल है। चूंकि HKLM
(HKEY_LOCAL_MACHINE) पर सीधे लिखने की पहुँच प्रतिबंधित है, इसलिए HKCU
(HKEY_CURRENT_USER) का उपयोग किया जाना चाहिए। हालाँकि, ड्राइवर कॉन्फ़िगरेशन के लिए HKCU
को कर्नेल द्वारा मान्यता प्राप्त करने के लिए, एक विशिष्ट पथ का पालन करना आवश्यक है।
यह पथ \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
है, जहाँ <RID>
वर्तमान उपयोगकर्ता का सापेक्ष पहचानकर्ता है। HKCU
के अंदर, इस पूरे पथ को बनाना होगा, और दो मान सेट करने होंगे:
ImagePath
, जो निष्पादित होने वाले बाइनरी का पथ है
Type
, जिसका मान SERVICE_KERNEL_DRIVER
(0x00000001
) है।
अनुसरण करने के चरण:
प्रतिबंधित लिखने की पहुँच के कारण HKLM
के बजाय HKCU
तक पहुँचें।
HKCU
के भीतर \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
पथ बनाएं, जहाँ <RID>
वर्तमान उपयोगकर्ता का सापेक्ष पहचानकर्ता है।
ImagePath
को बाइनरी के निष्पादन पथ पर सेट करें।
Type
को SERVICE_KERNEL_DRIVER
(0x00000001
) के रूप में असाइन करें।
More ways to abuse this privilege in https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege
यह SeRestorePrivilege के समान है। इसका मुख्य कार्य एक प्रक्रिया को एक ऑब्जेक्ट का स्वामित्व ग्रहण करने की अनुमति देना है, जो WRITE_OWNER एक्सेस अधिकारों के प्रावधान के माध्यम से स्पष्ट विवेकाधीन पहुंच की आवश्यकता को दरकिनार करता है। प्रक्रिया में पहले लिखने के उद्देश्यों के लिए इच्छित रजिस्ट्री कुंजी का स्वामित्व सुरक्षित करना शामिल है, फिर लिखने के संचालन को सक्षम करने के लिए DACL को बदलना शामिल है।
यह विशेषाधिकार अन्य प्रक्रियाओं को डिबग करने की अनुमति देता है, जिसमें मेमोरी में पढ़ने और लिखने की क्षमता शामिल है। मेमोरी इंजेक्शन के लिए विभिन्न रणनीतियाँ, जो अधिकांश एंटीवायरस और होस्ट घुसपैठ रोकथाम समाधानों को चकमा देने में सक्षम हैं, इस विशेषाधिकार के साथ लागू की जा सकती हैं।
आप ProcDump का उपयोग SysInternals Suite से एक प्रक्रिया की मेमोरी कैप्चर करने के लिए कर सकते हैं। विशेष रूप से, यह स्थानीय सुरक्षा प्राधिकरण उपप्रणाली सेवा (LSASS) प्रक्रिया पर लागू हो सकता है, जो एक बार उपयोगकर्ता के सफलतापूर्वक सिस्टम में लॉग इन करने के बाद उपयोगकर्ता क्रेडेंशियल्स को संग्रहीत करने के लिए जिम्मेदार है।
आप फिर इस डंप को mimikatz में लोड कर सकते हैं ताकि पासवर्ड प्राप्त कर सकें:
यदि आप NT SYSTEM
शेल प्राप्त करना चाहते हैं तो आप उपयोग कर सकते हैं:
The tokens that appear as Disabled को सक्षम किया जा सकता है, आप वास्तव में Enabled और Disabled tokens का दुरुपयोग कर सकते हैं।
यदि आपके पास tokens निष्क्रिय हैं, तो आप सभी tokens को सक्षम करने के लिए स्क्रिप्ट EnableAllTokenPrivs.ps1 का उपयोग कर सकते हैं:
Or the script embed in this post.
Full token privileges cheatsheet at https://github.com/gtworek/Priv2Admin, summary below will only list direct ways to exploit the privilege to obtain an admin session or read sensitive files.
Take a look to this table defining Windows tokens: https://github.com/gtworek/Priv2Admin
Take a look to this paper about privesc with tokens.
Privilege | Impact | Tool | Execution path | Remarks |
---|---|---|---|---|
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)