防范方法
设置AD2012R2功能级别
我们先把Administrator
账户添加到Protected Users
用户组中,然后在mimikatz上输入以下命令
privilege::debug
sekurlsa::logonpasswords
mimikatz并没有将用户的明文密码或散列值读出,由此看出Protected Users
用户组的保护方式是有效的
安装KB2871997
KB2871997是微软用来解决PsExec
或IPC命名管道问题的补丁,可以使得本地账号不再被允许远程接入计算机系统,但系统默认的本地管理员账号为500的用户例外。即使Administrator改名,攻击者仍然可以使用横向攻击方法获得内网中其他计算机的控制权。安装KB2871997
后,配合禁用Administrator账号,以防御哈希传递攻击。
通过修改注册表禁止在内存存储明文密码
自XP以来,微软添加了一个名为WDigest的协议。该协议能够是Windows将明文密码存储在内存中,以方便用户登录本地计算机。
通过修改注册表的方式,即可解决内存中以明文存储密码的问题。在注册表添加一个键值,值为0
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
执行reg query
命令,查询该键值是否添加成功
reg query HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential
注销后,再次使用mimikatz抓取密码,此时只能抓取到Administrator的NTLM Hash,并没有获得明文密码。因为NTLM Hash是很难被破解的,所以只要设置足够强壮的Windows密码,并养成定期修改密码的习惯,就可以降低系统被彻底攻陷的可能性。
防御mimikatz
根据Debug权限确定哪些用户可以将调试器附加到任何进程或内核中。默认情况下,此权限为本地管理员Administrator所有,除非系统进程,要不然本地管理员不需要使用此权限。
mimikatz在抓取散列值和明文密码是需要使用到Debug权限(和lsass进程进行交互)。因此我们可以针对这一点进行防御。将拥有Debug权限的管理员从管理员组中删除,重启系统后,mimikatz就不能抓到明文密码了。