SPN掃描

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

微軟官方也給出了詳細的解釋和語法規則

有興趣的可以詳細閱讀一下:

https://social.technet.microsoft.com/wiki/contents/articles/717.service-principal-names-spn-setspn-syntax.aspx

在查詢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:蘋果播客製作人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