Windows 10 怎么能没有内存中的密码?

信息安全 密码 视窗 密码管理 记忆 windows-10
2021-09-06 18:12:38

我已经读到Windows 10 没有将 mimikatz 的创建者的密码保存在内存中:

从 8.x 和 10 开始,默认情况下,内存中没有密码。

例外:

  • 当 DC 无法访问时,kerberos提供商保留密码以供将来协商;
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest, UseLogonCredential(DWORD) 设置为1时,wdigest提供者保留密码;
  • 当值Allow*HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Credssp\PolicyDefaultsHKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation,在tspkgs/ CredSSP的供应商保持密码。

当然,不是在使用Credential Guard 时

这怎么可能?Windows 如何将密码保存在内存之外?

2个回答

快速搜索出现了下面的链接。他们创建了一项名为 CredentialGuard 的新技术,该技术在虚拟化安全环境中隔离机密,而不是像以前那样将所有内容存储在 LSA 中。Mimikatz 不能再仅仅转储 lsass.exe 进程内存并解析内容。严格来说,它们仍在某些内存中,但不是我们可以轻松访问的内存。

更多:https ://technet.microsoft.com/itpro/windows/keep-secure/credential-guard

从 Windows 8.1 开始,用户密码明文通常不再保存在内存中. (如果您不熟悉 Wdigest,是的,Windows 曾经真的这样做过。默认情况下,它在 Windows 7 中仍然如此。)因此,如果您成功地将凭据转储到 Windows 8.1 机器上,您将获得NTLM v.2 散列或登录用户的 Kerberos 票证信息,但您实际上不会获得他们密码的明文。我相信,这就是您引用的文字所指的内容。当然,由于您可以(至少在许多情况下)只是传递哈希或传递票证而不必实际访问密码的明文,因此这一进步的实际效果不如地震. 而且,正如您注意到的文本部分所示,即使使用 Windows 8.1,管理员也可以启用身份验证设置,这导致密码的明文仍然保存在 LSA 中。然而,由于一些进展总比没有进展好,这是一个可喜的进步。

另一方面,Credential Guard 是一个更新和不同的东西。0rigien 对其进行了简要描述并链接到上面一篇关于它的优秀 TechNet 文章。因此,只需在此处说明它的有效位置——它仅存在于 Windows 10 上,并且仅存在于企业部署的操作系统版本中——并且配置正确,它可以阻止渗透测试人员或攻击者转储完全来自记忆。该功能利用了微软所谓的基于虚拟化的安全性在 Windows 10 中,本质上将 LSA 凭证内存存储在一个非常小、非常精简的虚拟机中(为了过度简化事情)。由于最近 Intel 和 AMD 处理器中已成为标准的技术,虚拟机甚至以管理员/系统权限运行的代码都无法访问。很漂亮。

无论如何,这就是理论。到目前为止,在 Windows 10 的早期历史中,我还没有发现任何绕过或被利用的漏洞允许在 Credential Guard 到位并允许使用推荐设置的情况下进行凭证转储。(但是,我的理解是管理员是否重新启用 Wdigest 或启用 CredSSP 委托身份验证 Credential Guard 仍将被有效停用。所以在做这些事情之前请仔细考虑。)但是我们会看到安全研究人员的反击和坏处伙计们在未来几年想出。以及微软想出了什么反制措施。