检测和修正非法同意授权

提示

你知道可以免费试用Office 365计划 2 Microsoft Defender XDR 中的功能吗? 在 Microsoft Defender 门户试用中心使用 90 天Defender for Office 365试用版。 在此处了解谁可以注册和试用条款。

总结 了解如何识别和修正 Microsoft 365 中的非法同意授权攻击。

在非法同意授予攻击中,攻击者会创建一个 Azure 注册的应用程序,该应用程序请求访问联系信息、电子邮件或文档等数据。 然后,攻击者诱使最终用户通过网络钓鱼攻击或将非法代码注入受信任的网站来授予该应用程序访问其数据的许可。 在向非法应用程序授予同意后,它无需组织帐户即可对数据进行帐户级访问。 正常的修正步骤 (例如,重置密码或要求多重身份验证 (MFA) ) 无法有效抵御此类攻击,因为这些应用是组织外部的。

这些攻击使用交互模型,该模型假定调用信息的实体是自动化的,而不是人为的。

重要

你现在是否怀疑你遇到了来自应用的非法同意授权问题? Microsoft Defender for Cloud Apps具有用于检测、调查和修正 OAuth 应用的工具。 此 Defender for Cloud Apps 文章提供了一个教程,概述了如何 调查有风险的 OAuth 应用。 还可以设置 OAuth 应用策略 ,以调查应用请求的权限、哪些用户正在授权这些应用,并广泛批准或禁止这些权限请求。

你需要搜索 审核日志 来查找此攻击 (IOC) 也称为入侵指标。 对于具有许多 Azure 注册的应用程序和大量用户群的组织,最佳做法是每周查看组织同意授权。

查找此攻击迹象的步骤

  1. https://security.microsoft.com 打开Microsoft Defender门户,然后选择“审核”。 或使用 https://security.microsoft.com/auditlogsearch 直接转到“审核”页面。

  2. 在“审核”页上,验证是否选择了“搜索”选项卡,然后配置以下设置:

    • 日期和时间范围
    • 活动:验证是否选择了 “显示所有活动的结果 ”。

    完成后,选择“搜索”。

  3. 选择“ 活动 ”列对结果进行排序,并查找 “同意应用程序”。

  4. 从列表中选择一个条目以查看活动的详细信息。 检查 IsAdminConsent 是否设置为 True。

注意

事件发生后,相应的审核日志条目可能需要 30 分钟到 24 小时才能显示在搜索结果中。

审核记录在审核日志中保留和可搜索的时间长度取决于你的 Microsoft 365 订阅,特别是分配给特定用户的许可证类型。 有关详细信息,请参阅 审核日志

值为 true 表示具有全局管理员访问权限的人员可能已授予对数据的广泛访问权限。 如果此值是意外的,请采取措施 确认攻击

如何确认攻击

如果前面列出的 IOC 有一个或多个实例,则需要进行进一步调查,以积极确认发生了攻击。 可以使用以下三种方法中的任何一种方法来确认攻击:

  • 使用 Microsoft Entra 管理中心清点应用程序及其权限。 此方法非常彻底,但一次只能检查一个用户,如果有许多用户要检查,则这非常耗时。
  • 使用 PowerShell 清点应用程序及其权限。 这是最快、最彻底的方法,开销最少。
  • 让用户单独检查其应用和权限,并将结果报告给管理员进行修正。

在组织中具有访问权限的应用清单

可以使用以下选项来为用户清点应用:

  • Microsoft Entra 管理中心。
  • PowerShell。
  • 让用户单独枚举其自己的应用程序访问权限。

使用Microsoft Entra 管理中心的步骤

可以使用 Microsoft Entra 管理中心查找任何单个用户向其授予权限的应用程序:

  1. https://entra.microsoft.com处打开Microsoft Entra 管理中心,然后转到“标识>用户>”*“所有用户”。 或者,若要直接转到 “用户”>“所有用户”,请使用 https://entra.microsoft.com/#view/Microsoft_AAD_UsersAndTenants/UserManagementMenuBlade/~/AllUsers/menuId/
  2. 通过单击“ 显示名称 ”值查找并选择要查看的用户。
  3. 在打开的用户详细信息页上,选择“ 应用程序”。

这些步骤显示分配给用户的应用以及应用程序拥有的权限。

让用户枚举其应用程序访问权限的步骤

让用户转到 https://myapps.microsoft.com 并查看其自己的应用程序访问权限。 他们应该能够查看所有具有访问权限的应用,查看 (包括访问范围) 的详细信息,并能够撤销对可疑或非法应用的权限。

PowerShell 中的步骤

验证非法同意授予攻击的最简单方法是运行 Get-AzureADPSPermissions.ps1,它将租户中所有用户的所有 OAuth 同意授权和 OAuth 应用转储到一个 .csv 文件中。

先决条件

  • 已安装 Azure AD PowerShell 库。
  • 运行脚本的组织中的全局管理员权限。
  • 运行脚本的计算机上的本地管理员权限。

重要

强烈建议你在管理员帐户上要求进行多重身份验证。 此脚本支持 MFA 身份验证。

注意

Azure AD Powershell 计划于 2024 年 3 月 30 日弃用。 若要了解详细信息,请阅读 弃用更新

建议迁移到 Microsoft Graph PowerShell,以便与以前为 Azure AD) Microsoft Entra ID (交互。 Microsoft Graph PowerShell 允许访问所有 Microsoft Graph API,可在 PowerShell 7 上使用。 有关常见迁移查询的解答,请参阅 迁移常见问题解答

  1. 使用本地管理员权限登录到要在其中运行脚本的计算机。

  2. Get-AzureADPSPermissions.ps1 脚本从 GitHub 下载或复制到易于查找和记住的文件夹。 此文件夹也是需要写入“permissions.csv”输出文件的位置。

  3. 以管理员身份在保存脚本的文件夹中打开提升的 PowerShell 会话。

  4. 使用 Connect-MgGraph cmdlet 连接到目录。

  5. 运行以下 PowerShell 命令:

    .\Get-AzureADPSPermissions.ps1 | Export-csv -Path "Permissions.csv" -NoTypeInformation
    

该脚本生成一个名为 Permissions.csv 的文件。 按照以下步骤查找非法应用程序权限授予:

  1. 在 ConsentType 列中 (G 列) 搜索值“AllPrinciples”。AllPrincipals 权限允许客户端应用程序访问租户中每个人的内容。 本机 Microsoft 365 应用程序需要此权限才能正常工作。 应仔细审查具有此权限的每个非 Microsoft 应用程序。

  2. 在“权限”列 (F) 列中,查看每个委派应用程序对内容拥有的权限。 查找“读取”和“写入”权限或“全部”权限,并仔细查看这些权限,因为它们可能不合适。

  3. 查看已授予许可的特定用户。 如果高调或高价值用户授予了不适当的同意,则应进一步调查。

  4. 在 ClientDisplayName 列中 (C 列) 查找看起来可疑的应用。 应仔细查看名称拼写错误、名称超平淡或听起来带有黑客声音的应用。

确定攻击范围

清点完应用程序访问权限后,请查看 审核日志 以确定违规的全部范围。 搜索受影响的用户、非法应用程序有权访问组织的时限以及应用拥有的权限。 可以在Microsoft Defender门户中搜索审核日志

重要

必须在攻击之前为管理员和用户启用邮箱审核和活动审核,才能获取此信息。

识别具有非法权限的应用程序后,可通过多种方式删除该访问权限:

  • 可以通过执行以下步骤,在Microsoft Entra 管理中心中撤销应用程序的权限:

    1. https://entra.microsoft.com处打开Microsoft Entra 管理中心,然后转到“标识>用户>”*“所有用户”。 或者,若要直接转到 “用户”>“所有用户”,请使用 https://entra.microsoft.com/#view/Microsoft_AAD_UsersAndTenants/UserManagementMenuBlade/~/AllUsers/menuId/
    2. 通过单击“ 显示名称 ”值查找并选择受影响的用户。
    3. 在打开的用户详细信息页上,选择“ 应用程序”。
    4. 在“ 应用程序 ”页上,单击“ 名称” 值,选择非法应用程序。
    5. 在打开的 “分配详细信息 ”页上,选择“ 删除”。
  • 可以按照 Remove-MgOauth2PermissionGrant 中的步骤撤销 PowerShell 的 OAuth 同意授予

  • 可以按照 Remove-MgServicePrincipalAppRoleAssignment 中的步骤使用 PowerShell 撤销服务应用角色分配。

  • 可以禁用受影响帐户的登录,这将禁止应用访问帐户中的数据。 此操作对于用户的工作效率并不理想,但它可以是一种短期修正,以快速限制攻击的结果。

  • 可以关闭组织中的集成应用程序。 此操作非常激烈。 虽然它可以防止用户意外授予对恶意应用的访问权限,但它也会阻止所有用户向任何应用程序授予同意。 我们不建议执行此操作,因为它严重损害了用户使用第三方应用程序的工作效率。 可以按照打开或关闭集成应用中的步骤关闭 集成应用

另请参阅