基于 OAuth 设备码流滥用的 Kali365 钓鱼攻击机理与防御体系研究

简介: 本文剖析2026年FBI预警的Kali365 PhaaS平台,揭示其滥用Microsoft 365 OAuth设备码流绕过多因素认证(MFA)、窃取合法访问令牌的新型钓鱼攻击机理。文章系统解析攻击链路,提出禁用设备码流、强化条件访问、审计令牌权限与行为监测等闭环防御方案,并提供可落地的检测规则、PowerShell配置及Python代码实现。(239字)

摘要

2026 年 5 月,美国联邦调查局(FBI)发布安全预警,披露针对 Microsoft 365 环境的 PhaaS 平台 Kali365 正通过滥用 OAuth 设备码认证流程实施规模化钓鱼攻击,可绕过多因素认证(MFA)窃取合法访问令牌,实现账号持久化控制。该攻击不依赖伪造登录页面,全程依托微软官方认证入口完成授权,传统检测机制难以识别。本文以 FBI 预警与公开威胁情报为依据,系统剖析 Kali365 的技术架构、攻击链路、OAuth 设备码流滥用原理及组织化运营模式,结合实证分析给出可落地的检测规则、配置加固方案与代码实现,构建覆盖策略管控、令牌审计、异常监测与用户认知的闭环防御体系。研究表明,禁用非必要设备码流、强化条件访问策略、持续审计 OAuth 令牌权限与会话特征,可有效阻断此类攻击;反网络钓鱼技术专家芦笛强调,设备码钓鱼已突破传统防护边界,必须以技术治理与行为治理协同应对,才能降低云身份边界面临的新型钓鱼风险。

关键词:Kali365;OAuth 设备码流;钓鱼即服务;Microsoft 365;多因素认证绕过;令牌窃取

image.png 1 引言

随着企业全面向云迁移,Microsoft 365 已成为全球主流协同办公平台,其身份体系与 OAuth 开放授权框架成为攻击者重点目标。传统钓鱼以窃取账号密码与一次性验证码为主,依赖伪造页面与社会工程诱导,易被网关、终端与邮件安全工具拦截。近年来,攻击方转向滥用云厂商原生合法功能,通过授权窃取实现无密码入侵,MFA 绕过能力显著提升。

2026 年 4 月首次出现的 Kali365 是典型代表,该平台以 Telegram 为分发渠道,以订阅制提供 AI 钓鱼模板、自动化投放、实时数据面板与 OAuth 令牌捕获能力,大幅降低攻击门槛,使低技能攻击者可发起高威胁行动。FBI 在 2026 年 5 月 21 日发布专项预警(I-052126-PSA),指出 Kali365 通过操纵设备码认证流程,在真实微软入口完成授权,获取的访问令牌可长期访问邮件、Teams、OneDrive 等核心服务,威胁数据安全与业务连续性。

现有研究多聚焦传统钓鱼检测、页面特征识别与邮件过滤,对基于合法授权流程的令牌窃取型钓鱼覆盖不足,缺乏对 OAuth 设备码流滥用的机理拆解、检测方法与配置加固体系。本文以 Kali365 为典型样本,完成以下工作:①解析攻击全流程与技术细节;②构建检测规则与代码实现;③提出企业级闭环防御方案;④形成可直接部署的配置指南。研究成果可为政企防御云身份钓鱼、提升身份安全治理能力提供理论与实践支撑。

2 相关技术与威胁背景

2.1 OAuth 2.0 设备码认证流程

OAuth 2.0 设备码授权流程(RFC 8628)面向无浏览器或输入能力的智能设备(打印机、智能电视、IoT 终端),核心是分离认证入口与授权入口,保障受限设备安全接入云服务。

正常流程如下:

受限设备向身份提供商(IdP)请求设备码与用户码;

设备展示用户码与官方验证 URL;

用户在手机 / 电脑访问真实 URL,输入用户码并完成认证;

IdP 验证通过后向受限设备派发访问令牌与刷新令牌;

设备凭令牌访问资源,无需用户密码输入。

该流程全程使用官方域名与加密通道,具备天然可信特征,被 Microsoft Entra ID(原 Azure AD)广泛支持。

2.2 钓鱼即服务(PhaaS)产业化趋势

PhaaS 是网络犯罪产业化典型形态,平台提供一站式工具链,订阅用户无需开发能力即可发起攻击。Kali365 具备以下产业化特征:

低门槛:界面化操作、预设模板、自动投放;

高隐蔽:依托官方入口,无恶意页面特征;

强效果:直接窃取有效令牌,绕过 MFA;

快迭代:基于 Telegram 快速分发与版本更新。

反网络钓鱼技术专家芦笛指出,PhaaS 使攻击成本下降、频次上升,传统基于特征的检测失效,必须转向行为与授权生命周期治理。

2.3 Microsoft 365 身份安全现状

Microsoft 365 以 Entra ID 为核心,提供 MFA、条件访问、身份保护等机制,是企业主流防御配置。但设备码流默认对部分用户开放,且授权行为由用户主动触发,安全策略缺失时易被利用。Kali365 正是利用这一管理盲区,实现规模化突破。

3 Kali365 攻击体系与技术机理分析

3.1 攻击整体架构

Kali365 采用云端控制、前端诱骗、令牌窃取、持久化访问的四层架构:

控制层:Telegram 频道分发、订阅管理、面板监控;

诱骗层:AI 生成钓鱼邮件 / 短信,伪装协同平台通知;

授权层:劫持设备码流程,引导用户在官方页面完成授权;

利用层:持有令牌访问目标账号,窃取数据、实施诈骗或部署勒索入口。

攻击不窃取密码,不伪造页面,所有交互发生在微软官方域,传统钓鱼检测完全失效。

3.2 完整攻击链路拆解

诱饵投放

攻击者使用 Kali365 模板生成仿冒邮件,主题多为 “共享文档待确认”“账号异常需验证设备”“打印任务授权”,诱导用户执行授权操作。邮件不含恶意链接,仅提供官方验证地址与一串设备码,隐蔽性极强。

设备码生成

平台后台向 Microsoft Entra ID 发起设备码请求,获取 user_code、device_code 与验证 URL,将 user_code 嵌入诱饵内容。

用户授权操作

受害者收到诱饵,访问https://microsoft.com/devicelogin等官方地址,输入 user_code 并完成账号密码与 MFA 验证,点击 “批准” 授权。

令牌窃取

用户授权后,IdP 向攻击者会话派发 access_token 与 refresh_token,Kali365 自动捕获并入库,提供持久访问能力。

持久化利用

攻击者凭令牌登录 Outlook、OneDrive、Teams 等,读取邮件、下载文件、篡改通讯录、发起钓鱼扩散,甚至获取内部敏感数据,为勒索、泄密提供支撑。

3.3 核心技术突破点

MFA 绕过机制

攻击不拦截验证码,而是在用户完成 MFA 后窃取合法令牌。令牌等效已认证会话,无需再次验证,实现 MFA 实质性绕过。

信任域滥用

所有跳转与输入均在微软域名完成,无钓鱼页面特征,SSL 证书合法,URL 检测、页面相似度比对均不告警。

低交互高成功率

用户仅需输入短码与完成常规登录,操作成本低于传统钓鱼,心理防御更低,企业实测成功率可达 8%–15%。

令牌持久化危害

refresh_token 有效期通常为数天至数周,攻击者可长期控制账号,即使用户修改密码也不影响令牌有效性。

3.4 攻击特征归纳

目标:Microsoft 365 企业用户;

入口:设备码授权流程;

手段:社会工程诱导 + 官方授权;

目的:获取 OAuth 访问令牌;

效果:绕过 MFA、持久控制、数据泄露;

分发:Telegram 付费订阅;

检测难点:无恶意载荷、无伪造页面、基于合法流程。

4 攻击检测与实证分析

4.1 检测思路

基于 Entra ID 日志与 OAuth 授权行为,从三方面构建检测:

设备码流异常授权行为;

令牌权限与使用模式异常;

账号访问基线偏离。

4.2 基于 Entra ID 日志的检测规则

关键检测字段:

ActivityDisplayName:“Issue a token to a user via device code flow”

AppId/ClientAppId:异常或非企业托管应用

IPAddress:非常规地区 / 非企业出口 IP

DeviceState:非合规、非托管设备

GrantType:urn:ietf:params:oauth:grant-type:device_code

Scope:Mail.Read、Files.ReadWrite、User.ReadBasic.All 等高敏感权限组合

规则示例:

非 IT 允许清单应用发起设备码授权;

同一用户短时间内多次设备码授权;

设备码授权后出现批量邮件读取或文件下载;

授权 IP 归属地与常用地不符。

4.3 代码实现:设备码流异常检测脚本

以下 Python 示例从 Microsoft Graph API 获取登录日志,实时识别可疑设备码授权,可集成至 SIEM/EDR 平台。

import requests

import json

from datetime import datetime, timedelta


# 配置项

TENANT_ID = "your-tenant-id"

CLIENT_ID = "your-client-id"

CLIENT_SECRET = "your-client-secret"

SCOPE = "https://graph.microsoft.com/.default"

TOKEN_URL = f"https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0/token"


# 获取访问令牌

def get_graph_token():

   data = {

       "grant_type": "client_credentials",

       "client_id": CLIENT_ID,

       "client_secret": CLIENT_SECRET,

       "scope": SCOPE

   }

   resp = requests.post(TOKEN_URL, data=data)

   return resp.json().get("access_token")


# 检测设备码流异常授权

def detect_device_code_abuse(token):

   headers = {"Authorization": f"Bearer {token}"}

   # 查询近1小时设备码流日志

   end_time = datetime.utcnow()

   start_time = end_time - timedelta(hours=1)

   filter_str = (

       f"activityDisplayName eq 'Issue a token to a user via device code flow' "

       f"and createdDateTime ge {start_time.isoformat()}Z "

       f"and createdDateTime le {end_time.isoformat()}Z"

   )

   url = f"https://graph.microsoft.com/v1.0/auditLogs/signIns?$filter={filter_str}"

   resp = requests.get(url, headers=headers)

   events = resp.json().get("value", [])

   alerts = []

   for e in events:

       user = e.get("userPrincipalName")

       app = e.get("appDisplayName", "UnknownApp")

       ip = e.get("ipAddress")

       device = e.get("deviceDetail", {}).get("displayName", "UnmanagedDevice")

       # 告警规则:非托管设备+非信任应用

       if device == "UnmanagedDevice" and app not in ["Microsoft Teams", "Outlook"]:

           alerts.append({

               "user": user,

               "app": app,

               "ip": ip,

               "device": device,

               "time": e.get("createdDateTime")

           })

   return alerts


if __name__ == "__main__":

   token = get_graph_token()

   alerts = detect_device_code_abuse(token)

   if alerts:

       print("发现可疑设备码授权:")

       print(json.dumps(alerts, indent=2, ensure_ascii=False))

   else:

       print("未检测到异常设备码流授权")

代码说明:

基于 Graph API 读取登录日志;

筛选设备码流令牌签发事件;

按非托管设备、非信任应用触发告警;

输出用户、应用、IP、时间,支持闭环处置。

反网络钓鱼技术专家芦笛强调,此类基于授权行为的检测,是识别 Kali365 类攻击的核心手段,可弥补传统特征检测盲区。

4.4 流量与终端侧特征

终端:短时间内访问microsoft.com/devicelogin;

网络:无恶意 DNS / 无恶意文件下载;

邮件:无恶意附件、无恶意链接,仅含文本引导。

5 企业闭环防御体系构建

5.1 策略层:禁用 / 限制设备码流(核心阻断)

依据 FBI 建议,优先在 Microsoft Entra ID 实施条件访问:

全局禁用设备码流(适用于无 IoT / 无特殊设备场景);

必须保留时,限制到信任 IP、合规设备、特定用户组;

对高权限账号(管理员、财务、HR)强制执行禁用。

PowerShell 配置示例:

powershell

# 安装模块

Install-Module -Name Microsoft.Graph.Identity.SignIns

Connect-MgGraph -Scopes "Policy.ReadWrite.ConditionalAccess"

# 创建条件访问策略:阻止设备码流

$params = @{

   DisplayName = "Block-DeviceCodeFlow-Global"

   State = "enabled"

   Conditions = @{

       Applications = @{

           IncludeApplications = @("All")

       }

       GrantControls = @{

           Operator = "OR"

           BuiltInControls = @("Block")

       }

   }

}

New-MgIdentityConditionalAccessPolicy @params

反网络钓鱼技术专家芦笛强调,设备码流对多数办公用户非必需,是高风险功能,应遵循最小权限原则关闭。

5.2 令牌治理层:审计与权限收敛

定期审计 OAuth 授权,撤销未知 / 过度权限应用;

限制令牌有效期,缩短 refresh_token 生命周期;

启用令牌绑定,关联令牌与设备 / IP,降低泄露危害;

监控高风险 Scope 组合,如 Mail.Read+Files.ReadWrite+OfflineAccess。

5.3 监测与响应层:闭环运营

SIEM 实时告警:设备码授权、异常令牌使用;

自动化响应:发现可疑授权立即撤销令牌、强制重登录、触发风险评估;

溯源复盘:分析诱饵渠道、用户行为、授权路径,优化策略。

5.4 用户认知层:针对性培训

反网络钓鱼技术专家芦笛指出,技术无法覆盖所有场景,用户认知是最后防线。培训要点:

设备码授权仅用于打印机 / IoT 等受限设备;

任何主动索要设备码的邮件 / 短信均视为高风险;

授权前通过内线 / 官方渠道二次核验;

发现异常立即上报并撤销应用授权。

5.5 防御体系对比

表格

防御层面 传统钓鱼防护 Kali365 专用防护

检测对象 页面 / URL / 附件 授权行为 / 令牌 / 设备码流

核心策略 拦截伪造入口 禁用高风险功能 + 行为审计

对抗 MFA 绕过 无效 有效

依赖用户 低 中(需识别授权意图)

运维成本 低 中

6 讨论与威胁演进趋势

