跳到主要内容
项目档案命令行工具

VMkatz:从虚拟机内存快照和磁盘直接提取 Windows 凭证的红队工具(安装使用指南)

nikaiw/VMkatz:VMkatz 是一个静态二进制红队工具,用于直接从虚拟机内存快照和虚拟磁盘文件中提取 Windows 凭证(哈希、票证、密钥),避免在低带宽环境本页整理它解决什么问题、适用场景、安装方式和使用方法。

1,553RustStar 于 2026年4月16日2026年9月18日 更新

AI 总结

VMkatz 是一个静态二进制红队工具,用于直接从虚拟机内存快照和虚拟磁盘文件中提取 Windows 凭证(哈希、票证、密钥),避免在低带宽环境下 exfiltrate 完整磁盘镜像。

中文项目介绍

VMkatz 是一个专为红队渗透测试设计的命令行工具,核心价值在于解决带宽受限场景下的凭证提取问题。当攻击者已获取虚拟机存储(如 NAS 上的大量虚拟磁盘文件)但网络传输速度极低时,传统方法需下载数百 GB 的磁盘镜像,耗时数日且易被检测。VMkatz 允许直接在存储节点(ESXi 主机、Proxmox 节点、NAS)上运行,快速提取 Windows 敏感信息,包括 LSASS 内存中的 NTLM 哈希、Kerberos 票证、DPAPI 主密钥、BitLocker 密钥,以及磁盘中的 SAM 哈希、LSA 秘密、缓存域凭证和完整的 NTDS.dit 数据。 工具采用 Rust 编写,编译为约 3 MB 的静态二进制文件,支持 VMware、VirtualBox、QEMU/KVM、Hyper-V 等多种虚拟化格式,能够处理 .vmsn、.sav、.vmrs 内存快照以及 .vmdk、.qcow2、.vhdx 等虚拟磁盘。其技术实现包括:通过分层抽象统一不同格式的物理内存访问;基于 EPROCESS 结构签名扫描进行进程发现;使用页表遍历实现虚拟地址翻译;从 LSASS 进程内存中解析 9 种 SSP 凭证提供程序;以及从磁盘注册表配置单元和 NTDS.dit 数据库中离线提取哈希。所有提取操作均在本地完成,无需网络传输,极大降低了被安全检测的风险。

详细信息与使用说明

1. 项目定位与用途

VMkatz 是一个红队渗透测试命令行工具,用于从虚拟机内存快照(.vmsn、.sav、.vmrs)和虚拟磁盘文件(.vmdk、.qcow2、.vhdx 等)中直接提取 Windows 凭证。它设计为静态二进制,可在 ESXi 主机、Proxmox 节点、NAS 等存储节点本地运行,无需在目标 Windows 系统内执行。主要输出包括 NTLM/LM 哈希、Kerberos 票证、DPAPI 主密钥、BitLocker 解密密钥、SAM 哈希、LSA 秘密以及完整的 NTDS.dit 账户哈希,适用于后期渗透阶段的凭证获取与横向移动。

2. 解决的问题

在红队 engagement 中,当攻击者已控制虚拟机存储环境但网络带宽极低时,传统方法需 exfiltrate 完整磁盘镜像(可能数百 GB),耗时数天且易被 SOC 检测。VMkatz 直接在文件所在位置提取凭证,将数据量从 GB 级降至 KB 级,大幅缩短操作时间并降低暴露风险。同时,它统一了跨虚拟化平台(VMware、VirtualBox、QEMU、Hyper-V)的凭证提取流程,避免为不同格式使用不同工具。

3. 适用场景

1. 从 ESXi 主机上的 .vmsn 内存快照提取 LSASS 凭证;2. 从 NAS 或存储上的虚拟磁盘提取 SAM 哈希、LSA 秘密、NTDS.dit 数据;3. 从 Proxmox/QEMU 的保存状态或 ELF core 转储提取内存凭证;4. 从 Hyper-V 的 .vmrs 内存状态或 .vhdx 磁盘提取凭证;5. 分析 LSASS minidump(.dmp)文件;6. 从 BitLocker 加密磁盘提取 FVEK 并透明解密。所有场景均无需网络传输完整磁盘镜像。

4. 安装方式

使用 Cargo 编译:cargo build --release(可指定目标平台如 x86_64-unknown-linux-musl 用于 ESXi);或从 GitHub Releases 下载预编译静态二进制文件(约 3 MB)。在 ESXi 8.0+ 上需首次执行 esxcli system settings advanced set -o /User/execInstalledOnly -i 0 以允许非 VIB 二进制运行;若保持默认设置,可使用 tools/vmkatz_loader.py 通过匿名内存映射绕过限制。仓库中未明确给出 Windows 或 macOS 的特定安装步骤,但 Rust 工具链可跨平台编译。

