SPN掃描
- 2020 年 3 月 9 日
- 筆記
0x01介紹
Kerberos是一種支援票證身份驗證的安全協議。如果客戶端電腦身份驗證請求包含有效的用戶憑據和服務主體名稱 (SPN),則 Kerberos 身份驗證伺服器將授予一個票證以響應該請求。然後,客戶端電腦使用該票證來訪問網路資源。在內部網路中,SPN掃描通過查詢向域控制器執行服務發現。可以幫助我們識別正在運行重要服務的主機,如終端、交換機、微軟SQL等,並隱藏他們。此外,SPN的識別也是kerberoasting攻擊的第一步。
0x02關於spn
服務主體名稱(SPN:Service Principal Names)是服務實例,可以將其理解為一個服務(比如 HTTP、MSSQL)的唯一標識符,服務在加入域中時是自動註冊的。
如果在整個林或域中的電腦上安裝多個服務實例,則每個實例都必須具有自己的 SPN。如果客戶端可能使用多個名稱進行身份驗證,則給定服務實例可以具有多個 SPN。SPN 始終包含運行服務實例的主機的名稱,因此服務實例可以為其主機名稱或別名註冊 SPN。
如果用一句話來說明的話就是SPN是伺服器上所運行服務的唯一標識,每個使用Kerberos的服務都需要一個SPN,如果想使用 Kerberos 協議來認證服務,那麼必須正確配置 SPN。
SPN分為兩種,一種註冊在AD上機器帳戶(Computers)下,另一種註冊在域用戶帳戶(Users)下
- 當一個服務的許可權為Local System或Network Service,則SPN註冊在機器帳戶(Computers)下
- 當一個服務的許可權為一個域用戶,則SPN註冊在域用戶帳戶(Users)下。
SPN格式為
serviceclass/host:port servicename
微軟官方也給出了詳細的解釋和語法規則

有興趣的可以詳細閱讀一下:
在查詢SPN的時候,會向域控制器發起LDAP查詢,這是正常Kerberos票據行為的一部分,所以這個操作很難被檢測出來。
0x03實驗
這裡我們準備了兩個靶機來讓大家了解SPN查詢的詳細內容,以下是詳細的靶機情況,通過3389即可連接
Win08_dc_dns192.168.5.70Administrator secquan.org666 Win7192.168.5.116ZHUJIANwin7 secquan.org666
我們可以通過以下命令來查詢當前域下的所有SPN
setspn –q */*

查看ZHUJIAN域的所有SPN
setspn –T zhujian –q */*

與剛剛的內容肯定是一樣的,因為win7這台機子只在zhujian這一個域中。
其中以CN開頭的,每一行都代表一個賬戶
這兩個為機器賬戶

下面這個為域用戶賬戶

我們也可以根據微軟的官方文檔去自己註冊SPN,這裡我們還是儘可能的去模擬一下真實的情況,我們在win7上安裝一下MSSQL,然後再去看內容是否有變化
MSSQL的安裝包已經在win7中的桌面提供了,直接安裝即可。

雙擊時會遇到這種情況,這是因為當前是域用戶不是此機器的管理員許可權

這裡我們使用以下的帳號密碼來進行驗證
帳號:SECQUAN_WIN7-PCsecquan_win7密碼:secquan.org666

接下來就是正常的安裝,不詳細展開了,我們這裡的目的是只要安裝好就可以了
註:這裡如果遇到不能正常運行安裝的情況,請直接切換用戶進行安裝,安裝之後再切換回域用戶,如果因為硬碟不足的原因,請手動擴充



