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/