0X01 SPN
服務主體名稱(SPN)是Kerberos客戶端用於唯一標識給特定Kerberos目標計算機的服務實例名稱。Kerberos身份驗證使用SPN將服務實例與服務登錄帳戶相關聯。如果在整個林中的計算機上安裝多個服務實例,則每個實例都必須具有自己的SPN。如果客戶端可能使用多個名稱進行身份驗證,則給定的服務實例可以具有多個SPN。例如,SPN總是包含運行服務實例的主機名稱,所以服務實例可以為其主機的每個名稱或別名注冊一個SPN。
0x02 SPN格式
SPN = serviceclass “/” hostname [“:”port] [“/” servicename]
serviceclass 服務組件名稱
hostname 計算機名和域
0x03 常見的SPN服務
setspn.exe -T kuaile -q */* //查找域kuaile的所有SPN服務

以CN開頭的每一行代表一個帳戶,其下的信息是與該帳戶相關聯的SPN
對於上面的輸出數據,機器帳戶(Computers)為:
- CN=DC1,OU=Domain Controllers,DC=test,DC=com
- CN=COMPUTER01,CN=Computers,DC=test,DC=com
域用戶帳戶(Users)為:
- CN=krbtgt,CN=Users,DC=test,DC=com
- CN=MSSQL Service Admin,CN=Users,DC=test,DC=com
注冊在域用戶帳戶(Users)下的SPN有兩個:kadmin/changepw和MSSQLSvc/DC1.test.com
MSSQL 服務的示例代碼如下:
MSSQLSVC /computer1.sun.com:1433
MSSQLSVC MSSQL服務
computer1.sun.com 主機名是computer1 域名是sun.com
端口是1433
Exchange 服務的實例代碼如下:
exchangeMDB/EXCAS01.sun.com
RDP如下
TERMSERV/EXCAS01.sun.com
WSMan/WinRM/PSRemoting
WSMAN/EXCAS01.sun.com
0x04 進行SPN掃描的powershell腳本
Powershell-AD-Recon 提供了一系列的服務與服務登錄賬號和運行服務之間的對應關系,鏈接如下:https://github.com/PyroTek3/PowerShell-AD-Recon
利用powerview 進行掃描
Get-NetUser -SPN //獲取當前目標域中所有以域用戶身份起服務的 SPN
