在启用了 Credential Guard 的 Windows 10 / Server 2016 网络上,入侵者仍然可以通过散列或传票成功吗?

信息安全 验证 视窗 活动目录 windows-10
2021-08-19 15:04:11

总而言之:Credential Guard 是否在 Windows 10 / Windows Server 2016 机器的网络上有效地使传递哈希和传递票证攻击不可用?如果没有,您如何仍然获得哈希或票证以通过?


几年来,我一直在认真研究渗透测试和恶意攻击者方法,从我了解到的关于渗透测试和恶意攻击者方法的知识中,攻击者在渗透目标的 Windows 网络并发现未正确配置和管理以抵抗传递哈希和/或传递票证攻击。在这种情况下,入侵者很容易(使用类似 mimikatz 的工具)转储 NTLM 密码哈希和 Kerberos 凭据,这些凭据包含在内存中或最初被入侵的立足点计算机的磁盘上,并使用它们来成功横向移动并突破网络上的其他盒子。在最好的情况下,您迟早会获得通往王国的钥匙:域管理员或企业管理员的 NTLM 哈希或 Kerberos 票证。如果发生这种情况……目标就会陷入困境。

不幸的是,在 Windows 8.1、Windows Server 2012 R2、Windows 10 和 Windows Server 2016 中,微软已经实施了许多措施,试图使传递哈希和传递票证攻击更难实施。其中最雄心勃勃的被称为Credential Guard,并在客户端和 Windows Server 2016 上进入了 Windows 10 Enterprise。Credential Guard 如何在技术上工作的细节看起来有点复杂。但在高层次上,事情更直接:Windows 利用较新的 Intel 和 AMD 处理器中存在的虚拟化功能,将存在于 Windows 机器内存中的凭据存储区封装在一种特殊类型的虚拟机中。虚拟机(理论上)即使是设法获得操作系统管理员/系统权限的程序也无法渗透。因此,即使您设法将恶意软件安装到 PC 上,甚至设法将您在该 PC 上的权限一直提升到 SYSTEM,但前提是该 PC 启用了 Credential Guard,并且您尝试使用工具像 mimikatz 转储凭证存储一样,您将无法获得任何可用于传递哈希或传递票证的信息。

理论上。

因此,假设您是一名笔测试员,面对一个仅由 Windows 10 Enterprise 工作站、Windows Server 2016 服务器和 Windows Server 2016 域控制器组成的 Windows 域。全部在启用 Credential Guard 的情况下运行。如果您想使用 pass-the-hash 或 pass-the-ticket 进行横向移动,您是不是搞砸了?除了能够在凭证存储中转储散列和票证之外,攻击者还可以使用哪些其他方法来获取可以传递的散列或票证?您可以绕过或禁用 Credential Guard 吗?或者您是否面临完全放弃传递哈希/票证并尝试其他方式进行横向移动?

编辑:仅供参考,事实证明,在 7 月的 Windows 10“周年纪念更新”中,微软非常悄悄地引入了Remote Credential Guard,这显然是为了防止在您启动远程桌面连接时将您的凭据发送到远程框. (我猜,与 RDP 的受限管理模式相同,但有所改进。)来自 MS 的“有用”图表:

在此处输入图像描述

4个回答

针对普通对手(非 APT;例如网络犯罪分子),它将非常有效。但我将专注于如何绕过 Credential Guard 的问题,以便您了解所需的复杂程度。

在您提供的链接中,Microsoft 有一个描述系统各种安全环的视觉效果。

在此处输入图像描述

像大多数人一样,微软将 Hypervisor(环 -1)直接放在硬件之上。

当然,如果在他们的安全机制和硬件之间存在一层,这会破坏他们的观点并提出问题。

但是,如果我用谷歌环 -2 我没有得到任何描述更多特权的花哨的图形......

不,但你会在这里和那里提到 SMM。这通常不是您可以试验的东西,因此没有太多资源。

然而,这个视频这个幻灯片描述了低于 Hypervisor 的“环”的漏洞利用,并且可以绕过你提到的机制: .

...我们在野外遇到过系统,其中 SMRAM 被非完整性测量的 BIOS 锁定,从而防止在 CPU 处于访客模式时生成 SMI 拦截。换句话说,SMM 处理程序(作为 SMI 的结果)可以在 SMM 模式下执行,而不需要管理程序对其进行任何控制。这使得此类硬件上的管理程序可能容易受到恶意 SMM 处理程序代码的攻击。

NSA 为这种操作模式开发了多个 rootkit。来自SMM 的维基百科

按照设计,操作系统不能覆盖或禁用 SMI。由于这个事实,它是恶意 Rootkit 驻留的目标,[12][13][14] 包括 NSA 的“植入物”[15],它们具有特定硬件的单独代码名称,例如瞻博网络防火墙的 SOUFFLETROUGH,[ 16] SCHOOLMONTANA 用于同一公司的 J 系列路由器,[17] DEITYBOUNCE 用于 DELL,[18] 或 IRONCHEF 用于 HP Proliant 服务器。[19]

Credential Guard 对 pass-the-hash 攻击非常有效,因为它删除了对所有使用 NTLM 哈希的协议/API 的支持

它似乎通过在 VM 中隐藏 TGT 来防止传递票证。只有当虚拟机中的 LSA (LSAIso) 可以有效地审查票证请求时,这才是合理的,我不太确定它如何获得足够的信息来这样做。

危害主机的漏洞也可能适用于 VM。VM 方法只是缩小了攻击面,而不是消除它。仍然无法阻止键盘记录器等最微不足道的攻击。

删除 NTLM 哈希支持(尤其是 CredSSP)将迫使许多不使用 Kerberos 的应用程序/服务提示输入凭据,可能通过缺乏安全桌面保护并允许非特权恶意软件拦截的普通对话框/Web 表单凭据。这些应用程序可能正在使用没有 HTTPS 的 HTTP Basic,它将以纯文本形式向网络公开密码。(HTTP Negotiate/SPNEGO 安全工作不需要 HTTPS(没有服务器传递哈希的能力)。)为了避免在每个请求上提示输入凭据,应用程序可能会将它们缓存在自己的内存中,这比 LSASS 受保护的程度低。由于 SSO 的丢失,用户也可以选择较短的密码。

从某种意义上说,在依赖基于 NTLM 的 SSO 的环境中部署 Credential Guard 并不一定会提高安全性。

背景

Credential Guard 使用自定义的 Hyper-V 实例来存储用户凭据。仍然有一个本地安全机构的本地实例,但它通过一个特殊的安全通道与虚拟化实例通信。该频道的确切性质没有公开记录,但只有 LSASS 可以使用它。

攻击向量

几十年来,一直有人试图“突破”虚拟机并破坏虚拟机管理程序。这些攻击通常被称为虚拟机逃逸攻击。

从信息披露到任意代码执行,不同的管理程序已经证明了不同程度的成功。大多数主要的管理程序都发现了一些漏洞。

微软漏洞

针对 Hyper-V 的任意代码转义。这些攻击影响了从 Server 2008 到 Server 2016 的所有版本,包括桌面变体。

目前尚不清楚攻击者是否可以在逃离 Windows 10 来宾后从 Credential Guard 来宾中提取凭据,但“任意代码”意味着他们几乎可以尝试任何方法来这样做。

这两个 Hyper-V 漏洞均在MS17-008下公布和修补。

分析

虽然没有公开的 Credential Guard 攻击案例,但这种攻击在理论上一直是可能的。此外,之前针对 Hyper-V 的任意代码攻击表明这种攻击是完全合理的。

Credential Guard 有效地阻止了 Windows 网络中最常见的横向移动形式。这是自第一次 PtH 攻击以来微软多年来实施的最强大的技术障碍。这是一种非常强大的防御,但如果假设它完全有效并且不受妥协的影响,那就太愚蠢了。

结论

与任何健全的安全措施一样,您应该实施它并假设它可能会失败。这与纵深防御的原则是一致的,该原则旨在向攻击者设置尽可能多的有意义的障碍。

由于多种因素——Credential Guard 的潜在攻击、旧机器上缺乏支持、旧 Windows 版本缺乏可用性——在可预见的未来仍然需要保留其他 PtH 缓解措施。

是的,Credential Guard 似乎有效地保护了凭据。任何组件(trustlet、安全内核、VSM 甚至虚拟机管理程序)中的漏洞都可以成为到达隔离 LSA 的途径,这将是另一回事。但是,为了回答您提出的问题,我想说目前的实现在防止 Pass-the-hash 类型的攻击方面是有效的。我看到的唯一选择是找到一个配置错误或过时的系统来嗅探凭据。