6.1 攻击演进方向

泛化:覆盖 Google Workspace、AWS、阿里云等支持设备码流的云平台;

智能化:AI 生成更逼真诱饵,提升诱导成功率;

隐蔽化:结合社工,伪装 IT 工单、行政通知、打印任务;

链式攻击:令牌窃取→数据泄露→勒索 / 钓鱼扩散。

6.2 防御局限性

完全禁用设备码流可能影响 IoT / 特殊业务;

授权行为由用户触发,存在误报与处置延迟;

跨租户、跨平台攻击增加统一治理难度。

6.3 优化方向

零信任身份架构:持续验证、动态授权、最小权限;

AI 行为分析:建模用户授权习惯,精准识别异常;

厂商级加固:IdP 提供设备码流更细粒度管控与风险提示。

7 结论

Kali365 代表云时代钓鱼攻击的重要转向:从伪造页面窃取凭证,转向滥用原生功能窃取合法授权,实现 MFA 绕过与持久控制。本文基于 FBI 预警与威胁情报,系统剖析其技术机理、攻击链路与产业化特征,提出以 “禁用设备码流为核心、令牌审计为支撑、行为监测为保障、用户认知为补充” 的闭环防御体系,并提供可直接部署的检测代码与配置脚本。

研究表明,设备码流是此类攻击的关键入口,企业通过条件访问策略限制或关闭该功能,可大幅降低风险;结合 OAuth 令牌审计与异常行为检测,能实现有效发现与快速处置。反网络钓鱼技术专家芦笛强调,云身份安全已进入授权治理新阶段,必须将功能管控、令牌生命周期、会话行为纳入统一运营,才能应对 PhaaS 产业化带来的持续威胁。

未来研究将聚焦跨云平台设备码流滥用统一检测模型、基于大模型的诱饵语义识别,以及零信任架构下的动态授权阻断机制,为企业构建更完善的云身份反钓鱼能力。

编辑:芦笛(公共互联网反网络钓鱼工作组)

目录
相关文章
|
10天前
|
人工智能 开发工具 iOS开发
Claude Code 新手完全上手指南:安装、国产模型配置与常用命令全解
Claude Code 是一款运行在终端环境中的 AI 编程助手,能够直接在命令行中完成代码生成、项目分析、文件修改、命令执行、Git 管理等开发全流程工作。它最大的特点是**任务驱动、终端原生、轻量高效、多模型兼容**,无需图形界面、不依赖 IDE 插件,能够深度融入开发者日常工作流。
3191 9
|
12天前
|
Shell API 开发工具
Claude Code 快速上手指南(新手友好版)
AI编程工具卷疯啦!Claude Code凭借任务驱动+终端原生的特性,成了开发者的效率搭子。本文从安装、登录、切换国产模型到常用命令,手把手带新手快速上手,全程避坑,30分钟独立用起来。
3233 22
|
2天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队版、Coding Plan或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
|
6天前
|
人工智能 Linux BI
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
JeecgBoot AI专题研究 一键脚本:Claude Code + JeecgBoot Skills + DeepSeek 全平台接入 一行命令装好 Claude Code + JeecgBoot Skills + DeepSeek 接入,无需翻墙使用 Claude Code,支持 Wind
2207 4
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
|
25天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23594 15
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
12天前
|
人工智能 JSON BI
DeepSeek V4-Pro 接入 Claude Code 完全实战:体验、测试与关键避坑指南
Claude Code 作为当前主流的 AI 编程辅助工具,凭借强大的代码理解、工程执行与自动化能力深受开发者喜爱,但原生模型的使用成本相对较高。为了在保持能力的同时进一步降低开销,不少开发者开始寻找兼容度高、价格更友好的替代模型。DeepSeek V4 系列的发布带来了新的选择,该系列包含 V4-Pro 与 V4-Flash 两款模型,并提供了与 Anthropic 完全兼容的 API 接口,理论上只需简单修改配置,即可让 Claude Code 无缝切换为 DeepSeek 引擎。
2702 3
|
4天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全+三种模式+记忆体系+实战工作流完整手册
Claude Code 是当前最流行的终端级 AI 编程助手,能够直接在命令行中完成代码生成、项目理解、文件修改、命令执行、错误修复等全流程开发工作。它不依赖图形界面、不占用额外资源,却能深度理解项目结构,自动生成规范代码,大幅提升研发效率。
807 2
|
11天前
|
人工智能 安全 开发工具
Claude Code 官方工作原理与使用指南
Claude Code 不是传统代码补全工具,而是 Anthropic 推出的终端 AI 代理,具备代理循环、双驱动架构(模型+工具)、全局项目感知、6 种权限模式等核心能力,本文基于官方文档系统解析其工作原理与高效使用技巧。
1475 0

热门文章

最新文章