必须确保PAC在校验环节不被绕过:安装2024年4月起的安全更新(如KB5036892)、禁用不验证PAC的旧服务、启用Kerberos事件日志审计、严格轮换krbtgt密钥并监控异常签名。
要增强 ad 环境中 kerberos 认证的安全性,必须确保 pac(privilege attribute certificate,特权属性证书)在校验环节不被绕过。微软自 2024 年 4 月起通过安全更新(如 kb5020805 及后续补丁)强化了 pac 验证逻辑,修复了 cve-2024-26248 和 cve-2024-29056 等漏洞——这些漏洞允许攻击者伪造或篡改 pac 签名,从而实现权限提升或跨林越权访问。配置的核心不是“开启 pac”,而是确保它被服务端正确验证、签名不可伪造、且验证流程不可跳过。
确保域控制器安装最新安全更新
所有域控制器(DC)必须安装 2024 年 4 月 9 日及之后发布的 Windows 安全更新(例如 KB5036892、KB5037771 等),这些补丁强制启用更严格的 PAC 签名验证机制,包括:
- 拒绝未由 KDC 使用 krbtgt 密钥签名的 PAC;
- 在跨林 TGS 请求中验证远程 KDC 的 PAC 签名链;
- 阻止使用空签名、重复签名或弱哈希算法(如 RC4)生成的 PAC。
未打补丁的 DC 仍会接受未经严格校验的 PAC,使白银票据(Silver Ticket)和 PAC 欺骗类攻击依然有效。
禁用不验证 PAC 的旧式服务配置
某些服务(尤其是自定义或老旧应用)可能未调用 LsaCallAuthenticationPackage 或未调用 KerbValidatePac API,导致跳过 PAC 校验——这是白银票据成功的关键前提。
- 检查服务是否使用标准 Windows SSPI 接口(如 AcceptSecurityContext)处理 Kerberos 票据;
- 避免手动解析 TGS 或直接解密服务密钥后放行请求;
- 对非 Microsoft 服务(如 Java 应用、OpenLDAP 后端代理),确认其 Kerberos 实现支持并启用 PAC 验证(如 MIT Kerberos 的
validate_pac = true配置)。
启用并审计 PAC 相关事件日志
Windows 默认记录 PAC 验证失败事件,但需确保审核策略已激活:
- 组策略路径:计算机配置 → 安全设置 → 高级审核策略配置 → 系统审核策略 → 登录/注销 → Kerberos 服务票证操作,设为“成功和失败”;
- 重点关注事件 ID 4769(TGS 请求)中的字段:
PAC validation status应为SUCCESS;若出现VALIDATION_FAILED或SKIPPED,说明该票据未通过 PAC 校验或服务未执行校验; - 配合 SIEM 工具筛选异常高频的 PAC 跳过事件,可快速定位存在风险的服务账户或应用。
限制 krbtgt 账户轮换间隔与监控异常签名
PAC 签名依赖 krbtgt 账户密钥,一旦泄露,攻击者可伪造任意用户的 PAC。因此:
- 每 180 天至少轮换一次 krbtgt 密钥(需执行两次:krbtgt 和 krbtgt_XXX,避免中断);
- 轮换后立即检查所有 DC 时间同步(
w32tm /query /status),防止因时间偏差导致 PAC 验证失败; - 使用 Microsoft’s DSInternals 工具定期导出并比对各 DC 上的 krbtgt 密钥哈希,发现不一致即表明存在密钥泄露风险。

















