语言:
Microsoft 通过 Entra ID 中的应用程序公开 API,以允许第三方应用程序在 Microsoft Entra ID、Microsoft 365 (O365)、Azure 云等产品中执行操作。“API 权限”保护对这些 API 的访问,这些权限应该仅对需要它们的服务主体可用。权限批准被称为“应用程序角色分配”或“同意授予”。
部分 Microsoft API 的一些权限(见下方)可能对整个 Microsoft Entra 租户造成严重威胁,因为具有这些权限的服务主体会拥有很高的权限,同时也比高权限的管理员角色(例如,全局管理员)等更加谨慎。滥用这些权限可能导致攻击者绕过多因素身份验证 (MFA) 并阻止用户密码重置。
在合法的情况下,权限会增加租户的攻击面。在不合法的情况下,权限可能是升级特权或持久性方法的恶意尝试。
如 Microsoft 文档“权限和同意简介”中所述,Microsoft Entra ID 有两种类型的 API 权限:
委派权限适用于存在已登录用户的应用程序,并且可以由管理员或用户进行同意授权。
此风险暴露指标 (IoE) 仅报告有关服务主体的内容,因为 API 权限只适用于服务主体,而不适用于用户。
此 IoE 跟踪以下存在风险的权限,这些权限允许访问 Microsoft Graph API 和旧版 Azure AD Graph API 的:
AdministrativeUnit.ReadWrite.All
:允许攻击者从受限管理单元 (RMAU) 中移除全局管理员,如果与其他权限结合使用,则可以重置他们的密码。Application.ReadWrite.All
:允许攻击者将身份验证凭据注入特权更高的应用程序中,从而通过冒充来实现未经授权的访问。Application.ReadWrite.OwnedBy
:与 Application.ReadWrite.All
相同,但它仅适用于由报告的服务主体所拥有的服务主体。请注意,这通常不可作为委派权限使用。AppRoleAssignment.ReadWrite.All
:允许攻击者授予自己 RoleManagement.ReadWrite.Directory
权限。DeviceManagementConfiguration.ReadWrite.All
:允许攻击者通过部署恶意管理脚本来入侵 Intune 管理的设备,正如 Mandiant 在《(In)Tuned to Takeovers:滥用 Intune 权限在 Entra ID 原生环境中进行横向移动和特权提升》中描述的那样。如果管理员使用 Intune 管理的设备,这可能导致将特权提升至全局管理员。DeviceManagementRBAC.ReadWrite.All
:允许攻击者将特权 Intune 角色分配给他们控制的帐户,从而使他们能够在 Intune 设备上执行任意命令,正如 DeviceManagementConfiguration.ReadWrite.All
中所述。Directory.ReadWrite.All
:允许攻击者将自己添加为非角色可分配组的成员,从而可能在 Azure 云中获得特权。这可以使他们通过 Azure 资源进行横向移动,从而可能导致将特权提升至 Entra ID 中的全局管理员(例如,通过托管身份),甚至提升至 Active Directory 中的域管理员(例如,通过托管在 Azure 中的域控制器 VM)。Domain.ReadWrite.All
:允许攻击者添加联合域并以任何用户的身份(包括全局管理员)进行身份验证,同时绕过密码和 MFA 要求。EntitlementManagement.ReadWrite.All
:允许攻击者更新授予全局管理员角色的访问权限程序包的分配策略,从而使他们能够在未经批准的情况下请求该角色。Group.ReadWrite.All
:与 Directory.ReadWrite.All
相同* GroupMember.ReadWrite.All
:与 Directory.ReadWrite.All
相同* Organization.ReadWrite.All
:允许攻击者将可信的根证书添加到 Entra ID,并以任何用户(包括分配为全局管理员的用户)的身份进行身份验证。这需要启用基于证书的身份验证 (CBA),如果未启用,则需要拥有 Policy.ReadWrite.AuthenticationMethod
权限来事先启用 CBA。Policy.ReadWrite.AuthenticationMethod
:允许攻击者启用临时访问通行证 (TAP) 身份验证方法,这是与 UserAuthenticationMethod.ReadWrite.All
权限结合使用时利用该权限的前提条件。或者,它还允许攻击者启用基于证书的身份验证 (CBA) 来利用 Organization.ReadWrite.All
权限。Policy.ReadWrite.PermissionGrant
:允许攻击者为受控制的服务主体创建权限授予策略,授予其 RoleManagement.ReadWrite.Directory
权限并利用此漏洞。PrivilegedAccess.ReadWrite.AzureADGroup
:允许攻击者将受控制的用户帐户添加到具有全局管理员角色分配的组中。PrivilegedAssignmentSchedule.ReadWrite.AzureADGroup
:与 PrivilegedAccess.ReadWrite.AzureADGroup
相同。PrivilegedEligibilitySchedule.ReadWrite.AzureADGroup
:允许攻击者将受控制的用户帐户变得有资格加入具有全局管理员角色分配的组,然后激活成员身份以提升特权。RoleAssignmentSchedule.ReadWrite.Directory
:允许攻击者通过创建活动的 PIM 角色分配将全局管理员角色分配给受控制的用户帐户。RoleEligibilitySchedule.ReadWrite.Directory
:允许攻击者将受控制的用户帐户变得有资格获得全局管理员角色,然后激活该帐户以提升特权。RoleManagement.ReadWrite.Directory
:允许攻击者将自己提升为全局管理员角色。RoleManagementPolicy.ReadWrite.AzureADGroup
:允许攻击者移除组角色分配和激活限制(例如 MFA 要求或管理员批准),以利用 PrivilegedAccess.ReadWrite.AzureADGroup
、PrivilegedAssignmentSchedule.ReadWrite.AzureADGroup
或 PrivilegedEligibilitySchedule.ReadWrite.AzureADGroup
,并在具有严格 PIM 设置的租户中遵循与这些权限相同的路径。RoleManagementPolicy.ReadWrite.Directory
:允许攻击者移除 Entra 角色分配和激活限制(例如 MFA 要求或管理员批准)以利用 RoleAssignmentSchedule.ReadWrite.Directory
或 RoleEligibilitySchedule.ReadWrite.Directory
,并在具有严格 PIM 设置的租户中遵循与这些权限相同的路径。User.DeleteRestore.All
:允许攻击者删除租户中的所有用户帐户,使其不可用,然后要求赎金来恢复其中一个紧急情况帐户。虽然这不会导致权限提升为全局管理员,但这会使访问中断。User.EnableDisableAccount.All
:允许攻击者禁用租户中的所有用户帐户,使其不可用,然后要求赎金来恢复其中一个紧急情况帐户。虽然这不会导致权限提升为全局管理员,但这会使访问中断。User.ReadWrite.All
:允许攻击者编辑受控制用户帐户的敏感属性(例如“员工 ID”和“部门”),使其成为具有特权 Azure 权限分配的动态组(请参阅相应的 IoE)的成员。然后,他们可以利用 Azure 资源最终提升为全局管理员。User-PasswordProfile.ReadWrite.All
:与 Directory.ReadWrite.All
相同* UserAuthenticationMethod.ReadWrite.All
:允许攻击者生成临时访问通行证 (TAP),并接管租户中的任何用户帐户。如果 TAP 尚未启用,攻击者必须将其与 Policy.ReadWrite.AuthenticationMethod
结合使用,以在租户中启用 TAP 作为身份验证方法(请参阅相应的 IoE)。此 IoE 还跟踪“Microsoft Entra AD 同步服务”API 这一存在风险的权限:
ADSynchronization.ReadWrite.All
:使攻击者能够调用未记录的同步 API,从而修改混合用户帐户并重置他们的密码。拥有这些危险权限的合法应用程序可能会请求过于宽泛的访问权限。这也可以指示一种被称为“非法同意授予”的网络钓鱼攻击,其中攻击者成功从管理员那里获得了同意。
默认情况下,此 IoE 会忽略已禁用的服务主体,因为攻击者无法立即使用这些服务主体。
外部参考资料:
首先确定被报告的具有权限的服务主体是否合法。请注意,就技术角度而言,网络钓鱼攻击可以伪造显示名称。如果服务主体似乎属于已知的软件供应商,请让他们确认被报告的应用程序 ID 是否属于他们。如果服务主体非法,并且伪造了已知的应用程序名称,则您应该进行取证分析。
如果服务主体合法:
默认情况下,所有用户都可以将权限委托给任何应用程序,这使得他们能够做出敏感的安全决定。请参阅相应的“应用程序的无限制用户同意”风险暴露指标。Microsoft Entra ID 提供了一些助您配置用户同意的选项。启用限制后,具有某些角色的 Microsoft Entra 管理员必须管理应用程序的同意情况并评估同意请求。另请参阅如何“审查管理员同意请求”。
对管理员进行培训,使其能够识别可疑应用程序和敏感权限,包括来自特权或敏感用户的委派权限 。这必须包含在更大的应用程序治理工作中。
如果您认为某个权限不合法,请删除它。如果您计划进行更深入的取证调查,Tenable 建议您先保存证据。请遵循 Microsoft 指南来审查授予给企业应用程序的权限。很遗憾,Microsoft Entra 管理门户不提供此功能:
您无法使用 Microsoft Entra 管理门户的“用户同意”选项卡撤销权限。但是,您可以通过 Microsoft Graph API 调用或 PowerShell cmdlet 撤销这些权限。有关更多详细信息,请参阅此文章 的 PowerShell 和 Microsoft Graph 部分。
Microsoft 还发布了两份关于如何执行应用程序同意授予调查以及如何发现和纠正非法同意授权的指南。
确保从服务主体(可在门户的“企业应用程序”菜单中找到)中移除危险的权限,而不是从应用程序(可在“应用注册”菜单中找到)中移除。从应用程序中移除只会删除权限请求,并不会影响实际的权限分配。
特别是对于 DeviceManagementConfiguration.ReadWrite.All
权限,您可以通过访问策略要求获得多名管理员的批准。这种方法确保管理脚本的创建或修改需要经过另一个帐户的验证,从而减少了单一应用程序引入恶意更改的风险。
最后,启用 Graph API 活动日志,以捕获有关 Graph API 事件的详细信息,这将有助于您的 SOC 或 SIEM 识别可疑活动,或在发生攻击时进行取证调查。此外,监控服务主体的登录活动,并为可疑行为配置警报,特别是对于此处突出显示的高风险服务主体。
名称: 影响租户的危险委派权限
代码名称: DANGEROUS-DELEGATED-PERMISSIONS-AFFECTING-THE-TENANT
严重性: High
类型: Microsoft Entra ID Indicator of Exposure