Abusing Tokens

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Tokeni

Ako ne znate šta su Windows Access Tokeni, pročitajte ovu stranicu pre nego što nastavite:

pageAccess Tokens

Možda ćete moći da eskalirate privilegije zloupotrebom tokena koje već imate

SeImpersonatePrivilege

Ovo je privilegija koju poseduje bilo koji proces koji omogućava impersonaciju (ali ne i kreiranje) bilo kog tokena, pod uslovom da se može dobiti ručka za njega. Privilegovani token može biti dobijen od Windows servisa (DCOM) indukujući ga da izvrši NTLM autentikaciju protiv eksploatacije, omogućavajući izvršenje procesa sa SISTEM privilegijama. Ova ranjivost može biti iskorišćena korišćenjem različitih alata, poput juicy-potato, RogueWinRM (koji zahteva onemogućavanje winrm-a), SweetPotato i PrintSpoofer.

pageRoguePotato, PrintSpoofer, SharpEfsPotato, GodPotatopageJuicyPotato

SeAssignPrimaryPrivilege

Veoma je sličan SeImpersonatePrivilege, koristiće isti metod za dobijanje privilegovanog tokena. Onda, ova privilegija omogućava dodelu primarnog tokena novom/suspendovanom procesu. Sa privilegovanim impersonacionim tokenom možete izvesti primarni token (DuplicateTokenEx). Sa tokenom, možete kreirati novi proces sa 'CreateProcessAsUser' ili kreirati proces suspendovan 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 akreditiva, dodati proizvoljnu grupu (administratori) tokenu, postaviti nivo integriteta tokena na "srednji" i dodeliti ovaj token trenutnom thread-u (SetThreadToken).

SeBackupPrivilege

Sistem je primoran da dodeli sva prava za čitanje kontrole bilo kog fajla (ograničeno na operacije čitanja) ovom privilegijom. Koristi se za čitanje heševa lozinki lokalnih Administratora sa registra, nakon čega se mogu koristiti alati poput "psexec" ili "wmicexec" sa hešom (Pass-the-Hash tehnika). Međutim, ova tehnika ne uspeva pod dva uslova: kada je lokalni administratorski nalog onemogućen ili kada je politika koja uklanja administratorska prava od lokalnih administratora koji se povezuju na daljinu. Možete zloupotrebiti ovu privilegiju sa:

pagePrivileged Groups

SeRestorePrivilege

Dozvola za pisanje pristupa bilo kom sistemskom fajlu, bez obzira na Access Control List (ACL) fajla, obezbeđuje se ovom privilegijom. Otvora se mnogo mogućnosti za eskalaciju, uključujući mogućnost modifikacije servisa, izvođenje DLL Hijacking-a i postavljanje debugera putem Image File Execution Options među raznim drugim tehnikama.

SeCreateTokenPrivilege

SeCreateTokenPrivilege je moćna dozvola, posebno korisna kada korisnik poseduje mogućnost impersonacije tokena, ali i u odsustvu SeImpersonatePrivilege-a. Ova sposobnost zavisi od mogućnosti impersonacije tokena koji predstavlja istog korisnika i čiji nivo integriteta ne premašuje nivo integriteta trenutnog procesa.

Ključne tačke:

  • Impersonacija bez SeImpersonatePrivilege-a: Moguće je iskoristiti SeCreateTokenPrivilege za EoP impersonacijom tokena pod određenim uslovima.

  • Uslovi za Impersonaciju Tokena: Uspešna impersonacija zahteva da ciljni token pripada istom korisniku i 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 unaprediti ga dodavanjem SID-a privilegovane grupe.

SeLoadDriverPrivilege

Ova privilegija omogućava učitavanje i oslobađanje drajvera uređaja sa kreiranjem unosa u registar sa specifičnim vrednostima za ImagePath i Type. Pošto je direktni pristup pisanju u HKLM (HKEY_LOCAL_MACHINE) ograničen, umesto toga mora se koristiti HKCU (HKEY_CURRENT_USER). Međutim, da bi se HKCU prepoznao od strane kernela za konfiguraciju drajvera, mora se pratiti određena putanja.

Ova putanja je \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName, gde <RID> predstavlja Relativni Identifikator trenutnog korisnika. Unutar HKCU, mora se kreirati cela ova putanja, i postaviti dve vrednosti:

  • ImagePath, što je putanja do binarnog fajla koji će se izvršiti

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

Koraci koje treba pratiti:

  1. Pristupiti HKCU umesto HKLM zbog ograničenog pristupa pisanju.

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

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

  4. Dodeliti 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 privilegovanja možete pronaći na https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege

SeTakeOwnershipPrivilege

Ovo je slično SeRestorePrivilege. Njegova osnovna funkcija omogućava procesu da preuzme vlasništvo nad objektom, zaobilazeći zahtev za eksplicitnim pristupom putem prava pristupa WRITE_OWNER. Proces uključuje prvo obezbeđivanje vlasništva nad odgovarajućim registarskim ključem u svrhu pisanja, a zatim izmenu DACL-a radi omogućavanja operacija 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 dozvoljava debugovanje drugih procesa, uključujući čitanje i pisanje u memoriju. Različite strategije za ubacivanje u memoriju, sposobne da izbegnu većinu antivirusnih i rešenja za prevenciju upada na hostu, 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 podataka nakon što se korisnik uspešno prijavi na sistem.

Zatim možete učitati ovaj dump u mimikatz-u da biste dobili 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>)

Provera privilegija

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 onemogućene tokene, možete koristiti skriptu EnableAllTokenPrivs.ps1 da omogućite sve tokene:

.\EnableAllTokenPrivs.ps1
whoami /priv

Ili skript ugrađen u ovom postu.

Tabela

Potpuna lista privilegija tokena nalazi se na https://github.com/gtworek/Priv2Admin, u nastavku je samo sažetak direktnih načina za iskorišćavanje privilegija radi dobijanja administratorske sesije ili čitanja osetljivih fajlova.

PrivilegijaUticajAlatPut izvršenjaNapomene

SeAssignPrimaryToken

Admin

Alat treće strane

"Omogućava korisniku da se predstavi kao tokeni i pređe na nt sistem koristeći alate poput potato.exe, rottenpotato.exe i juicypotato.exe"

Hvala Aurélien Chalot na ažuriranju. Pokušaću da to preformulišem u nešto slično receptu uskoro.

SeBackup

Pretnja

Ugrađene komande

Čitanje osetljivih fajlova pomoću robocopy /b

- Može biti interesantno ako možete čitati %WINDIR%\MEMORY.DMP - SeBackupPrivilege (i robocopy) nisu od pomoći kada su u pitanju otvoreni fajlovi. - Robocopy zahteva i SeBackup i SeRestore privilegije da bi radio sa /b parametrom.

SeCreateToken

Admin

Alat treće strane

Kreiranje proizvoljnog tokena uključujući lokalna administratorska prava pomoću NtCreateToken.

SeDebug

Admin

PowerShell

Dupliranje tokena lsass.exe.

Skripta se može pronaći na FuzzySecurity

SeLoadDriver

Admin

Alat treće strane

1. Učitajte problematični drajver jezgra poput szkg64.sys 2. Iskoristite ranjivost drajvera Alternativno, privilegija se može koristiti za isključivanje drajvera vezanih za bezbednost pomoću ugrađene komande ftlMC. npr.: fltMC sysmondrv

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

SeRestore

Admin

PowerShell

1. Pokrenite PowerShell/ISE sa prisutnom SeRestore privilegijom. 2. Omogućite privilegiju pomoću 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 nekih AV softvera.

Alternativna metoda se oslanja na zamenu binarnih fajlova servisa 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 nekih AV softvera.

Alternativna metoda se oslanja na zamenu binarnih fajlova servisa smeštenih u "Program Files" koristeći istu privilegiju.

SeTcb

Admin

Alat treće strane

Manipulacija tokenima radi uključivanja lokalnih administratorskih prava. Može zahtevati SeImpersonate.

Da se proveri.

Reference

Last updated