语言:
第一方服务主体(企业应用程序)来自 Microsoft 的应用程序(应用程序注册)。他们中的大多数在 Microsoft Entra ID 中拥有一些在安全检查过程中经常被忽略的敏感权限。攻击者可以借此向这些主体添加凭据,以隐蔽的方式利用主体的特权获益。
因为拥有应用程序管理员角色的主体可以将凭据添加至应用程序(包括拥有更高特权的应用程序),所以这项技术提供持久性能力和特权提升。
除极少数情况(参阅“建议”)外,第一方服务主体不应该拥有任何凭据。Microsoft 在“配置 Microsoft Entra 以提高安全性”一文中还建议“Microsoft 服务应用程序不应配置凭据”。
APT29 威胁组织在 2020 年 12 月滥用这种方法对 SolarWinds 发起了臭名昭著的“Solorigate”攻击,Microsoft 和 Mandiant 对此均有记录。
已禁用的服务主体默认(此参数可以更改)被忽略,因为攻击者无法立即使用这些服务主体。
首先评估观察到的凭据的合法性。如果这些凭据与以下服务主体之一相关联,则可以认为这些凭据是合法的:Exchange Online/Skype for Business/AAD Password Protection Proxy。
在您怀疑凭据不合法的其他情况下:
与附加在应用程序中的凭据不同,您无法使用 Azure 门户列出服务主体凭据。使用 Microsoft Graph PowerShell 的 Get-MgServicePrincipal cmdlet 列出服务主体凭据:
Get-MgServicePrincipal -ServicePrincipalId <objectid> -Property keyCredentials | 选择 -ExpandProperty keyCredentials
Get-MgServicePrincipal -ServicePrincipalId <objectid> -Property passwordCredentials | 选择 -ExpandProperty passwordCredentials
要删除这些凭据,请使用:
$keycredentials = (Get-MgServicePrincipal -ServicePrincipalId <objectid>).KeyCredentials
获取密钥凭据数组,然后从 $keycredentials
中删除不需要的凭据,最后通过 Update-MgServicePrincipal -ServicePrincipalId <objectid> -KeyCredentials $keycredentials
应用这个新的数组,从而规避此问题。要清除所有内容,您只需使用:Update-MgServicePrincipal -ServicePrincipalId <objectid> -KeyCredentials @()
。或者使用现已弃用的 AzureAD PowerShell Module:
Get-AzureADServicePrincipalKeyCredential
和 Remove-AzureADServicePrincipalKeyCredential
Get-AzureADServicePrincipalPasswordCredential
和 Remove-AzureADServicePrincipalPasswordCredential
名称: 具有凭据的第一方服务主体
代码名称: FIRST-PARTY-SERVICE-PRINCIPAL-WITH-CREDENTIALS
严重性: High
类型: Microsoft Entra ID Indicator of Exposure