SPN服務主體名稱發現詳解
Kerberos是一種支持票證身份驗證的安全協議。如果客戶端計算機身份驗證請求包含有效的用戶憑據和服務主體名稱 (SPN),則 Kerberos 身份驗證伺服器將授予一個票證以響應該請求。然後,客戶端計算機使用該票證來訪問網路資源。在內部網路中,SPN掃描通過 查詢向域控制器執行服務發現。這對於紅隊而言,可以幫助他們識別正在運行重要服務的主機,如終端、交換機、微軟SQL等,並隱藏他們。此外,SPN的識別也是kerberoasting攻擊的第一步。
Tim Medin在他的Kerberos攻擊演講中很好地解釋了SPN。Sean Metcalf還提供了一些有關SPN的資源,其中包括有關Active Directory服務主體名稱的系列資源,可在本文結尾處找到。
SetSPN
SetSPN是一個本地windows二進位文件,可用於檢索用戶帳戶和服務之間的映射。該實用程序可以添加,刪除或查看SPN註冊。
由於用戶已經選擇了密碼,因此綁定到域用戶帳戶而不是計算機帳戶的服務更可能被配置為弱密碼,而對用戶有規範名稱的服務應該會成為Kerberoasting攻擊的針對目標。以下SPN列表中,PENTESTLAB_001服務與用戶帳戶相關聯。
GetUserSPNs
Tim Medin開發了一個PowerShell腳本,它是kerberoast工具包的一部分,可以幫助我們查詢活動目錄,以發現僅與用戶帳戶相關聯的服務。
還有一個VBS腳本也是該工具的一部分,可以為我們提供相同的信息。該腳本可以通過使用本機Windows二進位cscript從Windows命令提示符執行。
PowerShell AD Recon
除了Tim Medin開發的工具外,Sean Metcalf也開發了各種PowerShell腳本來執行Kerberos偵察。這些腳本是PowerShell AD Recon存儲庫的一部分,可以在Active Directory中查詢服務,例如Exchange,Microsoft SQL,Terminal等。Sean將每個腳本綁定到一個特定的服務,具體取決於你想要發現的SPN。以下腳本將標識網路上的所有Microsoft SQL實例。
還可以使用PSMSExchangeServers腳本來查找Microsoft Exchange伺服器。
枚舉服務帳戶很重要,因為這些帳戶可能配置了弱密碼。PasswordLastSet和LastLogon屬性,可以為我們提供那些較有可能會設置弱密碼的服務指示。
Empire
PowerShell Empire還有一個可顯示域帳戶的服務主體名稱(SPN)的模塊。
這些服務將以下列格式呈現。
PowerShellery
Scott Sutherland在將Get-SPN模塊實現到Empire之前,已經創建了多個Powershell腳本作為PowerShellery的一部分,可以為各種服務收集SPN。其中一些需要PowerShell v2.0的環境,還有一些則需要PowerShell v3.0環境。
結果我們也可以將其轉換為表格的形式,以便於我們的瀏覽。
這裡我再告訴大家一個腳本,可以為我們獲取UserSID,服務和實際用戶。
Impacket
服務主體名稱(SPN)也可以從未加入域的系統中發現,impacket工具包下的python版GetUserSPNs可以為我們做到這點。但是,無法使用基於token的身份驗證,因此與Active Directory進行通信需要獲取有效的域憑證。
相關資源
https://adsecurity.org/?p=230
https://adsecurity.org/?p=1508
http://adsecurity.org/?page_id=183
https://github.com/nullbind/Powershellery
https://github.com/PyroTek3/PowerShell-AD-Recon
*參考來源:pentestlab,FB小編 secist 編譯,轉載請註明來自FreeBuf.COM
※思科設備存在硬編碼密碼,安全更新第四次刪除後門賬戶
※AsiaSecWest 2018首日紀實,黑客與極客界的最強大腦
TAG:FreeBuf |