在 Windows 渗透测试与红队作战中,凭证提取(Credential Dumping) 是横向移动、提权和持久化的核心环节。其中最常被操作的就是各种形式的 hash dump(主要是 NTLM NT-hash,有时还包括 LM-hash、Kerberos tickets 等)。本文将系统性地整理目前主流的几种 dump hash 方式。
主要 Dump Hash 的数据来源对比
| 来源 | 存储位置 | 可获取内容 | 是否需要用户在线登录 | 是否包含 Kerberos Ticket | 典型场景 | 检测难度(2025-2026 视角) |
|---|---|---|---|---|---|---|
| SAM | HKLM\SAM 注册表 | 本地用户 NT/LM hash | 否 | 否 | 本地提权、持久化 | 低-中 |
| LSA Secrets | HKLM\SECURITY 注册表 | 服务账号明文、DPAPI key、部分明文密码 | 否 | 否 | 服务账号复用 | 中 |
| Cached Domain Credentials (DCC/DCC2) | 注册表 + MSCache 结构 | 域用户缓存的 NT hash(限最后 N 次登录) | 否 | 否 | 非域控工作站 | 中 |
| LSASS 进程内存 | lsass.exe 内存空间 | 当前登录用户 NT hash、明文(旧版)、Kerberos tickets、WDigest 等 | 是 | 是 | 实时抓现成域管/高价值账号 | 高(EDR 重点防护) |
| NTDS.dit | 域控 %SystemRoot%\NTDS | 域内所有用户 NT hash | 否 | 否 | 域渗透终极目标 | 高(需域控权限) |
1. 通过注册表远程/本地提取(Impacket secretsdump 家族)
代表工具 :impacket-secretsdump.py(最常用)、CrackMapExec 的 --sam / --lsa、SharpSecDump 等
数据来源 :SAM + SECURITY + SYSTEM 注册表 hive
典型命令(远程):
bash
secretsdump.py -just-dc-user Administrator -just-dc DOMAIN/USER@dc-ip
secretsdump.py DOMAIN/USER@target -hashes :ntlmhash # PTH 方式
secretsdump.py -k DOMAIN/USER@target # PTT 方式
能拿到的内容:
- 本地 SAM 账号 hash(Administrator:500:aad3b435...)
- LSA Secrets(服务账号明文、机器账号密码$)
- Domain Cached Credentials(DCC2,MSCache v2/v1)
- bootKey / SysKey(解密必须的系统密钥)
优点:
- 不需要 dump 内存,行为相对隐蔽
- 可离线分析(先 reg save 导出 hive 再本地解析)
- 能稳定拿到本地所有账号 + 曾经登录过的域账号缓存
缺点:
- 无法拿到当前活跃但未缓存的域用户凭证
- 无法拿到 Kerberos tickets
检测特征(现代 EDR):
- svchost.exe / services.exe 创建大量 .tmp 文件在 %System32%
- RemoteRegistry 服务被异常启动
- 大量注册表 SAVE 操作
2. LSASS 内存提取(最经典、最危险的一类)
代表工具:
- lsassy(远程首选,高度自动化)
- Mimikatz(sekurlsa::logonpasswords / lsadump::sam / dcsync)
- nanodump / dumpert / mirrordump(绕过 PPL / EDR 签名)
- comsvcs.dll MiniDump(LOLBins 方式)
- ProcDump / TaskMgr / Process Explorer(滥用微软签名工具)
典型 lsassy 远程用法(2025-2026 仍活跃):
bash
lsassy -d DOMAIN -u USER -p PASSWORD -t 目标IP --kdcHost dc-ip
# 或结合 crackmapexec
crackmapexec smb target -u user -p pass -M lsassy
能拿到的内容:
- 当前登录用户的 NT hash / 明文(如果 WDigest 启用或旧系统)
- Kerberos tickets(TGT / TGS,.kirbi 格式)
- 有时还能拿到 PIN / DPAPI masterkey 等
优点:
- 能抓到实时在线的高价值账号(域管刚登录过就能偷)
- 直接导出可用于 Pass-the-Ticket(黄金票据/白银票据/Over-Pass-the-Hash)
- 结合 pypykatz 解析能力极强
缺点:
- 内存 dump 行为是 EDR/AV 重点监控对象(2025 年后大部分商用 EDR 都能在默认配置下拦截常见方法)
- 需要较高权限(通常 SeDebugPrivilege)
常见绕过/变种方式(2025-2026 仍在演进):
- 使用 comsvcs.dll::MiniDump(无需上传文件)
- 句柄劫持 + 权限提升
- PPL 绕过(Protected Process Light,如 lsass.exe 的保护)
- 驱动级 dump(非常危险,容易蓝屏或被直接杀)
3. 域控 NTDS.dit 提取(终极 hash 库)
代表工具:
- ntdsutil ifm(微软原生)
- impacket secretsdump -just-dc
- ntdsxtract / DSInternals
- Shadow copy + vssadmin / diskshadow
典型流程:
- 在域控上创建 shadow copy
- 拷贝 ntds.dit + SYSTEM hive
- secretsdump.py LOCAL -system SYSTEM -ntds ntds.dit
优点:一次 dump 得到全域 hash(包含所有用户、计算机账号$)
缺点:
- 必须拿到域控权限或卷影复制权限
- 文件体积大,传输慢,容易被监控
快速决策表(实战选择指南)
| 你当前的目标 | 推荐首选工具 | 次选 / 备选 | 预期隐蔽性 | 能拿 ticket? |
|---|---|---|---|---|
| 本地提权 + 拿本地管理员 hash | secretsdump | pwdump / samdump2 | ★★★★☆ | 否 |
| 抓曾经登录过的域用户(缓存) | secretsdump | cachedump / pypykatz | ★★★★☆ | 否 |
| 抓当前在线域管 / 高价值账号 | lsassy / nanodump | Mimikatz / comsvcs MiniDump | ★★☆☆☆ | 是 |
| 需要 Kerberos ticket 做 PtT / 票据传递 | lsassy | Mimikatz sekurlsa::tickets | ★★☆☆☆ | 是 |
| 已控域控,想拿全域 hash | secretsdump -just-dc | ntdsutil ifm + vss | ★★★☆☆ | 否 |
总结一句话建议
- 想稳、想快、想低调 → 先 secretsdump 走注册表路线,基本覆盖 70% 场景
- 想抓现成高价值账号 / 票据 → lsassy + 各种内存 dump 变种(做好被 EDR 打断的心理准备)
- 已经到域控 → 直接上 NTDS.dit,一劳永逸