几种 dump hash 方式对比分析

在 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

典型流程

  1. 在域控上创建 shadow copy
  2. 拷贝 ntds.dit + SYSTEM hive
  3. 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,一劳永逸
相关推荐
试剂界的爱马仕16 小时前
《古董局·终局5:潮生》第 2 章:镜子的天赋
大数据·人工智能·算法
Cthy_hy16 小时前
树状数组(BIT)进阶:差分优化实现区间修改、区间查询
数据结构·python·算法
YsyaaabB16 小时前
ACM 模式通用代码模板
java·c++·python·算法
ComputerInBook17 小时前
Euclid 几何变换——仿射(affine)变换
算法·仿射变换·几何变换
一只叁木Meow17 小时前
电商 SKU 选择器:用算法实现优雅的用户交互
前端·javascript·算法
代码中介商17 小时前
红黑树完全指南:从五条性质到完整插入删除实现
数据结构·算法
JieE21217 小时前
反转链表:从双指针到递归,吃透链表反转的核心逻辑
javascript·算法
玖釉-18 小时前
旋转图像:从矩阵转置、镜像到坐标变换的系统理解
c++·windows·算法·图形渲染
fengenrong18 小时前
20260522
算法
一条大祥脚18 小时前
Codeforces Round 1099 (Div. 2) 构造|贪心|图论|还原数组
java·算法·图论