Tutorials

Windows Access Token Impersonation: Guida Tecnica Avanzata

Nel contesto delle operazioni di post-exploitation su sistemi Windows, gli access token rappresentano un elemento cruciale per comprendere e sfruttare il modello di sicurezza del sistema operativo. Qu

#exploitation#windows#metasploit

Windows Access Token Impersonation: Guida Tecnica Avanzata

Introduzione

Nel contesto delle operazioni di post-exploitation su sistemi Windows, gli access token rappresentano un elemento cruciale per comprendere e sfruttare il modello di sicurezza del sistema operativo. Questo documento fornisce una panoramica approfondita sull'architettura degli access token, le tecniche di impersonation, le implicazioni in ambito offensivo e difensivo, e strumenti noti per effettuare tali attività.


Cos'è un Access Token

Un access token su Windows è una struttura dati generata e gestita dal servizio LSASS (Local Security Authority Subsystem Service), utilizzata per rappresentare l'identità di un processo o thread. Serve a definire il contesto di sicurezza sotto cui un'applicazione viene eseguita.

Ogni volta che un utente esegue correttamente l'autenticazione:

  • Il processo winlogon.exe genera un token.
  • Questo token è legato a userinit.exe, il quale lo eredita e lo propaga a tutti i processi figlio.
  • In questo modo, tutti i processi dell'utente eseguono con lo stesso contesto di sicurezza.

Tipologie di Access Token

Gli access token si suddividono principalmente in:

Impersonate-Level Token

  • Creati durante login non interattivi (es. servizi, accessi di sistema).
  • Utilizzabili solo localmente sul sistema dove sono stati generati.

Delegate-Level Token

  • Generati tramite login interattivi (es. desktop locale, RDP).
  • Più pericolosi: possono essere utilizzati per accedere ad altri sistemi in rete, mantenendo il contesto dell'utente autenticato.
⚠️ I token di tipo delegate sono obiettivi ad alto valore durante operazioni di lateral movement.

Privilegi Necessari per l'Impersonazione

Affinché un attaccante possa impersonare un access token, sono necessari specifici privilegi:

  • SeImpersonatePrivilege: consente l'esecuzione di processi nel contesto di un altro utente.
  • SeAssignPrimaryTokenPrivilege: consente di assegnare un token primario a un processo.
  • SeCreateTokenPrivilege: consente la creazione arbitraria di nuovi token.

Questi privilegi sono solitamente assegnati ad account ad alto livello (SYSTEM, amministratori).


Tecniche di Token Impersonation

1. Token Stealing via Incognito (Meterpreter)

Utilizzando la sessione di Meterpreter, è possibile:

  • Enumerare i token disponibili:
bash
use incognito
    list_tokens -u
  • Impersonare un token:
bash
impersonate_token "DOMAIN\\Username"

2. Token Duplication (Impersonation APIs)

Utilizzando funzioni di Windows API:

  • OpenProcessToken()
  • DuplicateTokenEx()
  • ImpersonateLoggedOnUser()

Queste tecniche sono spesso implementate in strumenti come Mimikatz, SharpImpersonation, o Rubeus.

3. Named Pipe Impersonation (Privilege Escalation)

Una tecnica che sfrutta:

  • La creazione di una pipe nominata da parte dell'attaccante.
  • L'attesa che un processo con alti privilegi si connetta alla pipe.
  • L'utilizzo di ImpersonateNamedPipeClient() per ottenere i privilegi del client.
Questa tecnica è spesso utilizzata da potato family exploits come JuicyPotato, PrintSpoofer, RoguePotato, etc.

4. Kerberos Delegation Token Abuse

Abusando della delegazione unconstrained (impostazione Active Directory), un attaccante può:

  • Acquisire ticket TGT di altri utenti.
  • Utilizzare i ticket per autenticarsi su altri sistemi (pass-the-ticket).

Strumenti correlati: Rubeus, Mimikatz, Kekeo.


Persistenza tramite Token Impersonation

Un attaccante può sfruttare token salvati o impersonabili per mantenere accesso persistente:

  • Creazione di un Scheduled Task usando un token privilegiato.
  • Utilizzo di token validi per accedere a risorse di rete in momenti successivi.
  • Uso di runas con token pre-esistenti.

Mitigazioni e Best Practices Difensive

  • Limitare i privilegi: evitare che account con basso privilegio abbiano SeImpersonatePrivilege.
  • Abilitare Credential Guard: previene l'accesso non autorizzato a credenziali in memoria.
  • Monitoraggio eventi:
- ID 4648: "A logon was attempted using explicit credentials". - ID 4673/4674: uso di privilegi sensibili.
  • Segmentazione della rete: separare in maniera netta gli ambienti privilegiati da quelli non privilegiati.

Conclusione

L'access token impersonation è una delle tecniche più potenti e silenziose per l'elevazione di privilegi e il movimento laterale in ambienti Windows. La comprensione profonda del funzionamento di questi meccanismi permette sia di sfruttare queste vulnerabilità in contesti red team, sia di progettare adeguate strategie di difesa.

Nel contesto della preparazione per l'eJPT o certificazioni superiori (OSCP, CRTP), la padronanza di queste tecniche è fondamentale per comprendere il vero potenziale di un attaccante post-exploitation.


Strumenti utili:

  • Mimikatz
  • Rubeus
  • Incognito (Meterpreter)
  • SharpImpersonation
  • JuicyPotato / RoguePotato / PrintSpoofer
  • Kekeo

Se desideri, possiamo trasformare questa guida in un articolo GitBook nella sezione "Tools" oppure "Tutorials". Fammi sapere dove preferisci pubblicarla.