微软365用户正遭受一种名为GhostCode的新型网络钓鱼工具攻击,该工具利用合法设备授权流程中的漏洞诱骗用户交出账户访问权限。eSentire公司威胁响应部门的研究人员于2026年8月底发现了这一攻击活动。

该工具利用微软的OAuth 2.0设备授权授予流程,这是一种合法机制,旨在使物联网设备、智能电视、打印机或其他不易支持传统浏览器登录方式的设备完成身份验证。这种被称为设备代码钓鱼的技术此前已在其他攻击中出现过。作为该流程的一部分,设备会显示一个代码,供用户在另一台设备的浏览器中输入以完成身份验证。

GhostCode伪装成此类设备之一,诱使微软OAuth生成设备代码,然后说服受害者在微软的身份验证页面上输入该代码。受害者随后正常登录并完成多重身份验证——但实际上此次身份验证是针对攻击者控制的设备进行的,从而使攻击者能够获得随之产生的身份验证令牌。这些令牌随后被用于注册攻击者控制的设备、获取额外凭证,并在受害者的微软环境中建立持久访问权限。

在eSentire观察到的这次攻击活动中,攻击者伪装成采购人员,通过网站联系表单发起接触,随后将对话转移至一个以保密协议为主题的HTML文件。打开该文件后,受害者便会被带至设备代码钓鱼页面。

被盗令牌实现持久化访问

GhostCode在完成身份验证后的活动重点在于将窃取的访问权限转化为在微软环境中的持久驻留。一旦获得访问权限,eSentire记录到在78秒内发生了九次成功的API调用,涉及微软Intune注册服务、设备注册服务、Azure活动目录以及Microsoft Graph。

在此期间共有三台设备被注册,分别发生在身份验证后的第28秒、第53秒和第77秒,eSentire表示这一系列操作是自动化完成的。

其中第三台设备还成功注册到了微软的云端设备管理服务Intune中。eSentire指出,即便令牌被撤销,该Intune注册仍会持续存在:攻击者创建的设备会一直留在租户环境中,直到被明确移除为止。

攻击者还获取了一枚主刷新令牌(PRT),eSentire将其称为微软身份环境中“最强大的”凭证之一。

eSentire表示:“通过设备代码滥用获取PRT,使威胁行为者在该令牌的有效期内基本获得了相当于单点登录的权限,可访问受害者整个微软365环境——包括任何未被明确要求合规设备的条件访问策略所保护的服务。”该公司补充说,此类令牌默认有效期为14天。

攻击者还采用了多种规避检测的手段,包括对诱导文件中的HTML代码进行填充和混淆、加密重定向链接、检测是否为机器人访问,以及使用Cloudflare Turnstile来阻挡安全工具接近钓鱼页面。

防御者可以采取的措施

针对此类攻击,eSentire的研究人员建议通过条件访问策略限制微软的设备代码身份验证流程,并对不需要该功能的用户予以禁用。同时建议监控设备注册服务,留意单一非交互式会话中出现多次设备注册的情况,并关注设备代码身份验证之后出现的与用户代理python-requests相关的活动。

该公司表示,对Entra ID中与GhostCode命名模式相匹配的设备进行审计,并将成功的设备代码身份验证与后续基于Python的请求进行关联分析,应能及时发现正在进行的攻击。该公司还公布了与此次攻击活动相关的入侵指标列表,以协助检测工作。

GhostCode的出现,使得利用设备代码钓鱼手段攻击微软OAuth身份验证流程的攻击案例进一步增多。近期的例子包括利用“EvilTokens”钓鱼即服务(PhaaS)工具包发起的攻击、KnowBe4公司于2026年2月报告的一次攻击活动,以及2026年12月观察到的涉及多个团伙(包括financially motivated的犯罪团伙和国家支持的攻击者)的活动。

Q&A

Q1:GhostCode是什么?它如何攻击微软365账户?

A:GhostCode是一种新型网络钓鱼工具,利用微软OAuth 2.0设备授权流程的漏洞,诱骗用户在钓鱼页面输入设备代码,从而窃取身份验证令牌,进而注册攻击者控制的设备并获得对受害者微软365环境的持久访问权限。

Q2:GhostCode攻击中被盗的主刷新令牌(PRT)有多危险?

A:PRT被eSentire称为微软身份环境中最强大的凭证之一,攻击者获取后可在令牌有效期内(默认14天)获得相当于单点登录的权限,访问受害者整个微软365环境中未受条件访问策略严格保护的服务。

Q3:企业该如何防范GhostCode这类设备代码钓鱼攻击?

A:eSentire建议通过条件访问策略限制设备代码身份验证流程,对不需要该功能的用户予以禁用,同时监控设备注册服务中的异常注册行为,并关注身份验证后出现的可疑Python请求活动。

Computerworld