Introduzione a Mimikatz
Mimikatz è uno dei tool post-exploitation più noti in ambito Windows. Nato come progetto di ricerca, è diventato rapidamente uno strumento di riferimento per Red Team e penetration tester grazie alla sua capacità di interagire con il sottosistema di autenticazione di Windows.
Quali sono le principali funzionalità di Mimikatz?
Mimikatz è in grado di:
- Estrarre password in chiaro, hash e ticket Kerberos dalla memoria.
- Iniettare una Skeleton Key su un Domain Controller.
- Generare Golden Ticket.
- Effettuare attacchi dimostrativi (BSOD).
Passa all'azione: Impara a simulare e bloccare questi attacchi nel Corso Active Directory Attack & Defense.
Cos’è Mimikatz e perché è critico per Active Directory
Mimikatz è un tool scritto in C da da Benjamin Delpy in grado di agire senza sfruttare una “vulnerabilità” nel senso classico del termine. Interagisce con ciò che Windows deve necessariamente fare per funzionare: gestire credenziali in memoria, firmare ticket Kerberos, mantenere materiale crittografico necessario all’autenticazione. È proprio questa caratteristica a renderlo così potente. Non forza il sistema: utilizza meccanismi interni legittimi, ma da una prospettiva ostile.
Mimikatz è stato creato come prova di concetto sulla vulnerabilità dell’architettura di autenticazione Microsoft e da allora è diventato uno standard nei penetration test, nei red team e, purtroppo, nelle catene d’attacco reali. Funziona in fase di post-exploitation: dopo che un attaccante ha ottenuto accesso non autorizzato a un sistema, Mimikatz diventa lo strumento per estrarre credenziali, scalare privilegi e muoversi lateralmente nella rete.
Può girare sia su Windows che su Linux ed è disponibile sia a 32bit che a 64bit.
Come si usa Mimikatz: le basi
Per prima cosa, Mimikatz ha bisogno di girare con privilegi elevati. Senza diritti da amministratore (o meglio, da SYSTEM), molte funzionalità semplicemente non funzionano. Una volta avviato come amministratore, il primo comando da eseguire è sempre: privilege::debug
Questo richiede il privilegio di debug al sistema operativo, che permette a Mimikatz di interagire con la memoria di altri processi incluso LSASS (ovvero il processo Local Security Authority Subsystem Service). Se vedi Privilege '20' OK, sei a posto.
Estrarre le password con Mimikatz: sekurlsa
Il modulo più usato in assoluto è sekurlsa. Il comando chiave è: sekurlsa::logonpasswords Questo comando analizza la memoria di LSASS e restituisce le credenziali di tutti gli utenti che hanno effettuato l'accesso recentemente. L'output include username, hash NTLM, hash SHA1 e se il provider WDigest è attivo la password in chiaro. A tal proposito WDigest è un vecchio protocollo di autenticazione che Microsoft ha disattivato per default a partire da Windows 8.1 e Server 2012 R2. Su sistemi più vecchi, però, è ancora presente e attivo, e può quindi permettere all'attaccante di estrapolare password in chiaro, senza dover fare la fatica di crackarle.
Il modulo lsadump: SAM e LSA
Un'altra fonte preziosa di credenziali sono i database SAM (Security Account Manager) e LSA (Local Security Authority). Si accede tramite il modulo lsadump. Per estrarre dati dall'LSA il comando da lanciare è: lsadump::lsa /inject Per accedere al database SAM è necessario però prima scalare i privilegi da amministratore a SYSTEM. Si fa con: token::elevate e poi finalmente lsadump::sam. Questo restituisce gli hash NTLM di tutti gli account locali del sistema, utile quindi anche quando le credenziali non sono più presenti in memoria LSASS.
Attacco Golden Ticket con Mimikatz
Qui il focus si sposta su Kerberos, il protocollo di autenticazione su cui si fonda Active Directory. Per generare un Golden Ticket è necessario conoscere il SID del dominio e, soprattutto, l’hash NTLM dell’account krbtgt. Quest’ultimo rappresenta la chiave crittografica con cui vengono firmati i Ticket Granting Ticket (TGT). Se un attaccante riesce a estrarre questo hash, può creare ticket Kerberos validi per qualsiasi identità, assegnando privilegi arbitrari, inclusi quelli di Domain Admin.
Il Golden Ticket è probabilmente la tecnica più potente che Mimikatz metta a disposizione. In sostanza, ti permette di creare un ticket Kerberos falso che impersona qualsiasi utente del dominio (incluso un Domain Admin oppure un Enterprise Admin) con validità praticamente illimitata. Per crearlo hai bisogno di queste informazioni:
-
Il nome del dominio
-
Il SID del dominio
-
L'hash NTLM dell'account KRBTGT (l'account di servizio del Key Distribution Center)
-
Il nome utente che vuoi impersonificare
Il comando per generare il Golden Ticket è: kerberos::golden /domain:<dominio> /sid:<sid> /user:<utente> /rc4:<hash_krbtgt> /ptt Una volta eseguito il comando, l'attaccante sarà libero di muoversi liberamente nel dominio, anche nella situazione in cui l'Admin ti turno proceda a cambiarsi la password.
Mimikatz: descrizione tecnica dei principali comandi
Di seguito una descrizione tecnica dei principali comandi Mimikatz mostrati nell’immagine, con focus sul loro funzionamento e impatto architetturale.
Privilege Module
- privilege::debug: abilita il privilegio SeDebugPrivilege nel processo corrente. Consente l’accesso a processi sensibili come LSASS, prerequisito per l’estrazione delle credenziali in memoria.
sekurlsa – Interazione con LSASS
- sekurlsa::logonpasswords: estrae credenziali dalle sessioni di logon presenti in memoria LSASS. Può includere hash NTLM, ticket Kerberos e, in alcune configurazioni, password in chiaro.
- sekurlsa::tickets: visualizza i ticket Kerberos caricati nella memoria della sessione corrente.
lsadump – Segreti di Sistema
- lsadump::sam: effettua il dump degli hash delle password locali dal database SAM.
- lsadump::secrets: recupera segreti archiviati nella LSA, inclusi account di servizio e credenziali memorizzate nel registro.
Token Manipulation
- token::elevate: tenta l’elevazione dei privilegi impersonando token esistenti nel sistema, spesso verso contesto SYSTEM.
Credential Vault
- vault::cred: mostra le credenziali archiviate nel Windows Credential Vault, come RDP, share di rete e task schedulati.
DPAPI
- dpapi::cred: analizza e decifra blob protetti da DPAPI, meccanismo usato da Windows per proteggere segreti applicativi.
Crypto Module
- crypto::capi: interagisce con CryptoAPI per enumerare o manipolare chiavi crittografiche legacy.
- crypto::certificates: elenca informazioni sui certificati presenti nel sistema.
- crypto::keys: mostra chiavi crittografiche archiviate, incluse eventuali chiavi private accessibili.
Misc Module
- misc::memssp: installa un Security Support Provider temporaneo per intercettare credenziali in memoria.
- misc::sysinfo: mostra informazioni di sistema rilevanti per analisi post-exploitation.
- misc::wifi: elenca profili Wi-Fi salvati nel sistema, incluse eventuali chiavi memorizzate.
Kerberos Module
- kerberos::list: elenca i ticket Kerberos presenti nella sessione corrente.
- kerberos::tgt: mostra informazioni dettagliate sul Ticket Granting Ticket (TGT).
Vuoi approfondire? Scopri come questi comandi impattano la tua rete nel Corso Active Directory Attack & Defense