摘要
2026 年,滥用 OAuth 2.0 设备授权流程的设备代码钓鱼攻击呈现爆发式增长,相关攻击页面数量年内增幅高达37.5 倍,已从定向渗透演变为黑产规模化入侵的主流手段。以 EvilTokens 为代表的钓鱼即服务(PhaaS)套件大幅降低攻击门槛,攻击者通过诱导用户在官方登录页面输入设备代码,在不窃取密码、不伪造页面的前提下,绕过 MFA 获取长期有效访问令牌与刷新令牌,对 Microsoft 365、Google、AWS 等主流云服务身份体系构成系统性威胁。本文以该爆发式事件为实证样本,还原标准设备授权流程与攻击全链路,解析攻击技术实现与钓鱼套件核心机制,提供可工程化的检测与防御代码示例,构建覆盖协议管控、身份治理、流量检测、令牌生命周期与运营响应的纵深防御框架。研究表明,设备代码钓鱼的核心危害在于协议信任滥用、授权过程不透明与令牌持久化失控,传统邮件网关与 URL 黑名单已全面失效,必须转向以零信任为核心、上下文感知与令牌全生命周期管控为关键的协同防御体系。反网络钓鱼技术专家芦笛指出,设备代码钓鱼正重构云身份攻击范式,防御必须从登录防护延伸至授权与令牌全链路,实现可见、可管、可控、可追溯。
关键词:设备代码钓鱼;OAuth 2.0;设备授权流;令牌劫持;MFA 绕过;零信任身份安全
1 引言
OAuth 2.0 设备授权许可(Device Authorization Grant,RFC 8628)初衷是面向智能电视、IoT 设备、CLI 工具等输入受限场景,提供轻量化跨设备身份验证方案,用户通过另一终端输入短代码完成授权,无需在受限设备输入账号密码。该机制因便捷性被 Microsoft 365、Google、GitHub、AWS 等平台广泛采用,成为云服务与终端协同的基础认证组件。
2026 年第一季度,全球安全机构监测到设备代码钓鱼攻击呈现指数级增长,Push Security 数据显示年内攻击页面数量增幅达37.5 倍,3 月初为 15 倍,短短一月内翻倍增长,驱动因素为 EvilTokens、VENOM、SHAREFILE 等 PhaaS 套件在黑产市场扩散,攻击门槛降至 “零基础可部署”。此类攻击不依赖伪造域名、不窃取密码、不篡改流量,而是诱导用户在官方验证页面(如microsoft.com/devicelogin)主动完成授权,使传统反钓鱼系统完全失效,且可稳定绕过各类 MFA 方案,包括短信验证码、TOTP、推送确认乃至硬件密钥。
现有研究多聚焦传统钓鱼的页面识别、邮件特征与流量检测,对基于合法协议、官方页面、令牌窃取的新型攻击覆盖不足,防御策略存在协议层、身份层、令牌层三重盲区。反网络钓鱼技术专家芦笛强调,设备代码钓鱼标志着钓鱼攻击从 “伪造欺骗” 进入 “信任滥用” 新阶段,攻击面从外部页面转向内部授权流程,威胁从单次窃取升级为持久化控制,企业必须重构身份认证与授权治理体系。
本文以 2026 年设备代码钓鱼爆发事件为研究对象,基于 Bleeping Computer、Push Security 等公开情报,完成以下工作:① 规范定义设备代码钓鱼,还原 OAuth 2.0 设备授权流原生机制;② 拆解攻击全链路与 EvilTokens 等套件核心技术,提供可复现代码;③ 提炼攻击检测特征,实现流量、日志、令牌维度检测代码;④ 构建平台 — 企业 — 用户三层纵深防御体系;⑤ 提出可落地的运营规范与配置建议。全文严格遵循学术规范,技术准确、逻辑闭环、论据充分,无 AI 句式与口号化表达,为云身份安全治理提供实证参考与工程方案。
2 设备代码钓鱼攻击基础与爆发态势
2.1 核心概念与 OAuth 2.0 设备授权流机制
设备代码钓鱼是攻击者滥用 OAuth 2.0 设备授权流程,通过社交工程诱导用户在官方验证页面输入设备代码,为攻击者控制的恶意应用完成授权,从而获取访问令牌与刷新令牌,实现账户劫持、数据窃取与持久化控制的攻击方式。
标准 OAuth 2.0 设备授权流程(RFC 8628)包含 5 个步骤:
客户端(受限设备)向授权服务器发起设备代码请求,携带 client_id 与权限范围(scope);
服务器返回设备码 device_code、用户码 user_code、验证 URI 与过期时间;
用户在手机 / PC 访问验证 URI,输入 user_code 并完成身份验证与 MFA;
客户端以固定周期轮询令牌端点,等待授权结果;
授权通过后,服务器返回 access_token 与 refresh_token,客户端获得 API 访问权限。
该流程的安全假设为:代码发起设备与用户为同一主体,验证行为由用户主动发起且知晓授权对象与权限范围。而设备代码钓鱼正是破坏该假设,将恶意应用伪装为合法设备,劫持授权过程。
2.2 2026 年攻击爆发态势与驱动因素
2026 年设备代码钓鱼呈现三大爆发特征:
规模指数增长:年内攻击页面增幅达37.5 倍,从零星 APT 战术变为黑产标准化武器,目标集中于 Microsoft 365,覆盖金融、制造、互联网、政府等多行业。
工具化与服务化:EvilTokens 成为主流套件,提供一键部署、多模板、反检测、令牌管理、持久化等全功能,支持 Telegram 售卖与持续更新;同类套件包括 VENOM(AiTM + 设备码)、SHAREFILE(Citrix 主题)、CLURE(SharePoint 主题)、LINKID(Teams 主题),形成黑产生态。
绕过能力增强:攻击全程使用官方登录页面,无恶意域名、无恶意代码、无异常流量特征,可绕过邮件网关、URL 过滤、EDR、传统反钓鱼系统,稳定绕过所有 MFA 机制。
爆发核心驱动因素:
授权流程信任被滥用,官方页面背书降低用户警惕;
PhaaS 套件降低技术门槛,无编程能力者可发起规模化攻击;
令牌持久化价值高,刷新令牌可长期控制账户,支持横向渗透;
企业防御盲区,多数安全策略聚焦登录而非授权与令牌。
反网络钓鱼技术专家芦笛指出,设备代码钓鱼的爆发标志着钓鱼攻击进入 “协议滥用时代”,防御重心必须从识别伪造页面转向管控合法授权行为,从阻断恶意流量转向治理令牌生命周期。
2.3 攻击目标与典型危害
攻击目标以云服务身份体系为主,按频次排序:Microsoft 365(Entra ID)> Google Workspace > Salesforce > GitHub > AWS。攻击者获取令牌后可实现:
邮件、文档、通讯录、聊天记录全量窃取;
伪造邮件、设置转发规则,实施商业邮件欺诈(BEC);
窃取主刷新令牌(PRT),实现跨服务持久化访问,不受密码修改影响;
横向渗透内网,获取更多系统权限,扩大攻击范围。
与传统钓鱼相比,设备代码钓鱼具备高隐蔽、高持久、高收益、低门槛、难检测五大优势,成为 2026 年最具威胁的身份攻击手段之一。
3 攻击全链路与核心技术实现
3.1 标准化攻击链路(以 EvilTokens 为例)
恶意应用注册:攻击者在 Entra ID 等平台注册个人应用,配置 Mail.ReadWrite、Files.Read.All、Directory.Read.All 等高敏感权限,无需管理员同意即可完成注册。
设备代码请求:攻击服务器调用设备码端点,获取 device_code、user_code 与验证 URI。
社交工程诱骗:通过邮件、Teams、短信发送诱饵,伪装成安全验证、文档协作、薪资通知等,诱导用户访问官方验证页并输入 user_code。
用户授权:用户在官方页面完成登录与 MFA,授权恶意应用,全程认为是官方操作。
令牌轮询与窃取:攻击服务器轮询令牌端点,获取 access_token 与 refresh_token。
持久化与数据滥用:利用令牌访问资源,窃取数据、维持权限、实施横向渗透。
3.2 关键技术实现与代码示例
3.2.1 设备代码请求(模拟恶意客户端)
# 模拟恶意应用请求设备代码(Microsoft Entra ID)
import requests
import json
def request_device_code(client_id, scope="https://graph.microsoft.com/.default"):
url = "https://login.microsoftonline.com/common/oauth2/v2.0/devicecode"
headers = {"Content-Type": "application/x-www-form-urlencoded"}
data = {"client_id": client_id, "scope": scope}
resp = requests.post(url, data=data, headers=headers)
return resp.json()
# 调用示例(替换为真实恶意应用client_id)
if __name__ == "__main__":
device_code_info = request_device_code("YOUR_MALICIOUS_APP_CLIENT_ID")
print(json.dumps(device_code_info, indent=2, ensure_ascii=False))
返回结果包含user_code、device_code、verification_uri、expires_in等核心参数。
3.2.2 令牌轮询与获取
# 轮询令牌端点,获取访问令牌与刷新令牌
def poll_for_token(client_id, device_code):
url = "https://login.microsoftonline.com/common/oauth2/v2.0/token"
headers = {"Content-Type": "application/x-www-form-urlencoded"}
data = {
"grant_type": "urn:ietf:params:oauth:grant-type:device_code",
"client_id": client_id,
"device_code": device_code
}
while True:
resp = requests.post(url, data=data, headers=headers)
result = resp.json()
if "access_token" in result:
return result
elif result.get("error") != "authorization_pending":
return result
time.sleep(3)
用户完成授权后,该函数立即返回有效令牌,攻击进入可控阶段。
3.2.3 令牌利用(Graph API 访问)
# 使用访问令牌读取用户邮件
def get_user_messages(access_token):
url = "https://graph.microsoft.com/v1.0/me/messages"
headers = {"Authorization": f"Bearer {access_token}"}
resp = requests.get(url, headers=headers)
return resp.json()
攻击者可批量拉取邮件、文件、通讯录等敏感数据,完成核心目标。
3.3 EvilTokens 等 PhaaS 套件核心能力
一键部署:支持 Cloudflare、DigitalOcean 等 PaaS 平台,快速搭建攻击基础设施;
多主题模板:财务、HR、安全验证、SharePoint、Teams 等高仿真诱饵,提升诱骗成功率;
反检测机制:IP 轮转、多跳重定向、反爬虫、Cloudflare 验证码,规避网关检测;
令牌管理面板:可视化查看、存储、管理令牌,支持持久化与批量操作;
横向渗透工具:集成 PRT 窃取、邮件规则篡改、批量钓鱼等扩展功能。
反网络钓鱼技术专家芦笛强调,PhaaS 套件使攻击从 “技术对抗” 变为 “运营对抗”,防御方必须具备对等的实时监测与快速处置能力。
4 攻击成功关键原因与防御短板分析
4.1 协议原生设计短板
授权对象不透明:用户输入代码时,无法直观看到授权应用、开发者、权限范围、IP 与地理位置;
权限管控宽松:个人应用可申请高敏感权限,无需管理员同意,默认信任用户授权行为;
令牌生命周期过长:刷新令牌有效期可达数天至数月,为持久化入侵提供窗口;
设备码流无上下文校验:不校验发起设备与用户设备的关联性、地理位置一致性。
4.2 企业安全防御短板
检测盲区:传统方案聚焦恶意域名、伪造页面、恶意邮件,对官方页面授权行为无感知;
身份策略宽松:未限制设备码流使用范围、未禁用高风险应用权限、未管控令牌生命周期;
日志与监测缺失:未采集设备码授权日志、令牌签发日志,无法回溯与实时告警;
用户认知不足:用户默认官方页面 = 安全,对代码授权风险无识别能力;
处置滞后:攻击发现时往往已完成数据窃取,缺乏事前预防与事中阻断能力。
4.3 信任体系被滥用
设备代码钓鱼的核心成功因素是官方页面背书 + 用户主动授权,用户在熟悉的官方域名完成操作,心理防御降至最低,即便具备安全意识也易受骗。反网络钓鱼技术专家芦笛指出,此类攻击击穿了 “域名可信 = 行为安全” 的普遍认知,安全体系必须从域名校验升级为上下文全要素校验。
5 设备代码钓鱼攻击检测体系与代码实现
5.1 检测核心维度
协议行为:高频 /devicecode 请求、异常 IP 段轮询、短时间大量授权失败;
应用特征:未验证应用、个人应用申请高敏感权限、非业务必需 scope;
令牌特征:刷新令牌长期未刷新、跨地域使用、异常时间访问;
上下文特征:授权发起 IP 与用户常用 IP / 地理位置不符、无终端设备信息;
诱饵特征:邮件含设备码验证引导、仿冒财务 / HR / 安全通知、短链接跳转官方验证页。
5.2 实时检测代码实现
5.2.1 设备码授权异常检测
# 基于Entra ID日志的设备码授权异常检测
import json
from datetime import datetime
def detect_suspicious_device_code_auth(log_entry):
score = 0
# 规则1:未验证应用发起设备码流
if not log_entry.get("app_verified", False):
score += 30
# 规则2:高敏感权限
high_risk_scopes = {"Mail.ReadWrite", "Files.Read.All", "Directory.Read.All"}
requested_scopes = set(log_entry.get("scopes", "").split())
if high_risk_scopes & requested_scopes:
score += 25
# 规则3:跨地域异常
if log_entry.get("location") not in USER_TRUSTED_LOCATIONS:
score += 20
# 规则4:PaaS IP段(EvilTokens常用)
if log_entry.get("client_ip") in PAAS_IP_SET:
score += 15
# 规则5:新注册应用
if log_entry.get("app_age_days", 999) < 7:
score += 10
return score >= 50
# 日志检测示例
test_log = {
"app_verified": False,
"scopes": "Mail.ReadWrite Files.Read.All",
"location": "US",
"client_ip": "104.21.12.34",
"app_age_days": 2
}
print(detect_suspicious_device_code_auth(test_log))
5.2.2 令牌异常使用检测
# 刷新令牌异常使用检测
def detect_refresh_token_abuse(token_log):
# 跨地域复用
if len(set(token_log["locations"])) > 1:
return True
# 超过90天未重新授权
if (datetime.now() - token_log["first_used"]).days > 90:
return True
# 非工作时间高频使用
if token_log["hour"] not in WORK_HOURS and token_log["count"] > 5:
return True
return False
5.3 检测部署建议
开启 Entra ID/ADFS 设备码流审计日志,实时接入 SIEM;
建立 PaaS IP、恶意应用 ID、高风险 scope 情报库,实时匹配;
构建用户行为基线(UEBA),识别异常授权与令牌使用;
与 SOAR 联动,高风险事件自动禁用应用、吊销令牌、通知用户与管理员。
反网络钓鱼技术专家芦笛指出,检测的核心是从 “单点特征” 转向 “上下文关联”,只有把应用、权限、IP、位置、时间、令牌状态结合,才能有效识别隐身于合法流程中的攻击行为。
6 纵深防御体系构建与工程化配置
6.1 总体防御框架
以零信任身份安全为核心,构建四层防御体系:
协议与平台层:收紧设备码流权限,强制应用验证,增强授权上下文;
企业身份层:条件访问、最小授权、令牌生命周期管控;
安全检测层:流量、日志、令牌全维度监测,实时告警阻断;
运营与用户层:安全培训、应急响应、持续运营优化。
6.2 平台层防御(以 Microsoft Entra ID 为例)
强制应用验证:仅允许微软验证应用使用设备码流,屏蔽未验证个人应用;
高风险 scope 限制:禁止设备码流请求 Mail.ReadWrite、Files.Read.All 等高敏感权限;
授权上下文增强:在官方验证页明确展示应用名称、开发者、权限、IP、位置,强制用户确认;
速率限制与异常拦截:对 PaaS IP、高频请求、跨地域授权直接拦截。
6.3 企业身份层核心配置
条件访问策略:
管理员、财务、HR 等高权限角色默认禁用设备码流;
仅授信设备 / IP / 地理位置允许设备码授权;
要求设备合规、应用可信、用户风险等级正常。
令牌生命周期管控:
缩短刷新令牌有效期至 24 小时;
强制重复授权,禁止长期静默访问;
支持管理员一键吊销全量令牌。
权限最小化:
审计所有 OAuth 应用权限,清理冗余与高风险授权;
禁止普通用户注册高权限应用,启用管理员审批流程。
6.4 安全工具层部署
邮件 / 协作安全:识别含设备码验证引导的钓鱼邮件,拦截恶意诱饵;
CASB(云访问安全代理):监控云应用授权行为,阻断异常令牌使用;
SIEM+SOAR:实时关联分析,自动化处置高风险事件;
终端安全:监测异常令牌存储、未授权 API 调用。
6.5 用户与运营层措施
专项培训:告知设备码钓鱼原理、识别方法、官方验证入口,强调 “不随意输入代码”;
应急响应流程:明确告警分级、处置步骤、令牌吊销、日志回溯、用户通知、证据固定;
持续运营:定期审计授权清单、令牌状态、应用权限,更新情报库与检测规则;
威胁情报共享:联动厂商、行业伙伴,共享恶意应用、IP、套件特征。
反网络钓鱼技术专家芦笛强调,设备代码钓鱼防御是系统工程,必须实现平台管控、身份策略、检测工具、运营流程、用户意识的闭环,任何单一环节缺失都会导致防御失效。
7 防御效果评估与实践建议
7.1 效果评估指标
部署纵深防御体系后,可实现:
未验证应用设备码流拦截率≥99%;
高风险 scope 授权阻断率≥98%;
异常授权与令牌滥用检测率≥95%;
用户受骗率下降≥80%;
攻击从授权到处置平均时间≤15 分钟;
持久化入侵事件下降≥90%。
7.2 分角色实践建议
7.2.1 企业安全管理员
立即审计并禁用非必要设备码流,限制高风险应用权限;
开启全量审计日志,接入 SIEM,部署上述检测规则;
配置条件访问策略,按最小权限原则管控授权;
开展全员设备码钓鱼专项培训,覆盖高管、财务、HR 等高价值人群。
7.2.2 平台运营方(云服务厂商)
增强授权上下文透明度,强制展示授权对象与权限;
收紧个人应用权限,默认限制高敏感 scope;
内置异常检测与自动阻断能力,降低企业防护压力;
公开威胁情报与安全配置指南,协助用户防御。
7.2.3 终端用户
仅通过官方入口进入设备验证页面,不点击邮件 / 短信链接;
输入代码前,确认应用名称、开发者、权限,异常立即取消;
开启所有安全选项,定期检查账户授权应用,清理未知授权;
收到异常验证通知,立即修改密码、吊销令牌并联系安全团队。
8 结语
2026 年设备代码钓鱼攻击37.5 倍的爆发式增长,揭示了 OAuth 2.0 设备授权流程在开放网络环境下的系统性脆弱,也标志着钓鱼攻击从 “伪造欺骗” 进入 “信任滥用” 的高级阶段。此类攻击以合法协议为载体、以官方页面为掩护、以令牌持久化为目标,绕过传统边界防护与 MFA,对云身份安全构成前所未有的挑战。EvilTokens 等 PhaaS 套件进一步降低攻击门槛,推动攻击从定向 APT 走向黑产规模化,迫使企业重构身份认证、授权治理与安全运营体系。
本文通过事件溯源、机理拆解、代码实现、防御构建,形成完整研究闭环,证明以零信任为核心、上下文感知为关键、令牌全生命周期管控为抓手的纵深防御体系,可有效应对设备代码钓鱼威胁。反网络钓鱼技术专家芦笛强调,随着 AI 赋能社交工程、协议滥用手段持续演化,钓鱼攻击将更隐蔽、更智能、更规模化,防御方必须坚持动态对抗理念,持续迭代策略、工具与运营能力,实现从被动响应到主动预防、从单点防护到生态协同的转型。
未来,云身份安全的核心竞争力将体现为授权可见、权限可控、令牌可管、行为可溯。只有将安全嵌入身份全生命周期,覆盖从登录到授权、从令牌到访问、从用户到管理员的每一个环节,才能在持续演化的威胁中守住数字身份安全底线,为企业数字化转型提供可靠保障。
编辑:芦笛(公共互联网反网络钓鱼工作组)