Netwrix 1Secure 提供跨数据和身份的统一可见性——免费试用14天,享有完全访问权限。开始免费试用

资源中心博客

PACRequestorEnforcement 与 Kerberos 身份验证

PACRequestorEnforcement 与 Kerberos 身份验证

Oct 9, 2023

在 2021 年 11 月的 Patch Tuesday(补丁星期二)期间,Microsoft 发布了针对 Kerberos 的新安全更新。这些更新包含新的系统事件以及 Kerberos Privileged Attribute Certificate (PAC) 中的新结构。我们一起来看看这些更新可能对运维以及基于 Kerberos 票据的攻击带来哪些影响。


有什么新内容?

根据标准的 Microsoft 更新,现有一些新的 KB 文章以及协议更新。我们将在此重点关注的是 KB5008380 ,其中详细说明了 CVE-2021-42287 的更新内容。

PACRequestorEnforcement 注册表项

这些更新包含部署阶段和强制阶段。为便于测试并加快进度,你可以在强制更新发布之前的任意时间实施强制(目前计划于 2022 年 7 月 12 日发布)。

你可以通过在 PACRequestorEnforcement 位置应用 DWORD 注册表项,来配置补丁的行为:HKEY_LOCAL_MACHINESystemCurrentControlSetServicesKdc(在你的域控制器上)。

PACRequestorEnforcement 可以具有以下取值:

VALUE

BEHAVIOR

0

Disabled — Reverts the update

1 (default)

Deployment — Adds the new PAC. If an authenticating user has the new PAC structure, the authentication is validated.

2

Enforcement — Adds the new PAC. If an authenticating user does not have the new PAC, the authentication is denied.

协议更新

2021 年 11 月的更新还包含了针对 Kerberos 以及 Active Directory 的多项协议更新;你可以在 此处 查看概览。要了解更多细节,你需要先查看 errata(勘误/修订说明),然后在 errata 中查看 diff 文档。

更新后的 PAC 结构

Privileged Attribute Certificate 用于对已认证用户的授权信息进行编码;它包含组成员信息、SID 历史以及通用的用户信息。在 2021 年 11 月的更新中,Microsoft 在 PAC 内部新增了两种数据结构:PAC_ATTRIBUTES_INFO 和 PAC_REQUESTOR。当 PACRequestorEnforcement 设置为 2 时,为使 Kerberos 票证成功,必须同时提供这两个新字段。

更新中更有意思的一点是引入了 PAC_REQUESTOR 结构的新校验。当该结构包含在 Kerberos 票据中时,KDC(域控制器)现在会验证客户端名称(cname)(也称为用户名)解析到的 SID,是否与 PAC_REQUESTOR 结构中使用的 SID 相同;前提是客户端和 KDC 位于同一域中。若不匹配,则自动吊销所使用的 TGT,且无法再使用。 仅当客户端和 KDC 位于同一域时才会发生这种情况。

这对 Golden Tickets(黄金票据)意味着什么?

Golden Ticket(黄金票据)是攻击者通过操纵 PAC 来获得对高度特权资源的长期访问权限而使用的伪造 Kerberos 票据。

当启用强制模式时,制作 Golden Tickets 的工具将被要求使用 PAC_REQUESTOR 字段,而该字段会受到域控制器的校验。这意味着,当它们都位于同一域中时,针对不存在用户的 Golden Tickets 将不再可能。不过,仍然可以在 Trust Tickets(通过信任关系进行身份验证而制作的 Golden Tickets,因为只有当该账户与域控制器位于同一域时才会完成校验)中使用不存在的用户。

新的事件(在更新说明中有详细介绍)可以为 Golden Tickets 提供进一步的线索,例如构建不良或未更新的漏洞利用代码。这些新事件应当汇总到 SIEM(如果你使用 Windows 日志进行威胁检测)。下表详细说明了不同事件:

Event ID

Name

Description

38

Requestor Mismatch

The new PAC_REQUESTOR structure was used but the client name (username) did not resolve to the SID used in PAC_REQUESTOR.

37

Ticket without Requestor

A service ticket was requested but the new PAC_REQUESTOR structure was not present.

36

Ticket without a PAC

A service ticket was requested but no PAC was present.

35


PAC without Attributes

The new PAC_ATTRIBUTE_INFO structure was not present in the PAC

更新中遇到的问题

不幸的是,在 2021 年 11 月更新的初始发布中,某些 Kerberos delegation 场景出现了故障,因此针对遇到此问题的客户发布了新的带外补丁(out-of-band patch)。DirTeam 的 Sander Berkouwer 对此撰写了一篇很不错的文章,见 这里 ,并附有可用的各个 KB 的链接。

结论

尽管这是一项很好的更新,且朝着正确的方向迈出了一步,但如果我们能继续看到微软针对 Kerberos 的进一步协议改进会更棒。例如,在各个信任(trusts)之间验证新的 PAC_REQUESTOR 结构(这应当能够消除所有不存在的用户 Golden Tickets),验证 PAC 中的成员信息确实属于解析后的用户,并且也许还能验证用户资料中的信息是否存在于 PAC 中,以及 PAC 的结构是否符合规范。增加更多原生的检测与防护措施从来都不是坏事,并将帮助企业更好地进行自我防护。

分享到

了解更多

关于作者

Asset Not Found

Joe Dibley

安全研究员

Netwrix 的安全研究员,并且是 Netwrix Security Research Team 的成员。Joe 是 Active Directory、Windows 以及各类企业软件平台与技术方面的专家;他/她研究新的安全风险、复杂的攻击技术,以及相应的缓解措施与检测方法。