PAC 签名无效引发的域信任降级攻击
摘要 Kerberos 票据中的特权属性证书承载着用户的组成员身份和安全标识符,其完整性由 KDC 的长期密钥签名保护。然而,当 PAC 签名验证失败时,Windows 域控制器的默认行为并非一律拒绝,而是在特定配置下(尤其是跨林信任场景中)采取降级策略——忽略 PAC 签名错误,转而使用 Active Directory 中存储的组成员身份重建用户的访问令牌。攻击者可构造 PAC 被篡改或签名缺失的 TGT,利用跨林信任的 SID 过滤与选择性认证盲区,将低权限用户提升为域管理员。 PAC 签名架构与信任边界 PAC 的双签名体系 Kerberos PAC 是微软对标准 Kerberos 协议的扩展,嵌入在 TGT 和 ST 的授权数据字段中。它包含用户的 SID、组成员身份 SID 列表以及用于权限判断的额外信息。为了防止用户或恶意服务篡改 PAC 内容,微软采用了双签名机制: 服务签名:使用目标服务账户的密钥对 PAC 内容进行签名,验证该 PAC 确由 KDC 为该服务签发。 KDC 签名:使用 KDC 自身密钥对 PAC 进行二次签名,提供额外的完整性保障,防止拥有服务密钥的内部人员伪造 PAC。 这两组签名数据存储在 PAC_SIGNATURE_DATA 结构中,分别包含签名类型(如 Kerberos、HMAC_SHA1_96)、签名算法标识符和签名值本身。 PAC 结构及签名位置:…