什么是 Kerberos PAC?
Mar 17, 2023
特权属性证书(Privileged Attribute Certificate,PAC)是 Kerberos 服务票据的扩展,包含有关进行认证的用户及其权限的信息。当用户在 Active Directory(AD)域中完成认证时,域控制器会将 PAC 信息添加到 Kerberos 票据中。使用 Kerberos 票据服务对其他系统进行认证时,它们可以从用户的票据中检索 PAC,以确定用户的权限级别,而无需查询域控制器。
精选相关内容:
本指南详细介绍了几种涉及 Kerberos PAC 的攻击、使用 PAC 验证进行防御时的局限性,以及 Netwrix 解决方案如何提供帮助。此外,它还回答了有关 Kerberos PAC 的常见问题。
利用 Kerberos PAC 的攻击
由于 PAC 包含非常有价值的信息,因此它们是多种 Windows AD 攻击技术的目标。下面列出其中一些最主要的攻击。
权限提升攻击(CVE-2014-6324)
当 2014 年公开披露 Windows Server 2012 R2 及更早版本中 PAC 验证算法存在的漏洞后,PAC 成为针对 AD 权限提升攻击的目标。该漏洞允许攻击者为其已攻陷的任何用户账户伪造 PAC,并有效地使该用户成为域管理员(Domain Admin)。
Windows 网络安全团队通过发布 MS14-068 更新,迅速处理了 CVE-2014-6324。
有关该漏洞和补丁的完整信息,请阅读 Microsoft’s post。该攻击也在 Black Hat 2015 以及 Adsecurity.org 上进行了详细介绍。
要测试此漏洞,你可以使用 Python Kerberos Exploitation Kit (PyKEK) 或 Kekeo。
Golden and Silver Tickets
Golden Tickets 和 Silver Tickets 也允许攻击者在 Active Directory 攻击中利用伪造的 PAC。
Golden Ticket(黄金票据)是通过被窃取的 KDC 密钥生成的伪造 Kerberos 票据授予票据(TGT)。它使攻击者能够为域中的任意用户创建有效的 Kerberos TGT,并操纵该用户的 PAC 以获得额外权限。Golden Tickets 之所以有助于规避检测,是因为对手可以使用看似无害的账户来执行特权活动。
同样地,Silver Tickets 允许攻击者伪造用于票据授予服务(TGS)票据的 Active Directory PAC。 然而,不同于 Golden Tickets,Silver Tickets 只会赋予攻击者对特定主机上的特定服务的权限。TGS 票据使用服务的密码哈希进行加密,因此如果威胁行为者窃取了某个服务的哈希,他们就可以为该服务创建 TGS 票据。
有时,服务账户的权限是受限的。一个很好的例子是:SQL 服务账户并没有对该 SQL 服务器上托管的数据库拥有系统级权限。然而,这些账户并不安全,因为攻击者可以使用 Silver Tickets 伪造 PAC,并把额外的权限赋予具有有限权限的服务账户,然后彻底攻陷其目标。
如下面所示,Golden Tickets 和 Silver Tickets 会使用诸如 512(Domain Admins)和 519(Enterprise Admins)之类的 RID,让用户成为特权组的成员。
PAC 验证
如何在伪造的 PAC 周围实施安全措施? PAC validation 虽然它有帮助,但并非万能良方。
PAC validation 由注册表项 ValidateKdcPacSignature 控制,该项位于 HKLMSYSTEMCurrentControlSetControlLsaKerberosParameters 中。将该项设置为 0 会关闭 PAC validation。
当 PAC validation 在 Windows 系统上启用时,尝试向该系统进行认证的用户的 PAC 将与 Active Directory 进行比对,以确保其有效性——但仅在满足特定条件时才会执行。
具体而言,正如 Microsoft 所解释的那样:
当该服务不具备 TCB 特权且它并非 Service Control Manager (SCM) 服务时,Windows OS 会将 PAC validation 消息发送到 DC 的 NetLogon 服务。Local Security Authority Subsystem Service (LSASS) 进程将在 LSA 客户端(应用服务器)未在本地系统、网络服务或本地服务的上下文中运行时;或当它不具备 SeTCBprivilege(作为操作系统的一部分运行)时,向 DC 发送 PAC validation 消息。
换句话说,PAC 验证并不能阻止攻击者运行 Silver 和 Golden Tickets。根据我的测试,无论是否进行 PAC 验证,我都能够使用 Silver 和 Golden Tickets 访问目标系统。
探索用户的 PAC
如果你想查看某个用户的 PAC,Impacket 附带的脚本 getPAC.py, 是一个很好的入门方式。
如果要在 Windows 上进行测试,应该看看 CommandoVM。该工具会将 getPAC.py 脚本(以及许多其他脚本)打包成可执行文件,这样你就不必担心 Python 依赖。
使用 getPAC.py 脚本,你可以在不需要任何特殊权限的情况下定位任意用户,并返回他们的 PAC 配置和信息:
如你所见,该脚本返回的内容远不止是组成员身份。要了解这些结果的更多信息(包括组密钥信息和 Kerberos 组成员身份),请查看 Microsoft 关于以下内容的文档:Privilege Attribute Certificate data structure。
Netwrix 如何提供帮助
PAC 客户端验证以及类似 getPAC.py 的脚本可以帮助你保护用户和数据免遭未经授权的访问。遗憾的是,它们提供的防护还不够,尤其是当威胁行为者使用 Golden 和 Silver Tickets 来伪造 PAC 攻击时。
这正是 Netwrix 的端到端 Active Directory security solution 发挥作用之处。该威胁检测工具全面、易于使用且安全,可帮助你:
- 通过安全评估发现并修复安全风险。
- 启用强健的 密码策略 并保护凭据免受高级威胁。
- 用“按需(just-in-time)、恰到好处(just-enough)”的访问方式,替换长期启用的特权账户。
- 及时发现复杂威胁,防止发生数据泄露。
- 验证、建立并强化安全协议。
- 为合规审计生成所需的安全报告。
- 自动化对预期威胁的响应。
- 回滚不需要的 Active Directory 删除和更改。
- 简化整个域的恢复流程,确保业务连续性。
常见问题
Kerberos 中的 PAC 是什么?
特权属性证书(Privileged Attribute Certificate,PAC)是 Kerberos 票据的一部分。它包含有关用户权限的信息,并在用户每次对 Active Directory 域进行身份验证时使用。
什么是 PAC 验证?
如果在 Windows 系统上启用,PAC 验证将通过与 Active Directory 进行对比来检查对方用户的 PAC 是否有效。遗憾的是,启用 PAC 验证将 不能 阻止 Golden Ticket 和 Silver Ticket 攻击。
分享到
了解更多
关于作者
Joe Dibley
安全研究员
Netwrix 的安全研究员,并且是 Netwrix Security Research Team 的成员。Joe 是 Active Directory、Windows 以及各类企业软件平台与技术方面的专家;他/她研究新的安全风险、复杂的攻击技术,以及相应的缓解措施与检测方法。