Furto di Ticket Kerberos: Ccache Files (T1558.005)
La tecnica T1558.005 – Ccache Files rientra nella tattica TA0006 (Credential Access) e sfrutta i file di cache delle credenziali Kerberos per impersonare utenti legittimi senza conoscerne la password. Il ccache è un contenitore temporaneo che custodisce il Ticket-Granting-Ticket (TGT) e i service ticket ottenuti dopo l'autenticazione iniziale, permettendo l'accesso trasparente a più servizi durante la sessione.
Su Linux, il percorso predefinito è /tmp/krb5cc_%UID% oppure /tmp/krb5.ccache, mentre la variabile KRB5CCNAME e il file /etc/krb5.conf possono ridefinire la posizione. Su macOS, la cache risiede in memoria con lo schema API:{uuid} ed è accessibile tramite le API del framework Kerberos. L'utente interagisce normalmente con kinit per ottenere il TGT e klist per elencarne il contenuto.
Un attaccante che riesca a leggere questi file — spesso con permessi laschi in /tmp — può eseguire attacchi Pass-the-Ticket riutilizzando il TGT altrui, escalare privilegi impersonando account con ruoli elevati, o convertire il formato POSIX in formato Windows (kirbi) per movimenti laterali cross-platform verso Active Directory. L'impatto è significativo perché il furto avviene senza toccare le password, aggira l'MFA post-autenticazione e produce autenticazioni Kerberos apparentemente legittime dal punto di vista del KDC, rendendo la detection un problema di correlazione comportamentale piuttosto che di firma.
L'obiettivo in un red team engagement è dimostrare la catena completa: compromissione locale → estrazione ccache → Pass-the-Ticket → movimento laterale. La premessa è avere già eseguito codice sul target Linux o macOS, tipicamente come utente non privilegiato o via escalation locale.
Su Linux, il primo passo è l'enumerazione dei ticket disponibili. Il comando klist -A mostra tutte le cache dell'utente corrente, mentre un semplice ls -la /tmp/krb5cc_* rivela i ccache di altri utenti spesso lasciati con permessi 600 ma leggibili in scenari di condivisione errata. Con privilegi di root, la copia è banale:
cp /tmp/krb5cc_1001 /tmp/stolen_ticket
export KRB5CCNAME=/tmp/stolen_ticket
klist
A questo punto ogni comando che parla Kerberos — SSH con GSSAPI, mount di condivisioni CIFS, query LDAP — userà l'identità della vittima.
Il passaggio verso Active Directory richiede la conversione del formato. Impacket (open source) è lo standard di fatto: ticketConverter.py stolen_ticket.ccache stolen_ticket.kirbi produce il formato consumabile su Windows. La suite Impacket copre anche il forging completo con ticketer.py per generare Golden/Silver Ticket dato un hash o una aesKey, e getST.py per richiedere service ticket via S4U2Self/S4U2Proxy in scenari di delegazione non vincolata.
Per scenari più realistici di lateral movement post-furto, psexec.py e wmiexec.py di Impacket consumano direttamente il ccache tramite la variabile KRB5CCNAME, evitando qualsiasi passaggio di password sulla rete.
Su macOS, l'estrazione dalla memoria è più complessa perché la cache non risiede su disco. Bifrost (open source, disponibile su GitHub del progetto TrustedSec) interagisce con le API del framework Kerberos per dumpare TGT e service ticket dal keychain di sessione, con comandi come bifrost --action askhash --user target@REALM per interrogare la cache in memoria.
In laboratorio è utile costruire un dominio Kerberos MIT con FreeIPA o un realm Active Directory con un client Linux integrato via SSSD, così da riprodurre entrambi i pattern. Ricorda di forzare la variabile KRB5_TRACE=/dev/stderr durante i test per osservare il traffico Kerberos generato dai tool e affinare la comprensione delle richieste AS-REQ/TGS-REQ risultanti.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo