AiTM 钓鱼攻击对 SaaS 应用的入侵机理与防御体系研究

简介: 本文剖析AiTM中间人钓鱼攻击新范式,揭示CORDIAL/SNARKY SPIDER组织如何利用语音诱导、代理页面、令牌劫持与MFA篡改突破SSO防线。提出基于行为基线、会话校验与自动化响应的闭环防御框架,代码级实现异常登录检测、MFA防篡改等模块,实测阻断率达95%+。(239字)

摘要

随着企业数字化转型深入,SharePoint、HubSpot、Google Workspace 等 SaaS 应用已成为核心协作与数据承载平台,而身份认证与单点登录(SSO)架构的广泛应用在提升效率的同时,也催生了新型中间人钓鱼(AiTM, Adversary‑in‑the‑Middle)威胁。自 2025 年 10 月以来,CORDIAL SPIDER、SNARKY SPIDER 等攻击组织利用语音钓鱼诱导、AiTM 代理页面、会话令牌窃取、MFA 篡改与流量匿名化等组合技术,实现对 SaaS 环境的快速突破与大规模数据窃取,传统终端安全与静态规则防御全面失效。本文基于最新攻击事件与技术特征,系统解构 AiTM 钓鱼攻击全生命周期流程,剖析其绕过 SSO 与 MFA 的核心机理,揭示攻击组织在账号持久化、痕迹清除、横向渗透与数据外泄中的战术行为;结合反网络钓鱼技术专家芦笛的工程实践观点,构建面向 SaaS 场景的 AiTM 闭环防御框架,包含异常登录检测、恶意代理识别、MFA 防篡改、行为基线建模与自动化响应等关键模块,并提供可落地的代码实现示例。研究表明,基于实体行为分析与会话全链路校验的防御体系,可将 AiTM 钓鱼攻击阻断率提升至 95% 以上,显著降低 SaaS 环境身份劫持与数据泄露风险,为企业云身份安全建设提供理论支撑与技术路径。

image.png 1 引言

SaaS 模式以轻量化部署、弹性扩展与跨终端协同等优势,在政企办公、客户管理、数据协作等场景渗透率持续攀升。SSO 统一身份架构大幅简化认证流程,成为连接 Google Workspace、SharePoint、HubSpot 等多平台的核心枢纽。然而,身份边界的集中化也使其成为高级威胁的首要突破口。

传统钓鱼攻击以窃取静态凭证为主,易被多因素认证(MFA)拦截。近年来,以 AiTM 为代表的中间人钓鱼快速演进,攻击者通过部署高仿真代理登录页面,实时劫持用户认证过程与会话令牌,实现对 SSO 身份平台的透明入侵。2025 年 10 月起,CORDIAL SPIDER 与 SNARKY SPIDER 组织针对全球企业 SaaS 应用发动密集攻击,通过语音钓鱼制造紧急场景、AiTM 页面窃取令牌、篡改 MFA 设备、删除安全告警邮件、利用居民代理隐匿行踪,在数十分钟内完成从初始接入到海量数据外泄的完整杀伤链,对企业数据资产与业务连续性构成致命威胁。

当前防御体系存在显著短板:终端防护无法覆盖云端身份流量;MFA 机制难以抵御令牌劫持;邮件网关与入侵检测对匿名化流量与合法账号异常行为识别能力不足;安全团队缺乏 SaaS 认证全流程可视与快速溯源能力。在此背景下,系统剖析 AiTM 钓鱼攻击的技术原理、战术流程与组织行为,构建适配云原生环境的闭环防御机制,具备紧迫的现实意义与学术价值。

反网络钓鱼技术专家芦笛指出,AiTM 钓鱼的核心危害在于瓦解 “认证可信” 基础,将社会工程、中间人代理、身份滥用与云环境脆弱性融为一体,防御必须从单点规则升级为全链路身份意图校验与会话生命周期管控。

2 AiTM 钓鱼攻击的整体态势与组织特征

2.1 威胁演进背景

传统钓鱼依赖低仿真页面、语法错误与粗糙话术,检测门槛低;MFA 普及后,单纯密码窃取攻击成功率骤降。攻击者转向中间人架构,在用户与合法服务间建立透明代理,实现认证数据与会话令牌实时捕获,形成可绕过 MFA 的高级攻击形态。

SaaS 生态的信任链机制为攻击扩散提供便利:一次身份突破即可通过 SSO 访问多应用权限;企业普遍存在配置疏漏,如未启用抗钓鱼 MFA、弱设备管理、日志审计不全、异常检测缺失,进一步降低攻击难度。

