Abusing Tokens

Support HackTricks

Tokens

If you don't know what are Windows Access Tokens read this page before continuing:

Access Tokens

Možda biste mogli da eskalirate privilegije zloupotrebom tokena koje već imate

SeImpersonatePrivilege

Ovo je privilegija koju drži bilo koji 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 eksploata, što omogućava izvršenje procesa sa SYSTEM privilegijama. Ova ranjivost može se iskoristiti koristeći razne alate, kao što su juicy-potato, RogueWinRM (koji zahteva da winrm bude onemogućen), SweetPotato, i PrintSpoofer.

RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotatoJuicyPotato

SeAssignPrimaryPrivilege

Veoma 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 tokenom za impersonaciju možete izvesti 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 token za impersonaciju 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 je prinuđen 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 (tehnika Pass-the-Hash). 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:

Privileged Groups

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 tokena za impersonaciju: Korisnici mogu kreirati token za impersonaciju 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 na 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, ceo ovaj put mora biti kreiran, i dve vrednosti treba postaviti:

  • ImagePath, što je putanja do binarnog fajla koji treba izvršiti

  • Type, sa vrednošću SERVICE_KERNEL_DRIVER (0x00000001).

Koraci koje treba pratiti:

  1. Pristupite HKCU umesto HKLM zbog ograničenog pristupa za pisanje.

  2. Kreirajte put \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName unutar HKCU, gde <RID> predstavlja Relativni Identifikator trenutnog korisnika.

  3. Postavite ImagePath na putanju izvršenja binarnog fajla.

  4. Dodelite Type kao SERVICE_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 nameravanom registracionom 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 proces Local Security Authority Subsystem Service (LSASS), 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

Potpuna lista privilegija 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.

PrivilegijaUticajAlatPutanja izvršenjaNapomene

SeAssignPrimaryToken

Admin

alat treće strane

"Omogućava korisniku da imitira 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 - SeBackupPrivilege (i robocopy) nije od pomoći kada su u pitanju otvoreni fajlovi. - Robocopy zahteva i SeBackup i SeRestore da bi radio sa /b parametrom.

SeCreateToken

Admin

alat treće strane

Kreirajte proizvoljni token uključujući lokalne admin privilegije 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 szkg64.sys 2. Iskoristite ranjivost drajvera Alternativno, privilegija se može koristiti za uklanjanje drajvera vezanih za bezbednost sa ftlMC ugrađenom komandom. tj.: fltMC sysmondrv

1. Ranjivost szkg64 je navedena kao CVE-2018-15732 2. szkg64 kod za eksploataciju je kreirao Parvez Anwar

SeRestore

Admin

PowerShell

1. Pokrenite PowerShell/ISE sa prisutnom SeRestore privilegijom. 2. Omogućite privilegiju sa Enable-SeRestorePrivilege). 3. Preimenujte utilman.exe u utilman.old 4. Preimenujte cmd.exe u utilman.exe 5. Zaključajte konzolu i pritisnite Win+U

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. takeown.exe /f "%windir%\system32" 2. icalcs.exe "%windir%\system32" /grant "%username%":F 3. Preimenujte cmd.exe u utilman.exe 4. Zaključajte konzolu i pritisnite Win+U

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 lokalne admin privilegije. Može zahtevati SeImpersonate.

Da se proveri.

Referenca

Podrška HackTricks

Last updated