搭靶机的时候想弄个通过哈希传递攻击的机器,但是上传mimikatz之后发现可以直接抓取到明文密码。主要是wdigest和ssp-credman这两个位置。
1. 打补丁KB2871997
于是就开始寻找解决办法。我的这台机器是win7,首先猜测可能是没有打补丁的原因,在win7 和 2008 r2 之前都是默认开启Wdigest,需要安装KB2871997补丁防止mimikatz直接抓取到明文密码,但是尝试安装发现该机器已经打了补丁。(补丁下载地址 https://www.microsoft.com/zh-TW/download/confirmation.aspx?id=42745)【另:KB2871997对于RID为500的Administrator用户(操作系统只认RID不认用户名,即使将Administrator改名也不行)和本地管理员组的域用户是没有影响的】
2. 禁用Wdigest Auth
当服务器安装 KB2871997 补丁后,系统默认禁用 Wdigest Auth ,内存(lsass 进程)不再保存明文口令,mimikatz 就读不到密码明文。但是有一些系统服务(例如IIS的SSO身份验证)在运行的过程中需要Wdigest Auth开启,所以补丁采取了折中的办法——安装补丁后可选择是否禁用Wdigest Auth。如果启用Wdigest Auth,内存中还是会保存系统的明文口令。
那么可能是开启了Wdigest Auth的原因:
将下列注册表路径的
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest
以下项的
UseLogonCredential
值修改成0或1
0:关闭Wdigest Auth
1:启动Wdigest Auth
打开注册表,发现表中并没有UseLogonCredential
这个值,所以可以成功抓取到明文密码。
采用下面第一条命令对该值进行创建,并设置为0
# 关闭Wdigest Auth
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
# 开启Wdigest Auth
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
这个时候再使用mimikatz就抓取不到wdigest的密码了,但还可以看到ssp的密码。
3. 删除用户凭证
因为不清楚这个ssp保存的是什么密码,百度了很久没有看到有人和我有同样的问题,而且我发现自己的其他机器上抓取的内容里都是没有这个值的,那么可能是我的这台机器上保存了什么内容,于是百度搜索SSP对应的是什么密码,发现了这么一句介绍:是在该机器上,最近登录到其他RDP终端的账户和密码。
那么就很清楚了,百度一下如何删除Windows下samba保存的用户名和密码,成功解决这个问题。
这个时候mimikatz就抓取不到明文密码啦,可以直接利用hash传递进行攻击啦。(如果是单纯防范可以参考 Mimikatz的多种攻击方式以及防御方式)
参考文章和一些待学习的文章: