黑客滥用 OAuth 2.0 工作流程劫持微软 365 账户
黑客滥用 OAuth 2.0 工作流程劫持微软 365 账户
近日,网络安全公司 Volexity 监测发现,俄罗斯威胁行为者正滥用合法 OAuth 2.0 身份验证流程,针对乌克兰及人权组织相关人员的微软 365 账户实施劫持攻击。这种攻击利用用户对正规认证流程的信任,隐蔽性极强。
一、攻击活动的延续性
自 3 月初起,Volexity 持续追踪到此类恶意活动。事实上,早在 2 月,Volexity 与微软已披露过类似攻击 —— 当时攻击者利用设备代码身份验证钓鱼手段窃取微软 365 账户。此次攻击的威胁行为者被分别标记为 UTA 0352 和 UTA 0355,Volexity 有中等把握判断其来自俄罗斯。
二、攻击手法解析
(一)伪装身份渗透通信渠道
攻击者主要通过 WhatsApp、Signal 等即时通讯平台发起攻击,伪装成欧洲政要或乌克兰外交官,以 “邀请参加私人视频会议讨论乌克兰事务” 为诱饵,甚至使用已入侵的乌克兰政府账户进行通信,降低目标警惕性。
(二)钓鱼链接诱导身份验证
一旦建立联系,攻击者会发送精心构造的 OAuth 钓鱼链接,谎称是 “加入会议的必要步骤”。例如,UTA 0352 会通过 PDF 文件附带恶意链接,引导用户登录微软及依赖微软 365 OAuth 流程的第三方应用。
(三)社会工程学骗取授权码
当用户点击链接进行身份验证后,会被重定向至 insiders.vscode.dev 托管的 Visual Studio Code 浏览器版本页面。攻击者利用对话框诱导用户返回显示的代码,声称 “这是会议准入码”,而实际上该代码是有效期 60 天的 OAuth 授权码,可用于获取用户所有资源的访问令牌。研究人员指出,Visual Studio Code 的界面设计便于攻击者提取代码,若使用其他页面可能仅显示空白。
三、攻击变种与长期控制
早期攻击采用 Azure AD v1.0 格式,当前攻击升级为 v2.0,主要差异体现在 URL 参数。4 月披露的 UTA 0355 攻击中,攻击者利用入侵的乌克兰政府邮箱发起通信,并通过窃取的授权码在受害者 Microsoft Entra ID(原 Azure AD)中注册新设备。为绕过双因素认证(2FA),攻击者谎称 “2FA 代码是访问会议相关 SharePoint 的必要条件”,一旦用户批准,攻击者即可长期控制账户并访问邮件数据。
四、防御建议
- 针对性流量拦截:对使用 Visual Studio Code 客户端 ID 的登录行为设置警报,禁止访问 “insiders.vscode.dev” 和 “vscode-redirect.azurewebsites.net”。
- 条件访问策略:通过微软 Azure AD 条件访问功能,将账户访问限制在企业认证设备范围内。
- 强化安全意识:培训员工警惕 “外交人员”“紧急会议” 等钓鱼话术,避免向陌生链接泄露任何代码或凭证。
- OAuth 流程审计**:定期审查 OAuth 应用权限,删除不必要的第三方应用授权,确保身份验证日志可追溯。
此次攻击揭示了攻击者对合法认证机制的滥用趋势,企业需结合技术防御与人员培训,构建多层级防护体系,避免成为供应链攻击的受害者。