允許委派
說明
來源安全主體可以透過轉換通訊協定在目標電腦上執行 Kerberos 資源型限制委派 (KCD)。換言之,當使用 Kerberos 對目標電腦上執行的任何服務進行身分驗證時,它可以模擬任何使用者。
因此,它通常會導致目標電腦完全受損。
利用
入侵來源安全主體的攻擊者可使用專用的駭客工具 (如 Rubeus) 利用合法的 Kerberos 通訊協定延伸模組 (S4U2self 和 S4U2proxy),以偽造 Kerberos 服務工單並模擬目標使用者。攻擊者可能會選擇模擬特權使用者來取得特殊權限存取權。
一旦攻擊者偽造服務工單,他們就可以使用與 Kerberos 相容的任何原生管理工具或專門的駭客工具,從遠端執行任意命令。
成功的攻擊行為必須符合下列限制條件:
-
必須針對通訊協定轉換啟用來源安全主體 (UserAccountControl 中的 ADS_UF_TRUSTED_FOR_DELEGATION/委派 GUI 中的「使用任何驗證通訊協定」)。更確切地說,攻擊可以在沒有轉換通訊協定的情況下運作 (委派 GUI 中的「僅使用 Kerberos」),但攻擊者必須先將 Kerberos 驗證從目標使用者強制轉換為來源安全主體,這會使攻擊更加困難。因此,在此情況下,Tenable Identity Exposure 不會建立攻擊關係。
-
來源和目標安全主體必須具有 ServicePrincipalName。如果沒有此條件,Tenable Identity Exposure 不會建立此攻擊關係。
-
偽造的目標帳戶不得標記為「敏感且無法委派」(UserAccountControl 中的 ADS_UF_NOT_DELEGATED),也不能是「受保護使用者」群組的成員,這是因為 Active Directory 可保護此類帳戶不受委派攻擊。
相反,允許委派的目標電腦由服務主體名稱 (SPN) 指定,因此包含特定的服務,例如帶有「cifs/host.example.net」的 SMB、帶有「http/host.example.net」的 HTTP 等。但是,攻擊者實際上可以使用「sname 替代攻擊」,將相同「目標」帳戶下執行的任何其他 SPN 和服務作為攻擊目標,因此這不是限制。
修復
如果來源安全主體不需要在目標電腦上執行 Kerberos 限制委派 (KCD) 的權限,則您必須將其移除。您必須修改來源端,而不是「允許執行」委派攻擊關係。
如要移除來源安全主體:
-
在「Active Directory 使用者和電腦」管理 GUI 中,轉到來源物件的「屬性」>「委派」索引標籤。
-
移除與目標對應的服務主體名稱。
-
如果您不想要來自此來源的任何委派,請移除所有 SPN 並選取「不信任此電腦的委派」。
或者,您可以使用 PowerShell 修改來源的「msDS-AllowedToDelegateTo」屬性內容。
-
例如,在 Powershell 中執行此命令以取代所有值:
複製Set-ADObject -Identity "CN=Source,OU=corp,DC=example,DC=net" -Replace @{ "msDS-AllowedToDelegateTo" = @("cifs/desiredTarget.example.net") }
-
如果您不想要來自此來源的任何委派,請執行以下命令以清除此屬性:
複製Set-ADObject -Identity "CN=Source,OU=corp,DC=example,DC=net" -Clear "msDS-AllowedToDelegateTo"
也可以透過停用通訊協定轉換,在不完全關閉此攻擊路徑的情況下降低風險。這會要求所有安全主體僅使用 Kerberos 而非 NTLM 連線至來源。
如要停用通訊協定轉換:
-
在「Active Directory 使用者和電腦」管理 GUI 中,前往來源物件的「屬性」>「委派」索引標籤。
-
選取「僅使用 Kerberos」,而非「使用任何驗證通訊協定」。
或者,您可以在 PowerShell 中執行下列命令以停用通訊協定轉換:
Set-ADAccountControl -Identity "CN=Source,OU=corp,DC=example,DC=net" -TrustedToAuthForDelegation $false
最後,作為一般建議,為了限制敏感的特權帳戶遭受此類委派攻擊,Tenable Identity Exposure 建議您在仔細驗證相關的作業影響之後,將其標記為「敏感且無法委派」(ADS_UF_NOT_DELEGATED),或是將其新增至「受保護的使用者」群組。
另請參閱