Abusing Tokens
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŚ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Tokens
Se non sai cosa sono i Windows Access Tokens leggi questa pagina prima di continuare:
Potresti riuscire a scalare privilegi abusando dei token che giĂ possiedi
SeImpersonatePrivilege
Questo privilegio, se assegnato a un processo, permette lâimpersonificazione (ma non la creazione) di qualsiasi token, purchĂŠ si possa ottenere una handle su di esso. Un token privilegiato può essere acquisito da un servizio Windows (DCOM) inducendolo a effettuare lâautenticazione NTLM verso un exploit, permettendo poi lâesecuzione di un processo con privilegi SYSTEM. Questa vulnerabilitĂ può essere sfruttata con vari strumenti, come juicy-potato, RogueWinRM (che richiede winrm disabilitato), SweetPotato e PrintSpoofer.
RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotato
SeAssignPrimaryPrivilege
Ă molto simile a SeImpersonatePrivilege, usa lo stesso metodo per ottenere un token privilegiato.
Poi, questo privilegio permette di assegnare un primary token a un processo nuovo/sospeso. Con il token di impersonificazione privilegiato puoi derivare un primary token (DuplicateTokenEx).
Con il token, puoi creare un nuovo processo con âCreateProcessAsUserâ o creare un processo sospeso e impostare il token (in generale, non è possibile modificare il primary token di un processo in esecuzione).
SeTcbPrivilege
Se hai abilitato questo privilegio puoi usare KERB_S4U_LOGON per ottenere un impersonation token per qualsiasi altro utente senza conoscere le credenziali, aggiungere un gruppo arbitrario (admins) al token, impostare il livello di integritĂ del token a âmediumâ, e assegnare questo token al thread corrente (SetThreadToken).
SeBackupPrivilege
Questo privilegio causa il sistema a concedere pieno accesso in lettura a qualsiasi file (limitato alle operazioni di lettura). Viene utilizzato per leggere gli hash delle password degli account Administrator locali dal registro, dopodichĂŠ strumenti come âpsexecâ o âwmiexecâ possono essere usati con lâhash (tecnica Pass-the-Hash). Tuttavia, questa tecnica fallisce in due casi: quando lâaccount Local Administrator è disabilitato, o quando è in vigore una policy che rimuove i diritti amministrativi agli Local Administrators che si connettono da remoto.
Puoi abusare di questo privilegio con:
- https://github.com/Hackplayers/PsCabesha-tools/blob/master/Privesc/Acl-FullControl.ps1
- https://github.com/giuliano108/SeBackupPrivilege/tree/master/SeBackupPrivilegeCmdLets/bin/Debug
- seguendo IppSec in https://www.youtube.com/watch?v=IfCysW0Od8w&t=2610&ab_channel=IppSec
- Oppure come spiegato nella sezione escalating privileges with Backup Operators di:
SeRestorePrivilege
Questo privilegio fornisce il permesso di scrittura su qualsiasi file di sistema, indipendentemente dalla Access Control List (ACL) del file. Apre numerose possibilitĂ per lâescalation, inclusa la capacitĂ di modificare servizi, eseguire DLL Hijacking e impostare debugger tramite Image File Execution Options, oltre ad altre tecniche.
SeCreateTokenPrivilege
SeCreateTokenPrivilege è un permesso potente, particolarmente utile quando un utente possiede la capacità di impersonare token, ma efficace anche in assenza di SeImpersonatePrivilege. Questa possibilità dipende dalla capacità di impersonare un token che rappresenti lo stesso utente e il cui livello di integrità non superi quello del processo corrente.
Punti chiave:
- Impersonazione senza SeImpersonatePrivilege: Ă possibile sfruttare SeCreateTokenPrivilege per EoP impersonando token in condizioni specifiche.
- Condizioni per lâimpersonazione di token: Lâimpersonazione avrĂ successo se il token target appartiene allo stesso utente e ha un livello di integritĂ minore o uguale a quello del processo che tenta lâimpersonazione.
- Creazione e modifica di impersonation token: Gli utenti possono creare un impersonation token e potenziarlo aggiungendo il SID di un gruppo privilegiato (Security Identifier).
SeLoadDriverPrivilege
Questo privilegio permette di caricare e scaricare driver di dispositivo creando una voce di registro con valori specifici per ImagePath e Type. PoichĂŠ lâaccesso in scrittura diretto a HKLM (HKEY_LOCAL_MACHINE) è limitato, deve essere utilizzato HKCU (HKEY_CURRENT_USER). Tuttavia, per rendere HKCU riconoscibile dal kernel per la configurazione del driver, è necessario seguire un percorso specifico.
Questo percorso è \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName, dove <RID> è il Relative Identifier dellâutente corrente. Allâinterno di HKCU deve essere creato tutto questo percorso, e vanno impostati due valori:
ImagePath, che è il percorso del binario da eseguireType, con valoreSERVICE_KERNEL_DRIVER(0x00000001).
Steps to Follow:
- Accedere a
HKCUinvece diHKLMa causa dellâaccesso in scrittura limitato. - Creare il percorso
\Registry\User\<RID>\System\CurrentControlSet\Services\DriverNameallâinterno diHKCU, dove<RID>rappresenta il Relative Identifier dellâutente corrente. - Impostare
ImagePathsul percorso di esecuzione del binario. - Assegnare a
Typeil valoreSERVICE_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)
Altri modi per abusare di questo privilegio in https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege
SeTakeOwnershipPrivilege
Questo è simile a SeRestorePrivilege. La sua funzione principale permette a un processo di assumere la proprietĂ di un oggetto, aggirando la necessitĂ di un accesso discrezionale esplicito mediante lâassegnazione del diritto WRITE_OWNER. Il processo consiste prima nellâottenere la proprietĂ della chiave di registro destinata per poter scrivere, quindi nel modificare la DACL per abilitare le operazioni di scrittura.
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
Questo privilegio permette di eseguire il debug di altri processi, incluso leggere e scrivere nella memoria. Con questo privilegio possono essere impiegate varie strategie di memory injection, in grado di eludere la maggior parte degli antivirus e delle soluzioni di host intrusion prevention.
Dump della memoria
Puoi usare ProcDump dalla SysInternals Suite per catturare la memoria di un processo. In particolare, questo può essere applicato al processo Local Security Authority Subsystem Service (LSASS), che è responsabile della memorizzazione delle credenziali utente una volta che un utente ha effettuato con successo lâaccesso a un sistema.
Puoi quindi caricare questo dump in mimikatz per ottenere le password:
mimikatz.exe
mimikatz # log
mimikatz # sekurlsa::minidump lsass.dmp
mimikatz # sekurlsa::logonpasswords
RCE
Se vuoi ottenere una shell NT SYSTEM puoi usare:
# Get the PID of a process running as NT SYSTEM
import-module psgetsys.ps1; [MyProcess]::CreateProcessFromParent(<system_pid>,<command_to_execute>)
SeManageVolumePrivilege
Questo diritto (Perform volume maintenance tasks) permette di aprire raw volume device handles (ad es., \.\C:) per I/O diretto su disco che bypassa gli NTFS ACLs. Con esso puoi copiare i byte di qualsiasi file sul volume leggendo i blocchi sottostanti, consentendo la lettura arbitraria di file contenenti materiale sensibile (ad es., chiavi private della macchina in %ProgramData%\Microsoft\Crypto, registry hives, SAM/NTDS via VSS). Ă particolarmente impattante sui server CA, dove lâesfiltrazione della chiave privata della CA permette di forgiare un Golden Certificate per impersonare qualsiasi entitĂ .
See detailed techniques and mitigations:
Semanagevolume Perform Volume Maintenance Tasks
Verificare i privilegi
whoami /priv
I tokens che appaiono come Disabled possono essere abilitati; in realtĂ puoi abusare sia dei token Enabled che Disabled.
Abilitare tutti i token
Se hai token disabilitati, puoi usare lo script EnableAllTokenPrivs.ps1 per abilitare tutti i token:
.\EnableAllTokenPrivs.ps1
whoami /priv
Oppure lo script incorporato in questo post.
Tabella
Cheatsheet completo dei privilegi dei token su https://github.com/gtworek/Priv2Admin, il riepilogo seguente elenca solo i modi diretti per sfruttare il privilegio per ottenere una sessione admin o leggere file sensibili.
| Privilegio | Impatto | Strumento | Percorso di esecuzione | Osservazioni |
|---|---|---|---|---|
SeAssignPrimaryToken | Admin | strumento di terze parti | âConsentirebbe a un utente di impersonare token e ottenere privesc su nt system utilizzando strumenti come potato.exe, rottenpotato.exe e juicypotato.exeâ | Grazie a AurĂŠlien Chalot per lâaggiornamento. Cercherò di riformularlo in modo piĂš âricettarioâ a breve. |
SeBackup | Threat | Comandi integrati | Leggere file sensibili con robocopy /b |
- Può essere piÚ interessante se si riesce a leggere %WINDIR%\MEMORY.DMP |
SeCreateToken | Admin | strumento di terze parti | Creare token arbitrari inclusi diritti locali admin con NtCreateToken. | |
SeDebug | Admin | PowerShell | Duplicare il token di lsass.exe. | Script da trovare su FuzzySecurity |
SeLoadDriver | Admin | strumento di terze parti |
1. Caricare un kernel driver vulnerabile come |
1. La vulnerabilitĂ di |
SeRestore | Admin | PowerShell |
1. Avviare PowerShell/ISE con il privilegio SeRestore abilitato. |
Lâattacco può essere rilevato da alcuni software AV. Il metodo alternativo si basa sulla sostituzione dei binari dei servizi memorizzati in âProgram Filesâ usando lo stesso privilegio |
SeTakeOwnership | Admin | Comandi integrati |
1. |
Lâattacco può essere rilevato da alcuni software AV. Il metodo alternativo si basa sulla sostituzione dei binari dei servizi memorizzati in âProgram Filesâ usando lo stesso privilegio. |
SeTcb | Admin | strumento di terze parti |
Manipolare i token per includere i diritti locali admin. Può richiedere SeImpersonate. Da verificare. |
Riferimenti
- Dai unâocchiata a questa tabella che definisce i token di Windows: https://github.com/gtworek/Priv2Admin
- Dai unâocchiata a questo paper sul privesc con i token.
- Microsoft â Eseguire attivitĂ di manutenzione del volume (SeManageVolumePrivilege): https://learn.microsoft.com/previous-versions/windows/it-pro/windows-10/security/threat-protection/security-policy-settings/perform-volume-maintenance-tasks
- 0xdf â HTB: Certificate (SeManageVolumePrivilege â CA key exfil â Golden Certificate): https://0xdf.gitlab.io/2025/10/04/htb-certificate.html
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŚ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
HackTricks

