Active Directory Certificate Services(AD CS)攻击基础
一、引言
在现代企业网络环境中,Active Directory Certificate Services(AD CS) 是微软提供的一项关键服务,用于构建和管理公钥基础设施(PKI)。AD CS通过颁发和管理数字证书,支持多种安全场景,例如智能卡登录、Wi-Fi/VPN认证、加密文件系统(EFS)以及自动化证书注册。然而,AD CS的复杂性和配置灵活性使其成为攻击者的潜在目标。一旦配置不当,攻击者可以利用AD CS的漏洞迅速从普通域用户提权至域管理员,威胁整个域环境的完整性。
二、AD CS攻击简介
2.1 AD CS的核心功能
AD CS是Active Directory环境中用于管理数字证书的核心组件,其主要功能包括:
- 证书颁发机构(CA):负责生成、颁发和撤销数字证书。
- 智能卡登录:通过证书实现高安全性的用户认证。
- Wi-Fi和VPN认证:利用证书确保设备和用户的安全连接。
- 加密文件系统(EFS):为文件提供基于证书的加密保护。
- 自动化证书注册(Autoenrollment):简化证书的分发和管理流程。
- 网络设备注册服务(NDES):支持非域设备(如路由器)获取证书。
- Web Enrollment:通过Web界面提供证书申请功能。
这些功能使AD CS成为企业安全基础设施的重要组成部分,但也因其复杂性带来了潜在风险。
2.2 AD CS攻击的威胁
AD CS攻击的核心目标是利用CA服务或证书模板的配置漏洞,伪造高权限用户(如域管理员)的身份,从而获取对域控制器的完全控制。常见的攻击场景包括:
- 伪造Kerberos票据(TGT):通过伪造用户身份获取域内任意服务的访问权限。
- 权限提升:从低权限用户(如普通域用户)提权至域管理员。
- 持久化攻击:利用证书实现长期的隐秘访问。
由于AD CS的广泛部署(尤其在大型企业中),攻击者只需满足少量条件即可实施高危攻击。因此,深入了解AD CS攻击的条件和原理对红蓝双方都至关重要。
三、AD CS攻击的前提条件与环境特征
要成功实施AD CS攻击,攻击者需要满足一系列网络、权限和配置条件。以下是详细的前提条件分析。
3.1 网络层面前提
攻击者需要在目标域环境中获得初始立足点(Foothold),这通常包括以下情况:
- 域内用户凭据:攻击者通过钓鱼、密码喷洒或漏洞利用获取普通域用户账户。
- 普通域权限:如域用户组(Domain Users)的默认权限。
- 机器权限:控制域内某台工作站或服务器的本地管理员权限。
- 网络连通性:攻击者需要与目标CA服务器通信,通常通过以下协议:
- HTTP/HTTPS:用于访问Web Enrollment服务(如
certsrv
)。 - DCOM/RPC:用于与CA服务器交互或执行证书请求。
- HTTP/HTTPS:用于访问Web Enrollment服务(如
如果目标网络启用了防火墙或网络分段,攻击者可能需要进一步利用代理(如SOCKS)或横向移动技术来确保通信畅通。
3.2 AD CS部署特征
目标环境中必须部署AD CS,且包含以下组件之一:
- 企业CA(Enterprise CA):与Active Directory深度集成,允许基于域用户权限的证书申请。
- Web Enrollment服务:通过Web界面(如
https://<CA-Server>/certsrv
)提供证书申请功能,通常是攻击的切入点。 - 网络设备注册服务(NDES):允许非域设备申请证书,某些场景下可能被滥用。
- 证书模板:企业CA的核心组件,定义了证书的用途、权限和属性。攻击者通常针对配置不当的模板展开攻击。
3.3 配置漏洞(攻击的关键)
AD CS攻击的成功往往依赖于目标环境的配置错误。以下是常见的漏洞类型:
3.3.1 弱权限控制的证书模板(Misconfigured Certificate Templates)
证书模板是AD CS攻击的核心目标。以下配置错误可能导致模板被滥用:
- 低权限用户可注册:模板允许
Authenticated Users
或低权限组(如Domain Users)申请证书。 - 启用高危EKU:模板包含
Client Authentication
(客户端认证)或Smartcard Logon
(智能卡登录)扩展密钥用法(EKU),可用于Kerberos认证。 - 支持ALT UPN:模板允许在证书的
Subject Alternative Name(SAN)
字段中指定任意用户主名称(UPN),从而伪造高权限用户身份。 - 自定义SAN:攻击者可以自由指定SAN字段,构造恶意证书。
攻击场景(ESC1):攻击者利用支持Client Authentication
且允许低权限用户申请的模板,请求包含域管理员UPN的证书,进而通过PKINIT协议获取域管理员的TGT。
3.3.2 证书模板滥用(ESC系列漏洞)
SpecterOps的研究团队提出了ESC(Exploitable Security Configuration)系列漏洞,总结了AD CS中常见的模板滥用场景。以下是主要漏洞类型:
漏洞编号 | 条件 | 描述 |
---|---|---|
ESC1 | 模板允许Authenticated Users 请求,EKU包含客户端认证 | 攻击者可申请包含任意UPN的证书,用于伪造Kerberos TGT。 |
ESC2 | 模板允许“任意主体”注册,支持自定义UPN | 攻击者可伪造任何用户身份,包括域管理员。 |
ESC3 | 模板允许签名证书用于身份认证 | 攻击者可利用签名证书执行S4U2Self/S4U2Proxy攻击。 |
ESC6 | 攻击者可写入危险模板属性 | 通过修改模板配置实现横向移动或权限提升。 |
ESC8 | CA允许任意模板申请 | 攻击者可利用未授权模板注册高权限证书。 |
3.3.3 Web Enrollment服务漏洞
Web Enrollment服务(certsrv
)通常通过HTTP/HTTPS提供证书申请功能。如果该服务未启用身份验证或配置不当,攻击者可能通过以下方式滥用:
- 使用工具如
certreq
或certutil
直接申请证书。 - 结合
PetitPotam
和NTLM Relay
攻击,强制CA服务器向攻击者控制的服务器发起认证,窃取凭据或证书。
3.3.4 CA服务账户权限错误
CA服务器的权限配置不当可能导致严重后果,例如:
- CA服务以域管理员账户运行:攻击者可直接提取高权限凭据。
- CA服务账户拥有过多权限:如对域对象的写权限,可用于提权或持久化。
3.4 工具支持的环境
AD CS攻击依赖于成熟的工具链和域环境的默认配置:
- AD CS服务启用:目标域内至少存在一台CA服务器。
- Kerberos认证:Active Directory默认使用的认证协议,支持PKINIT(基于证书的Kerberos认证)。
- 常用工具:
- Certify:用于枚举CA服务器和证书模板。
- Certipy:支持证书申请、滥用和Kerberos票据生成。
- Rubeus:执行PKINIT认证,获取TGT。
- Mimikatz:提取凭据或执行后续攻击。
四、AD CS攻击的基本原理与典型攻击链
4.1 攻击原理概述
AD CS攻击的核心在于利用CA服务或证书模板的配置漏洞,生成伪造的高权限证书。攻击者通过以下步骤实现提权:
- 枚举环境:识别CA服务器、可用模板和权限配置。
- 申请恶意证书:利用弱权限模板,请求包含高权限用户(如域管理员)UPN的证书。
- 伪造身份:使用恶意证书通过PKINIT协议获取Kerberos TGT。
- 权限提升:利用TGT访问域控制器或其他高价值目标。
4.2 典型攻击链:ESC1场景
以下是一个基于ESC1漏洞的完整攻击流程,假设攻击者已获得普通域用户凭据:
- 获取初始凭据:通过钓鱼或漏洞利用获得普通域用户账户(如
user1@domain.local
)。 - 枚举证书模板:使用
Certify
运行以下命令,枚举CA服务器和可用模板:
输出显示存在一个名为UserCert的模板,支持Certify.exe /ca:ca.corp.local\Corp-CA /enum
Client Authentication
,允许Authenticated Users
申请。 - 确认漏洞:检查模板是否允许自定义SAN字段。
- 申请恶意证书:使用
Certipy
请求包含域管理员UPN的证书:
输出为一个PFX格式的证书文件。certipy req -u user1@domain.local -p password -ca Corp-CA -template UserCert -upn admin@domain.local
- 执行PKINIT认证:使用
Rubeus
将证书转换为Kerberos TGT:
输出为域管理员的TGT。Rubeus.exe asktgt /user:admin@domain.local /certificate:user1.pfx
- 访问域控制器:使用TGT通过
Mimikatz
或其他工具访问域控制器,提取所有域凭据:mimikatz.exe "sekurlsa::logonpasswords" "exit"
结果:攻击者从普通域用户提权至域管理员,获得对整个域环境的完全控制。
五、优化与高级攻击策略
5.1 提高攻击隐蔽性
为避免触发防御机制(如EDR或SIEM),攻击者可优化以下方面:
- 减少网络指纹:通过代理(如
proxychains
)隐藏请求来源。 - 绕过监控:使用混淆后的工具或自定义
Certipy
脚本,避免特征检测。 - 清理日志:在申请证书后,删除或修改CA服务器的日志记录(如
Event ID 4886
)。
5.2 结合其他攻击向量
AD CS攻击可与其他技术结合,形成更复杂的攻击链:
- NTLM Relay:利用
PetitPotam
强制CA服务器发起NTLM认证,结合Web Enrollment服务窃取凭据。 - Golden Ticket:在获取域管理员TGT后,生成长期有效的Golden Ticket以实现持久化。
- Pass-the-Ticket:将TGT传递到其他攻击节点,扩大攻击范围。
5.3 防御与缓解措施
防御者可通过以下措施降低AD CS攻击的威胁:
- 加固证书模板:
- 禁用不必要的模板,限制
Authenticated Users
的申请权限。 - 移除高危EKU(如
Client Authentication
)或禁止自定义SAN。
- 禁用不必要的模板,限制
- 限制CA服务权限:
- 确保CA服务以低权限账户运行,避免使用域管理员账户。
- 启用监控:
- 监控CA服务器的异常证书申请事件(如
Event ID 4887
)。 - 检查Kerberos认证日志,检测异常的PKINIT请求。
- 监控CA服务器的异常证书申请事件(如
- 网络隔离:
- 限制CA服务器与普通工作站的直接通信,启用强认证。
- 定期审计:
- 使用工具如
PingCastle
或BloodHound
定期扫描AD CS配置,识别潜在漏洞。
- 使用工具如
六、总结
AD CS攻击是现代域环境渗透测试中的高级技术,利用了企业CA和证书模板的配置缺陷,进而为攻击者提供了从普通域用户到域管理员的快速提权路径。通过深入理解AD CS的配置、漏洞和攻击链,红队可以更高效地发现和利用漏洞,而蓝队则可以采取加固措施降低风险。