导语:渗透测试人员和那些进行恶意攻击的人通常都会将注意力集中在使用最简单的攻击媒介来实现其目标。
渗透测试人员和那些进行恶意攻击的人通常都会将注意力集中在使用最简单的攻击媒介来实现其目标。 比如已经存在几年的一个常见攻击方式—使用一个名为Mimikatz的工具,它能够从受损Windows系统的内存中窃取明文凭证。
受影响的系统
Windows 7和Windows Server 2008(其他旧版操作系统也很脆弱)
相比较而言新版本(如Windows 8/10和Windows Server 2012/2016)在默认情况下不容易受到攻击,但如果攻击者具有系统级权限,则可以将其重新配置(通过注册表更改)。
影响
具有管理员权限的攻击者可以从受损系统的内存窃取凭据,而内存中的凭证以明文和各种哈希格式存储。
描述
在Windows XP中,Microsoft添加了一个名为WDigest的协议的支持。WDigest协议可用于在客户端将明文凭据发送到基于RFC 2617和2831的超文本传输协议(HTTP)和简单认证安全层(SASL)应用程序。Windows将密码存储在内存中,方便用户登录到本地工作站。
在我们的实验室环境中,我们有以下系统设置:
10.10.10.4 Windows Server 2008 R2 新安装 10.10.10.6 Windows 7 新安装
首先使用域控制器运行Windows 2012 R2。
然后我们将使用CrackMapExec来演示如何从这些系统窃取凭据,即通过使用powershell来在两个目标系统上执行Mimikatz。被盗凭证如下所示:
建议
微软发布的KB 2871997可以解决这几个相关的问题。可以点击以下URL就可以直接下载:
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
安装KB后,需要修改注册表以防止凭据存储在内存中。对于单个系统,可以通过以下命令完成此修改:
Reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0
这里需要注意一下,某些IIS服务器可能已经配置使用了WDigest认证。同时我们建议在实验室环境中测试此修复程序,然后在实际中进行使用。
为了验证前面的修改是否有效,我们可以使用以下命令来检查结果:
reg query HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential
这时应该返回以下结果:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersWDigest UseLogonCredential REG_DWORD 0x0
大多数客户喜欢使用组策略来进行注册表的修改,因为它是一种集中的方法。而这一步可以通过以下步骤完成:https://technet.microsoft.com/en-us/library/cc753092(v=ws.11).aspx
打开组策略管理控制台,右键单击应包含新首选项的组策略对象(GPO),然后单击编辑。
在计算机配置或用户配置下的控制台树中,展开首选项文件夹,然后展开Windows设置文件夹。右键单击注册表节点,指向新建,然后选择注册表项。
在“ 新建注册表项”对话框中,选择“为组策略创建 ”以执行。输入以下设置:
行动: 创建 蜂巢: HKEY_LOCAL_MACHINE 关键路径: SYSTEM CurrentControlSet Control SecurityProviders WDigest 价值名称: UseLogonCredential 值类型: REG_DWORD 价值数据: 0 基础: 小数
等所有都看起来是正确的之后点击确定,新的首选项就会显示在详细信息的窗格中。现在我们可以跳过组策略间隔,这可以通过在Windows 7和2008系统上运行以下命令来完成:gpupdate
接下来,我们可以确认已经发生了变化。下面我们可以看到Windows 7系统上的一切都很好。
Windows Server 2008 R2系统上的所有内容也都很好。
现在,我们重新启动这两个系统并使用我们以前使用的相同域凭据进行登录。注册表修改不需要重新引导,但是由于凭据存储在内存中,最好的方法是刷新它们。
最后,我们重新运行CrackMapExec来验证更改是否有效。
如您所见,明文凭证不再存储在内存中。但是,NTLM哈希值仍然可以被检索。因此,强密码和双因素认证对于防止密码破解仍然很重要。同样重要的是确保一个很好的策略来减轻通过哈希攻击媒介。微软有以下几个位置可以找到关于这个主题的资源:
https://www.microsoft.com/pth https://download.microsoft.com/download/7/7/A/77ABC5BD-8320-41AF-863C-6ECFB10CB4B9/Mitigating-Pass-the-Hash-Attacks-and-therther-Credential-Theft-Version-2。 pdf
攻击者仍然可以在任何可以实现系统级权限的系统上恢复注册表修改。注册表修改不需要重新启动,防御者应监视注册表以进行未经授权的更改。