资讯动态

基于LLM的多智能体钓鱼邮件检测:架构、实践与工程落地

发布时间:2026/10/21 12:59:39 来源:尧图企业网站定制
先说一个我印象很深的场景某公司的安全团队收到一封伪装成财务部邮件的钓鱼攻击主题写着“请查收本月供应商付款明细”发件域名和公司内部域名只有一个字符之差正文排版跟企业模板几乎一模一样。传统邮件网关没拦下来因为规则库里根本没有这条特征基于机器学习的检测模型也没拦住因为正文文本的正常度太高。最后是人工核查时发现链接指向一个从未合作过的境外域名才避免了损失。这件事让我意识到钓鱼邮件检测这个老问题真正的难点不在于“单封邮件是否看起来可疑”而在于攻击者总是通过发件人身份、正文话术、链接目标、附件行为等多个维度协同构造欺骗环境。我们过去用单点检测器去对抗这种多因素协作的攻击天然吃亏。也正因为如此当看到“基于LLM的多智能体钓鱼邮件检测系统MultiPhishGuard”这篇顶会论文时我特别感兴趣它把多个大模型智能体组织成一个检查团队让不同角色从不同维度交叉验证最终由仲裁层汇总结论。这个思路对做安全运营、邮件网关、AI工程的人来说都很有参考价值。我这篇就把论文的核心设计拆开讲清楚并附上我自己在复现和落地过程中的真实体会。1. 为什么钓鱼邮件检测会走到“大模型多智能体”这一步1.1 传统规则与深度学习方案的天花板钓鱼邮件检测并不是一个新领域。早些年大家主要靠规则和信誉库域名黑名单、发件人特征、标题关键词、附件扩展名、链接域名风险评分。这套做法的本质是“维护一份不断增长的已知攻击知识库”收敛速度很快但攻击者只要换一个域名、改写一句措辞把文字特征做“正常化”处理规则就立刻失效。后来引入机器学习甚至深度学习模型情况好一些模型可以从大量样本中学习“可疑邮件长什么样”。但大多数落地方案仍然是特征工程式建模把邮件拆成发件人特征、文本向量、链接特征、附件特征四路分别打分后加权融合。这样做的问题在于四个维度是独立建模的模型缺少对它们之间“协同关系”的感知。举个例子一封邮件如果来自外部陌生域名正文却声称是内部人事通知链接又指向仿冒登录页这几件事分开看都不是特别强的信号合在一起却是非常典型的鱼叉钓鱼。传统模型很难把这种跨维度联合推理做出来。还有个更实际的问题可解释性差。安全运营人员收到一个“恶意得分0.87”的结果时无法快速回答“为什么判断它是恶意邮件”“哪条证据最可疑”。在安全场景里你看不见判断依据就不敢直接处置。很多安全团队宁可漏一批也不敢误杀所以高误报率一直是这类检测系统上线最大的阻力。1.2 LLM带来的范式转移与多智能体的出现逻辑大语言模型出现后检测思路有了本质变化。LLM能真正读懂一封邮件的语义内容理解“对方在试图让你做什么”“语气是否高度紧迫”“正文里是否包含不合理的信息索取请求”。这比单纯提取TF-IDF词频先进得多因为LLM具备上下文理解与常识推理能力。但直接把整封邮件丢给一个大模型让它输出“恶意/正常”效果其实并不理想。我自己试过单模型推理方式最大的感受是它像一个“很聪明的通才”但缺少专注的注意力。一封邮件的信息密度很高同时包含收件人、正文、链接、附件名、签名、回复地址等线索。单模型一次性全部读完往往只抓住了最显眼的那个特征其他维度的弱信号被忽略了。LLM还会一本正经地给出“根据我的判断这是高风险的钓鱼邮件”但你追问它证据是什么它只能重复模糊的措辞给不出结构化的明细。多智能体的逻辑恰好解决了这个短板。论文里的MultiPhishGuard把检测任务拆解成几个“角色”有人专门负责查发件人身份有人专门精读正文语义有人专门分析链接目标有人专门看附件行为。每个智能体只关注自己那一亩三分地输出结构化证据和置信度最后由一个仲裁智能体收集所有人的判断进行汇总、交叉验证必要时让几个智能体针对矛盾点重新核对。这就像企业里拉了一个跨部门专项组财务核对汇款信息法务审核合同条款IT检查附件来源最后项目负责人综合各方意见拍板。单项检查可能存在盲区但多方交叉验证后攻击者想同时在所有维度伪装成功的难度就大大增加了。2. MultiPhishGuard的系统架构与智能体分工2.1 前置处理层从原始邮件到结构化证据这套系统并不是把EML原始文件直接塞给LLM而是先经过一个前置处理层把原始邮件转换成标准化的结构化输入。这一步在论文里着墨不多但实际工程里非常关键我甚至认为它的优先级高于模型本身。前置处理至少包含四件事第一解析邮件头部信息提取From、Reply-To、Return-Path、Received路径等字段注意不是简单取字段值而是要保留字段之间的冲突关系比如“显示名称是财务部但实际发件邮箱来自陌生域名”这类矛盾本身就是重要线索。第二正文规范化把HTML邮件转成纯文本并保留文字与链接的对应关系过滤掉跟踪像素去掉不影响语义的排版标签。第三链接提取包括显式链接、隐藏链接、第三方短链、锚文本与实际href不一致的“文字欺骗型链接”。第四附件元数据提取包括文件名、扩展名、MIME类型、文件大小、是否带宏、是否加密压缩包。预处理结果的输出通常是三层JSON结构基本信息层、内容层、链接与附件层。每个分析智能体只能看到它职责范围内的子集。这个“信息隔离”设计是系统的关键原因在于它强制各智能体独立判断避免前排智能体的偏见传导到后续处理。2.2 四个核心智能体身份、语义、链接、附件论文将分析任务划分成多个专门智能体我梳理下来最核心的是身份分析、语义分析、链接分析和附件分析这四类。各智能体并不是简单堆数量而是每一路都对应一类经典的钓鱼信号源。智能体角色核心输入输出主要职责身份分析智能体邮件头部、认证记录发件人可信度评分 证据列表解析SPF/DKIM/DMARC结果计算域名与内部域的仿冒距离识别域名抢注特征内容语义智能体规范化后的正文纯文本文本意图分类 关键诱因抽取识别紧迫感、权威借用、信息索取、账号异常引导等钓鱼话术模式链接分析智能体提取出的URL及解析结果目标域名风险评分 跳转链证据检查文字链接与真实URL是否一致查询WHOIS信息评估跳转链与域名年龄附件行为智能体附件元数据及静态特征附件风险等级 行为描述识别可执行文件、宏文档、加密压缩包与异常MIME类型组合以身份分析智能体为例它不只是查一下域名黑名单而是会计算“视觉相似度”。攻击者常用字符替换手段比如把内部域名里的“l”替换成数字“1”把“o”替换成“0”。这类伪装对普通员工很难识别但智能体可以逐字符比较目标域名与公司正式域名之间的编辑距离一旦发现近距离相似且不在允许列表中就会给出高置信度的“域名伪装”证据。内容语义智能体的工作方式最有意思。它接收的是正文纯文本但输出不只是“可疑/正常”二分类而是抽取具体诱因元素是否提到“账号即将停用”“不立即操作将产生罚款”“请点击以下链接验证身份”“收款账户已经变更”等等。这些表达分类单独看都是中性的组合起来却有明显的钓鱼意图。语义智能体还会标注文本中是否存在“信息索取型表述”例如直接索要密码、验证码、社保信息等这在正常业务邮件里非常罕见。2.3 仲裁智能体多智能体如何避免“各自为战”各分析智能体独立输出之后需要一个角色来做裁决。MultiPhishGuard的仲裁智能体正是这个角色。它的输入端是各智能体的决策、置信度和结构化证据列表输出端是最终风险等级与处置建议。仲裁层遵循一个原则优先处理硬性证据再做软性综合判断。比如身份分析发现SPF对齐失败且域名编辑距离只有1这类硬证据直接拉高整体风险如果只是正文语气略显紧迫但身份、链接、附件全都没有异常则不应当仅凭语气判恶意。这种设计避免了“全凭感觉”的误判。仲裁智能体还有一项重要能力触发交叉复核。当不同智能体给出强烈冲突的信号时比如语义智能体认定这是退款通知但链接智能体发现目标URL指向的是完全无关的境外域名仲裁会把这些冲突点列举出来反向让相关智能体重新分析一遍并重点检查“是否被攻击者的伪装策略误导”。这个过程相当于一个轻量级的“多智能体辩论”能有效识别刻意构造的伪装邮件。最终输出分为三档明确阻断、限制访问并转人工复核、允许放行。后两档都会附上一份证据报告供安全运营人员快速判断。3. 论文里的核心技术细节提示词、外部知识与置信度3.1 角色隔离的提示词设计多智能体系统的效果高度依赖提示词设计MultiPhishGuard在这方面有一个很值得借鉴的点它没有对所有智能体使用同一套大而全的提示词而是做了严格角色隔离。每个智能体的系统提示词包含四段式结构角色定义、输入结构说明、输出结构说明、判断规则与禁忌。以内容语义智能体为例提示词的核心大致是你是一名邮件内容安全分析专家你将收到一封邮件的纯文本内容请判断文本是否存在钓鱼意图输出JSON格式结果包含意图分类、诱因元素列表和置信度。判断规则中必须写明“只依据正文文本做分析不要猜测发件人身份”“当正文没有明显钓鱼意图时置信度必须降低”“禁止输出泛泛的安全结论必须列出具体文本片段作为证据”。我一开始复现时犯了一个错把四个智能体的提示词都写得很发散导致每个智能体都会“越界”评论几句别的维度。后来按论文思路把输入输出结构严格限定之后输出稳定性提升非常明显。尤其是要求智能体提供“证据片段”这一点它既约束了模型不乱编又给安全审计留下可追溯材料。3.2 外部知识增强把“模型自证”变成“多源证据”单纯靠LLM内部知识判断域名风险是不可靠的。模型训练数据有截止时间无法知道某个域名是昨天才注册的也无法实时获知某个IP的威胁情报评分。MultiPhishGuard在链接分析智能体和身份分析智能体上引入了工具调用机制将外部数据源与模型推理结合。在实现层面这表现为一种工具型检索增强链接分析智能体拿到URL后先调用域名信息解析工具获取注册时间、注册商、解析IP归属地再调用威胁情报接口查询域名的信誉分之后才把这些外部数据连同链接本身一起送入LLM做综合判断。身份分析智能体则会在解析SPF/DKIM/DMARC结果之后把认证记录和域名视觉相似度分数作为附加输入。这个设计从根本上规避了一个难题让模型凭空判断“这个域名是否可信”。模型自己给出的回答很容易带有幻觉但工具返回的结构化数据是客观事实。LLM的角色从“记忆者”变成了“融合判断者”只负责结合外部事实做出推理并输出证据链。对安全场景来说这种“机器可查证”的证据非常重要它让系统每一个结论都能回溯到具体的事实源。3.3 置信度校准与证据链输出多智能体系统另一个容易翻车的点在于置信度不可信。LLM输出的“置信度0.9”很多时候只是表述自信并不是真正的概率估计。MultiPhishGuard做了两层处理。第一层是结构化置信度定义要求智能体按照一系列规则自主评估证据强度比如证据来源是否客观、证据之间是否一致、是否存在反证最后再综合给出一个分级置信度而不是让模型直接输出一个拍脑袋的数字。第二层是自洽性校验对于关键判断会让模型以不同方式重新回答几次如果几次结论一致置信度上调如果出现反复则下调并将该样本标记为需要人工复核。最终交付物特征我觉得是最值得学的一点系统输出不是一行“恶意”结论而是一份证据链报告。每个智能体负责一段独立证据标注来源、分析依据和结论仲裁智能体最后写一段裁决摘要。安全运营人员拿到这份报告看到“身份伪装证据域名与内部域名相似度0.94SPF未对齐链接证据目标域名注册时间3天前”就能在几秒钟内判断系统是否误报。这种设计实际上把大模型的判断从“黑盒”变成了“可审计的半白盒”在安全产品里价值极高。4. 评测方式与实验结论里值得关注的点4.1 数据集构成与评测口径钓鱼邮件数据集在学术圈始终是个难题因为真实钓鱼邮件涉及隐私且样本分布稀疏公开语料不够很多论文只能自己构造。MultiPhishGuard的做法也遵循了这一路线在评测集构建上做了分层设计。第一层是公开钓鱼邮件样本覆盖常见的批量钓鱼第二层是精心构造的定向鱼叉邮件重点模拟攻击者仿冒企业内部流程的场景比如人事调查邀请、财务审批变更、供应商付款信息更新等第三层是大量正常业务邮件作为负样本。数据层面还有一个细节值得注意评测时特意加入了一批“混淆样本”正文内容完全正常但链接异常或者发件人可信但正文催办语气强烈用来测试系统跨维度交叉验证的能力。安全场景的评测指标和通用文本分类不太一样。准确率反而不是首要目标更关键的是精确率与召回的平衡尤其是误报率。一次误报可能导致合法邮件在网关长时间滞留直接影响业务。论文里对误报有专门的分析重点评估在正常邮件通过率高的情况下能召回多少钓鱼邮件以及调低仲裁阈值后误报上升的曲线变化。4.2 与单一LLM和传统检测基线的对比思路从论文给出的对比框架来看基线选取很有层次感。第一层是传统方案如规则引擎和经典机器学习模型第二层是微调的小型预训练模型第三层是没有使用多智能体结构的单一LLM零样本判断第四层才轮到MultiPhishGuard本身。各自差距的根源值得细说。传统方案在特征覆盖的老攻击类型上召回率尚可对新变种和混淆策略几乎无能为力。小模型微调相比规则模型进步明显但在长文本理解与跨维度推理上仍然偏弱且需要大量高质量标注样本。单一LLM在简单样本上表现亮眼但遇到跨维度诱骗场景时容易遗漏弱信号而且输出稳定性差同一样本反复推理可能出现结论漂移。多智能体结构带来的收益不只是准确率数字提升更体现在结论稳定性与证据完整性上。几个智能体先独立分析再统一仲裁相当于把一次性判断拆成了多轮有分工的审查任何一个单路智能体被骗仲裁层还有机会通过其他智能体的证据拉回来。4.3 成本、延迟与误报率的权衡多智能体方案的代价在论文的工程讨论部分完全不回避单封邮件处理延时和推理成本远比单模型方案高。一次检测流程可能要调用5到10次模型推理如果全部使用大参数商用模型每封邮件的成本在规模化场景下会非常难看而且安全网关对延迟很敏感邮件越多堆积越严重。论文给出的方向是分级调度先用廉价快速的硬规则或者小模型做预筛明显正常的邮件直接放行只有命中可疑特征的邮件才进入多智能体深度分析流程。这个思路我特别认同。我在自己的实验中也采用了类似的“两级漏斗”第一级用传统的SPF校验和附件扩展名黑名单做粗过滤召回率不高没关系重要的是把流量缩小到原来的10%以内第二级才对这10%的可疑流量跑完整的智能体分析。实测下来整体成本下降了八成关键恶意邮件的捕获能力并没有明显折损。5. 把论文思路落地到真实环境时我踩过的坑和实操建议5.1 从论文到Demo一个最小可复现的设计如果你不想照搬整套工业级架构只想知道论文思想能不能跑通我建议你按一个最小的可复现Demo来做输入是单个EML文件输出是一份JSON格式的风险报告。代码结构可以维持三个模块预处理器、智能体执行器、仲裁器。class MultiPhishGuardDemo: def __init__(self, llm_client): self.llm llm_client self.agents [ SenderAgent(llm_client), ContentAgent(llm_client), LinkAgent(llm_client), AttachmentAgent(llm_client) ] self.arbiter ArbiterAgent(llm_client) def analyze(self, eml_path): email_data preprocess(eml_path) evidences [] for agent in self.agents: evidence agent.run(email_data) evidences.append(evidence) decision self.arbiter.decide(evidences) return build_report(decision, evidences)四个智能体共享同一个模型服务只是system prompt不同。这样你可以用一个小型开源模型跑完整流程先验证多智能体的协作是否有效再去考虑性能优化。我复现时的经验是先用开源中小模型验证流程可行性再用大参数模型做最终效果测试能够大幅减少调试成本。前期大量调整prompt和输出结构时没必要每次都烧大模型接口费用。5.2 工程化集成中容易踩的三个坑第一个坑是智能体输出结构不稳定。LLM即使收到“输出JSON”的指令也可能在复杂样本上输出残缺字段或多余文本。解决方案是加一层输出校验器把模型输出先尝试解析JSON解析失败则提取其中疑似JSON的子串重试仍然失败就让该智能体重新生成。不要指望模型一次输出永远合法。第二个坑是并发请求的API限流。真正的邮件网关流量峰值很猛四路智能体全部并行发起模型请求很容易打满接口配额。建议引入信号量机制控制并发并对相同类型的分析结果做缓存。比如同一封装好的相似域名短时间内反复出现身份分析结果可以直接复用没必要每封邮件都重复解析。第三个坑是规则与模型的关系没处理好。我最初把仲裁智能体的输出当作最终决定后来发现如果完全没有规则兜底某些极端情况会被模型误判。合理做法是让硬性规则拥有“一票否决权”附件是带宏的可执行文件、SPF硬失败并且域名仿冒相似度超过阈值这类情况不需要仲裁直接阻断模型智能体只负责处理规则覆盖不到的模糊地带。模型判断加上规则兜底误报率才会真正可控。5.3 什么样的邮件场景最适合优先引入这类方案成本决定落地策略。多智能体方案在处理速度与调用成本上不占优势并不是所有邮件都值得走这条链路。我的建议是从高风险场景切入面向高管和财务人员的内部邮件、涉及供应商付款与账号权限变更的业务邮件、以及新外包协作方的首封联系邮件。这些场景一旦被钓鱼成功损失通常是万元级别甚至更高。对于一般员工的普通内部邮件流可以在网关层先用传统规则加单一轻量模型过滤只有命中“低确信但异常”标签的邮件才升级到多智能体深度检测。这种分级架构既保住了业务响应速度又把算力集中在最值得保护的地方。论文里没有明确讨论这套部署策略但它与经典安全产品“分层防御”的理念完全一致也是我在实际项目里验证过性价比最高的方式。6. 局限性与后续值得继续挖的方向6.1 模型幻觉与对抗攻击仍然无解必须承认MultiPhishGuard不是银弹它的软肋恰恰藏在多智能体的核心机制里。首先是幻觉问题并没有完全消失外部工具数据和模型自身推理之间如果出现矛盾仲裁智能体在少数情况下仍会采信模型编造的“常识判断”而不是客观事实。对抗攻击也仍然有效攻击者可以用变形字符、随机插入空格、同义词替换等方式干扰语义智能体将URL做Base64编码或使用公网短链服务可以一定程度上绕过链接分析。更隐蔽的一个问题是置信度共振。如果身份分析智能体首先被精心构造的发件人信息误导给出了“可信”结论这份自信会作为输入传给仲裁层影响仲裁对后续智能体证据的权重判断。多智能体系统看似互相制约实际上也存在“主流意见压倒少数派”的风险。论文的仲裁机制用了交叉复核来缓解但并不是完全免疫。6.2 我比较看好几个扩展方向第一个方向是多语言与多模态覆盖。很多企业与海外合作方的沟通邮件是中英混排附件里还可能有图片版转账单。现有方案对图片语义的利用还很浅。如果给内容语义智能体增加图像识别能力把图片中的文字和表格也纳入分析范围钓鱼检测的盲区会进一步缩小。第二个方向是账户行为时间线建模。钓鱼邮件往往配合账户异动比如收到邮件前后短时间内有新增登录设备、收件规则被修改、转发到陌生地址。如果智能体分析结果能和邮箱账户行为日志联动形成“邮件静态特征用户行为动态特征”的双重验证检测强度会高出一个量级。第三个方向是自学习闭环。日常拦截的钓鱼样本经过人工确证后可以自动抽取出新的对抗样本特征定期回灌到提示词的few-shot示例库中。这比每季度手工更新规则库高效得多也是我接下来想在自己维护的检测系统里试验的一段工作流。这套多智能体检测思路最打动我的地方不是某一个智能体多聪明而是整个系统愿意把每一句结论都拆解成可追溯的证据。钓鱼邮件本身就是一个高对抗场景攻击者的优势在于他只需要在你所有防线中找到最薄弱的一个点而多智能体的意义是逼着攻击者在每一个维度都做到无懈可击才有机会成功。这个博弈天平终于开始往防御者这边倾斜了。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