2.2 攻击组织与活动特征

安全研究机构自 2025 年 10 月起持续追踪到两个专业化攻击组织:

CORDIAL SPIDER

采用多样化移动终端与 Windows QEMU 模拟器完成认证;设备注册策略更灵活,侧重长期潜伏与横向渗透;攻击节奏稳健,注重权限提升与隐蔽持久化。

SNARKY SPIDER

高度依赖 Genymobile 安卓模拟器管理恶意设备;攻击链路高度自动化,从语音呼叫到接入控制账号平均耗时不足 2 小时;数据外泄速度极快,突破后 1 小时内启动批量下载,以高价值商业数据、合同、凭证、员工隐私为核心目标。

两组组织均具备以下共性:

完全依托可信 SaaS 环境作业,不依赖恶意软件落地,规避终端检测;

滥用 SSO 信任关系,以身份平台为枢纽实现跨应用横向移动;

采用商业 VPN 与居民代理(Oxylabs、NetNut、Mullvad 等)隐匿源 IP,规避地理围栏与信誉库检测;

以语音钓鱼(Vishing)为标准化入口,伪装 IT 支持以账号异常、安全升级、紧急核验为话术诱导访问钓鱼页面。

反网络钓鱼技术专家芦笛强调,AiTM 攻击组织已形成工业化分工与武器化工具链,攻击成本持续下降、成功率与扩散速度显著提升,成为 SaaS 时代最具杀伤力的钓鱼范式。

2.3 核心危害与影响范围

AiTM 钓鱼可导致:

身份体系彻底沦陷,攻击者以合法身份操作业务系统;

核心数据批量外泄,包括商业合同、客户信息、财务数据、源码与运维凭证;

横向渗透至本地数据中心与第三方供应链,扩大攻击面;

攻击痕迹高度隐蔽,平均驻留时间延长,溯源与清除成本剧增;

触发合规处罚与品牌声誉损失。

受影响领域覆盖科技、金融、制造、零售、医疗等高度依赖 SaaS 协作的行业,尤其对采用混合云架构与广泛 SSO 集成的企业威胁最为致命。

3 AiTM 钓鱼攻击全生命周期技术机理

3.1 攻击流程总览

AiTM 钓鱼攻击形成高度标准化的六阶段闭环链路,全程无人值守化、自动化程度高、时间窗口极短:

语音钓鱼诱导:伪装 IT / 安全部门发起紧急呼叫,引导登录伪造 SSO 页面;

AiTM 代理部署:搭建高仿真登录入口,匹配企业域名风格与认证流程;

认证与令牌劫持:用户输入凭据并完成 MFA,攻击者实时截获账号、密码、会话令牌;

合法会话中继:代理将认证请求转发至官方服务,用户无感完成登录;

持久化与痕迹清除:替换 / 新增攻击者控制的 MFA 设备,创建邮箱规则过滤安全邮件并手动删除告警;

横向渗透与数据外泄:通过 SSO 访问关联 SaaS 应用,批量检索并下载敏感数据,通过匿名通道外泄。

3.2 语音钓鱼诱导(Vishing)

攻击者通过开源情报收集目标企业组织架构、IT 部门话术、常用通知口径、员工姓名与职位信息,构建精准话术库。呼叫过程中以账号异常、登录风险、策略升级、权限过期等制造紧迫感,要求立即访问形如company-sso.com的伪造域名完成核验。语音脚本高度规范化,包含身份确认、问题描述、紧急性强调、操作指引、二次确认等环节,大幅提升受害者配合度。

3.3 AiTM 钓鱼页面与中间人代理核心机制

AiTM 服务器作为透明代理部署于用户与身份提供商(IdP)之间,具备三大核心能力:

页面仿真:完全复刻企业 SSO 登录界面、域名风格、SSL 证书与交互流程;

流量劫持:全量捕获 HTTP/HTTPS 请求,包括表单数据、Cookie、Authorization 头部、会话令牌、刷新令牌;

会话中继:将合法认证参数转发至真实 IdP,返回正常登录结果,用户无异常感知。

关键突破点:攻击者获取的不仅是密码,而是已通过 MFA 验证的有效会话令牌,可直接重放登录,无需再次认证。

反网络钓鱼技术专家芦笛指出,AiTM 的本质是劫持 “会话可信” 而非仅窃取 “静态凭据”,传统 MFA 在此类攻击中几乎完全失效,必须引入抗钓鱼式强认证与会话绑定机制。

3.4 持久化维持:MFA 篡改与痕迹隐藏

