允许委派
说明
源安全主体可以在目标计算机上,使用协议转换执行 Kerberos 约束委派 (KCD)。这意味着该主体可以在使用 Kerberos 对在目标计算机上运行的任何服务进行身份验证时,假冒目标计算机。
因此,它通常会导致目标计算机遭到全面入侵。
渗透利用
危害源安全主体的攻击者可以使用 Rubeus 等专用黑客工具,利用合法的 Kerberos 协议扩展(S4U2self 和 S4U2proxy),来伪造 Kerberos 服务票据并假冒目标用户。攻击者可能会选择假冒特权用户来获得特权访问权限。
攻击者伪造服务票据后,便可使用任何本机管理工具或与 Kerberos 兼容的专用黑客工具执行远程任意命令。
成功的漏洞利用尝试必须满足以下限制:
-
必须为协议转换启用源安全主体( UserAccountControl 中的 ADS_UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION/Delegation GUI 中的“使用任何身份验证协议”)。更准确地说,攻击无需协议转换(在 Delegation GUI 中“仅使用 Kerberos”)即可奏效,但攻击者必须首先对源安全主体进行目标用户 Kerberos 身份验证,这一点会加大攻击难度。因此,Tenable Identity Exposure 在此情况下不会创建攻击关系。
-
源和目标安全主体必须具有 ServicePrincipalName。如果不具备此条件,Tenable Identity Exposure 不会创建此攻击关系。
-
被锁定为欺骗目标的帐户既不能标记为“敏感且无法委派”(UserAccountControl 中的 ADS_UF_NOT_DELEGATED ),也不能是“Protected Users”组成员,原因是 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),或在仔细验证相关操作影响之后,将其添加到“Protected Users”组。
另请参阅