Service Principal Name (SPN)
服務類實際上是服務的某種通用名稱。例如,所有Web服務器都分組在“ www”類中,而SQL服務則在“ SqlServer”類中。 如果服務在自定義端口后面運行,或者您要指定它以避免任何歧義,則可以將其附加到主機名:
1.UPN很好理解那什么叫SPN在域里面?
筆者現在對SPN的理解是在域里面的服務主體的名稱叫做SPN tips: 我們處於Active Directory環境中。要了解什么是SPN,我們必須了解Active Directory中的服務概念是什么。 服務實際上是一種功能,一種軟件,可以由AD(Active Directory)的其他成員使用。例如,您可以擁有Web服務器,網絡共享,DNS服務,打印服務等。要識別服務,我們至少需要兩件事。相同的服務可以在不同的主機上運行,因此,我們需要指定主機,而計算機可以承載多個服務,因此,顯然,我們需要指定服務。 通過結合這些信息,我們可以准確地指定服務。此組合表示其服務主體名稱或SPN。看起來像這樣:
smtpSvc/Exc.7dap.club
比如有人在7dap.club域中的的Exc機器上面請求了host服務,創建了此票證
服務類實際上是服務的某種通用名稱。例如,所有Web服務器都分組在“ www”類中,而SQL服務則在“ SqlServer”類中。 如果服務在自定義端口后面運行,或者您要指定它以避免任何歧義,則可以將其附加到主機名:
SqlServer/mssql.7dap.club:1433
當然服務類肯定不止mssql和smtpSvc這里是微軟文檔的介紹。
這里有我們認識的http服務 cifs文件共享服務,dns域名解析服務,以及命令執行用到的rpc等很多,但是此列表並不詳細,比如LDAP和SqlServer
在域中有一個很特殊的SPN服務屬性叫做HOST
HOST SPN並不是真正的服務類。這是一組服務類,一種別名,將大量SPN組合在一起。它組合在一起的元素在Active Directory的“ SPN映射”屬性中定義。可以使用以下命令列出這些類:
Get-ADObject -Identity "CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=7dap,DC=club" -properties sPNMappings
因此,如果用戶曾經在WEB-SERVER-01上尋找www SPN,則Active Directory將尋找wwww / WEB-SERVER-01,但也會尋找HOST / WEB-SERVER-01。如果主機具有HOST SPN,則意味着它具有www SPN(以及許多其他主機)
這是一個獲取當前域內的所有spn的小ps腳本
$search = New-Object DirectoryServices.DirectorySearcher([ADSI]"") $search.filter = "(servicePrincipalName=*)" $results = $search.Findall() foreach($result in $results) { $userEntry = $result.GetDirectoryEntry() Write-host "Object : " $userEntry.name "(" $userEntry.distinguishedName ")" Write-host "List SPN :" foreach($SPN in $userEntry.servicePrincipalName) { Write-Host $SPN } Write-host "" }
如果我們只想看那些user啟動(或者使用)了那些服務可以用以下ps1腳本
$search = New-Object DirectoryServices.DirectorySearcher([ADSI]"") $search.filter = "(&(objectCategory=person)(objectClass=user)(servicePrincipalName=*))" $results = $search.Findall() foreach($result in $results) { $userEntry = $result.GetDirectoryEntry() Write-host "User : " $userEntry.name "(" $userEntry.distinguishedName ")" Write-host "SPNs" foreach($SPN in $userEntry.servicePrincipalName) { $SPN } Write-host "" }
參考
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc772815(v=ws.10)#service-principal-names https://dirkjanm.io/krbrelayx-unconstrained-delegation-abuse-toolkit/ https://en.hackndo.com/service-principal-name-spn/