5. 使用方式

直接运行 vmkatz 后跟虚拟机文件、目录或设备路径,例如:vmkatz /vmfs/volumes/datastore1/MyVM/MyVM-Snapshot1.vmsn。工具自动检测输入格式(内存快照或虚拟磁盘)并提取所有支持的凭证类型。可通过命令行选项控制提取范围,如 --ntds 仅提取 NTDS.dit,--sam 仅提取 SAM/LSA。输出包含 NTLM/LM 哈希(可用于 Pass-the-Hash)、Kerberos 票证(.kirbi/.ccache 文件可直接使用)、DPAPI 主密钥(Hashcat 模式 15300/15310/15900/15910)等。目录自动发现功能可递归扫描 VM 文件夹中的所有相关文件。

6. 实现特点

采用分层架构,通过 PhysicalMemory trait 抽象 VMware/VBox/QEMU/Hyper-V 格式,暴露连续物理地址空间。进程发现基于 EPROCESS 结构签名(ImageFileName 偏移),支持 18 个 Windows 版本偏移表(WinXP SP3 至 Win11 24H2)。页表遍历支持 4 级 x64 和 3 级 PAE,包含 TLB 缓存、大页处理和 pagefile 故障解析。LSASS 提取覆盖 9 种 SSP 凭证提供程序,使用模式匹配解析加密密钥并自动选择解密算法(3DES-CBC、AES-CBC、AES-CFB、DES-X-CBC、RC4)。NTDS.dit 采用原生 ESE 解析器,支持 8KB 和 32KB 页面大小及多种哈希格式。在 ESXi 上可通过 VMFS-5/6 解析器直接读取原始 SCSI 设备,绕过文件锁。

思维导图

VMkatz
核心功能
内存快照提取
虚拟磁盘提取
LSASS 凭证解析
NTDS.dit 解析
支持格式
VMware (.vmsn/.vmdk)
VirtualBox (.sav/.vdi)
QEMU/KVM (savevm/.qcow2)
Hyper-V (.vmrs/.vhdx)
ESXi VMFS 设备
提取内容
NTLM/LM 哈希
Kerberos 票证
DPAPI 主密钥
BitLocker FVEK
SAM 哈希
LSA 秘密
NTDS.dit 账户哈希
技术模块
分层抽象 (vmware/vbox/qemu/hyperv)
进程发现 (windows/eprocess)
页表遍历 (paging)
LSASS 提取 (lsass/)
磁盘解析 (disk/)
SAM/LSA (sam/)
NTDS 解析 (ntds/)
部署方式
Cargo 编译
下载预编译二进制
ESXi 特殊配置
Python loader 绕过

常见问题

VMkatz 与 Mimikatz 有什么区别?

Mimikatz 需要在运行中的 Windows 系统上执行,而 VMkatz 直接从离线虚拟机文件(内存快照或磁盘)提取凭证,无需在目标系统内运行,更适合红队后期渗透阶段已获取存储访问权的场景。

支持哪些虚拟化平台和文件格式?

支持 VMware(.vmsn 内存快照、.vmdk 磁盘)、VirtualBox(.sav 保存状态、.vdi 磁盘)、QEMU/KVM(savevm 状态、.qcow2 磁盘、ELF core 转储)、Hyper-V(.vmrs 内存状态、.vhdx/.vhd 磁盘)以及 ESXi VMFS 原始设备访问。

在 ESXi 上运行需要注意什么?

ESXi 8.0+ 默认禁止执行非 VIB 二进制,需先执行 esxcli system settings advanced set -o /User/execInstalledOnly -i 0 以允许运行;若保持默认设置,可使用 tools/vmkatz_loader.py 通过匿名内存映射绕过 VIB 保护限制。

能否提取 BitLocker 加密磁盘的密钥?

可以。如果内存快照包含 BitLocker 全卷加密密钥(FVEK),VMkatz 会提取并用于透明解密虚拟磁盘中的 BitLocker 卷,无需输入恢复密钥。该功能依赖于 LSASS 内存中是否存在有效的密钥材料。

提取的哈希和票证如何利用?

输出包含标准格式的 NTLM/LM 哈希,可直接用于 Pass-the-Hash 攻击;Kerberos 票证以 .kirbi 或 .ccache 文件形式输出,可导入内存或用于黄金票证攻击;DPAPI 主密钥为 Hashcat 兼容格式(模式 15300/15310/15900/15910),可用于离线解密 DPAPI 保护数据;NTDS.dit 提取的是完整的 AD 账户哈希,可用于域内横向移动。