Iscriviti al webinar gratuito del 12 Maggio per diventare Forensic Analyst! Scopri di più
Corso Ethical Hacker: accedi alla promozione fino al 30 Aprile! Scopri di più
Quando un avversario riesce a mettere le mani su un token di sicurezza Windows appartenente a un altro utente, può fare qualcosa di estremamente pericoloso: lanciare un nuovo processo che eredita identità e privilegi di quel token. È questa l'essenza della tecnica T1134.002 – Create Process with Token, una sotto-tecnica di Access Token Manipulation che sfrutta API native come CreateProcessWithTokenW, CreateProcessAsUserA e il comando runas per generare processi in un contesto di sicurezza diverso da quello dell'attaccante.
La tecnica si colloca in due tattiche distinte della kill chain. In Defense Evasion (TA0005), il processo appena creato appare come legittimamente eseguito dall'utente impersonato, rendendo l'attività malevola trasparente ai controlli basati su identità. In Privilege Escalation (TA0004), se il token appartiene a un account con privilegi superiori — SYSTEM, amministratore locale, TrustedInstaller — l'avversario ottiene un salto di privilegi immediato senza bisogno di exploit.
I numeri confermano la versatilità della tecnica: 11 software documentati la implementano, 2 gruppi APT di primo piano la utilizzano in operazioni reali e 2 mitigazioni specifiche sono state definite per contrastarla. Il token può essere ottenuto in vari modi — duplicato tramite impersonation, rubato da sessioni interattive, o creato ex novo — ma il risultato finale è sempre lo stesso: un processo che opera con un'identità che non gli appartiene.
La creazione di processi con token altrui è una delle tecniche più immediate da replicare in laboratorio, perché sfrutta API e comandi nativi di Windows. Il punto di partenza è comprendere la catena: prima si ottiene un token, poi lo si usa per generare un nuovo processo.
Il modo più semplice per iniziare è il comando runas, integrato in ogni installazione Windows. Per lanciare un prompt dei comandi nel contesto di un altro utente locale, la sintassi è diretta:
runas /user:DOMINIO\utente cmd.exe
Questo richiede la password dell'utente target, ma dimostra il meccanismo fondamentale. In scenari red team più realistici si parte da un token già ottenuto. Con Cobalt Strike (a pagamento), dopo aver rubato un token tramite il comando steal_token, si può eseguire qualsiasi comando nel contesto dell'utente impersonato. La sequenza tipica prevede di identificare i processi con ps, selezionare un processo che gira come utente privilegiato e poi applicare steal_token <PID> seguito dal comando desiderato.
Con Metasploit Framework (open source), il modulo incognito permette di elencare i token disponibili sulla macchina compromessa e impersonarne uno:
use incognito list_tokens -u impersonate_token "NT AUTHORITY\SYSTEM" execute -f cmd.exe -i -t
Il flag -t è cruciale: indica a Meterpreter di creare il processo utilizzando il token impersonato.
Per chi preferisce PowerShell, Empire e PoshC2 (entrambi open source) offrono il cmdlet Invoke-RunAs, che wrappa la chiamata a CreateProcessWithTokenW. In Empire la sequenza prevede il caricamento del modulo di token manipulation e l'invocazione con le credenziali dell'utente target.
A livello di API Windows, un esercizio formativo consiste nello scrivere un piccolo programma C che chiama OpenProcess per ottenere un handle al processo target, poi OpenProcessToken per estrarre il token, DuplicateTokenEx per duplicarlo come token primario, e infine CreateProcessWithTokenW per lanciare il nuovo processo. Questo percorso ricalca esattamente quello che malware come Bankshot e Azorult implementano nelle loro routine.
Un caso particolarmente interessante da simulare è quello di WhisperGate: l'utilizzo di AdvancedRun.exe (un tool legittimo di NirSoft, gratuito) per eseguire comandi nel contesto del gruppo TrustedInstaller, un livello di privilegio superiore persino a SYSTEM. In laboratorio, si può replicare configurando AdvancedRun per eseguire sc.exe stop WinDefend con il parametro /RunAs 8, che corrisponde al contesto TrustedInstaller.
Per la fase di validazione, è essenziale verificare che il processo creato operi effettivamente nel contesto atteso. Lo strumento Process Explorer (gratuito, Sysinternals) mostra il SID e l'integrity level di ogni processo, confermando il successo dell'operazione.
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo