Microsoft ADCS 漏洞:安全分析
分析 Active Directory Certificate Services (ADCS) 配置风险,包括 Web Enrollment、NDES,以及评估和保护 PKI 的建议。
Microsoft Active Directory Certificate Services (ADCS) 漏洞:全面安全分析
简介
Active Directory Certificate Services (ADCS) 是 Windows Server 角色,可帮助组织构建和管理公钥基础设施 (PKI),以签发和管理安全通信及身份验证所用的数字证书。ADCS 为企业环境提供重要的密码服务,但配置不当也可能形成显著攻击面。
根据原文,截至 2025 年 8 月,安全研究人员已发现 16 种利用 ADCS 配置错误的独特权限提升技术 (ESC1–ESC16)。此数量和状态反映原文发布日期。这些攻击路径曾被用于从普通域帐户提升到高权限,包括冒充高价值帐户。
本文分析 ADCS 安全风险,重点讨论 Web Enrollment 与 Network Device Enrollment Service (NDES),并介绍降低暴露风险和安全管理 PKI 的建议。
ADCS 攻击面:了解风险
ADCS 漏洞通常源自配置错误,而非软件固有缺陷。证书模板、注册权限和服务设置可能形成攻击路径。Certipy 等公开工具可用于发现和利用某些配置问题。
攻击面包括:
- 证书模板:ADCS 提供 32 个默认模板,其中一些权限可能过于宽松。允许请求者指定主题名称的模板可能造成 ESC1 条件。
- 注册服务:基于 HTTP 的注册端点可能使组织面临 NTLM 中继攻击。
- PKI 对象权限:PKI 相关域对象的访问控制过于宽松,可能危及整个 PKI 基础设施。
后果可能包括从普通帐户提升为管理员权限,以及通过“Golden Certificate”等技术建立持久化。在混合环境中,本地配置问题也可能影响云基础设施。
Web Enrollment:应避免的严重风险
什么是 Web Enrollment?
Web Enrollment 是可选 ADCS 服务,提供 Web 界面(通常位于 `/certsrv`),让用户和计算机通过 HTTP 请求证书。该服务原本旨在简化不同林或无法直接访问域的用户的请求,但可能引入严重漏洞。
ESC8 漏洞
Web Enrollment 的主要风险是 ESC8,即针对 ADCS HTTP 端点的 NTLM 中继攻击。默认配置可能带来两个关键条件:
- HTTP 支持 NTLM 身份验证,但缺少可防止中继攻击的身份验证签名保护。
- 默认 Machine 和 DomainController 模板可能允许攻击者强制某台计算机进行身份验证后,申请代表该计算机的证书。
实际利用链示例
- 诱导身份验证:攻击者使用 Coercer 或 PetitPotam 等工具,诱导域控制器通过 NTLM 进行身份验证。
- 中继:使用 ntlmrelayx 等工具将身份验证请求中继到 ADCS Web Enrollment 服务。
- 申请证书:攻击者通过 Domain Controller 证书模板申请证书。
- 危及域:获得的证书可用于复制攻击 (dcsync),进而导致域被完全接管。
原文指出,这种攻击链无需恶意软件或零日漏洞,普通域用户帐户也可能发起。PetitPotam 可能允许域用户诱导任何活动计算机帐户(包括域控制器)进行身份验证。
为何仅禁用 NTLM 并不足够
仅在 Web Enrollment 站点禁用 NTLM 可以处理问题的一部分,但若可用更安全的替代方案实现相同功能,该服务仍是不必要的攻击面。原文建议除非存在无法通过其他方式满足的关键业务需求,否则不要部署 Web Enrollment。
Network Device Enrollment Service (NDES):高风险组件
NDES 简介
NDES 是 Microsoft 对 Simple Certificate Enrollment Protocol (SCEP) 的实现,旨在为无法通过 Active Directory 身份验证的网络设备(如路由器、防火墙和手机)签发证书。NDES 在未加入域的设备与 Microsoft Certificate Authority 之间充当桥梁。
NDES 的安全风险
1. Subject Alternative Name (SAN) 滥用
NDES 证书模板通常要求客户端提供 Subject Alternative Name (SAN),并且一般包含客户端身份验证 Extended Key Usage (EKU)。如果用户取得 NDES 密码,这种组合可能允许其申请代表任意用户的证书,并通过 PKINIT 或 SChannel 冒充该用户进行身份验证。
2. 权限提升路径
默认情况下,NDES 会生成有效期为 60 分钟的一次性密码 (OTP),每小时最多保留五个未使用密码。管理员可以通过注册表修改设置,以:
- 增大密码缓存。
- 使用静态密码替代随机 OTP。
- 完全禁用 NDES 密码。
禁用 NDES 密码可能形成从无访问权限到整个林被攻陷的攻击路径。
3. NTLM 中继漏洞
通过 HTTPS 托管且未启用 Channel Binding 的 NDES 服务器,也可能受到类似 ESC8 的 NTLM 中继攻击。
4. 设备身份验证难题
NDES 会为没有网络帐户的设备签发证书,这在可用性和安全性之间形成固有矛盾,也使得难以确保不会向恶意主体签发证书。
Microsoft 对风险的说明
Microsoft 承认这些安全风险,并建议使用 NDES policy module 增加身份验证。即使使用该模块,NDES 仍然难以安全配置。原文引用 Microsoft 的说明:“安全运行 NDES 的关键在于,与大多数安全解决方案一样,证书注册按预期工作并不代表工作已经完成。”建议除非绝对必要,否则避免部署 NDES;若无法避免,应实施全面的安全控制。
根本原因:ADCS 配置复杂
上述风险反映出更广泛的问题:ADCS 很难安全配置。大量配置选项、证书模板和相互依赖关系增加了出错机会。主要配置风险包括:
- 证书模板的注册权限过于宽松。
- 允许请求者指定主题名称的模板 (ESC1)。
- 缺乏适当保护的 HTTP 注册端点 (ESC8)。
- 证书和 CA 使用较弱的加密设置。
- PKI 相关域对象访问控制不足 (ESC5)。
- 允许请求者指定应用策略的架构版本 1 模板 (CVE-2024-49019)。
原文指出,这些配置问题在渗透测试和安全评估中经常出现。
现代替代方案:使用 Securetron 解决方案保护 PKI
PKI Trust Cloud (SaaS)
PKI Trust Cloud 是 SaaS PKI 管理解决方案,可减少维护本地 ADCS 基础设施的需求。原文列出的能力包括:
- 密码敏捷性和后量子密码准备能力。
- 抗钓鱼 MFA。
- 47 天 TLS 证书生命周期自动化。
- 高级证书发现。
- 证书到期智能通知服务。
PKI Trust Manager(本地部署)
对于需要本地 PKI 管理的组织,PKI Trust Manager 提供可补充和增强 ADCS 部署的功能:
- 智能证书生命周期管理。
- 自动创建和续期证书。
- 多平台集成,例如连接本地 PKI 与 Azure Key Vault。
- 在混合环境中实施企业策略。
- 通过 SCEP、EST、ACME 和 RESTful API 实现自动化。
PKI Trust Auditor:持续安全评估
PKI Trust Auditor 可审计 ADCS 基础设施,提供以下功能:
- 自动发现 Active Directory 中的证书颁发机构。
- 执行连接、配置、加密、模板和运维审计。
- 针对多层 PKI 环境提供 28 项以上控制。
- 生成 JSON、CSV、Web 和控制台报告。
- 提供包含发现结果、证据和可执行修复建议的管理层报告。
- 通过 JSON 或 CSV 输出集成 SIEM,实现持续监控和实时告警。
PKI Trust Auditor 作为免费社区工具提供。原文将其用于定期评估和长期跟踪 PKI 安全趋势。
建议采取的行动
1. 立即审计现有 PKI 环境
使用 PKI Trust Auditor 评估 ADCS 基础设施并识别:
- 配置错误的证书模板。
- 存在漏洞的注册服务。
- 加密弱点。
- 运维风险。
- 合规差距。
2. 移除 Web Enrollment
如果已部署 Web Enrollment,除非存在绝对必要的业务需求,否则应禁用。原文将 ESC8 列为该服务的严重安全风险。
3. 评估并移除 NDES
评估 NDES 是否确有必要。如需保留,请实施严格安全控制,包括:
- 强制使用带额外身份验证的 policy module。
- 在 HTTPS 上实施 Channel Binding。
- 严格管理 OTP 策略。
- 定期执行安全审查。
原文优先建议尽可能避免部署 NDES。
4. 实施现代 PKI 管理
- 云优先组织:评估 PKI Trust Cloud (SaaS),以减少本地基础设施需求。
- 混合或本地环境:评估 PKI Trust Manager,以自动化并保护证书生命周期管理。
5. 建立持续监控
使用 PKI Trust Auditor 持续执行安全评估,并将 JSON 或 CSV 数据输出到 SIEM,以支持实时告警和趋势分析。
后续步骤
Active Directory Certificate Services 的安全不应依赖运气。ADCS 配置错误可能形成严重且常被利用的攻击面。评估您的环境,识别并修复 Web Enrollment、NDES 和其他高风险配置,根据需要考虑 PKI Trust Cloud 或 PKI Trust Manager,并建立持续监控。
不要等到渗透测试,甚至实际安全事件发生后,才发现 PKI 漏洞。主动评估和修复有助于防范专门寻找 ADCS 错误配置的攻击者。
联系 Securetron,了解 PKI Trust Cloud、PKI Trust Manager 和免费的 PKI Trust Auditor 社区工具。
结论
Microsoft ADCS 提供重要的 PKI 能力,但配置错误可能带来严重安全风险。Web Enrollment 和 NDES 尤其需要谨慎评估;除非确有必要,否则应避免使用,如部署则必须配备全面控制。PKI Trust Cloud 和 PKI Trust Manager 等现代方案提供证书管理能力,PKI Trust Auditor 则可帮助持续评估安全状况。主动管理 PKI 有助于增强安全态势并降低运维风险。