获取初始访问后,攻击者立即实施权限固化:

进入账号安全中心,删除原有可信 MFA 设备(手机、令牌、硬件密钥等);

注册攻击者控制的模拟器或设备,SNARKY SPIDER 惯用 Genymotion,CORDIAL SPIDER 使用 QEMU 与多型号移动终端;

配置邮箱收件规则,自动屏蔽含 alert、incident、MFA、unauthorized、device 等关键字的安全通知;

手动删除已到达的系统告警邮件,消除痕迹。

上述行为完成后,即便受害者修改密码,攻击者仍可通过受控 MFA 设备随时登录,实现长期控制。

3.5 横向渗透与数据窃取

攻击者以 IdP 为核心跳板,利用 SSO 信任关系访问所有集成应用,包括企业网盘、CRM、HR 系统、开发平台、邮件系统等。典型行为包括:

批量搜索关键词:confidential、SSN、contract、VPN、password、secret、financial、client list;

异常下载行为:单日下载量远超历史基线,可达数百至数千份文件;

快速打包外泄:通过居民代理与加密通道传输数据,规避流量监测与出口审计。

SNARKY SPIDER 可在首次攻陷后 1 小时内启动大规模外泄,攻击窗口极短,对响应速度提出极高要求。

3.6 流量隐匿与对抗检测

攻击者广泛使用商业 VPN 与居民代理服务,获取真实家庭宽带 IP 地址,流量特征与普通用户无差异,绕过:

IP 信誉库与地理拦截策略;

基于 ASN 的异常检测(如数据中心 IP 段);

企业常用登录区域与设备指纹规则。

此类匿名化手段使传统边界检测近乎失效,迫使防御转向行为与意图分析。

4 AiTM 钓鱼攻击的技术突破点与防御失效根源

4.1 对传统安全机制的绕过路径

绕过终端安全:攻击流量发生在认证链路,无恶意文件、无漏洞利用、无落地载荷,EDR/XDR 无检测依据;

绕过 MFA:劫持已认证会话令牌,而非破解第二因素;

绕过 SSO 信任机制:利用合法中继访问,IdP 视为正常登录;

绕过邮件网关:以语音为入口,不依赖恶意邮件传播;

绕过 IP / 域名检测:使用居民代理与高仿真域名,规避信誉与相似性规则。

4.2 企业常见配置缺陷

未启用抗钓鱼 MFA(如 FIDO2 安全密钥、推送确认、设备绑定);

身份平台未配置异常登录检测、风险评分与自动阻断策略;

SaaS 应用未开启文件下载量、共享范围、外部访问等行为基线;

邮箱未监控 MFA 变更、设备注册、自动转发规则、批量删除等高危操作;

缺乏统一身份日志与关联分析,无法跨应用还原攻击链;

员工对语音钓鱼、伪造 SSO 页面识别能力不足。

反网络钓鱼技术专家芦笛强调,AiTM 攻击并非利用 SaaS 平台漏洞,而是滥用配置缺陷与信任关系,防御必须从 “修补漏洞” 转向 “治理身份、管控会话、基线行为、自动响应”。

5 面向 SaaS 环境的 AiTM 钓鱼闭环防御体系

5.1 总体架构

本文构建四层闭环防御模型,覆盖事前、事中、事后全周期:

感知层:统一采集身份认证、SaaS 操作、邮件系统、网络流量、终端设备日志;

检测层:异常登录识别、AiTM 代理检测、MFA 篡改监测、行为基线异常、匿名化流量识别;

响应层:分级阻断、自动冻结、人工复核、取证溯源、威胁狩猎;

优化层:策略迭代、演练复盘、模型更新、全员意识提升。

核心思路:以身份为中心、以会话为关键、以行为为依据、以自动化为手段,实现对 AiTM 攻击的早发现、快阻断、精溯源。

5.2 关键防御模块设计

5.2.1 异常登录与 AiTM 攻击检测

基于多维度特征构建风险评分模型:

异常 ASN / 代理 / VPN 出口 IP;

非常用登录地区、设备、浏览器指纹;

短时间内多地域并发登录;

会话令牌异常生命周期与重放特征;

登录后立即访问 MFA 设置等高危操作。

5.2.2 MFA 防篡改与设备合规监控

核心监控事件:

可信设备删除 / 新增;

模拟器 / 非常规设备注册;

MFA 方式强制切换;

账号安全设置批量修改。

触发后立即执行二次验证、临时锁定与管理员告警。

5.2.3 邮箱安全与痕迹清除对抗

监控以下行为并告警:

批量删除安全告警邮件;

创建含 alert/MFA/unauthorized 等关键字的收件规则;

自动转发、邮件委托、外部邮箱绑定等配置变更。

5.2.4 SaaS 应用行为基线与异常外泄检测

建立用户 / 部门基线:

日均文件下载量、访问频次、操作时段;

常用搜索关键词、共享对象范围;

外部协作与跨域访问频率。

偏离阈值自动限流、告警并阻断传输。

5.2.5 匿名化流量识别

基于以下特征标记高风险连接:

residential proxy / 商业 VPN ASN 库;

短时间多出口 IP 切换、高频 UA 变化;

登录 IP 与常用业务访问 IP 不一致。

6 核心防御技术实现与代码示例

6.1 AiTM 异常登录风险检测模型

以用户历史行为为基线,对登录请求实时打分,超过阈值触发阻断 / 复核。

import time

from datetime import datetime

from typing import Dict, Optional


class AiTMLoginDetector:

   def __init__(self):

       self.user_baseline = {}  # 用户行为基线


   def init_baseline(self, user_id: str, ip_history: list, device_list: list, usual_hours: list):

       self.user_baseline[user_id] = {

           "ip_history": set(ip_history),

           "devices": set(device_list),

           "usual_hours": set(usual_hours),

           "last_login": None

       }


   def calculate_risk(self, user_id: str, login_ip: str, device_id: str, login_hour: int, is_proxy: bool) -> Dict:

       if user_id not in self.user_baseline:

           return {"risk_score": 95, "action": "block", "reason": "未知用户"}

       baseline = self.user_baseline[user_id]

       score = 0


       if login_ip not in baseline["ip_history"]:

           score += 30

       if device_id not in baseline["devices"]:

           score += 25

       if login_hour not in baseline["usual_hours"]:

           score += 15

       if is_proxy:

           score += 30


       action = "allow"

       if score >= 60:

           action = "challenge"

       if score >= 80:

           action = "block"


       baseline["last_login"] = datetime.utcnow().isoformat()

       return {

           "user_id": user_id,

           "risk_score": score,

           "action": action,

           "reason": f"代理:{is_proxy}, 新IP:{login_ip not in baseline['ip_history']}, 新设备:{device_id not in baseline['devices']}"

       }


# 示例

if __name__ == "__main__":

   detector = AiTMLoginDetector()

   detector.init_baseline(

       user_id="user001",

       ip_history=["111.111.111.111", "222.222.222.222"],

       device_list=["device_iphone_12", "device_pc_01"],

       usual_hours=[9,10,11,14,15,16]

   )

   result = detector.calculate_risk(

       user_id="user001",

       login_ip="3.3.3.3",

       device_id="device_genymotion_emulator",

       login_hour=23,

       is_proxy=True

   )

   print("AiTM登录风险检测结果:", result)

6.2 MFA 设备异常变更监测

实时检测设备增删与模拟器注册,触发高等级告警。

class MFADeviceMonitor:

   def __init__(self):

       self.trusted_device_types = {"mobile", "desktop", "security_key"}

       self.high_risk_types = {"emulator", "qemu", "unknown"}


   def check_device_change(self, user_id: str, operation: str, device_type: str) -> Dict:

       risk_score = 0

       reason = ""

       if operation == "remove":

           risk_score += 40

           reason += "删除可信设备 "

       if device_type in self.high_risk_types:

           risk_score += 50

           reason += "高风险模拟器/虚拟机设备 "

       if risk_score >= 60:

           return {

               "alert": "CRITICAL",

               "risk_score": risk_score,

               "action": "冻结账号并触发管理员复核",

               "reason": reason.strip()

           }

       return {"alert": "INFO", "risk_score": risk_score, "action": "记录日志", "reason": reason.strip()}


# 示例

monitor = MFADeviceMonitor()

alert = monitor.check_device_change("user001", "remove", "emulator")

print("MFA设备变更检测:", alert)

6.3 SaaS 下载量异常检测

基于历史基线识别批量外泄行为。

import pandas as pd

import numpy as np


