Abusing Tokens
Tokens
यदि आप Windows Access Tokens क्या हैं नहीं जानते हैं, तो आगे बढ़ने से पहले इस पृष्ठ को पढ़ें:
Access Tokensशायद आप पहले से मौजूद टोकनों का दुरुपयोग करके विशेषाधिकार बढ़ाने में सक्षम हो सकते हैं
SeImpersonatePrivilege
यह विशेषाधिकार किसी भी प्रक्रिया द्वारा धारण किया जाता है जो किसी भी टोकन का अनुकरण (लेकिन निर्माण नहीं) करने की अनुमति देता है, बशर्ते कि इसके लिए एक हैंडल प्राप्त किया जा सके। एक विशेषाधिकार प्राप्त टोकन को Windows सेवा (DCOM) से NTLM प्रमाणीकरण को एक एक्सप्लॉइट के खिलाफ प्रेरित करके प्राप्त किया जा सकता है, जिसके बाद SYSTEM विशेषाधिकार के साथ एक प्रक्रिया के निष्पादन की अनुमति मिलती है। इस भेद्यता का दुरुपयोग विभिन्न उपकरणों का उपयोग करके किया जा सकता है, जैसे juicy-potato, RogueWinRM (जिसके लिए winrm को अक्षम करना आवश्यक है), SweetPotato, और PrintSpoofer.
RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotatoJuicyPotatoSeAssignPrimaryPrivilege
यह SeImpersonatePrivilege के समान है, यह एक विशेषाधिकार प्राप्त टोकन प्राप्त करने के लिए समान विधि का उपयोग करेगा। फिर, यह विशेषाधिकार एक नए/स्थगित प्रक्रिया को एक प्राथमिक टोकन असाइन करने की अनुमति देता है। विशेषाधिकार प्राप्त अनुकरण टोकन के साथ आप एक प्राथमिक टोकन (DuplicateTokenEx) उत्पन्न कर सकते हैं। इस टोकन के साथ, आप 'CreateProcessAsUser' के साथ एक नई प्रक्रिया बना सकते हैं या एक प्रक्रिया को स्थगित कर सकते हैं और टोकन सेट कर सकते हैं (सामान्यतः, आप एक चल रही प्रक्रिया के प्राथमिक टोकन को संशोधित नहीं कर सकते)।
SeTcbPrivilege
यदि आपने इस टोकन को सक्षम किया है, तो आप KERB_S4U_LOGON का उपयोग करके किसी अन्य उपयोगकर्ता के लिए अनुकरण टोकन प्राप्त कर सकते हैं बिना क्रेडेंशियल्स को जाने, टोकन में एक मनमाना समूह (admins) जोड़ सकते हैं, टोकन के अखंडता स्तर को "मध्यम" पर सेट कर सकते हैं, और इस टोकन को वर्तमान थ्रेड पर असाइन कर सकते हैं (SetThreadToken)।
SeBackupPrivilege
यह विशेषाधिकार किसी भी फ़ाइल (पढ़ने के संचालन तक सीमित) को सभी पढ़ने की पहुँच नियंत्रण देने का कारण बनता है। इसका उपयोग स्थानीय व्यवस्थापक खातों के पासवर्ड हैश को रजिस्ट्री से पढ़ने के लिए किया जाता है, जिसके बाद, "psexec" या "wmiexec" जैसे उपकरणों का उपयोग हैश के साथ किया जा सकता है (Pass-the-Hash तकनीक)। हालाँकि, यह तकनीक दो स्थितियों में विफल होती है: जब स्थानीय व्यवस्थापक खाता अक्षम होता है, या जब एक नीति लागू होती है जो दूरस्थ रूप से कनेक्ट करने वाले स्थानीय व्यवस्थापकों से प्रशासनिक अधिकार हटा देती है। आप इस विशेषाधिकार का दुरुपयोग कर सकते हैं:
https://www.youtube.com/watch?v=IfCysW0Od8w&t=2610&ab_channel=IppSec में IppSec का पालन करें
या जैसा कि बैकअप ऑपरेटरों के साथ विशेषाधिकार बढ़ाने के अनुभाग में समझाया गया है:
SeRestorePrivilege
यह विशेषाधिकार किसी भी सिस्टम फ़ाइल के लिए लिखने की पहुँच की अनुमति देता है, चाहे फ़ाइल की एक्सेस कंट्रोल लिस्ट (ACL) कुछ भी हो। यह कई संभावनाओं को खोलता है, जिसमें सेवाओं को संशोधित करना, DLL Hijacking करना, और विभिन्न अन्य तकनीकों के बीच इमेज फ़ाइल निष्पादन विकल्पों के माध्यम से डिबगर सेट करना शामिल है।
SeCreateTokenPrivilege
SeCreateTokenPrivilege एक शक्तिशाली अनुमति है, विशेष रूप से तब उपयोगी होती है जब एक उपयोगकर्ता के पास टोकनों का अनुकरण करने की क्षमता होती है, लेकिन SeImpersonatePrivilege की अनुपस्थिति में भी। यह क्षमता उस टोकन के अनुकरण की क्षमता पर निर्भर करती है जो उसी उपयोगकर्ता का प्रतिनिधित्व करता है और जिसका अखंडता स्तर वर्तमान प्रक्रिया के स्तर से अधिक नहीं होता है।
मुख्य बिंदु:
SeImpersonatePrivilege के बिना अनुकरण: विशेष परिस्थितियों में टोकनों का अनुकरण करके EoP के लिए SeCreateTokenPrivilege का लाभ उठाना संभव है।
टोकन अनुकरण के लिए शर्तें: सफल अनुकरण के लिए लक्षित टोकन को उसी उपयोगकर्ता का होना चाहिए और इसका अखंडता स्तर उस प्रक्रिया के अखंडता स्तर से कम या बराबर होना चाहिए जो अनुकरण करने का प्रयास कर रही है।
अनुकरण टोकनों का निर्माण और संशोधन: उपयोगकर्ता एक अनुकरण टोकन बना सकते हैं और इसे एक विशेषाधिकार प्राप्त समूह के SID (सुरक्षा पहचानकर्ता) को जोड़कर बढ़ा सकते हैं।
SeLoadDriverPrivilege
यह विशेषाधिकार डिवाइस ड्राइवरों को लोड और अनलोड करने की अनुमति देता है, जिसमें 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
SeTakeOwnershipPrivilege
यह SeRestorePrivilege के समान है। इसका मुख्य कार्य एक प्रक्रिया को एक ऑब्जेक्ट का स्वामित्व ग्रहण करने की अनुमति देना है, जो WRITE_OWNER एक्सेस अधिकारों के प्रावधान के माध्यम से स्पष्ट विवेकाधीन पहुंच की आवश्यकता को दरकिनार करता है। प्रक्रिया में पहले लिखने के उद्देश्यों के लिए इच्छित रजिस्ट्री कुंजी का स्वामित्व सुरक्षित करना शामिल है, फिर लिखने के संचालन को सक्षम करने के लिए DACL को बदलना शामिल है।
SeDebugPrivilege
यह विशेषाधिकार अन्य प्रक्रियाओं को डिबग करने की अनुमति देता है, जिसमें मेमोरी में पढ़ने और लिखने की क्षमता शामिल है। मेमोरी इंजेक्शन के लिए विभिन्न रणनीतियाँ, जो अधिकांश एंटीवायरस और होस्ट घुसपैठ रोकथाम समाधानों को चकमा देने में सक्षम हैं, इस विशेषाधिकार के साथ लागू की जा सकती हैं।
Dump memory
आप ProcDump का उपयोग SysInternals Suite से एक प्रक्रिया की मेमोरी कैप्चर करने के लिए कर सकते हैं। विशेष रूप से, यह स्थानीय सुरक्षा प्राधिकरण उपप्रणाली सेवा (LSASS) प्रक्रिया पर लागू हो सकता है, जो एक बार उपयोगकर्ता के सफलतापूर्वक सिस्टम में लॉग इन करने के बाद उपयोगकर्ता क्रेडेंशियल्स को संग्रहीत करने के लिए जिम्मेदार है।
आप फिर इस डंप को mimikatz में लोड कर सकते हैं ताकि पासवर्ड प्राप्त कर सकें:
RCE
यदि आप NT SYSTEM
शेल प्राप्त करना चाहते हैं तो आप उपयोग कर सकते हैं:
विशेषाधिकार जांचें
The tokens that appear as Disabled को सक्षम किया जा सकता है, आप वास्तव में Enabled और Disabled tokens का दुरुपयोग कर सकते हैं।
सभी tokens सक्षम करें
यदि आपके पास tokens निष्क्रिय हैं, तो आप सभी tokens को सक्षम करने के लिए स्क्रिप्ट EnableAllTokenPrivs.ps1 का उपयोग कर सकते हैं:
Or the script embed in this post.
Table
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.
Privilege | Impact | Tool | Execution path | Remarks |
---|---|---|---|---|
| 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. |
| Threat | Built-in commands | Read sensitve files with | - यदि आप %WINDIR%\MEMORY.DMP पढ़ सकते हैं तो यह अधिक दिलचस्प हो सकता है
- |
| Admin | 3rd party tool | Create arbitrary token including local admin rights with | |
| Admin | PowerShell | Duplicate the | Script to be found at FuzzySecurity |
| Admin | 3rd party tool | 1. Load buggy kernel driver such as | 1. The |
| 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 |
| Admin | Built-in commands | 1. | Attack may be detected by some AV software. Alternative method relies on replacing service binaries stored in "Program Files" using the same privilege. |
| Admin | 3rd party tool | Manipulate tokens to have local admin rights included. May require SeImpersonate. To be verified. |
Reference
Take a look to this table defining Windows tokens: https://github.com/gtworek/Priv2Admin
Take a look to this paper about privesc with tokens.
Last updated