mimikatz防御方式
限制使用Debug权限
当我们限制了Debug之后,就没有权限与lsass.exe进程进行交互读取其中存储的明文密码和hash。
正常情况下,使用mimikatz进行提权:1
2MIMIKATZ # privilege::debug
Privilege '20' OK
配置如下:
本地安全策略–>本地策略–>用户权限分配–>调试程序
域内可以将不需要执行debug的权限删除掉,这里我将本地administrator用户权限删除,并重新启动计算机。
利用mimikatz执行提权,权限提升失败
使用procdump离线读取,失败
lsass进程转储文件,提示无权限
限制使用WDigest协议
mimikatz可以通过wdigest协议读取存储在lsass进程中的明文密码:
Windows 8.1/Windows 10/Windows Server 2012 R2和Windows Server 2016已经默认禁用此协议,但是早期的操作系统如Windows 7和Windows Server 2008等需要安装补丁 KB2871997,安装完补丁后需确认 WDigest已经在注册表中被禁用,注册表项的位置为:1
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\WDigest
将Negotiate和UseLogonCredential的值都设置成0,若没有需要创建,重启计算机之后再次尝试读取密码,发现无法抓取到hash。
批处理命令为:1
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
LSASS进程保护
windows server 2012 / Windows 8.1及以后的版本操作系统已经升级了额外的LSA防护措施,来阻止不信任的进程读取LSASS进程内存或注入代码。
首先,攻击者可通过一下mimikatz命令抓取主机密码:1
sekurlsa::logonpasswords
为了避免密码被抓取,我们可以启用LSA进程守护,具体操作如下:1
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA
将runasppl值设置为1,重启计算机
清除凭据缓存
默认情况下,用户登录系统需要使用最近几次的凭证缓存进行身份验证,存放路径如下:1
HKEY_LOCAL_MACHINE\SECURITY\Cache
我们可以使用mimikatz抓取缓存凭证:1
2
3privilege::debug
token::elevate
lsadump::cache
会列出最近几次缓存用户的mscache hash,这样我们可以使用mimikatz更改该hash或者爆破。
1 | #更改密码为123456 |
修改他后,在域控制器不可用时,我们可以哟弄jack/123456进行登陆,估计实战意义不大。
默认情况下,windows会保存进10次认证的密码,配置如下:1
本地安全策略-->本地策略-->安全选项-->交互式登陆:之前登陆到缓存的次数(域控制器不可用时)
我们将缓存此时修改成0,可以避免缓存被抓取
Protected Users 安全组
限制该组用户只能使用kerberos进行认证,可防止hash和明文被抓取。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 sher10cksec@foxmail.com
文章标题:mimikatz防御方式
本文作者:sher10ck
发布时间:2021-01-06, 16:02:31
最后更新:2021-01-07, 14:53:26
原始链接:http://sherlocz.github.io/2021/01/06/how-to-prevent-mimikatz-attack/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。