<% dim ModuleName,InfoID,ChannelShortName,CorrelativeArticle,InstallDir,ChannelDir,Keyword,PageTitle,ArticleIntro,Articlecontent Keyword=stripHTML("Mimikatz,Windows,密码") PageTitle=stripHTML("如何防止Mimikatz「获取」Windows密码") ArticleIntro=stripHTML("黑客总是在用最简单的攻击方式来实现他们的目的,比如用已经存在了好多年的工具——Mimikatz(哈密瓜),它可以从系统内存中轻松获取到明文密码。") Articlecontent=stripHTML("         受影响的系统  Windows 7和Windows Server 2008(老系统也受影响)。  最新的Windows 8 / 10 、Win…") ModuleName = stripHTML("netadmin") InfoID = stripHTML("227426") ChannelShortName=stripHTML("网管") InstallDir=stripHTML("http://www.77169.com/") ChannelDir=stripHTML("netadmin") %> 如何防止Mimikatz「获取」Windows密码 - 华盟网 - http://www.77169.com
您现在的位置: 华盟网 >> 网管 >> 疑难技巧 >> 正文

[图文]如何防止Mimikatz「获取」Windows密码

2016/6/27 作者:东二门陈冠希 来源: 网络收集
导读 <% if len(ArticleIntro)<3 then Response.Write Articlecontent 'Response.Write "Articlecontent" else Response.Write ArticleIntro 'Response.Write "ArticleIntro" end if %>

      

  受影响的系统

  Windows 7和Windows Server 2008(老系统也受影响)。

  最新的Windows 8 / 10 、Windows Server 2012 / 2016原本是不受影响的,但是高权限的黑客可以通过修改注册表来实现这样的攻击

  风险

  黑客拥有系统管理员权限,就能从内存中获取登录认证信息(明文/各种哈希格式)。

  描述

  在Windows XP中,Microsoft增加了对“WDigest”协议的支持。该协议基于RFC 2617和2831。客户端用该协议向HTTP和SASL应用发送明文凭证,Windows会将密码缓存在内存中,便于用户登录本地工作站。这也就是利用Mimikatz工具进行攻击的基础了。

  演示

  我们在实验环境中设置了如下系统:

   图片1.png

  我们的域控服务器运行Windows 2012 R2系统。

  我们用CrackMapExec(https://github.com/byt3bl33d3r/CrackMapExec)来模拟如何从这些系统中获取认证信息。在服务器上通过powershell来执行Mimikatz,获取的认证信息如下。非常明了!是明文的:

  图片2.png

  建议

  Microsoft先前就发布了KB 2871997补丁,就是用于解决该问题,以及相关的另外几个问题的。有需要的可以点击下面的链接下载:

  Windows 7 x86  https://download.microsoft.com/download/9/8/7/9870AA0C-BA2F-4FD0-8F1C-F469CCA2C3FD/Windows6.1-KB2871997-v2-x86.msu

  Windows 7 x64  https://download.microsoft.com/download/C/7/7/C77BDB45-54E4-485E-82EB-2F424113AA12/Windows6.1-KB2871997-v2-x64.msu

  Windows Server 2008 R2 x64 Edition  https://download.microsoft.com/download/E/E/6/EE61BDFF-E2EA-41A9-AC03-CEBC88972337/Windows6.1-KB2871997-v2-x64.msu

  上述补丁安装过后,我们还需要修改注册表,防止认证信息被缓存在内存中。用下面的命令就能完成修改:

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0

  值得一提的是,某些IIS服务器可能会配置使用WDigest身份认证。我们建议先在实验环境中测试上述修复方案,如果没有问题再更新到生产环境中。

  我们可以通过如下命令来测试修改是否生效:

reg query HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential

  如果成功,系统应该会返回如下内容:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest

UseLogonCredential    REG_DWORD    0x0

  很多用户更喜欢通过组策略(Group Policy)来修改注册表,按照微软给出的步骤操作即可(点击这里):

  打开组策略管理控制台(Group Policy Management Console),右键单击组策略对象(Group Policy objec),然后点击编辑(Edit)。

  图片3.png

  在控制台中,计算机配置(Computer Configuration)或者用户配置(User Configuration)下,打开预设(Preferences)文件夹,再打开窗口设置文件夹(Windows Settings),右键单击注册表(Registry),然后新建一个注册表,选择“注册项(Registry Item)”。

  图片4.png

  在新建注册表项对话框中,下拉菜单中选择“Creat(创建)”,输入如下数据:

  图片5.png

          图片6.png

  设置好点击“确认”,新添加的项就会显示在右边的目录中。

  在Windows 7和2008系统中执行下面这句命令(跳过组策略刷新间隔):

gpupdate

  现在来验证一下修改是否完成,如下图说明我们在Windows 7中修改成功。

  图片7.png

  Windows Server 2008 R2系统中看起来是这样的:

  图片8.png

  现在我们重启两台电脑,然后使用先前的域登录凭证登录系统。修改注册表其实是不需要重启电脑的,但因为登录凭证是缓存在内存中的,所以还是需要重启清理一下。

  最后我们再用CrackMapExec(https://github.com/byt3bl33d3r/CrackMapExec)工具尝试看看是不是能获取到登录凭证。

  图片9.png

  如你所见,我们已经不能从内存中获取到明文凭证了。

  当然,还是可以看到NTLM hash。由此可见,强密码和双因子认证是防止认证密码被破解的重要手段。另外,我们也需要较好的策略来防止哈希传递攻击。相关这个问题Microsoft还有更多相关的资源可以提供查阅:

  1、https://www.microsoft.com/pth

  2、https://download.microsoft.com/download/7/7/A/77ABC5BD-8320-41AF-863C-6ECFB10CB4B9/Mitigating-Pass-the-Hash-Attacks-and-Other-Credential-Theft-Version-2.pdf

  拥有系统权限的攻击者仍然能通过恢复注册表来实现攻击,所以仍要关注注册表的未授权更改情况。

  译者注:

  通过这样的手段,虽说不能完全阻止黑客,但是至少能给黑客制造无数的麻烦,非常提倡这么做。



  • 上一篇网管:

  • 下一篇网管: 没有了