Zloupotreba Tokena
Reading time: 9 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Tokeni
Ako ne znate šta su Windows Access Tokens, pročitajte ovu stranicu pre nego što nastavite:
Možda biste mogli da eskalirate privilegije zloupotrebom tokena koje već imate
SeImpersonatePrivilege
Ovo je privilegija koju ima svaki proces koji omogućava impersonaciju (ali ne i kreiranje) bilo kog tokena, pod uslovom da se može dobiti rukohvat za njega. Privilegovan token može se dobiti iz Windows servisa (DCOM) izazivanjem da izvrši NTLM autentifikaciju protiv exploita, čime se omogućava izvršenje procesa sa SYSTEM privilegijama. Ova ranjivost može se iskoristiti korišćenjem raznih alata, kao što su juicy-potato, RogueWinRM (koji zahteva da winrm bude onemogućen), SweetPotato i PrintSpoofer.
RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotato
SeAssignPrimaryPrivilege
Vrlo je slična SeImpersonatePrivilege, koristiće istu metodu za dobijanje privilegovanog tokena.
Zatim, ova privilegija omogućava dodeljivanje primarnog tokena novom/obustavljenom procesu. Sa privilegovanim impersonacionim tokenom možete derivirati primarni token (DuplicateTokenEx).
Sa tokenom, možete kreirati novi proces koristeći 'CreateProcessAsUser' ili kreirati proces u obustavljenom stanju i postaviti token (generalno, ne možete modifikovati primarni token pokrenutog procesa).
SeTcbPrivilege
Ako ste omogućili ovaj token, možete koristiti KERB_S4U_LOGON da dobijete impersonacioni token za bilo kog drugog korisnika bez poznavanja kredencijala, dodati proizvoljnu grupu (administratore) u token, postaviti nivo integriteta tokena na "srednji", i dodeliti ovaj token trenutnoj niti (SetThreadToken).
SeBackupPrivilege
Sistem se uzrokuje da dodeli sve pristupne kontrole za čitanje bilo kog fajla (ograničeno na operacije čitanja) ovom privilegijom. Koristi se za čitanje hešova lozinki lokalnih Administrator naloga iz registra, nakon čega se alati poput "psexec" ili "wmiexec" mogu koristiti sa hešom (Pass-the-Hash tehnika). Međutim, ova tehnika ne uspeva pod dva uslova: kada je lokalni Administrator nalog onemogućen, ili kada je politika na snazi koja uklanja administrativna prava lokalnim administratorima koji se povezuju na daljinu.
Možete zloupotrebiti ovu privilegiju sa:
- https://github.com/Hackplayers/PsCabesha-tools/blob/master/Privesc/Acl-FullControl.ps1
- https://github.com/giuliano108/SeBackupPrivilege/tree/master/SeBackupPrivilegeCmdLets/bin/Debug
- prateći IppSec na https://www.youtube.com/watch?v=IfCysW0Od8w&t=2610&ab_channel=IppSec
- Ili kako je objašnjeno u sekciji eskalacija privilegija sa Backup Operatorima u:
SeRestorePrivilege
Ova privilegija omogućava pristup za pisanje bilo kojoj sistemskoj datoteci, bez obzira na Access Control List (ACL) datoteke. Otvara brojne mogućnosti za eskalaciju, uključujući mogućnost modifikacije servisa, izvođenje DLL Hijacking-a i postavljanje debuggera putem Image File Execution Options među raznim drugim tehnikama.
SeCreateTokenPrivilege
SeCreateTokenPrivilege je moćna dozvola, posebno korisna kada korisnik ima sposobnost da impersonira tokene, ali i u odsustvu SeImpersonatePrivilege. Ova sposobnost zavisi od mogućnosti da se impersonira token koji predstavlja istog korisnika i čiji nivo integriteta ne prelazi nivo trenutnog procesa.
Ključne tačke:
- Impersonacija bez SeImpersonatePrivilege: Moguće je iskoristiti SeCreateTokenPrivilege za EoP impersonacijom tokena pod specifičnim uslovima.
- Uslovi za impersonaciju tokena: Uspešna impersonacija zahteva da ciljni token pripada istom korisniku i da ima nivo integriteta koji je manji ili jednak nivou integriteta procesa koji pokušava impersonaciju.
- Kreiranje i modifikacija impersonacionih tokena: Korisnici mogu kreirati impersonacioni token i poboljšati ga dodavanjem SID-a privilegovane grupe (Security Identifier).
SeLoadDriverPrivilege
Ova privilegija omogućava učitavanje i uklanjanje drajvera uređaja kreiranjem unosa u registru sa specifičnim vrednostima za ImagePath
i Type
. Pošto je direktan pristup za pisanje u HKLM
(HKEY_LOCAL_MACHINE) ograničen, umesto toga mora se koristiti HKCU
(HKEY_CURRENT_USER). Međutim, da bi HKCU
bio prepoznat od strane jezgra za konfiguraciju drajvera, mora se pratiti specifičan put.
Ovaj put je \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
, gde je <RID>
Relativni Identifikator trenutnog korisnika. Unutar HKCU
, ovaj ceo put mora biti kreiran, i dve vrednosti treba postaviti:
ImagePath
, što je putanja do binarnog fajla koji treba izvršitiType
, sa vrednošćuSERVICE_KERNEL_DRIVER
(0x00000001
).
Koraci koje treba pratiti:
- Pristupite
HKCU
umestoHKLM
zbog ograničenog pristupa za pisanje. - Kreirajte put
\Registry\User\<RID>\System\CurrentControlSet\Services\DriverName
unutarHKCU
, gde<RID>
predstavlja Relativni Identifikator trenutnog korisnika. - Postavite
ImagePath
na putanju izvršenja binarnog fajla. - Dodelite
Type
kaoSERVICE_KERNEL_DRIVER
(0x00000001
).
# 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)
Više načina za zloupotrebu ovog privilegija u https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege
SeTakeOwnershipPrivilege
Ovo je slično SeRestorePrivilege. Njegova primarna funkcija omogućava procesu da preuzme vlasništvo nad objektom, zaobilazeći zahtev za eksplicitnim diskrecionim pristupom kroz obezbeđivanje WRITE_OWNER prava pristupa. Proces uključuje prvo obezbeđivanje vlasništva nad željenim registrijskim ključem u svrhu pisanja, a zatim menjanje DACL-a kako bi se omogućile operacije pisanja.
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
Ova privilegija omogućava debugovanje drugih procesa, uključujući čitanje i pisanje u memoriju. Različite strategije za injekciju memorije, sposobne da izbegnu većinu antivirusnih i rešenja za prevenciju upada, mogu se koristiti sa ovom privilegijom.
Dump memorije
Možete koristiti ProcDump iz SysInternals Suite da zabeležite memoriju procesa. Konkretno, ovo se može primeniti na Local Security Authority Subsystem Service (LSASS) proces, koji je odgovoran za čuvanje korisničkih kredencijala nakon što se korisnik uspešno prijavi na sistem.
Zatim možete učitati ovaj dump u mimikatz da dobijete lozinke:
mimikatz.exe
mimikatz # log
mimikatz # sekurlsa::minidump lsass.dmp
mimikatz # sekurlsa::logonpasswords
RCE
Ako želite da dobijete NT SYSTEM
shell, možete koristiti:
# Get the PID of a process running as NT SYSTEM
import-module psgetsys.ps1; [MyProcess]::CreateProcessFromParent(<system_pid>,<command_to_execute>)
Proverite privilegije
whoami /priv
Tokeni koji se pojavljuju kao Onemogućeni mogu se omogućiti, zapravo možete zloupotrebiti Omogućene i Onemogućene tokene.
Omogućite sve tokene
Ako imate tokene koji su onemogućeni, možete koristiti skriptu EnableAllTokenPrivs.ps1 da omogućite sve tokene:
.\EnableAllTokenPrivs.ps1
whoami /priv
Ili skripta ugrađena u ovu objavu.
Tabela
Potpuni cheat sheet za privilegije tokena na https://github.com/gtworek/Priv2Admin, sažetak u nastavku će navesti samo direktne načine za iskorišćavanje privilegije za dobijanje admin sesije ili čitanje osetljivih fajlova.
Privilegija | Uticaj | Alat | Putanja izvršenja | Napomene |
---|---|---|---|---|
SeAssignPrimaryToken | Admin | alat treće strane | "Omogućava korisniku da imituje tokene i privesc do nt sistema koristeći alate kao što su potato.exe, rottenpotato.exe i juicypotato.exe" | Hvala Aurélien Chalot na ažuriranju. Pokušaću da to preformulišem u nešto više nalik receptu uskoro. |
SeBackup | Pretnja | Ugrađene komande | Čitajte osetljive fajlove sa robocopy /b | - Može biti zanimljivije ako možete da pročitate %WINDIR%\MEMORY.DMP |
SeCreateToken | Admin | alat treće strane | Kreirajte proizvoljni token uključujući lokalna admin prava sa NtCreateToken . | |
SeDebug | Admin | PowerShell | Duplirajte lsass.exe token. | Skripta se može naći na FuzzySecurity |
SeLoadDriver | Admin | alat treće strane | 1. Učitajte greškom kernel drajver kao što je | 1. Ranjivost |
SeRestore | Admin | PowerShell | 1. Pokrenite PowerShell/ISE sa prisutnom SeRestore privilegijom. | Napad može biti otkriven od strane nekog AV softvera. Alternativna metoda se oslanja na zamenu servisnih binarnih fajlova smeštenih u "Program Files" koristeći istu privilegiju |
SeTakeOwnership | Admin | Ugrađene komande | 1. | Napad može biti otkriven od strane nekog AV softvera. Alternativna metoda se oslanja na zamenu servisnih binarnih fajlova smeštenih u "Program Files" koristeći istu privilegiju. |
SeTcb | Admin | alat treće strane | Manipulišite tokenima da uključite lokalna admin prava. Može zahtevati SeImpersonate. Treba potvrditi. |
Referenca
- Pogledajte ovu tabelu koja definiše Windows tokene: https://github.com/gtworek/Priv2Admin
- Pogledajte ovaj rad o privesc-u sa tokenima.
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.