当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Kerberos PAC 如何工作?

作者:精品下载站 日期:2024-12-14 06:17:53 浏览:13 分类:玩电脑

Kerberos PAC 如何工作?


特权属性证书 (PAC) 是 Kerberos 服务票证的扩展,其中包含有关身份验证用户及其权限的信息。当用户在 Active Directory (AD) 域中进行身份验证时,域控制器会将 PAC 信息添加到 Kerberos 票证中。 当 Kerberos 票证服务用于向其他系统进行身份验证时,它们可以从用户的票证中检索 PAC 以确定其权限级别,而无需查询域控制器。

本指南详细介绍了涉及 Kerberos PAC 的几种攻击、防御这些攻击的 PAC 验证的局限性以及 Netwrix 解决方案如何提供帮助。它还回答了有关 Kerberos PAC 的常见问题。

利用 Kerberos PAC 的攻击

由于 PAC 包含非常有价值的信息,因此它们是多种 Windows AD 攻击技术的目标。以下是一些最重要的。

权限提升攻击 (CVE-2014-6324)

当 Windows Server 版本 2012 R2 及更早版本中的 PAC 验证算法中的漏洞于 2014 年被公开披露时,PAC 成为 AD 特权提升攻击的目标。此漏洞允许攻击者为他们已入侵的任何用户帐户伪造 PAC,并且有效使该用户成为域管理员。

Windows 网络安全团队通过发布 MS14-068 更新快速解决了 CVE-2014-6324。

有关漏洞和补丁的完整信息,请阅读 Microsoft 的帖子。 Black Hat 2015 和 Adsecurity.org 上也详细介绍了这种攻击。

要测试此漏洞,您可以使用 Python Kerberos Exploitation Kit (PyKEK) 或 Kekeo。

金票和银票

金票和银票还允许攻击者在 Active Directory 攻击中利用伪造的 PAC。

黄金票证是通过窃取的 KDC 密钥创建的伪造 Kerberos 票证授予票证 (TGT)。它允许攻击者为域中的任何用户创建有效的 Kerberos TGT,并操纵该用户的 PAC 以获得额外的权限。 金票对于避免检测很有用,因为对手可以使用看似无害的帐户来执行特权活动。

同样,Silver Tickets 允许攻击者伪造 Active Directory PAC 以获取票证授予服务 (TGS) 票证。 然而,与金票不同的是,银票赋予攻击者仅对特定主机上的特定服务的权限。 TGS 票证使用服务的密码哈希进行加密,因此,如果威胁行为者窃取了服务的哈希值,他们就可以为该服务创建 TGS 票证。

有时服务帐户的权限有限。一个很好的例子是 SQL 服务帐户,它对该 SQL 服务器上托管的数据库没有系统级权限。然而,这些帐户并不安全,因为攻击者可以使用 Silver Tickets 伪造 PAC,并为权限有限的服务帐户授予额外权限,然后完全破坏他们的目标。

如下所示,金票和银票使用 RID(例如 512(域管理员)和 519(企业管理员))为用户提供特权组的成员资格。

[玩转系统] Kerberos PAC 如何工作?

PAC验证

如何围绕伪造的 PAC 实施安全性? PAC 验证可以提供帮助,但它不是万能药。

PAC 验证由注册表项 ValidateKdcPacSignature 控制,该注册表项可在 HKLMSYSTEMCurrentControlSetControlLsaKerberosParameters 中找到。将此项设置为 0 将关闭 PAC 验证。

当在 Windows 系统上启用 PAC 验证时,将根据 Active Directory 检查对该系统进行身份验证的用户的 PAC,以确保其有效性 - 但前提是满足某些条件。

具体来说,正如微软所解释的:

当 DC 的 NetLogon 服务不具有 TCB 权限并且不是服务控制管理器 (SCM) 服务时,Windows 操作系统会将 PAC 验证消息发送到该服务。当 LSA 客户端(应用程序服务器)未在本地系统、网络服务或本地服务上下文中运行时,本地安全机构子系统服务 (LSASS) 进程将向 DC 发送 PAC 验证消息;或者它没有 SeTCBprivilege(作为操作系统的一部分)。

换句话说,PAC 验证并不能阻止攻击者运行 Silver 和 Golden Ticket。 在我的测试中,无论是否进行 PAC 验证,我都能够针对目标系统利用 Silver 和 Golden Ticket。

探索用户 PAC

如果您有兴趣为用户查看 PAC,Impacket(附带脚本 getPAC.py)是一个很好的入门方法。

要在 Windows 中测试此功能,您应该查看 CommandoVM。 该工具将 getPAC.py 脚本(以及许多其他脚本)打包为可执行文件,因此您不必担心 Python 依赖性。

使用 getPAC.py 脚本,您可以定位任何用户而无需任何特殊权限并返回他们的 PAC 设置和信息:

[玩转系统] Kerberos PAC 如何工作?

正如您所看到的,该脚本返回的不仅仅是组成员身份。要了解有关这些结果、信息组密钥和 Kerberos 组成员资格的更多信息,请查看 Microsoft 有关权限属性证书数据结构的文档。

Netwrix 如何提供帮助

PAC 客户端验证和 getPAC.py 等脚本可以保护您的用户和数据免遭未经授权的访问。不幸的是,它们没有提供足够的保护,特别是如果威胁行为者使用金票和银票来伪造 PAC 攻击。

这就是 Netwrix 的端到端 Active Directory 安全解决方案的用武之地。这款威胁检测工具全面、易于使用且安全,可以帮助您:

  • 通过安全评估发现并修复安全风险。
  • 启用强密码策略并保护凭据免受高级威胁。
  • 用及时、足够的访问权限取代常设特权帐户。
  • 及时检测复杂的威胁以防止违规。
  • 验证、建立和加强安全协议。
  • 生成合规性审核所需的安全报告。
  • 自动响应预期威胁。
  • 回滚不需要的 Active Directory 删除和更改。
  • 简化全域恢复以确保连续性。

常问问题

Kerberos 中的 PAC 是什么?

特权属性证书 (PAC) 是 Kerberos 票证的一部分。它包含有关用户权限的信息,并在用户在 Active Directory 域中进行身份验证时使用。

什么是 PAC 验证?

如果在 Windows 系统上启用,PAC 验证将通过将验证用户的 PAC 与 Active Directory 进行比较来检查其有效性。不幸的是,启用 PAC 验证将无法防止金票和银票攻击。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