滥用 Entra ID 应用权限——工作原理与防御策略
滥用 Entra ID(原 Azure AD)的应用权限是一种高级攻击技术,攻击者会利用 Microsoft Entra ID 中配置错误或权限过高的应用注册(application registrations)、同意授权(consent grants)以及委派/静态凭据(delegated/static credentials),从而获取未经授权的访问、提升权限、外传数据,或维持持久访问。其主要目标是滥用合法应用权限,让攻击者无需传统的凭据窃取即可代表用户或租户执行操作。
Attribute | Details |
|---|---|
|
Attack Type |
Entra ID application permission abuse |
|
Impact Level |
High |
|
Target |
Cloud tenants, SaaS consumers, enterprises, governments |
|
Primary Attack Vector |
Misconfigured app registrations, excessive consent, compromised app secrets/certs, OAuth flows |
|
Motivation |
Data exfiltration, lateral cloud-to-on-prem escalation, persistence, tenant takeover |
|
Common Prevention Methods |
Least-privilege app design, consent restrictions, certificate-based auth, conditional access, continuous consent/permission auditing |
Risk Factor | Level |
|---|---|
|
Potential Damage |
Very High |
|
Ease of Execution |
Medium |
|
Likelihood |
Medium to High |
什么是 Entra ID 应用程序权限滥用?
Entra ID 应用程序权限滥用发生在攻击者利用应用程序级权限(应用程序权限、委派权限、管理员已同意的范围)、配置错误的 OAuth 同意、泄露的客户端密钥/证书,或滥用服务主体以在租户中执行特权操作时。与基于密码的入侵不同,此技术会使用合法的平台机制(OAuth 令牌、应用程序角色、Graph API 调用),因此恶意操作往往看起来像正常的应用程序活动。
应用程序权限滥用是如何运作的?
下面按步骤分解了攻击者利用 Entra ID 应用程序权限时常见的技术与阶段。
1. 建立初始据点
攻击者首先获取与目标云租户相关的任何立足点。常见的进入点包括:钓鱼(以获取被委派的用户同意)、被入侵的用户账户、从仓库/配置中泄露的应用客户端密钥、窃取某个应用的证书/私钥,或滥用较弱的管理员同意工作流。
2. 发现已注册的应用程序及其权限
一旦进入环境,攻击者会枚举服务主体(service principals)和应用程序注册(application registrations),以识别具有高权限的应用(例如:Application.ReadWrite.All、Directory.ReadWrite.All、Mail.ReadWrite、Group.ReadWrite.All)。枚举可以通过 Microsoft Graph 查询、访问 Azure AD 门户,或使用被委派的令牌来列出企业应用及其已授予的作用域(granted scopes)来完成。
3. 识别可被利用的同意与委派路径
攻击者会寻找以下类型的应用:已获得管理员同意的应用、委派作用域过于宽泛的应用、允许隐式授权(implicit grant)的旧版端点,或保护不当的机密客户端凭据(密钥/证书)。他们特别关注能够提供后台访问(应用权限)的应用,而这种访问不需要已登录的用户。
4. 外传/窃取应用凭据或滥用授权同意
如果客户端密钥(client secrets)或证书可以被发现(例如在流水线、代码仓库、配置文件中,或在访问权限较弱的 Key Vault 中),攻击者会提取它们并与令牌进行交换。在委派授权(delegated-consent)流程中,攻击者可能会通过诱导(consent phishing)欺骗特权用户同意恶意应用权限范围(app scopes)。他们也可能利用多租户应用中的授权同意(consent-granting)功能。
5. 获取令牌并执行特权操作
攻击者利用被盗/被滥用的凭据或已获得的授权同意,请求 OAuth 访问令牌(用于应用权限的应用令牌,或代表用户的委派令牌),并调用 Microsoft Graph 或其他 API 来列出用户、读取邮件、下载 OneDrive 文件、修改目录对象,或创建后门(新的应用注册或自定义角色)。
6. 提权、保持持久化并横向移动
通过应用权限,攻击者可以创建新的服务主体(service principal)、添加凭据、分配角色或以规模化方式外传数据。由于应用令牌可能长期有效,且操作往往看起来很正常,攻击者能够维持持久性,并从云端转移到本地环境的依赖关系(例如,同步身份信息、修改混合连接器)。
✱ 变体:同意(Consent)钓鱼与恶意多租户应用
诱骗拥有特权的用户授予广泛权限。攻击者托管看似无害的应用,这些应用会请求危险的权限范围(scopes),并利用社交工程让管理员或拥有特权的用户进行同意(consent)。一旦用户完成同意,该应用就可以在整个租户范围内运作。恶意多租户应用可用于从许多租户中收集管理员同意。
滥用旧版 OAuth 流程与隐式授权(implicit grants):旧版 OAuth 流程或配置错误的重定向 URI(redirect URIs)可能使令牌被盗或绕过同意成为可能。攻击者利用这些问题,在没有交互式用户流程保护的情况下获取委派令牌(delegated tokens)。
攻击流程图
示例:从组织视角看
从组织的视角来看,这种情况是这样的:攻击者对 Contoso Corp 的管理员进行网络钓鱼,诱使其同意一个看似合法的分析工具的应用程序。一旦该应用程序获得管理员同意,攻击者就会将应用凭据兑换为应用令牌,并使用 Microsoft Graph 枚举邮箱,然后从 OneDrive 下载敏感文档。接着,他们会注册一个带有长期有效证书的辅助服务主体,以保留访问权限,从而实现持续的数据外传以及对租户的修改。
应用程序权限滥用的示例
Case | Impact |
|---|---|
|
OAuth Consent Phishing Campaigns |
Attackers have used consent phishing to gain tenant-wide application permissions, enabling mass mailbox access and data theft across multiple organizations. |
|
Leaked Client Secrets in Public Repos |
Several incidents show attackers discovering app secrets in public Git repositories or deployment artifacts, using them to mint tokens and access resources without ever touching user passwords. |
应用程序权限滥用的后果
滥用 Entra ID 的应用程序权限可能带来严重后果:租户被攻破、大规模数据外传、未经授权创建账户和服务主体、向本地资源进行横向移动,以及难以检测的长期持久化。
财务后果
攻击者可能会窃取知识产权、客户 PII 或财务数据,从而导致欺诈、监管罚款、勒索要求或整改成本(取证、法律、通知)。滥用云资源(例如挖矿)也可能带来意外的账单。
运营中断
篡改目录对象、组成员关系或身份同步,可能会扰乱身份验证流程,导致关键应用宕机,或迫使进行紧急轮换并重新配置集成。
声誉损害
与滥用应用权限相关的租户受损或数据泄露可能削弱客户信任,招致负面报道,并损害合作伙伴关系。
法律与监管影响
受监管数据(PHI、财务记录)的未授权暴露可能触发 GDPR、HIPAA 或其他合规调查、罚款以及潜在诉讼。
Impact Area | Description |
|---|---|
|
Financial |
Data theft, fraud, cloud bill abuse |
|
Operational |
Broken auth flows, service outages |
|
Reputational |
Loss of customer confidence, brand harm |
|
Legal |
Regulatory penalties, lawsuits |
应用权限滥用的常见目标:谁处于风险之中?
权限过高的企业应用
被授予 Directory.* 或整个租户范围 Application 权限的应用是高价值目标,因为它们能够在身份与资源之间执行批量操作。
多租户或面向客户的集成
请求广泛权限范围的第三方 SaaS 应用或多租户应用,如果管理员予以同意,或应用本身具有恶意行为,就可能被滥用。
会泄露的 DevOps/CI 流水线
意外提交到源代码控制中的客户端密钥或证书、存储在不安全的存储位置中,或可从 CI 日志中访问,会使机密客户端变得容易受到攻击。
旧版 OAuth 配置与条件访问漏洞
使用旧版认证流程的应用,或缺乏严格条件访问策略的租户(例如:在同意环节不启用 MFA、没有管理员同意工作流),更容易被利用。
过期或未受监控的服务主体(Service Principals)
包含仍然有效凭据的旧版或孤立的应用注册,是持续存在的攻击途径;攻击者可以从容地对其进行破解。
风险评估
Risk Factor | Level |
|---|---|
|
Potential Damage |
Very High — tenant-wide compromise and mass data access possible. |
|
Ease of Execution |
Medium — requires reconnaissance plus either social engineering or discovery of credentials, but techniques and tooling are widely known. |
|
Likelihood |
Medium to High — many tenants still have consent workflows, leaked secrets, or permissive app registrations. |
如何防止应用程序权限滥用
防范需要多层次:缩小“爆炸半径”,强化应用程序认证,并尽量减少人为同意错误。
应用与同意卫生
- 实施最小权限范围:仅请求所需的最少 Microsoft Graph scopes;在可能的情况下,优先使用委派权限而不是应用程序权限。
- 使用管理员同意工作流:对高权限应用程序,要求提供理由,并采用多审批人的管理员同意。
- 限制谁可以注册应用或授予同意:将应用注册和管理员同意权限限制为一个小规模、经过审查的群体。
- 审查并删除未使用的应用:定期审计服务主体和应用注册信息,以删除孤立或不必要的项。
保护凭据与机密
- 对机密客户端,优先使用基于证书的(非对称)认证,而不是使用客户端密钥。证书更不容易被暴露,并且可以安全地轮换。
- 将机密存储在托管保管库(Azure Key Vault)中,并使用严格的 RBAC 与托管标识访问——绝不要放在源代码或明文配置中。
- 自动轮换客户端密钥(client secrets)和证书,并在运营上可行的情况下强制启用较短的有效期。
Conditional Access & Session Controls
- 要求为应用令牌(app token)签发启用 Conditional Access:阻止高风险登录,要求使用符合规范的设备,并在适用的情况下对委派流程(delegated flows)强制执行 MFA。
- 当出现高风险信号时,使用持续访问评估(continuous access evaluation)来撤销令牌。
Application Design & Monitoring
- 为最小权限与透明性设计应用:实现仅同意(consent-only)功能和细粒度范围(granular scopes);记录为何需要每一项权限。
- 记录并监控 Graph API 的使用情况:当出现异常模式时发出警报(例如:大规模邮箱下载、批量用户枚举、新建应用/服务主体)。
- 通过授权管理(entitlement management)和策略限制哪些应用可以使用应用程序权限。
Netwrix 如何提供帮助
Netwrix Identity Threat Detection & Response(ITDR)通过持续监控高风险应用注册、异常的同意授予以及可疑的 Graph API 活动,增强您对 Entra ID 应用程序权限滥用的防御。借助早期发现未经授权的特权升级,并自动化诸如告警或撤销已被攻陷权限等响应动作,Netwrix ITDR 可帮助您最大限度缩短停留时间(dwell time),并降低由身份驱动的攻击所造成的影响范围。借助对混合版 Active Directory 和 Entra ID 的全面可视性,组织能够实施最小权限、保护高风险服务主体,并快速调查入侵指标(indicators of compromise),从而确保数据安全从身份开始。
检测、缓解与响应策略
检测
- 监控异常的 Graph API 模式:例如 Applications.ReadWrite.All、Users.ReadAll 的激增,或大文件下载。
- 对新的应用程序注册和新的凭据发出警报:当创建了服务主体、添加了凭据或授予了同意时进行通知。
- 跟踪管理员同意事件及其审批者:对来自异常位置或异常时间的意外管理员同意进行标记。
- 检测异常令牌签发:应调查由未知客户端请求的令牌,或使用旧凭据请求的令牌。
- 使用欺骗手段:创建诱饵应用或服务主体,并监视任何对它们的访问行为。
响应
- 立即撤销已泄露的凭据:轮换客户端密钥(client secrets),撤销证书,并从所有位置删除泄露的凭据。
- 移除恶意应用的授权并禁用违规的服务主体:删除相关权限并禁用该应用,以阻止进一步的 API 访问。
- 强制令牌失效:在可能的情况下使已发放的刷新令牌和访问令牌失效,并要求重新认证。
- 开展租户范围审计:检查角色、组成员关系、已委派的权限,以及用于可能产生二次影响的配置/供给(provisioning)连接器。
- 搜寻横向活动痕迹:检查是否创建了账户、分配了角色、出现了异常的应用注册,或修改了条件访问(conditional access)策略。
缓解
- 在身份(identity)方面采用零信任(Zero Trust):持续验证每个请求,并限制任何应用或身份可以执行的操作。
- 使用最小权限自动化:仅允许自动化和应用访问所需资源,并将高风险任务隔离到专用且可审计的服务主体中。
- 实施强有力的供应链控制:扫描代码仓库(repos)、CI 管道(pipelines)以及部署产物(deployment artifacts)中是否泄露了敏感信息(secrets),并将敏感信息扫描集成到 PR 检查中。
行业特定影响
Industry | Impact |
|---|---|
|
Healthcare |
Compromise may expose PHI from cloud EMR systems or patient communications (email/OneDrive), violating HIPAA. |
|
Finance |
Attackers can access transaction data, customer PII, or payment systems integrated via OAuth, causing regulatory and financial fallout. |
|
Retail |
Exposure of customer data, loyalty program credentials, or supply-chain integrations can lead to fraud and compliance violations. |
攻击演进与未来趋势
- 同意钓鱼(Consent phishing)正在成熟:将社交工程与精美的应用页面结合,可以提高管理员同意的成功率。
- 应用侦察自动化:工具现已能够在大规模范围内扫描租户,查找高风险应用、泄露的凭据以及开发运维(DevOps)机密信息。
- 长期有效的非交互式凭据依然很有吸引力——证书保护和轮换正在成为标准防御措施。
- 云到本地(Cloud-to-on-prem)身份桥接:攻击者正越来越多地将对 Entra ID 的滥用与混合同步连接器结合起来,以扩展对本地 AD 的渗透范围。
- AI 辅助侦察:自动化系统会分析租户元数据,找出通往高影响权限的最短路径。
关键统计数据与信息图
(用于强调的示例指标——如有可用的遥测数据,请替换为您的数据。)
• 很大比例的事件都与 CI/CD 中泄露或管理不当的机密有关。
• 近年来的云端受损事件中,授权/同意钓鱼活动占据了相当一部分。
• 许多组织缺乏对应用权限和服务主体(service principals)的定期审计。
最后的思考
滥用 Entra ID 应用程序权限非常有力,因为它会利用合法的平台能力,使恶意活动与正常自动化融为一体。防御策略应将预防性控制(最小特权、密钥/机密保护、同意治理)、检测(Graph 监控、对应用生命周期事件的告警)以及快速响应(凭据撤销、移除同意)结合起来。采用编程化、持续性的应用权限审计方法,并配合对谁可以给予同意或注册应用的严格运维控制,将能显著降低攻击面。
常见问题解答
分享到
Kerberoasting 攻击——工作原理与防御策略
AdminSDHolder 修改——工作原理与防御策略
AS-REP Roasting 攻击:工作原理与防御策略
Hafnium 攻击——工作原理与防御策略
DCSync 攻击解析:对 Active Directory 安全的威胁
Golden SAML 攻击终极指南
Silver Ticket 攻击
gMSA 利用攻击与 Golden gMSA 攻击详解
DCShadow 攻击——工作原理、真实案例与防御策略
ChatGPT 提示注入(prompt injection):了解风险、示例与防范
NTDS.dit 提取攻击详解
理解 Pass-the-Hash(PtH)攻击
Pass-the-Ticket(传票)攻击解析:风险、示例与防御策略
理解密码喷洒(password spraying)攻击
明文密码提取(Plaintext Password Extraction)解析:风险、示例与防范
4 种服务账号攻击及防护方法
如何防止恶意软件攻击影响您的业务
什么是凭证填充(Credential Stuffing)?
使用 PowerUpSQL 破坏 SQL Server
什么是 Mousejacking(鼠标劫持)攻击,以及如何防御
使用 Security Support Provider(SSP)窃取凭据
彩虹表攻击:工作原理与防御方法
深入了解密码攻击及其防止方法
LDAP Reconnaissance
通过 Pass-the-Cookie 攻击绕过 MFA
什么是 Golden Ticket 攻击?工作原理、检测与防护