Tokens का दुरुपयोग

Reading time: 12 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें

Tokens

यदि आप Windows Access Tokens क्या हैं नहीं जानते हैं, तो आगे बढ़ने से पहले इस पृष्ठ को पढ़ें:

Access Tokens

शायद आप पहले से मौजूद टोकनों का दुरुपयोग करके विशेषाधिकार बढ़ाने में सक्षम हो सकते हैं

SeImpersonatePrivilege

यह विशेषाधिकार किसी भी प्रक्रिया द्वारा धारण किया जाता है जो किसी भी टोकन का अनुकरण (लेकिन निर्माण नहीं) करने की अनुमति देता है, बशर्ते कि इसके लिए एक हैंडल प्राप्त किया जा सके। एक विशेषाधिकार प्राप्त टोकन को Windows सेवा (DCOM) से NTLM प्रमाणीकरण को एक एक्सप्लॉइट के खिलाफ प्रदर्शन करने के लिए प्रेरित करके प्राप्त किया जा सकता है, जिससे SYSTEM विशेषाधिकार के साथ एक प्रक्रिया के निष्पादन की अनुमति मिलती है। इस भेद्यता का लाभ विभिन्न उपकरणों का उपयोग करके उठाया जा सकता है, जैसे juicy-potato, RogueWinRM (जिसके लिए winrm को बंद करना आवश्यक है), SweetPotato, और PrintSpoofer.

RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotato

JuicyPotato

SeAssignPrimaryPrivilege

यह SeImpersonatePrivilege के समान है, यह एक विशेषाधिकार प्राप्त टोकन प्राप्त करने के लिए समान विधि का उपयोग करेगा।
फिर, यह विशेषाधिकार एक प्राथमिक टोकन को एक नए/निलंबित प्रक्रिया को असाइन करने की अनुमति देता है। विशेषाधिकार प्राप्त अनुकरण टोकन के साथ आप एक प्राथमिक टोकन (DuplicateTokenEx) उत्पन्न कर सकते हैं।
इस टोकन के साथ, आप 'CreateProcessAsUser' के साथ एक नई प्रक्रिया बना सकते हैं या एक प्रक्रिया को निलंबित कर सकते हैं और टोकन सेट कर सकते हैं (सामान्यतः, आप एक चल रही प्रक्रिया के प्राथमिक टोकन को संशोधित नहीं कर सकते)।

SeTcbPrivilege

यदि आपने इस टोकन को सक्षम किया है, तो आप KERB_S4U_LOGON का उपयोग करके किसी अन्य उपयोगकर्ता के लिए अनुकरण टोकन प्राप्त कर सकते हैं बिना क्रेडेंशियल्स को जाने, टोकन में एक मनमाना समूह (admins) जोड़ सकते हैं, टोकन के इंटीग्रिटी लेवल को "मध्यम" पर सेट कर सकते हैं, और इस टोकन को वर्तमान थ्रेड पर असाइन कर सकते हैं (SetThreadToken)।

SeBackupPrivilege

यह विशेषाधिकार किसी भी फ़ाइल (पढ़ने के संचालन तक सीमित) के लिए सभी पढ़ने की पहुंच नियंत्रण प्रदान करता है। इसका उपयोग स्थानीय व्यवस्थापक खातों के पासवर्ड हैश को रजिस्ट्री से पढ़ने के लिए किया जाता है, जिसके बाद, "psexec" या "wmiexec" जैसे उपकरणों का उपयोग हैश के साथ किया जा सकता है (Pass-the-Hash तकनीक)। हालाँकि, यह तकनीक दो स्थितियों में विफल होती है: जब स्थानीय व्यवस्थापक खाता निष्क्रिय होता है, या जब एक नीति लागू होती है जो दूरस्थ रूप से कनेक्ट करने वाले स्थानीय व्यवस्थापकों से प्रशासनिक अधिकार हटा देती है।
आप इस विशेषाधिकार का दुरुपयोग कर सकते हैं:

Privileged Groups

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) है।

अनुसरण करने के चरण:

  1. प्रतिबंधित लिखने की पहुंच के कारण HKLM के बजाय HKCU तक पहुँचें।
  2. HKCU के भीतर \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName पथ बनाएं, जहाँ <RID> वर्तमान उपयोगकर्ता का सापेक्ष पहचानकर्ता है।
  3. ImagePath को बाइनरी के निष्पादन पथ पर सेट करें।
  4. Type को SERVICE_KERNEL_DRIVER (0x00000001) के रूप में असाइन करें।
python
# Example Python code to set the registry values
import winreg as reg

# Define the path and values
path = r'Software\YourPath\System\CurrentControlSet\Services\DriverName' # Adjust 'YourPath' as needed
key = reg.OpenKey(reg.HKEY_CURRENT_USER, path, 0, reg.KEY_WRITE)
reg.SetValueEx(key, "ImagePath", 0, reg.REG_SZ, "path_to_binary")
reg.SetValueEx(key, "Type", 0, reg.REG_DWORD, 0x00000001)
reg.CloseKey(key)

अधिक तरीके इस विशेषाधिकार का दुरुपयोग करने के लिए https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege

SeTakeOwnershipPrivilege

यह SeRestorePrivilege के समान है। इसका मुख्य कार्य एक प्रक्रिया को एक वस्तु का स्वामित्व ग्रहण करने की अनुमति देना है, जो WRITE_OWNER पहुँच अधिकारों के प्रावधान के माध्यम से स्पष्ट विवेकाधीन पहुँच की आवश्यकता को दरकिनार करता है। प्रक्रिया में पहले लिखने के उद्देश्यों के लिए इच्छित रजिस्ट्री कुंजी का स्वामित्व सुरक्षित करना शामिल है, फिर लिखने के संचालन को सक्षम करने के लिए DACL को बदलना शामिल है।

bash
takeown /f 'C:\some\file.txt' #Now the file is owned by you
icacls 'C:\some\file.txt' /grant <your_username>:F #Now you have full access
# Use this with files that might contain credentials such as
%WINDIR%\repair\sam
%WINDIR%\repair\system
%WINDIR%\repair\software
%WINDIR%\repair\security
%WINDIR%\system32\config\security.sav
%WINDIR%\system32\config\software.sav
%WINDIR%\system32\config\system.sav
%WINDIR%\system32\config\SecEvent.Evt
%WINDIR%\system32\config\default.sav
c:\inetpub\wwwwroot\web.config

SeDebugPrivilege

यह विशेषाधिकार अन्य प्रक्रियाओं को डिबग करने की अनुमति देता है, जिसमें मेमोरी में पढ़ने और लिखने की क्षमता शामिल है। मेमोरी इंजेक्शन के लिए विभिन्न रणनीतियाँ, जो अधिकांश एंटीवायरस और होस्ट घुसपैठ रोकथाम समाधानों को चकमा देने में सक्षम हैं, इस विशेषाधिकार के साथ लागू की जा सकती हैं।

Dump memory

आप ProcDump का उपयोग कर सकते हैं SysInternals Suite से एक प्रक्रिया की मेमोरी कैप्चर करने के लिए। विशेष रूप से, यह Local Security Authority Subsystem Service (LSASS) प्रक्रिया पर लागू हो सकता है, जो एक बार उपयोगकर्ता के सफलतापूर्वक सिस्टम में लॉग इन करने के बाद उपयोगकर्ता क्रेडेंशियल्स को संग्रहीत करने के लिए जिम्मेदार है।

आप फिर इस डंप को mimikatz में लोड कर सकते हैं ताकि पासवर्ड प्राप्त कर सकें:

mimikatz.exe
mimikatz # log
mimikatz # sekurlsa::minidump lsass.dmp
mimikatz # sekurlsa::logonpasswords

RCE

यदि आप NT SYSTEM शेल प्राप्त करना चाहते हैं तो आप उपयोग कर सकते हैं:

powershell
# Get the PID of a process running as NT SYSTEM
import-module psgetsys.ps1; [MyProcess]::CreateProcessFromParent(<system_pid>,<command_to_execute>)

विशेषाधिकार जांचें

whoami /priv

जो टोकन Disabled के रूप में दिखाई देते हैं उन्हें सक्षम किया जा सकता है, आप वास्तव में Enabled और Disabled टोकनों का दुरुपयोग कर सकते हैं।

सभी टोकनों को सक्षम करें

यदि आपके पास टोकन निष्क्रिय हैं, तो आप सभी टोकनों को सक्षम करने के लिए स्क्रिप्ट EnableAllTokenPrivs.ps1 का उपयोग कर सकते हैं:

powershell
.\EnableAllTokenPrivs.ps1
whoami /priv

या स्क्रिप्ट को इस पोस्ट में एम्बेड किया गया है।

तालिका

पूर्ण टोकन विशेषाधिकार चीटशीट https://github.com/gtworek/Priv2Admin पर है, नीचे का सारांश केवल सीधे तरीकों को सूचीबद्ध करेगा जो विशेषाधिकार का शोषण करके एक व्यवस्थापक सत्र प्राप्त करने या संवेदनशील फ़ाइलों को पढ़ने के लिए हैं।

विशेषाधिकारप्रभावउपकरणनिष्पादन पथटिप्पणियाँ
SeAssignPrimaryTokenव्यवस्थापक3rd party tool"यह एक उपयोगकर्ता को टोकन का अनुकरण करने और potato.exe, rottenpotato.exe और juicypotato.exe जैसे उपकरणों का उपयोग करके nt सिस्टम में प्रिवेस्क करने की अनुमति देगा"धन्यवाद Aurélien Chalot के लिए अपडेट के लिए। मैं इसे जल्द ही कुछ अधिक नुस्खा जैसा पुनः शब्दबद्ध करने की कोशिश करूंगा।
SeBackupखतरानिर्मित आदेशrobocopy /b के साथ संवेदनशील फ़ाइलें पढ़ें

- यदि आप %WINDIR%\MEMORY.DMP पढ़ सकते हैं तो यह अधिक दिलचस्प हो सकता है

- SeBackupPrivilege (और robocopy) खुली फ़ाइलों के मामले में सहायक नहीं है।

- Robocopy को /b पैरामीटर के साथ काम करने के लिए SeBackup और SeRestore दोनों की आवश्यकता होती है।

SeCreateTokenव्यवस्थापक3rd party toolNtCreateToken के साथ स्थानीय व्यवस्थापक अधिकारों सहित मनमाने टोकन बनाएं।
SeDebugव्यवस्थापकPowerShelllsass.exe टोकन को डुप्लिकेट करें।स्क्रिप्ट FuzzySecurity पर मिलेगी
SeLoadDriverव्यवस्थापक3rd party tool

1. szkg64.sys जैसे बग्गी कर्नेल ड्राइवर को लोड करें
2. ड्राइवर की भेद्यता का शोषण करें

वैकल्पिक रूप से, विशेषाधिकार का उपयोग सुरक्षा-संबंधित ड्राइवरों को ftlMC निर्मित आदेश के साथ अनलोड करने के लिए किया जा सकता है। यानी: fltMC sysmondrv

1. szkg64 भेद्यता को CVE-2018-15732 के रूप में सूचीबद्ध किया गया है
2. szkg64 शोषण कोड को Parvez Anwar द्वारा बनाया गया था

SeRestoreव्यवस्थापकPowerShell

1. SeRestore विशेषाधिकार के साथ PowerShell/ISE लॉन्च करें।
2. Enable-SeRestorePrivilege के साथ विशेषाधिकार सक्षम करें।
3. utilman.exe का नाम बदलकर utilman.old करें
4. cmd.exe का नाम बदलकर utilman.exe करें
5. कंसोल को लॉक करें और Win+U दबाएं

हमला कुछ AV सॉफ़्टवेयर द्वारा पता लगाया जा सकता है।

वैकल्पिक विधि उसी विशेषाधिकार का उपयोग करके "Program Files" में संग्रहीत सेवा बाइनरी को प्रतिस्थापित करने पर निर्भर करती है

SeTakeOwnershipव्यवस्थापकनिर्मित आदेश

1. takeown.exe /f "%windir%\system32"
2. icalcs.exe "%windir%\system32" /grant "%username%":F
3. cmd.exe का नाम बदलकर utilman.exe करें
4. कंसोल को लॉक करें और Win+U दबाएं

हमला कुछ AV सॉफ़्टवेयर द्वारा पता लगाया जा सकता है।

वैकल्पिक विधि उसी विशेषाधिकार का उपयोग करके "Program Files" में संग्रहीत सेवा बाइनरी को प्रतिस्थापित करने पर निर्भर करती है।

SeTcbव्यवस्थापक3rd party tool

टोकन को स्थानीय व्यवस्थापक अधिकारों के साथ शामिल करने के लिए हेरफेर करें। SeImpersonate की आवश्यकता हो सकती है।
पुष्टि की जानी है।

संदर्भ

  • Windows टोकन को परिभाषित करने वाली इस तालिका पर एक नज़र डालें: https://github.com/gtworek/Priv2Admin
  • टोकनों के साथ प्रिवेस्क के बारे में इस पेपर पर एक नज़र डालें।

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें