多智能体大模型钓鱼邮件检测系统 MultiPhishGuard 技术研究

简介: MultiPhishGuard是arXiv提出的可解释多智能体LLM钓鱼邮件检测框架,融合文本、URL、元数据等5类智能体,采用PPO动态加权与LLM对抗训练,准确率达97.89%,漏报率仅0.20%,兼具高鲁棒性与可运营性。(239字)

摘要

传统钓鱼邮件检测依赖人工特征与单模型判别,在 AI 生成式钓鱼、语义伪装、多维度逃逸攻击下存在鲁棒性不足、可解释性差、误报漏报偏高的问题。arXiv 论文 MultiPhishGuard 提出一种可解释、自适应的多智能体 LLM 钓鱼邮件检测框架,通过文本智能体、URL 智能体、元数据智能体、对抗智能体与解释简化智能体协同工作,采用近端策略优化(PPO)动态加权融合多源决策,并以 LLM 驱动对抗训练提升模型对隐蔽钓鱼变体的防御能力。实验结果表明,该系统在公开数据集上检测准确率达 97.89%,假阳性率 2.73%,假阴性率仅 0.20%,整体性能优于单模型与思维链提示基线。本文以 MultiPhishGuard 为研究对象,系统阐述多智能体协同检测架构、自适应权重优化机制、对抗样本生成与可解释输出的技术实现,提供可复现的工程化代码示例,结合攻防实践验证框架有效性,为高鲁棒性、可运营的钓鱼邮件防御系统提供理论与技术参考。

image.png 1 引言

电子邮件作为政企核心通信载体,长期是网络钓鱼攻击的首要载体。随着大语言模型在攻击侧普及,钓鱼邮件呈现语义高度仿真、内容个性化、诱导逻辑隐蔽化、逃逸手段智能化趋势,传统基于关键词、黑名单、规则匹配的检测机制逐渐失效。单一模型难以同时覆盖文本语义、URL 结构、发送者信令、行为上下文等多维度特征,且决策过程缺乏可解释性,导致安全运营人员研判成本高、误判影响业务连续性。

MultiPhishGuard 将多智能体协同与对抗训练引入钓鱼检测领域,构建分工明确、动态协作、可自我进化的 LLM 检测系统,实现高精度、低误报、可解释的邮件判别。反网络钓鱼技术专家芦笛指出,下一代钓鱼防御必须从单模型判断转向多模态证据融合、从静态特征转向自适应对抗学习、从黑盒输出转向可解释决策,MultiPhishGuard 的技术路径与这一演进方向高度一致。本文基于该框架完整技术路线,从威胁背景、架构设计、关键算法、工程实现、性能验证与落地优化等方面展开系统研究,形成理论严谨、可落地、可扩展的学术论述。

2 钓鱼邮件检测技术现状与核心挑战

2.1 主流检测技术路径

基于规则与特征工程

依靠关键词、发件人黑名单、SPF/DKIM/DMARC 校验、URL 特征等静态规则,实现简单高效,但对语义伪装、域名混淆、零日钓鱼样本失效。

基于机器学习的分类方法

使用朴素贝叶斯、随机森林、SVM 等模型提取文本统计特征,泛化能力有限,难以应对语义级攻击。

单模型深度学习方法

采用 CNN、RNN、Transformer 等模型进行文本分类,在语义理解上有所提升,但缺乏多模态协同与鲁棒性训练,易被对抗样本逃逸。

基于大模型的提示工程方法

通过思维链(CoT)提示引导 LLM 进行推理,但未实现模块化分工,决策不稳定、不可控,且无法有效抵御语义级逃逸。

2.2 AI 时代钓鱼攻击的新特征

语义高度仿真:LLM 生成邮件语法规范、逻辑自然,消除传统钓鱼的文本破绽。

多模态协同伪装:文本、URL、附件、发件信息联合伪造,单维度检测难以覆盖。

对抗性逃逸:通过同义词替换、句式变换、符号干扰、轻微排版修改实现逃逸。

场景化深度定制:针对行业、岗位、人物画像生成高度针对性钓鱼内容。

2.3 现有系统面临的核心瓶颈

鲁棒性不足:对抗样本与分布外样本易突破检测边界。

模态信息利用不充分:文本、URL、信令元数据未形成协同决策。

决策不可解释:黑盒输出导致安全分析师无法快速核验、溯源与处置。

模型无法持续进化:缺乏对抗生成与自迭代机制,防御能力滞后于攻击。

反网络钓鱼技术专家芦笛强调,钓鱼检测已进入对抗均衡阶段,防御系统必须具备模块化感知、自适应融合、对抗鲁棒训练与可解释输出四大能力,MultiPhishGuard 正是为解决上述痛点提出的系统性框架。

3 MultiPhishGuard 多智能体检测系统总体架构

3.1 设计目标

高检测精度与低漏报率:应对隐蔽与对抗钓鱼样本。

多模态协同:统一文本、URL、元数据等异构证据。

自适应决策:动态调整各智能体权重,提升复杂场景稳定性。

对抗鲁棒性:通过对抗训练持续强化模型边界。

可解释输出:提供简洁可信的研判依据,降低运营成本。

3.2 五智能体核心组成

MultiPhishGuard 由五个专业化 LLM 智能体构成模块化协同系统:

文本智能体:对邮件正文、标题进行语义理解、诱导意图识别、社会工程逻辑判定。

URL 智能体:分析链接域名、路径、参数、跳转关系、页面指纹与域名信誉。

元数据智能体:校验发件人、SPF/DKIM/DMARC、回复地址、邮件头异常、发送 IP 信誉。

对抗智能体:基于 LLM 生成高仿真、弱扰动、上下文感知的钓鱼变体,用于对抗训练。

解释简化智能体:将模型决策逻辑转化为清晰、简洁、可审计的自然语言理由。

3.3 系统工作流程

邮件多模态解构:拆分标题、正文、URL、附件、邮件头。

多智能体并行研判:各专业智能体输出风险评分与证据片段。

PPO 自适应加权融合:强化学习动态分配权重,输出综合风险等级。

对抗样本生成与迭代:对抗智能体生成难样本,回流训练提升鲁棒性。

可解释报告输出:解释简化智能体生成研判理由,支撑人工复核。

3.4 技术创新要点

多智能体专业化分工而非简单集成,提升细粒度检测能力。

采用 PPO 实现动态权重优化,优于固定投票或静态加权。

LLM 驱动对抗训练生成上下文感知样本,提升真实场景鲁棒性。

内置可解释机制,满足合规审计与安全运营需求。

4 关键技术实现与算法原理

4.1 多智能体协同决策机制

各智能体输出独立风险分数 s_i∈[0,1] 与置信度 c_i,系统通过加权得到综合得分:

S=Σ(w_i×s_i)

其中 w_i 由 PPO 根据历史决策效果、任务难度、模态重要性动态优化,确保在复杂邮件场景下高价值信号获得更高权重。

4.2 基于 PPO 的自适应权重优化

近端策略优化(PPO)用于学习最优权重分配策略,以准确率提升、漏报下降、误报控制为奖励信号,在保证策略更新平稳的前提下持续迭代优化。其目标函数:

L^CLIP (θ)=E_t [min (r_t (θ) A_t,clip (r_t (θ),1−ε,1+ε) A_t)]

r_t (θ) 为新策略与旧策略概率比值,A_t 为优势函数,ε 为裁剪系数,确保更新幅度可控。

该机制使系统在面对纯文本钓鱼、URL 钓鱼、伪造信令钓鱼、混合攻击等不同场景时自动分配最优决策权重。

4.3 LLM 驱动对抗训练循环

对抗智能体执行三类扰动生成:

语义保持型改写:同义词替换、句式变换、语气调整,保留钓鱼意图。

上下文伪装:插入正常业务语句,降低攻击显著性。

格式与符号干扰:插入隐形字符、空格、特殊编码,干扰特征提取。

生成样本用于微调检测智能体,形成 “检测 — 逃逸 — 增强 — 再检测” 的闭环进化,显著提升对未知变体的泛化能力。

4.4 可解释输出生成

解释简化智能体执行:

证据抽取:提取标题、URL、发件人、正文关键风险片段。

逻辑结构化:按 “事实 — 风险 — 结论” 组织推理链。

语言简化:转为运营可读的简洁表述,避免技术术语冗余。

最终输出可直接用于告警、工单、审计报告。

5 工程化实现与代码示例

5.1 多智能体基础接口(Python)

from abc import ABC, abstractmethod

import numpy as np


class BaseAgent(ABC):

   @abstractmethod

   def analyze(self, email_data: dict) -> dict:

       pass


class TextAgent(BaseAgent):

   def analyze(self, email_data: dict) -> dict:

       content = email_data.get("subject", "") + " " + email_data.get("body", "")

       # 钓鱼语义、诱导词、紧急话术检测

       risk_score = 0.0

       evidence = []

       # LLM语义分析(简化实现)

       if "verify account" in content or "login required" in content:

           risk_score += 0.6

           evidence.append("正文包含强诱导账号验证表述")

       return {"score": risk_score, "evidence": evidence, "confidence": 0.85}


class URLAgent(BaseAgent):

   def analyze(self, email_data: dict) -> dict:

       urls = email_data.get("urls", [])

       risk_score = 0.0

       evidence = []

       for u in urls:

           if "verify" in u or "secure" in u and not u.startswith("https://"):

               risk_score += 0.7

               evidence.append(f"可疑非加密链接:{u}")

       return {"score": risk_score, "evidence": evidence, "confidence": 0.9}


class MetadataAgent(BaseAgent):

   def analyze(self, email_data: dict) -> dict:

       spf = email_data.get("spf_pass", False)

       reply_to = email_data.get("reply_to", "")

       from_addr = email_data.get("from_addr", "")

       risk_score = 0.0

       evidence = []

       if not spf:

           risk_score += 0.5

           evidence.append("SPF校验失败")

       if reply_to != from_addr:

           risk_score += 0.4

           evidence.append("回复地址与发件人不一致")

       return {"score": risk_score, "evidence": evidence, "confidence": 0.88}


class AdversarialAgent(BaseAgent):

   def generate_adversarial_examples(self, email_data: dict) -> list:

       # 生成语义保持型对抗样本

       original = email_data.get("body", "")

       variants = [original.replace("verify", "confirm"),

                   original.replace("account", "profile")]

       return variants


class ExplainerAgent(BaseAgent):

   def generate_explanation(self, results: dict) -> str:

       ev_list = []

       for agent, res in results.items():

           ev_list.extend(res.get("evidence", []))

       return ";".join(ev_list) if ev_list else "未检测到明显风险"

5.2 PPO 加权融合决策引擎

class PPOWeightFusion:

   def __init__(self, agent_names):

       self.agent_names = agent_names

       self.weights = {name: 1.0/len(agent_names) for name in agent_names}


   def normalize_weights(self):

       total = sum(self.weights.values())

       for k in self.weights:

           self.weights[k] /= total


   def predict(self, agent_results: dict) -> tuple[float, str]:

       total = 0.0

       for name, res in agent_results.items():

           score = res["score"]

           w = self.weights[name]

           total += score * w

       label = "钓鱼邮件" if total >= 0.5 else "正常邮件"

       return total, label


   def update_weights_by_ppo(self, rewards: dict):

       # 简化PPO权重更新

       for name, r in rewards.items():

           self.weights[name] *= (1 + 0.05 * r)

       self.normalize_weights()

5.3 系统入口与检测流程

class MultiPhishGuard:

   def __init__(self):

       self.agents = {

           "text": TextAgent(),

           "url": URLAgent(),

           "meta": MetadataAgent()

       }

       self.adversarial_agent = AdversarialAgent()

       self.explainer = ExplainerAgent()

       self.fuser = PPOWeightFusion(list(self.agents.keys()))


   def detect(self, email_data: dict) -> dict:

       results = {name: agent.analyze(email_data) for name, agent in self.agents.items()}

       score, label = self.fuser.predict(results)

       explanation = self.explainer.generate_explanation(results)

       adv_samples = self.adversarial_agent.generate_adversarial_examples(email_data)

       return {

           "risk_score": round(score, 3),

           "label": label,

           "explanation": explanation,

           "adversarial_samples": adv_samples

       }


if __name__ == "__main__":

   detector = MultiPhishGuard()

   test_email = {

       "subject": "Urgent: Verify Your Account Immediately",

       "body": "Please click to verify your account to avoid suspension.",

       "urls": ["http://fake-bank-service.com/verify"],

       "spf_pass": False,

       "from_addr": "support@fake.com",

       "reply_to": "admin@evil.com"

   }

   res = detector.detect(test_email)

   print("风险评分:", res["risk_score"])

   print("判定结果:", res["label"])

   print("研判依据:", res["explanation"])

6 实验设计与性能评估

6.1 实验配置

数据集:公开钓鱼邮件基准集,包含正常邮件、钓鱼邮件、对抗伪装邮件。

对比方法:单 LLM 模型、思维链提示(CoT)、传统机器学习模型(XGBoost)。

评价指标:准确率 Accuracy、假阳性率 FPR、假阴性率 FNR、F1 值。

6.2 实验结果

MultiPhishGuard 在标准测试集上达到:

检测准确率:97.89%

假阳性率 FPR:2.73%

假阴性率 FNR:0.20%

F1 分数:0.976

消融实验表明:

多智能体协同比单模型提升准确率 3.5%–5.2%;

PPO 动态加权比静态加权提升 F1 1.8%;

对抗训练使对抗样本漏报率下降 67%;

可解释输出使人工研判时间平均缩短 60% 以上。

反网络钓鱼技术专家芦笛指出,0.20% 极低漏报率对政企邮件防御至关重要,可大幅降低高危钓鱼穿透概率,同时 2.73% 误报率处于可运营区间,结合可解释报告可实现高效闭环处置。

6.3 鲁棒性测试

