Microsoft 安全风险管理可帮助你有效地管理公司的攻击面和风险暴露风险。 通过组合资产和技术, 攻击路径 说明了攻击者可用于从组织内的入口点移动到关键资产的端到端路径。 Microsoft Defender for Cloud Apps观察到,使用 OAuth 应用程序访问业务关键型应用程序中的敏感数据(如 Microsoft Teams、SharePoint、Outlook 等)的攻击者有所增加。 为了支持调查和缓解,这些应用程序已集成到 Microsoft 安全风险管理 中的攻击路径和攻击图面地图视图中。
先决条件
若要开始使用曝光管理中的 OAuth 应用程序攻击路径功能,请确保满足以下要求。
启用了应用治理的Microsoft Defender for Cloud Apps许可证。
Microsoft必须激活 365 应用连接器。 有关连接以及哪些应用连接器提供安全建议的信息,请参阅使用Microsoft Defender for Cloud Apps连接应用以获取可见性和控制。
可选:若要获得对攻击路径数据的完全访问权限,我们建议拥有 E5 安全许可证、Defender for Endpoint 或 Defender for Identity 许可证。
所需角色和权限
若要访问所有公开管理体验,需要统一基于角色的访问控制 (RBAC) 角色或Entra ID角色。 只需要一个。
- 公开管理 (读取) (统一 RBAC)
或者,可以使用以下Entra ID角色之一:
权限 | 操作 |
---|---|
全局管理员 | (读取和写入权限) |
安全管理员 | (读取和写入权限) |
安全操作员 | (读取和受限写入权限) |
全局读取器 | (读取权限) |
安全信息读取者 | (读取权限) |
注意
目前仅在商业云环境中可用。 Microsoft 安全风险管理数据和功能目前在美国政府云(GCC、GCC High、DoD 和中国政府)中不可用。
关键资产管理 - 服务主体
Microsoft Defender for Cloud Apps定义一组关键特权 OAuth 权限。 具有这些权限的 OAuth 应用程序被视为高价值资产。 如果遭到入侵,攻击者可能会获得对 SaaS 应用程序的高特权。 为了反映此风险,攻击路径会将具有这些权限的服务主体视为目标目标。
查看关键资产的权限
若要查看权限的完整列表,请转到Microsoft Defender门户并导航到“设置”>Microsoft Defender XDR>“规则>”“关键资产管理”。
调查用户流:查看涉及 OAuth 应用程序的攻击路径
了解哪些权限表示高价值目标后,请使用以下步骤调查这些应用程序在环境的攻击路径中的显示方式。 对于具有可管理攻击路径数的小型组织,建议遵循此结构化方法来调查每个攻击路径:
注意
仅当检测到特定条件时,OAuth 应用才会显示在攻击路径图面图中。
例如,如果检测到具有容易利用的入口点的易受攻击的组件,则 OAuth 应用可能会出现在攻击路径中。 此入口点允许横向移动到具有高特权的服务主体。
转到“曝光管理 > ”“攻击面 > 攻击路径”。
按“目标类型:AAD 服务主体”进行筛选
选择标题为“具有高严重性漏洞的设备允许横向移动到具有敏感权限的服务主体”的攻击路径
单击“在地图中查看”按钮以查看攻击路径。
选择 “ + ” 符号以展开节点并查看详细连接。
将鼠标悬停或选择节点和边缘以浏览额外的数据,例如此 OAuth 应用拥有的权限。
复制 OAuth 应用程序的名称,并将其粘贴到“应用程序”页的搜索栏中。
选择应用名称以查看分配的权限和使用情况见解,包括是否积极使用高特权权限。
可选:如果确定应禁用 OAuth 应用程序,则可以从“应用程序”页禁用它。
决策者用户流:使用扼流点确定攻击路径的优先级
对于具有许多无法手动调查的攻击路径的大型组织,我们建议使用攻击路径数据,并将 Choke Points 体验用作优先级确定工具。 此方法允许你:
- 识别与最多攻击路径相关的资产。
- 就要优先调查哪些资产做出明智的决策。
- 按 OAuth 应用Microsoft Entra进行筛选,以查看哪些 OAuth 应用涉及的攻击路径最多。
- 确定要对其应用最小特权权限的 OAuth 应用程序。
首先,请执行以下操作:
如果扼流点是 OAuth 应用程序,请继续在“应用程序”页进行调查,如上面的步骤 7-9 中所述。
使用查询分析攻击面地图和搜寻
在 攻击图面图中,可以看到来自用户拥有的应用、OAuth 应用和服务主体的连接。 此关系数据在以下位置可用:
ExposureGraphEdges 表 (显示连接)
ExposureGraphNodes 表 (包括节点属性,例如权限)
使用以下高级搜寻查询标识具有关键权限的所有 OAuth 应用程序:
let RelevantNodes = ExposureGraphNodes
| where NodeLabel == "Microsoft Entra OAuth App" or NodeLabel == "serviceprincipal"
| project NodeId, NodeLabel, NodeName, NodeProperties;
ExposureGraphEdges
| where EdgeLabel == "has permissions to" or EdgeLabel == "can authenticate as"
| make-graph SourceNodeId --> TargetNodeId with RelevantNodes on NodeId
| graph-match (AppRegistration)-[canAuthAs]->(SPN)-[hasPermissionTo]->(Target)
where AppRegistration.NodeLabel == "Microsoft Entra OAuth App" and
canAuthAs.EdgeLabel == "can authenticate as" and
SPN.NodeLabel == "serviceprincipal" and
SPN.NodeProperties["rawData"]["criticalityLevel"]["criticalityLevel"] == 0 and
hasPermissionTo.EdgeLabel == @"has permissions to" and
Target.NodeLabel == "Microsoft Entra OAuth App" and
Target.NodeName == "Microsoft Graph"
project AppReg=AppRegistration.NodeLabel,
canAuthAs=canAuthAs.EdgeLabel, SPN.NodeLabel, DisplayName=SPN.NodeProperties["rawData"]["accountDisplayName"],
Enabled=SPN.NodeProperties["rawData"]["accountEnabled"], AppTenantID=SPN.NodeProperties["rawData"]["appOwnerOrganizationId"],
hasPermissionTo=hasPermissionTo.EdgeLabel, Target=Target.NodeName,
AppPerm=hasPermissionTo.EdgeProperties["rawData"]["applicationPermissions"]["permissions"]
| mv-apply AppPerm on (summarize AppPerm = make_list(AppPerm.permissionValue))
| project AppReg, canAuthAs, DisplayName, Enabled, AppTenantID, hasPermissionTo, Target, AppPerm
后续步骤
有关更多信息,请参阅: