几种 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,一劳永逸
相关推荐
放下华子我只抽RuiKe52 小时前
算法的试金石:模型训练、评估与调优的艺术
人工智能·深度学习·算法·机器学习·自然语言处理·数据挖掘·线性回归
oem1102 小时前
C++中的享元模式实战
开发语言·c++·算法
流云鹤2 小时前
每日一题0316
算法
leonkay3 小时前
Golang语言闭包完全指南
开发语言·数据结构·后端·算法·架构·golang
颜酱4 小时前
BFS 与并查集实战总结:从基础框架到刷题落地
javascript·后端·算法
casual~4 小时前
第?个质数(埃氏筛算法)
数据结构·c++·算法
仰泳的熊猫5 小时前
题目2308:蓝桥杯2019年第十届省赛真题-旋转
数据结构·c++·算法·蓝桥杯
hssfscv5 小时前
力扣练习训练2(java)——二叉树的中序遍历、对称二叉树、二叉树的最大深度、买卖股票的最佳时机
java·数据结构·算法
y = xⁿ6 小时前
【LeetCodehot100】二叉树大合集 T94:二叉树的中序遍历 T104:二叉树的最大深度 T226:翻转二叉树 T101:对称二叉树
后端·算法·深度优先
不想看见4046 小时前
Search a 2D Matrix II数组--力扣101算法题解笔记
数据结构·算法