Abusing Tokens
Last updated
Last updated
AWS Hacking सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
यदि आप Windows Access Tokens क्या हैं नहीं जानते हैं, तो आगे बढ़ने से पहले इस पृष्ठ को पढ़ें:
Access Tokensशायद आप पहले से मौजूद tokens का दुरुपयोग करके विशेषाधिकार बढ़ा सकें
यह विशेषाधिकार किसी भी प्रक्रिया द्वारा धारण किया जाता है जो किसी भी token का अनुकरण (लेकिन निर्माण नहीं) करने की अनुमति देता है, बशर्ते कि इसके लिए एक हैंडल प्राप्त किया जा सके। एक विशेषाधिकार प्राप्त token को Windows सेवा (DCOM) से NTLM प्रमाणीकरण को एक exploit के खिलाफ प्रेरित करके प्राप्त किया जा सकता है, जिससे SYSTEM विशेषाधिकार के साथ एक प्रक्रिया के निष्पादन की अनुमति मिलती है। इस भेद्यता का दुरुपयोग विभिन्न उपकरणों का उपयोग करके किया जा सकता है, जैसे juicy-potato, RogueWinRM (जिसके लिए winrm को निष्क्रिय करना आवश्यक है), SweetPotato, और PrintSpoofer.
RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotatoJuicyPotatoयह SeImpersonatePrivilege के समान है, यह एक विशेषाधिकार प्राप्त token प्राप्त करने के लिए समान विधि का उपयोग करेगा। फिर, यह विशेषाधिकार एक प्राथमिक token को एक नए/निलंबित प्रक्रिया को असाइन करने की अनुमति देता है। विशेषाधिकार प्राप्त अनुकरण token के साथ आप एक प्राथमिक token (DuplicateTokenEx) उत्पन्न कर सकते हैं। इस token के साथ, आप 'CreateProcessAsUser' के साथ एक नई प्रक्रिया बना सकते हैं या एक प्रक्रिया को निलंबित कर सकते हैं और token सेट कर सकते हैं (सामान्यतः, आप एक चल रही प्रक्रिया के प्राथमिक token को संशोधित नहीं कर सकते)।
यदि आपने इस token को सक्षम किया है तो आप KERB_S4U_LOGON का उपयोग करके किसी अन्य उपयोगकर्ता के लिए अनुकरण token प्राप्त कर सकते हैं बिना क्रेडेंशियल्स को जाने, token में एक मनमाना समूह (admins) जोड़ सकते हैं, token के integrity level को "मध्यम" पर सेट कर सकते हैं, और इस token को वर्तमान थ्रेड (SetThreadToken) को असाइन कर सकते हैं।
यह विशेषाधिकार किसी भी फ़ाइल (पढ़ने के संचालन तक सीमित) को सभी पढ़ने की पहुँच नियंत्रण देने का कारण बनता है। इसका उपयोग स्थानीय व्यवस्थापक खातों के पासवर्ड हैश को रजिस्ट्री से पढ़ने के लिए किया जाता है, जिसके बाद, "psexec" या "wmiexec" जैसे उपकरणों का उपयोग हैश के साथ किया जा सकता है (Pass-the-Hash तकनीक)। हालाँकि, यह तकनीक दो स्थितियों में विफल होती है: जब स्थानीय व्यवस्थापक खाता निष्क्रिय होता है, या जब एक नीति लागू होती है जो दूरस्थ रूप से कनेक्ट करने वाले स्थानीय व्यवस्थापकों से प्रशासनिक अधिकार हटा देती है। आप इस विशेषाधिकार का दुरुपयोग कर सकते हैं:
https://www.youtube.com/watch?v=IfCysW0Od8w&t=2610&ab_channel=IppSec में IppSec का पालन करके
या जैसा कि Backup Operators के साथ विशेषाधिकार बढ़ाने के अनुभाग में समझाया गया है:
यह विशेषाधिकार किसी भी सिस्टम फ़ाइल के लिए लिखने की पहुँच की अनुमति देता है, चाहे फ़ाइल की एक्सेस कंट्रोल लिस्ट (ACL) कुछ भी हो। यह कई संभावनाओं को खोलता है, जिसमें सेवाओं को संशोधित करना, DLL Hijacking करना, और विभिन्न अन्य तकनीकों के बीच इमेज फ़ाइल निष्पादन विकल्पों के माध्यम से debuggers सेट करना शामिल है।
SeCreateTokenPrivilege एक शक्तिशाली अनुमति है, विशेष रूप से तब उपयोगी होती है जब एक उपयोगकर्ता के पास tokens का अनुकरण करने की क्षमता होती है, लेकिन SeImpersonatePrivilege की अनुपस्थिति में भी। यह क्षमता उस token के अनुकरण करने की क्षमता पर निर्भर करती है जो उसी उपयोगकर्ता का प्रतिनिधित्व करता है और जिसका integrity level वर्तमान प्रक्रिया के स्तर से अधिक नहीं होता है।
मुख्य बिंदु:
SeImpersonatePrivilege के बिना अनुकरण: विशेष परिस्थितियों में tokens का अनुकरण करके EoP के लिए SeCreateTokenPrivilege का लाभ उठाना संभव है।
Token अनुकरण के लिए शर्तें: सफल अनुकरण के लिए लक्षित token को उसी उपयोगकर्ता का होना चाहिए और इसका integrity level उस प्रक्रिया के integrity level से कम या बराबर होना चाहिए जो अनुकरण करने का प्रयास कर रही है।
अनुकरण tokens का निर्माण और संशोधन: उपयोगकर्ता एक अनुकरण token बना सकते हैं और इसे एक विशेषाधिकार प्राप्त समूह के SID (Security Identifier) को जोड़कर बढ़ा सकते हैं।
यह विशेषाधिकार डिवाइस ड्राइवरों को लोड और अनलोड करने की अनुमति देता है, जिसमें 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
शेल प्राप्त करना चाहते हैं, तो आप उपयोग कर सकते हैं:
जो टोकन Disabled के रूप में दिखाई देते हैं उन्हें सक्षम किया जा सकता है, आप वास्तव में Enabled और Disabled टोकनों का दुरुपयोग कर सकते हैं।
यदि आपके पास टोकन निष्क्रिय हैं, तो आप सभी टोकनों को सक्षम करने के लिए स्क्रिप्ट 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.
SeAssignPrimaryToken
Admin
3rd party tool
"यह एक उपयोगकर्ता को टोकन का अनुकरण करने और potato.exe, rottenpotato.exe और juicypotato.exe जैसे उपकरणों का उपयोग करके nt सिस्टम में प्रिवेस्क करने की अनुमति देगा"
Thank you Aurélien Chalot for the update. I will try to re-phrase it to something more recipe-like soon.
SeBackup
Threat
Built-in commands
Read sensitve files with robocopy /b
- यदि आप %WINDIR%\MEMORY.DMP पढ़ सकते हैं तो यह अधिक दिलचस्प हो सकता है
- SeBackupPrivilege
(और robocopy) खुली फ़ाइलों के मामले में सहायक नहीं है।
- Robocopy को /b पैरामीटर के साथ काम करने के लिए SeBackup और SeRestore दोनों की आवश्यकता होती है।
SeCreateToken
Admin
3rd party tool
Create arbitrary token including local admin rights with NtCreateToken
.
SeLoadDriver
Admin
3rd party tool
1. Load buggy kernel driver such as szkg64.sys
2. Exploit the driver vulnerability
Alternatively, the privilege may be used to unload security-related drivers with ftlMC
builtin command. i.e.: fltMC sysmondrv
1. The szkg64
vulnerability is listed as CVE-2018-15732
2. The szkg64
exploit code was created by Parvez Anwar
SeRestore
Admin
PowerShell
1. Launch PowerShell/ISE with the SeRestore privilege present. 2. Enable the privilege with Enable-SeRestorePrivilege). 3. Rename utilman.exe to utilman.old 4. Rename cmd.exe to utilman.exe 5. Lock the console and press Win+U
Attack may be detected by some AV software.
Alternative method relies on replacing service binaries stored in "Program Files" using the same privilege
SeTakeOwnership
Admin
Built-in commands
1. takeown.exe /f "%windir%\system32"
2. icalcs.exe "%windir%\system32" /grant "%username%":F
3. Rename cmd.exe to utilman.exe
4. Lock the console and press Win+U
Attack may be detected by some AV software.
Alternative method relies on replacing service binaries stored in "Program Files" using the same privilege.
SeTcb
Admin
3rd party tool
Manipulate tokens to have local admin rights included. May require SeImpersonate.
To be verified.
Take a look to this table defining Windows tokens: https://github.com/gtworek/Priv2Admin
Take a look to this paper about privesc with tokens.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)