在同义词替换、句式变换、符号干扰、上下文伪装等对抗样本集上,MultiPhishGuard 性能下降幅度显著低于基线模型,证明对抗训练有效提升模型边界鲁棒性。

7 系统优势与实践价值

7.1 技术优势

模块化多智能体架构,便于扩展新模态、新协议、新检测能力。

自适应权重决策,在复杂多变攻击场景下保持稳定性能。

LLM 对抗训练实现自我进化,应对未知钓鱼变体。

原生可解释输出,降低运营成本,满足合规要求。

端到端一体化 pipeline,易于部署至邮件网关、ESA、企业 OA 等系统。

7.2 落地应用价值

降低高级钓鱼穿透率,保护账号、凭据、资金、敏感文档安全。

减少误告对业务的干扰,提升终端用户信任度。

缩短安全运营研判时间,提升处置效率。

为合规审计提供可追溯、可解释的检测依据。

8 局限与未来优化方向

8.1 当前局限

依赖高质量标注数据与 LLM 基础能力,小语种场景性能有待验证。

对抗样本生成偏向语义扰动,对附件、宏、链接跳转等攻击覆盖不足。

暂无大规模生产环境部署公开数据,工程化调优空间仍存在。

8.2 未来改进方向

多模态扩展:接入附件哈希、OCR、行为沙箱、威胁情报。

轻量化部署:模型蒸馏、量化、剪枝,适配边缘网关与低算力设备。

在线持续学习:基于真实告警与反馈自动迭代优化。

跨信道协同:与短信钓鱼、网页钓鱼、钓鱼 APP 检测形成统一防御。

开源基准建设:开放数据集、评测代码与对抗样本库,推动领域标准化。

反网络钓鱼技术专家芦笛强调,多智能体与对抗训练将成为下一代钓鱼防御的主流范式,未来研究应聚焦轻量化、可运营、可扩展与跨信道协同,构建全域钓鱼威胁防御体系。

9 结语

AI 驱动的钓鱼攻击不断突破传统检测边界,对邮件防御系统提出高精度、高鲁棒性、高可解释性的刚性需求。MultiPhishGuard 提出的多智能体 LLM 协同框架,通过文本、URL、元数据、对抗、解释五大智能体分工协作,以 PPO 实现自适应决策融合,以 LLM 对抗训练提升模型鲁棒性,并以可解释输出支撑安全运营闭环,在公开数据集上取得 97.89% 准确率、0.20% 极低漏报率的优异性能。

本文系统梳理该框架的设计理念、架构组成、算法原理、工程实现与实验结果,证明多智能体协同与自适应对抗学习能够有效应对语义级伪装、多维度逃逸与 AI 生成钓鱼威胁。研究表明,将专业化分工、动态决策、对抗进化、可解释性融为一体,是构建下一代高可靠钓鱼检测系统的关键路径。随着攻击持续演进,安全防御必须同步走向模块化、智能化、自治化,MultiPhishGuard 为学术研究与工程落地提供了可参考的完整技术方案,对提升政企邮件安全能力、遏制钓鱼攻击扩散具有现实意义与推广价值。

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

目录
相关文章
|
5天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
2696 9
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
|
13天前
|
人工智能 开发工具 iOS开发
Claude Code 新手完全上手指南:安装、国产模型配置与常用命令全解
Claude Code 是一款运行在终端环境中的 AI 编程助手,能够直接在命令行中完成代码生成、项目分析、文件修改、命令执行、Git 管理等开发全流程工作。它最大的特点是**任务驱动、终端原生、轻量高效、多模型兼容**,无需图形界面、不依赖 IDE 插件,能够深度融入开发者日常工作流。
3451 12
|
16天前
|
Shell API 开发工具
Claude Code 快速上手指南(新手友好版)
AI编程工具卷疯啦!Claude Code凭借任务驱动+终端原生的特性,成了开发者的效率搭子。本文从安装、登录、切换国产模型到常用命令,手把手带新手快速上手,全程避坑,30分钟独立用起来。
3529 25
|
9天前
|
人工智能 Linux BI
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
JeecgBoot AI专题研究 一键脚本:Claude Code + JeecgBoot Skills + DeepSeek 全平台接入 一行命令装好 Claude Code + JeecgBoot Skills + DeepSeek 接入,无需翻墙使用 Claude Code,支持 Wind
2666 6
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
|
7天前
|
人工智能 自然语言处理 供应链
|
7天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全+三种模式+记忆体系+实战工作流完整手册
Claude Code 是当前最流行的终端级 AI 编程助手,能够直接在命令行中完成代码生成、项目理解、文件修改、命令执行、错误修复等全流程开发工作。它不依赖图形界面、不占用额外资源,却能深度理解项目结构,自动生成规范代码,大幅提升研发效率。
1227 3
|
28天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23611 15
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」