安裝好之後,請切換到域用戶
我們運行命令
setspn –q */*
可以發現在SECQUAN_WIN7-PC上多了一個服務

這個正是MSSQL所對應的SPN
這樣就可以幫助我們快速獲得域內的一些服務
常見的幾種spn實例名稱還有
AcronisAgent:針對Acronis備份和數據恢復軟體AdtServer:帶有ACS的Microsoft System Center Operations Manager(2007/2012)管理伺服器afpserver:Apple歸檔協議AgpmServer:Microsoft高級組策略管理(AGPM)aradminsvc - 任務主角色伺服器arssvc - 任務主角色伺服器bocms:商業化CMSBOSSO:商業對象CESREMOTE:與VMWare上的Citrix VDI解決方案有關,許多VDI工作站都有這個SPN。cifs:通用Internet文件系統CmRcService:Microsoft系統中心配置管理器(SCCM)遠程控制CUSESSIONKEYSVR:CiscoUnity VOIP系統cvs:CVS庫Dfsr *:分散式文件系統DNS:域名伺服器E3514235-4B06-11D1-AB04-00C04FC2DCD2:NTDS DC RPC複製E3514235-4B06-11D1-AB04-00C04FC2DCD2-ADAM:ADAM實例EDVR:ExacqVision服務exchangeAB:Exchange通訊簿服務(通常是支援NSPI的域控制器,也通常是所有的GC)exchangeMDB:RPC客戶端訪問伺服器角色exchangeRFR:交換通訊簿服務fcsvr:Apple FinalCut ServerFileRepService:WSFileRepService.exeFIMService:MicrosoftForefront標識管理器(FIM)ftp:文件傳輸協議GC:域控制器全局編錄服務HDFS:Hadoop(Ambari)host:主機服務代表主機。HOSTSPN用於在創建服務票據時訪問由Kerberos協議使用長期密鑰的主機帳戶。http:支援Kerberos身份驗證的http網路服務的SPNHyper-V副本服務:MicrosoftHyper-V的副本服務IMAP:Internet消息訪問協議IMAP4:Internet消息訪問協議版本4ipp:Internet列印協議iSCSITarget:iSCSI 配置kadmin:Kerberosldap:LDAP服務,如域控制器或ADAM實例。Magfs:MaginaticsMagFSmapred:ClouderaMicrosoft虛擬控制台服務:HyperV主機Microsoft虛擬系統遷移服務:P2V支援(Hyper-V)mongod:MongoDBEnterprisemongos:MongoDBEnterpriseMSClusterVirtualServer:Windows群集伺服器MSOLAPSvc:SQLServer分析服務MSOLAPSvc.3:SQLServer分析服務MSOLAPDisco.3:SQLServer分析服務MSOMHSvc:Microsoft系統中心運營經理(2007/2012)管理伺服器MSOMSdkSvc:MicrosoftSystem Center Operations Manager(2007/2012)管理伺服器MSServerCluster:Windows群集伺服器MSServerClusterMgmtAPI:此群集API需要此SPN才能通過使用Kerberos向伺服器進行身份驗證MSSQL:Microsoft SQLServerMSSQLSvc:MicrosoftSQL ServerMSSQL $ ADOBECONNECT:支援Adobe Connect的Microsoft SQL ServerMSSQL $ BIZTALK:MicrosoftSQL Server支援Microsoft Biztalk伺服器MSSQL $ BUSINESSOBJECTS:支援Business Objects的Microsoft SQL ServerMSSQL $ DB01NETIQ:支援NetIQ的Microsoft SQL Servernfs:網路文件系統NPPolicyEvaluator:戴爾Quest審計員NPRepository 4(CHANGEAUDITOR):戴爾Quest Change AuditorNPRepository4(CAAD):戴爾Quest審核員NPRepository4(默認):戴爾任務審計員NtFrs *:NT文件複製服務oracle:OracleKerberos身份驗證pcast:蘋果Podcast製作人PCNSCLNT:自動密碼同步解決方案(MIIS 2003&FIM)POP:郵箱協議POP3:郵箱協議版本3PVSSoap:Citrix ProvisioningServices(7.1)RestrictedKrbHost:使用服務類字元串等於「RestrictedKrbHost」的 SPN的服務類,其服務憑單使用電腦帳戶密鑰並共享會話密鑰。RPC:遠程過程調用服務SAP:SAP /SAPService <SID>SAS:SAS伺服器SCVMM:System Center虛擬機管理器secshd:IBMInfoSpheresip:會話啟動協議SMTP:簡單郵件傳輸協議SMTPSVC:簡單郵件傳輸協議SoftGrid: Microsoft應用程式虛擬化(App-V)以前的「SoftGrid」STS:VMWare SSO服務SQLAgent $ DB01NETIQ:NetIQ的SQL服務tapinego:與路由應用程式相關聯,例如Microsoft防火牆(ISA,TMG等)TERMSRV:Microsoft遠程桌面協議服務,又名終端服務。tnetd:JuniperKerberos身份驗證 「Tnetd是一個守護進程,用於路由引擎和數據包轉發引擎等不同組件之間的內部通訊」vmrc:Microsoft VirtualServer 2005vnc:VNC伺服器VPN:虛擬專用網路VProRecovery Backup Exec系統恢復代理7.0VProRecovery Backup Exec系統恢復代理8.0VProRecovery Backup Exec系統恢復代理9.0VProRecovery諾頓克隆代理12.0VProRecovery諾頓克隆代理14.0 VProRecovery諾頓克隆代理15.0VProRecovery Symantec系統恢復代理10.0VProRecovery Symantec系統恢復代理11.0VProRecovery Symantec系統恢復代理14.0vssrvc:微軟虛擬伺服器(2005)WSMAN:Windows遠程管理(基於WS-Management標準)服務xmpp / XMPP:可擴展消息和呈現協議(Jabber)xgrid:蘋果的分散式(網格)計算/ Mac OS X 10.6伺服器管理YARN:ClouderaMapReduce
至於更多的SPN值,請自己去嘗試和搜集
最後,我們再提供一個探測MSSQL服務的ps腳本,類似的腳本也還有很多,大家可以去GitHub上進行搜集和更改
https://github.com/PyroTek3/PowerShell-AD-Recon/blob/master/Discover-PSMSSQLServers