我已经阅读了一些描述 Windows Credential Guard 的博客:它是如何工作的以及它提供了哪些安全优势。
但是,其中一些提到 Windows 可以使用对虚拟安全模式 (VSM) 的 RPC 调用来“访问”凭据。
但是,如果 Windows 操作系统能够与运行在虚拟机管理程序上的 VSM(Credential Guard)通信,为什么具有本地管理权限的攻击者不能这样做呢?
注意:如果有关 Windows Credential Guard 的某些详细信息有误,请纠正我。
我已经阅读了一些描述 Windows Credential Guard 的博客:它是如何工作的以及它提供了哪些安全优势。
但是,其中一些提到 Windows 可以使用对虚拟安全模式 (VSM) 的 RPC 调用来“访问”凭据。
但是,如果 Windows 操作系统能够与运行在虚拟机管理程序上的 VSM(Credential Guard)通信,为什么具有本地管理权限的攻击者不能这样做呢?
注意:如果有关 Windows Credential Guard 的某些详细信息有误,请纠正我。
首先,了解 Windows Credential Guard 保护和不保护的内容很重要。它确实保护了已用于登录当前系统的域凭据,因此 Mimikatz 等工具不能只是转储 LSASS 并以可用于转向网络上其他系统的格式获取缓存的凭据。它还保护已用于 RDP 的域凭据。它不保护本地帐户、Kerberos 服务票证(虽然 Kerberos TGT 受到保护)、摘要凭据或缓存的登录密码验证器(这些是哈希,而不是可用的凭据)。
WCG 是 Windows 10 中新的基于虚拟化的安全 (VBS) 功能的一部分。它的工作方式是使用 Hyper-V 管理程序同时运行主操作系统和安全的辅助操作系统。安全辅助操作系统称为虚拟安全模式 (VSM),它由安全内核模式 (SKM) 和隔离用户模式 (IUM) 组成。实际上,您可以将 VSM 视为 LSA 的一种隔离版本,在操作系统之外运行。
正确运行 VSM 的关键安全要求之一是启用安全启动。启用此功能后,从 Windows 引导加载程序到 Hyper-V 管理程序再到 SKM 和 IUM 的所有代码片段都通过签名的信任链得到保护。由于安全 VM 启用了许多安全功能(SMEP、TPM、IOMMU/VT-d、SLAT),因此如果没有某种 SMM 或硬件漏洞,就不可能在安全 VM 上执行代码。由于正常的操作系统(攻击者将获得代码执行)本身由 Hyper-V 单独虚拟化,因此它与安全 VM 完全隔离,只能通过暴露的 API 对其进行影响。
因此,访问存储在 VSM 中的数据的唯一方法是通过公开的 API。这些 API 仅对正常操作系统中的内核 (ring0) 公开。WCG 的主要运作原理是它就像一个预言机。您要求它使用缓存的凭据为特定系统生成远程登录令牌,它会这样做。您看不到缓存的凭据,也无法使用生成的令牌来恢复缓存的凭据或生成其他登录令牌。您也不能使用它来生成恶意令牌,例如 kerberos 金票,这在过去可以通过 Mimikatz 等工具实现。
您可能会感兴趣的未来阅读: