明文密码和散列值抓取防范方法

一、单机密码抓取的防范方法
  
  微软为了防止用户密码在内存中以明文形式泄露,发不了补丁KB2871997,关闭了Wdigest功能。windows server 2012以上版本默认关闭Wdigest,使攻击者无法从内存中获取明文密码。对于win server 2012以下版本,通过安装KB2871997补丁,可以避免攻击者获取明文密码。
  通过查看注册表键值,可以判断Wdigest功能状态。如果该项值为“1”则为开启,即可以获取明文密码,如果该项值为“0”,则明文密码不会出现在内存中。开启和关闭Wdigest Auth命令如下:
 
(1)reg add 命令
开启Wdigest Auth
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
关闭Wdigest Auth
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
 
(2)使用powershell
开启Wdigest Auth
Set-ItemProperty -Path HKLM:SYSTEMCurrentControlSetControlSecurityProvidersWDigest -Name UseLogonCredential -Type DWORD -Value 1
关闭Wdigest Auth
Set-ItemProperty -Path HKLM:SYSTEMCurrentControlSetControlSecurityProvidersWDigest -Name UseLogonCredential -Type DWORD -Value 0
 
二、防范抓取明文密取和散列值
 
 1.设置Active Directory 2012 R2功能级别
win server 2012 R2新增了一个“受保护的用户”的用户组,只要将需要保护的用户加入该组,攻击者就无法通过mimikatz等工具抓取明文密码和散列值了。
 
此组的成员将受到针对身份验证安全威胁的额外保护。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=298939
 
 
2.安装KB28711997补丁
 
  KB28711997补丁是微软为了解决PsExec远程查看(c$)问题的补丁,能使本地账号不再被允许远程接入计算机系统,但是系统默认的本地管理员账号administrator这个SID为500的用户例外——即使将Administrator改名,该账号的SID还是500,攻击者仍然可以使用横向攻击方法获得内网中其他机器的控制权。安装28711997后,仍需要禁用默认的Administrator账号,以防御哈希传递攻击。
 
3.通过修改注册表禁止在内存中存储明文密码
 
微软在Windows Xp版本中添加了一个Wdigest协议。该协议能够使windows将明文密码存储在系统内存中,以方便用户登录本地计算机。通过修改注册表的方式可以解决内存中以明文密码存储密码的问题。
(1)reg add 命令
关闭Wdigest Auth
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
(2)使用powershell
关闭Wdigest Auth
Set-ItemProperty -Path HKLM:SYSTEMCurrentControlSetControlSecurityProvidersWDigest -Name UseLogonCredential -Type DWORD -Value 0
 
使用reg query查询该键值是否添加成功
reg query HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential
修改完成后,注销系统重新登录后,就无法利用mimikatz等密码抓取工具导出明文密码了,只能导出NTLM Hash。因为NTLM Hash一般很难破解,所以只要windows设置的密码足够复杂,并且保证定期修改密码的习惯,就可以降低系统被彻底攻陷的可能性。
 
4.防御mimikatz攻击
 
根据Debug权限确定哪些用户可以将调试器附加到任何进程或内核中。在默认情况下,此权限为本地管理员Administrator所有,除了老系统,本地管理员几乎不需要使用此权限。
mimikatz在抓取散列值或明文密码时需要使用Debug权限(因为mimikatz需要和lsass.exe进程进行交互,如果没有Debug权限,mimikatz将不能读取lsass进程)。因此,我们可以针对这一点采取进行防御措施。将拥有Debug权限的本地管理员从Administrators组中移除。重启系统后将无法再使用mimikatz进行抓取散列值和明文密码了。
 
原文地址:https://www.cnblogs.com/micr067/p/12299335.html