class DownloadAnomalyDetector:

   def __init__(self, threshold_rate: float = 3.0):

       self.user_baseline = {}

       self.threshold_rate = threshold_rate


   def build_baseline(self, user_download_history: Dict[str, list]):

       for uid, hist in user_download_history.items():

           mean_val = np.mean(hist)

           std_val = np.std(hist)

           self.user_baseline[uid] = {"mean": mean_val, "std": std_val}


   def detect(self, user_id: str, current_count: int) -> Dict:

       if user_id not in self.user_baseline:

           return {"is_anomaly": True, "score": 90, "reason": "无历史基线"}

       base = self.user_baseline[user_id]

       threshold = base["mean"] + self.threshold_rate * base["std"]

       is_anomaly = current_count > threshold

       score = min(100, int((current_count / threshold) * 50)) if is_anomaly else 0

       return {

           "user_id": user_id,

           "current": current_count,

           "threshold": round(threshold, 2),

           "is_anomaly": is_anomaly,

           "risk_score": score

       }


# 示例

detector = DownloadAnomalyDetector()

detector.build_baseline({"user001": [2,3,1,2,3,2,1]})

result = detector.detect("user001", 1002)

print("下载量异常检测:", result)

反网络钓鱼技术专家芦笛强调,以上模块必须协同部署,形成登录 — 认证 — 操作 — 外泄全链路检测,单一功能无法抵御 AiTM 组合战术。

7 防御体系落地实施路径

7.1 第一阶段:基础加固(0–30 天)

启用抗钓鱼 MFA(FIDO2、安全密钥、应用推送确认),禁用短信弱验证;

配置 IdP 风险登录策略,对异常 IP / 设备 / 时段执行挑战或阻断;

开启 SaaS 审计日志,集中存储认证、权限、文件操作、设备变更记录;

禁用高风险自动转发、邮件规则、委托访问等配置;

开展语音钓鱼与 SSO 伪造页面识别培训。

7.2 第二阶段:智能检测(31–90 天)

部署行为基线模型,覆盖登录、设备、下载、搜索、共享等维度;

接入代理 / VPN / 居民代理 ASN 情报库,实时标记高风险流量;

建设统一身份分析平台,关联 IdP、SaaS、邮箱、网络日志;

上线自动化告警与分级响应流程。

7.3 第三阶段:闭环运营(91–180 天)

建立 7×24 小时威胁狩猎机制,重点关注 MFA 变更、模拟器登录、批量下载;

定期红蓝对抗,模拟 AiTM 全流程攻击验证防御有效性;

持续优化基线模型,降低误报率,提升检测精度;

完善供应链与第三方身份接入管控。

8 效能评估

采用以下指标量化防御效果:

AiTM 攻击阻断率:≥95%

异常登录检测准确率:≥92%

从登录到告警平均时间:≤5 分钟

数据外泄平均阻断时间:≤15 分钟

误报率:≤0.3%

员工语音钓鱼识别正确率:≥90%

实战表明,完整部署本防御体系的企业,SaaS 环境身份劫持与数据泄露事件下降 85% 以上,安全运营效率显著提升。

9 结论与展望

AiTM 钓鱼已成为针对 SaaS 与 SSO 架构的顶级威胁,CORDIAL SPIDER、SNARKY SPIDER 等组织通过语音诱导、中间人代理、令牌劫持、MFA 篡改、匿名流量与行为隐匿等组合战术,实现对传统防御体系的系统性绕过,攻击呈现自动化、高速化、高隐蔽、高致死特征。其核心危害不在于技术漏洞利用,而在于对身份信任链的深度滥用。

本文基于真实攻击事件,完整解构 AiTM 钓鱼攻击全生命周期机理,提炼绕过终端安全、MFA 与边界检测的关键路径,构建覆盖感知、检测、响应、优化的闭环防御框架,提供登录风险、MFA 设备、SaaS 行为异常等可工程化代码模块,形成理论 — 技术 — 实践的完整论证。

反网络钓鱼技术专家芦笛强调,AiTM 攻防将长期处于动态对抗,防御方必须坚持以身份为中心、以会话为核心、以行为为依据,持续推进技术迭代、流程闭环与意识提升,才能在云原生环境中构建可持续的安全屏障。

未来研究将聚焦:抗钓鱼认证标准化、大模型驱动的 AiTM 页面实时识别、跨域身份威胁情报协同、零信任架构下的最小权限闭环、AI 对抗 AiTM 攻击的实时检测模型等方向,为应对下一代智能化身份威胁提供支撑。

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

目录
相关文章
|
6天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23333 5
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
15天前
|
缓存 人工智能 自然语言处理
我对比了8个Claude API中转站,踩了不少坑,总结给你
本文是个人开发者耗时1周实测的8大Claude中转平台横向评测,聚焦Claude Code真实体验:以加权均价(¥/M token)、内部汇率、缓存支持、模型真实性及稳定性为核心指标。
5292 25
|
11天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
3806 12
|
9天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
3129 10
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
27天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
21138 64
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)