一种用于钓鱼和威胁分类的混合多层流水线:独立验证的URL和NLP引擎及校准的多通道融合阶段

大家读完觉得有帮助记得关注和点赞!!!

摘要
钓鱼是一种多模态威胁。我们提出了一种混合流水线,为每种模态使用独立的引擎进行评分,并融合结果。我们构建、部署并独立基准测试了三个引擎:一个四阶段URL栈(域名守卫、词法模型、威胁情报和一个非对称L2融合侧车);一个泛化强化型DistilBERT NLP分类器,其保留的真实钓鱼召回率从0.8%提升至87.3%;以及一个具有端到端OpenTelemetry检测的威胁情报同步器,确认了1:1消息守恒。在一个包含10,677封邮件的全系统基准测试中,决策级融合阶段的表现通过校准的概率OR融合了URL、邮件头和钓鱼概率通道,达到了F1=0.914,同时将保留的真实垃圾邮件误报率降至3.6%。由于该基准测试使用了代理URL和邮件头通道,且操作点仍需重新校准,我们将其作为一个初步的综合结果。可部署检测的约束条件是泛化能力,而非同分布准确性。

I 引言
钓鱼攻击仍然是凭证盗窃、商业电子邮件欺诈和恶意软件投递的主要初始访问向量。单封邮件结合了诱饵文本、URL、发件人元数据,通常还包含附件,然而大多数检测器仍然一次只基于一种模态进行推理。URL分类器无法从文字中解读意图;文本分类器无法判断一个新注册的域;信誉源无法识别它从未见过的诱饵。我们的前提是,分类应该融合独立的、特定于模态的信号,而不是强迫一个模型来裁决整封邮件。

单模态检测器有其特定的失败模式。在一个主要以www为前缀的语料库上训练的词法URL模型会将google.com这样的裸顶级域读作钓鱼;精确域名威胁情报会遗漏子域名轮换;文本分类器会过拟合其训练语料库,正如早期NLP检查点所示,它在保留的真实钓鱼数据上召回率降至0.8%。分层、模态分离的设计就是对此的回应。

本文记录了系统中已实现和已度量的部分,并将其余部分作为支持性背景呈现。我们做出四点贡献。首先,一个四阶段URL引擎,包含嵌入式域名守卫、词法一级模型、威胁情报查询和基于区域的L2融合侧车(第七节)。其次,一个泛化强化型DistilBERT邮件分类器,在对比课程学习和共享规范化下,其保留的真实钓鱼召回率从0.8%提升至87.3%(第九节)。第三,一个生产级威胁情报同步器和端到端检测,其跟踪记录证明了1:1消息守恒(第八节和第五节)。第四,在一个包含10,677封邮件的全系统基准测试中表征的决策级融合阶段,其中校准的概率OR融合了URL、邮件头和钓鱼概率通道,性能优于更简单的混合器(第十节)。

我们始终谨慎对待被基准测试的内容及其方式。三个模态引擎各自在保留或代表性数据上进行评估。融合基准测试使用了代理URL和邮件头通道,而非生产分数,其阈值仍需在实际流量上重新校准;因此,我们将其数据视为初步的综合结果,而非生产准确性声明。目前尚不存在包含实时URL和完整邮件头的真实多通道钓鱼语料库,可以用来无循环地验证融合权重。该系统是署名作者的一个毕业设计项目。

II 背景与相关工作
我们的系统是一个基于Kafka-API代理的、事件驱动的Go和Python微服务集合,如第三节所述。我们将其设计与三个方面的先前工作进行对比:词法URL检测、基于Transformer的邮件文本分类和信号融合。

词法URL分类是一个成熟的研究方向,提供了特征谱系和公共语料库[9, 43, 27, 34, 35]。我们的一级URL模型建立在此工作之上,并按马修斯相关系数[25]对候选模型进行排序(第六节)。在该模型之上,我们添加了一个确定性域名守卫,它结合了思科Umbra流行度排名[11]、Levenshtein编辑距离[20]以及长期存在的子域中品牌滥用模式[12]。然后,二级侧车将一个校准的逻辑回归URL分数[33]与一个基于操作域主机特征(使用直方图梯度提升模型)[13, 17]进行融合(第七节)。

对于邮件文本,我们微调了DistilBERT [41],遵循其他轻量级Transformer钓鱼检测器[5, 38, 6, 44],并通过快速梯度方法对抗训练和字符级噪声增强来强化模型[14, 39]。多头布置遵循多任务学习文献[16, 18],并对不平衡分类任务使用focal loss[21];意图分类法和多源语料库组装借鉴了先前的代码簿和语料库工作[26, 40],模型通过ONNX导出并显式研究了量化[30]。我们将邮件分为合法、垃圾邮件和钓鱼三类,而非通常的两类,因为垃圾邮件与合法的混淆是二分类和LLM分类器的主要失败模式[45](第九节)。

在这些组件中,URL信誉、发件人信誉和文本意图由不同层评分,并在第十节的融合阶段重新组合。

III 系统架构
我们按设计呈现系统,但在已实现和度量的组件与仅被规范的组件之间划清界限。三个服务作为真实的、独立基准测试的引擎交付:URL分析服务SVC-03、NLP分析服务SVC-06和威胁情报同步器SVC-11。聚合器SVC-07和决策引擎SVC-08已实现,并在第十节的全系统基准测试中运行。其余服务被规范并作为传输存根运行,用于锻炼端到端主干。

SVC-01 接收 -> SVC-02 解析器 -> SVC-03 URL -> SVC-04 邮件头 -> SVC-05 附件 -> SVC-06 NLP -> SVC-07 聚合器 -> SVC-08 决策 -> SVC-09 通知 -> SVC-10 API -> SVC-11 TI同步器
(emails.raw, emails.scored)

图1:系统处理拓扑。粗实线框(SVC-03, SVC-06, SVC-11)是独立基准测试的引擎;虚线框是设计或辅助服务。SVC-11 供给SVC-03消费的Valkey威胁情报缓存。所有Kafka主题均以邮件标识符为键。

入站邮件进入接收服务SVC-01,它暴露五个源适配器,并在组织和消息标识符对上执行去重。解析器SVC-02随后读取MIME结构,提取URL,使用三种摘要对附件进行哈希,计算香农熵和魔数文件类型,并发出一个列出其期望下游评分的分析计划。接下来,四个分析器并行地对独立模态进行评分:URL引擎SVC-03、邮件头分析器SVC-04、附件分析器SVC-05和文本引擎SVC-06。每个发布自己的评分信封。聚合器SVC-07在同步屏障后收集这些信息,决策引擎SVC-08混合它们,应用规则引擎,将混合结果映射为裁决,对活动进行指纹识别,并在单个事务中持久化结果。同步器SVC-11带外刷新威胁情报存储(图1)。

十二个Kafka主题均以邮件标识符为键,因此关于一封邮件的每一条消息都在主题内共分区并按顺序排列。负载是携带版本化信封的JSON,交付是至少一次且具有幂等生产者。

已实现引擎发出的评分信封是具体的。URL评分消息除了整数分数外,还携带威胁情报是否匹配、守卫是否触发、融合的部署概率以及机器学习裁决;每封邮件的URL分数是各个链接的最大值。NLP评分消息增加了意图、紧急程度、冒充和欺骗等方面。

持久化跨越大约二十三张PostgreSQL表,邮件表按月范围分区。从观察到的邮件流量中丰富的威胁与同步器写入的廉价批量指标保存在不同的表中(第八节),因此昂贵的丰富永远不会与馈送数据混合。裁决是仅追加的。按组织的行级安全已被指定但尚未实施。

IV 数据集
由于引擎是分开训练和评估的,为每个引擎提供的数据值得单独描述。本节记录了最大的两个监督语料库:一级URL模型背后的URL语料库和NLP模型背后的多源邮件语料库,以及每个语料库是如何组装、去重、划分和标记的,以及各自携带的偏差。用于融合侧车的操作丰富数据和全系统基准语料库将在使用它们的组件附近描述,分别在第VII节和第X节。

IV-A URL语料库
URL模型从原始URL字符串中学习,因此选择标准仅仅是数据集暴露原始URL文本,而不是预提取或离散化的特征。两个公共数据集满足此条件:PhiUSIIL [35],包含235,795个URL,和LegitPhish [34],包含101,219个手动验证的URL。其他四个候选者因具体原因被拒绝,指名它们是方法论的一部分:两个将其特征编码为三元值,没有原始URL列;另外两个包含大量的完全重复行,其中一个数据集有47.6%的重复行。两个选定的数据集原生地将合法标记为1,钓鱼标记为0,我们将其反转为传统方案:0表示合法,1表示正类钓鱼。

合并这两个集合需要小心。我们删除了URL或标签为空的行,以及URL长度小于10个字符或不含点号的行,然后不区分大小写地去重,在有冲突时保留PhiUSIIL的副本,因为它是更大且更新的来源。这移除了37,706行。产生的语料库包含299,306个URL,其中45.2%是合法的,54.8%是钓鱼的,没有空值或无限特征值。我们按70/15/15分层划分,包含44,896个URL的保留测试分区被准确评分一次。三个查找表,全部从思科Umbra百万顶级域列表[11]构建,支持特征提取器:一个基于约两千一百万字符语料库的每字符概率表,一个针对1,319个顶级域的合法性概率表,以及一个包含16个安全相关术语的列表。

该语料库的两个偏差值得明确说明,因为两者都影响了模型的部署方式。数据大致跨越2015年至2023年,因此随着钓鱼策略的演变,预计会发生概念漂移。更重要的是,近乎平衡的类别分布与真实入站流量约1%的钓鱼发生率非常不同,这正是部署模型运行在保守阈值并计划在生产数据上重新校准的原因。该语料库也以拉丁字母URL为主,国际化域名代表性不足。

IV-B 邮件语料库
NLP模型在六个真实语料库上训练,这些语料库共同覆盖了它必须区分的三个类别。基础是最大的Spam-Ham-Phish Kaggle语料库,包含365,448条消息[42],这是唯一具有原生三类别标签的来源;它包含12,477个内部标签冲突,我们通过多数投票解决。一个现代教育钓鱼集[4]和一个包含人工和机器生成的钓鱼邮件语料库[15]提供了当代和AI编写的诱饵;该研究发布并评估了我们摄入的Kaggle语料库。Nazario [29]和Nigerian-419 [37]集合贡献了2004年以来的真实世界钓鱼邮件。最后,一个包含七个历史垃圾邮件语料库[36]的大型聚合,包括TREC、CEAS、Enron、SpamAssassin和LingSpam集,提供了专门的垃圾邮件类别;我们在分析过程中做的一个修正是认识到其正标签表示垃圾邮件,而非钓鱼,因为其中的每个子语料库在历史上都是垃圾邮件集合。另外四个候选者在检查后被排除,其中两个被证明是合成的或在几十个独特文本的层面上近乎重复,还有一个已被预先词干化到无法使用。

所有来源被映射到整数方案:0表示合法,1表示垃圾邮件,2表示钓鱼,这与平台的字符串裁决枚举不同。然后我们分两轮去重,首先通过规范化文本的精确哈希,然后通过MinHash局部敏感哈希[7],Jaccard阈值为0.80,在每个近似重复簇中保留最长的样本。划分是活动感知而非随机的:每封邮件由其主题和前一百个字符指纹识别,分组洗牌划分将活动的所有变体发送到同一分区,并有断言确保没有指纹且类别比例偏差不超过5%跨越分区。随机划分会让一个活动模板同时出现在训练和测试中,从而夸大每个指标,因此这一步是关键的。目标组成在合法、钓鱼和垃圾邮件之间为40/40/20:钓鱼被过度代表以便模型深入学习其决策边界,垃圾邮件被控制在语料库的五分之一,特别是为了防止主导三类别评估的垃圾邮件与钓鱼混淆[45]。

模型第一版和发布版之间的决定性变化不是数据源,而是它们如何被组装,我们在此描述它,因为它既是数据集决策也是训练决策。真实的钓鱼集合大约85%被移入训练,保留15%的369条消息作为真实的泛化指标。每个来源都设置了上限,以便没有单个语料库的词汇能主导梯度。困难的钓鱼模式与近乎相同的合法孪生配对,迫使模型关注区分的意图而非表面短语。大约四分之一的钓鱼消息和十二分之一的合法消息添加了字符级噪声,大约六分之一的钓鱼消息添加了leet语替换,产生了一个大约188,000行的训练集。与URL语料库一样,主要的偏差是真实且重要的:40/40/20的平衡不同于真实收件箱的大约85/5/10的混合,因此需要阈值重新校准,分词器仅限英文,256个标记的输入窗口会截断非常长的消息。

V 实验设置与可观测性
在转向引擎之前,我们先确定评估协议和用于报告的术语,因为后续数字的可信度取决于准确说明每个数字是如何获得的。守卫和融合侧车的延迟数据是在Intel i7-10750H上测量的。NLP模型在部署状态下进行基准测试,在CPU上运行于ONNX Runtime,并启用全图优化;优化缓存将其冷启动时间从一到两分钟减少到几秒钟。URL融合侧车作为一个独立的Python服务运行,Go引擎通过HTTP调用它,这保持了Go二进制的紧凑性,并允许在不重启分析服务的情况下重新加载模型。

结果中出现了三个短语,每个在这里都有具体含义。“保留”测量是在模型训练期间从未见过的划分上进行的,并且在划分是活动感知的情况下,甚至没有见过其兄弟。“类生产”数字是在最难的现实切片而非最简单的切片上测量的,例如不包含品牌线索的细微通用域名钓鱼,我们将其报告为下限而非头条。“快照”是单个时间点的捕获,例如一天的新鲜钓鱼馈送;快照数字具有宽置信区间,并始终与其应被解读的下限配对。主要指标在整个过程中遵循相同的约定:马修斯相关系数[25]作为URL模型的主要指标,因为它在类别不平衡下考虑了所有四个混淆矩阵象限;概率模型的ROC曲线下面积以及假阳性和假阴性率;三类别NLP任务的宏平均F1和宏马修斯相关系数[25];以及概率质量的期望校准误差。

每个服务都沿三个支柱进行检测:Prometheus指标、导出到Jaeger的OpenTelemetry跟踪以及结构化日志,Prometheus、Grafana和Jaeger的主机接口各自使用自己的端口。跟踪上下文通过Kafka头在服务间传播,因此单个跟踪跨越整个流水线,三个共享计数器(消息消费、消息生产和每阶段处理时间)让我们能够端到端验证消息守恒。所有这些都可以从演示栈中复现。

VI 低延迟URL模型(L1)
一级URL模型仅从结构特征将原始URL映射到钓鱼概率,推理时无网络调用。它组合了一个确定性提取器 φ:Σ* → ℝ^30 和一个梯度提升集成 g:ℝ^30 → [0,1],因此模型是 f(u) = g(φ(u)),部署的优胜者是阈值为0.85的XGBoost [8]分类器。其训练数据是第四节中合并的299,306个URL语料库,合法与钓鱼的比例为45.2比54.8。

特征向量有三十维。二十八维是结构和词法信号,包括URL和主机名长度、点号和连字符计数、子域统计、URL和域的香农熵、源自PhiUSIIL工作[35]的字符概率和延续率分数、顶级域合法性概率以及几个二元标志。剩下的两个是合法性锚点:最小品牌编辑距离和顶级百万域列表成员标志,这为模型提供了直接的流行度和品牌信号,用于深层路径或高熵URL。两个经典推广的特征,IP地址主机和路径中的双斜杠,完全没有贡献任何分裂并被修剪。实际上,重要性由熵和概率表特征主导,而非文献通常强调的词法标志(表I):前五个特征承载了63.1%的累积重要性,仅字符概率特征就承载了15.5%。

表I:优胜模型按分裂计数排名的前10个L1特征。

排名

特征

分裂数

累积 %

1

url_char_prob

2,697

15.5

2

entropy_domain

2,293

28.7

3

entropy_url

2,244

41.6

4

tld_legit_prob

2,081

53.6

5

char_continuation_rate

1,659

63.1

6

url_length

1,171

69.9

7

hostname_length

844

74.7

8

path_length

708

78.8

9

avg_subdomain_length

692

82.8

10

pct_numeric_chars

413

85.2

模型选择是一场较量。十个分类器在相同的70/15/15分层划分下训练,并按马修斯相关系数[25]排名,我们在此处更倾向于它而非准确率或F1,因为它在语料库类别不平衡下权衡了所有四个混淆矩阵象限。一个虽小但有启发性的修复出现在过程中:一个备用的顶级域解析器在思科Umbra列表[11]中的裸域上失败,安装专用解析器不仅修复了提取器,还将顶级域合法性特征提升到重要性第四位。

主要结果很强,值得清晰陈述而不是放在一个过载的句子里。在44,896个URL的保留测试集上,最佳模型LightGBM [17]在默认0.50阈值下达到了0.99645的马修斯相关系数。其伴随指标为准确率99.824%,精确率99.919%,召回率99.760%,F1为99.839%。其ROC曲线下面积为0.99929,对数损失0.01026,假阳性率0.099%,假阴性率0.240%,对应混淆矩阵为20,275个真阴性,20个假阳性,59个假阴性和24,542个真阳性。部署的工件是XGBoost [8]而非LightGBM,并在保守的0.85阈值下运行;其嵌入指标,准确率0.9658,F1 0.9683,马修斯系数0.9333,较低正是由于更高的阈值以召回率换取精确率,明确区分这两个操作点避免了混淆。特征提取运行速度约为每秒六万个URL,单URL推理约1582微秒。

在运行时,一级模型仅在域名守卫(第七节)之后执行。在面向用户的扫描端点中,处理程序故意将一级分数强制为零,因此裁决由威胁情报匹配和融合侧车设定;分数阈值分支仅在批量流水线中运行。一级分数仍然计算并返回用于可观测性。残余限制是第四节中注明的语料库偏差,需要在部署后重新校准阈值。

VII 域名守卫与L2融合
第六节的一级模型位于一个四阶段URL流水线内部:域名守卫、一级模型、威胁情报查找和L2融合侧车,每个早期阶段都能短路后续阶段。本节涵盖守卫和侧车;消费其输出的决策引擎在第十节描述。

VII-A 域名守卫
守卫首先运行,用Go编写。它首先通过公共后缀列表[28]派生URL的可注册顶级域,然后按顺序应用三个信号。一个包含思科Umbra最流行域名[11]的万条目白名单,在构建时作为哈希集嵌入二进制文件中以实现常量时间查找,命中时返回合法裁决并跳过流水线的其余部分。如果失败,则进行Levenshtein距离为一的拼写错误检查[20],将顶级域与相同的万个参考域名进行比较;长度差距测试在编辑距离计算运行之前丢弃任何差异超过一个字符的候选,匹配产生钓鱼裁决。最后,子域中的品牌扫描[12]检查至少四个字符的非顶级域标签是否匹配20个手工筛选的品牌子串,同样在命中时返回钓鱼。守卫是下游融合权重可以对知名域保持激进而不会产生误报的原因,因为这些域永远不会到达侧车。在i7-10750H上测量,白名单命中解析约43纳秒,最坏情况全扫描拼写错误检查约51微秒,子域中品牌命中约157纳秒,顶级域提取在1微秒以下。

VII-B 两个融合模型
当守卫未触发且威胁情报尚未返回高置信度裁决时,侧车计算两个概率并融合它们。

第一个是字符级URL概率。一个字符n-gram模型(n∈[2,4])输入一个具有2^18个桶的哈希向量化器,这意味着没有拟合词汇表,模型在数据漂移下保持无状态。其输出驱动一个L2正则化逻辑回归,C=2.0,类别权重平衡,liblinear求解器,迭代上限3000次。由于逻辑回归输出原生Sigmoid概率,此分数已为线性组合校准,不需要用于基于间隔的分类器的单独Platt缩放校准器[33]。输入被规范化为ASCII小写,路径进行百分号解码,主机进行punycode解码。这个模型的故事值得讲述,因为其第一版是一个警示故事:它的曲线下面积仅为0.757,是过拟合增强方案和明显泄漏的产物,因为其钓鱼增强正是来自用于测试它的基准。发布的第三版在304,181行上重新训练,包括合并的基础语料库加上真实的Fresh OpenPhish增强[31]和硬良性增强,消除泄漏将保留性能提升到下面报告的数字。

第二个是来自直方图梯度提升分类器[13, 17]的操作概率,基于活动主机的四十四个特征:二十八个原始丰富字段,涵盖自治系统、地理位置、TLS、HTTP和WHOIS数据,以及十六个派生特征。其中三个派生特征描述了当前训练数据之前存在的页面级结构,因此它们被训练为缺失值;分类器通过不在完全缺失的列上学习分裂来原生处理它们。高基数分类字段被哈希到四千个数值桶中。基础操作训练语料库包含100,000个标记的URL,钓鱼和良性类别平衡,具体化为静态实时丰富特征行,在ready_operational中进行分层训练、验证和测试划分;保留测试拆分包含15,000个URL(每类7,500个)。训练数据中的两次合成注入是关键的而非装饰性的。一千五百个平台行教会模型,托管在Vercel、Netlify或GitHub Pages等临时平台上本身并非有罪,通过将良性品牌认证和开发者部署页面与钓鱼平台页面配对,使模型学会根据子域中品牌计数、标题不匹配和域年龄而非仅平台本身进行区分。四百个良性短链接行对bit.ly、t.co和类似域做同样处理,这些域在钓鱼馈送中不存在,因此否则将完全没有先验。

VII-C 融合决策函数
融合通过一个基于区域的不对称规则,将URL概率 url_p 和操作概率 op_p 组合成部署概率 deploy_p。三个布尔掩码选择区域:

该设计源于两种模型的不同错误模式。URL概率会过度标记关键词繁重的小型企业银行域名,而操作概率会过度标记基础设施看起来干净的CDN前置钓鱼。因此,每个模型仅在其可靠的地方被允许主导。(4)给出了规则,从上到下评估,第一个匹配的子句获胜,其中short标记已知URL短链接;部署阈值0.50随后产生二元裁决。

短链接覆盖降低了URL概率的权重,因为短链接顶级域本身不提供信息;例外(保留为正常混合)是当URL模型以超过95%的置信度认为短链接域本身是恶意的时。高操作守卫存在是因为合法平台部署的URL概率大约在0.001到0.026之间,而同一操作区域中的真实钓鱼的URL概率至少为0.06;在那里回退到正常混合可以抑制误报而不抑制真报。一个区域被移除而非添加,移除是有证据驱动的:一个较早的“已建立域”区域过度加权了看起来非常干净的基础设施的操作概率,一个基准测试将其归因于每次运行大约八十个额外的假阴性,因此它被删除。

VII-D 侧车与集成
Python侧车暴露一个小型HTTP接口,用于健康检查、批量评分、单URL评分以及Go丰富器在已计算操作特征时使用的特征绕过路径。一个具有默认阈值0.50的Go检测器通过一个以完整URL(而非顶级域)为键的五分钟、万条目缓存调用它,这是基于同一域上不同路径之间缓存冲突的修复。每当威胁情报未匹配或匹配但风险分数低于80时,就会咨询侧车,这将低置信度的情报命中转化为融合可以确认或拒绝的提示,而非独立裁决。网络边界处的守卫拒绝对非公开地址的连接以限制服务器端请求伪造,并且侧车是故障开放的:如果它不可达,则守卫和情报裁决成立,机器学学习字段被简单地省略。

VII-E 测量性能
表II报告了在六个钓鱼语料库上的检测率和在干净的保留良性拆分上的假阳性率,侧车单独测量,且有意未应用生产白名单。检测范围从在新鲜、未见过的OpenPhish快照上每个样本都被评分,到在不包含URL中品牌线索的细微通用域名钓鱼上的74.7%,这是类生产流量的诚实下限。干净的保留良性假阳性率为1.3%。在硬良性语料库上看到的更高比率反映了知名域,生产白名单在咨询侧车之前就已短路它们,因此干净的保留数字具有代表性。就单个模型而言,第三版URL概率在阈值0.50时达到了0.974的保留曲线下面积,良性假阳性率为0.6%,操作模型达到了0.99985和0.99968的验证和测试曲线下面积。

表II:L2侧车按语料库的检测率(DR);干净良性FPR。

语料库

评分数量

DR

Fresh OpenPhish (训练时未见)

286

100.0%

混合钓鱼 (OpenPhish/PhishTank [10]/手动)

307

97.5%

实时地面真实钓鱼

75

98.5%

子域链对抗性

321

89.4%

LegitPhish/PhiUSIIL 细微钓鱼

150

74.7%

错误分析假阴性

61

16.4%

LegitPhish/PhiUSIIL 良性 (干净保留)

150

1.3% (FPR)

VIII 威胁情报同步(SVC-11)
同步器是一个独立的定时Go服务,位于Kafka路径之外。它将外部馈送摄入PostgreSQL,刷新在其上构建的物化视图,并重建URL引擎以亚毫秒时间查询的Valkey域名黑名单缓存。一次代表性运行在四个馈送中持有2,678个活跃指示器和大约四百个缓存的域键,这些馈送的一个完整周期大约在八秒内完成。表III列出了五个馈送——PhishTank [10]、OpenPhish [31]、URLhaus [3]、ThreatFox [2]和MalwareBazaar [1]——及其固定的风险和置信度先验,以及在该运行中观察到的计数。

两个设计选择赋予了存储其特性。指示器按每个馈送键(馈送、类型和值)进行更新插入,因此同一个指示器由两个馈送报告会产生两行,馈送计数本身成为确证信号;在冲突时,风险分数通过取两者中的较大者合并,同步中不再看到的指示器被标记为非活跃而非删除,这让下游服务可以区分“当前在黑名单中”和“曾在黑名单中”。一个有意的模式分离将批量馈送指示器路由到指示器表,恶意软件哈希路由到附件库,这使填充邮件观察威胁表的昂贵每主机丰富完全脱离廉价的批量馈送数据。

表III:摄入的TI馈送(显示可用时的实时运行计数)。

馈送

类型

风险

置信度

实时

PhishTank

URL

90

0.95

OpenPhish

URL

85

0.80

300

URLhaus

URL

80

0.75

1,946

ThreatFox

URL/域/IP/哈希

置信度级别

432

MalwareBazaar

哈希 -> 库

90

0.95

30

IX NLP邮件分类(SVC-06)
NLP引擎将邮件文本分类为合法、垃圾邮件和钓鱼,并发出内容风险分数、意图标签、紧急分数和混淆标志。它是一个通过ONNX Runtime在FastAPI进程后提供服务的微调DistilBERT模型。发布的检查点cycle-12是泛化强化的;较早的检查点发布了强的同分布指标,但在保留的真实钓鱼上崩溃了(表IV)。

IX-A 模型与预处理
主干是基础无大小写DistilBERT,大约有六千六百万个参数[41],在共享编码器上承载三个头。分类头是三个类上的softmax,使用focal loss训练,γ=2.0 [21];一个十一类多标签意图头,其分类法借鉴了定性钓鱼代码簿工作[40],使用每类sigmoid;一个标量头预测紧急程度。在微调期间,发布配方中的每个样本都屏蔽了意图和紧急损失:分析显示携带这些标注的语料库是合成模板数据而非代表性活动,因此被排除在训练之外,所以辅助头在cycle-12中骑在共享编码器上而没有直接监督。在服务时,意图标签和紧急分数由部署关键字规则产生——覆盖十一类分类法的正则表达式和紧急短语的缩放计数——而不是由辅助头产生,辅助头在标注训练数据可用之前保持非活跃。三个损失通过同方差不确定性加权[18]自动平衡,这防止了容易的分类任务主导辅助头。输入是主题和正文连接并分词为256个标记,采用64个前导标记和190个尾部标记的头-尾分割,以便开头钩子和结尾行动号召都能在截断中幸存。

预处理是最关键的设计选择,它存在于训练和服务共享的单个模块中,因此两条路径永远不会偏离。其十一个步骤首先剥离URL和裸邮件地址,因为它们的信誉是URL和邮件头引擎的工作,移除它们迫使模型学习意图而非记忆链接字符串。其余步骤规范化对抗性表面形式:Unicode兼容性规范化、跨字体同形字折叠、leet语折叠、重新连接字母间有空格的单词以及移除零宽字符。由于规范化在推理时将已知攻击映射回干净分布,大多数字符和编码级别的规避无需重新训练即可防御。新的编码成为新的规范化器而非新的训练周期。

IX-B 训练与泛化
微调使用AdamW [22],学习率2×10⁻⁵,预热比例0.1,批量大小32,三个周期,权重衰减0.01,头部丢弃率0.3。鲁棒性来自快速梯度方法对抗训练[14, 39],它沿着归一化损失梯度扰动输入嵌入,δ = ϵ * ∇_e L_clean / ||∇_e L_clean||_2,其中ϵ=0.01,并在干净损失和对抗损失之和上训练,L_total = L_clean + λ * L_adv,λ=0.5。它通过字符噪声增强(约四分之一的钓鱼消息和十二分之一的合法消息)和leet语替换(约六分之一的钓鱼消息)得到加强。

将过拟合基线转变为可部署模型的是第四节中描述的数据集端重新设计:保留的真实钓鱼测试拆分、每源上限和对比配对比特桶。鲁棒性通过变形不变性而非固定的攻击列表进行验证:模型已捕获的钓鱼消息的任何语义保持变换都不能让其逃避,一个包含十二种此类变换的注册表会自动应用于捕获的钓鱼语料库。添加未来的攻击类别是一个变换函数,应用于每个基础案例。

IX-C 结果
表IV对比了过拟合第一版与cycle-12。同分布指标两者都很强,但只有cycle-12能在保留的真实钓鱼上泛化,通过六十四轴可部署性门,并在变形测试集和一个从未见过的探测集上记录零逃避。

残余错误集中在平静的商业诱饵上,其消歧信号是模型故意移除的URL和发件人。在这些案例上推动召回率需要付出同等数量的合法精确率——一个纯文本的帕累托边界——因此架构感知的决策是将它们推迟到URL、发件人和融合层。

表IV:NLP结果:过拟合v1 vs. 发布版cycle-12(保留测试,除非另有说明)。

指标

v1 (过拟合)

v2 cycle-12

宏 F1

0.987

0.979

宏 MCC

0.980

0.969

钓鱼召回率

0.986

0.978

合法 FPR

0.008

0.0118

保留真实钓鱼召回率

0.008

0.873

64轴可部署性门

失败

通过

变形测试集 (12)

逃避

0 逃避

新颖探测 (8钓鱼/6合法)

0 FN / 0 FP

IX-D 服务与量化
该服务作为容器中的两个进程运行,一个Go包装器在一个端口上,一个Python推理引擎在另一个端口上(第五节)。内容风险分数与阈值无关,是舍入到一百的钓鱼概率,对于边缘情况,钓鱼概率的调整提升下限为0.24。量化是作为实验而非假设进行研究的,遵循先前关于Transformer量化鲁棒性的工作[30]。早期的INT8尝试因导出路径错误而失败,在cycle-12上重新干净运行测量了真实的权衡:动态INT8小四倍,快1.83倍,在自信案例上相同,但它会使边缘分数抖动高达七十七个点,而静态INT8会使自信的钓鱼完全崩溃。由于分数输入聚合裁决并且必须在边缘邮件上保持稳定,部署的精度是忠实的32位浮点数,约266兆字节,精确到PyTorch模型,最大logit差异为零。测量的CPU延迟中位数为9.8毫秒,95百分位数为11.3毫秒,在服务预算内低一个数量级。

X 决策级融合与全系统基准测试
前面各节的三个引擎各自发出每模态分数。聚合器SVC-07和决策引擎SVC-08(第三节)将这些分数转化为一个裁决:同步屏障收集通道分数,混合器融合它们,规则引擎和裁决带映射结果,活动指纹按发件人、URL、主题哈希、意图和64位SimHash [23]分组模板变体。

X-A 融合函数
混合器是可配置的,模式选择是实质性的设计问题。生产默认是校准的概率OR:每个通道的分数被映射到校准的钓鱼概率,通道概率作为噪声OR组合[32],以便一个自信的通道足以提升裁决。两种更简单的模式保留作为回退。第一种是存在通道上的加权平均,risk = ∑_c w_c s_c / ∑_c w_c,URL、邮件头、NLP和附件通道的权重分别为0.35、0.30、0.25和0.10;其已知弱点是它会稀释单个自信通道,因此URL引擎定为100但文本和邮件头干净的URL混合下来大约为39并被低估。第二种是手动设置的噪声OR,

每通道可靠性 r_c 默认为1.0;其单通道下限保留了加权平均会稀释的确认信号。校准的概率OR是将相同的OR应用于每通道校准概率而非原始分数,它是默认值,因为校准使通道在组合之前具有可比性。产生的风险映射到四个裁决带,从良性到可疑和钓鱼,最高带保留给高置信度钓鱼或恶意软件。

X-B 全系统基准测试
诚实评估融合比评估任何单个引擎更难,因为在同一合成生成器家族上调整和测试的融合将简单地记住该家族。因此,我们构建了一个代表性的全系统基准测试,一个包含10,677封邮件的语料库,大致按照真实流量的85/5/10合法/垃圾邮件/钓鱼混合。其合法、垃圾邮件和真实钓鱼层锚定在公共语料库中(Enron [19], SpamAssassin [24], Nazario [29], and Nigerian-419 [37],仅正文),合成层增加了全邮件头、多通道压力案例,这些案例锻炼了仅正文真实层无法覆盖的邮件头和URL通道。四百行被保留为无泄漏的真实钓鱼切片。以下每个数字都受一个诚实性约束:只有NLP通道是真实的生产模型。此基准测试中的URL通道是词法代理而非第七节的融合分数,邮件头通道是规则代理。因此,基准测试描述了融合决策的形态;它不是生产准确性声明。

评估协议有意保守。兄弟生成器家族被合并为机制组,每封邮件由一个校准的混合器评分,该混合器从未见过其组,这是一个池化越折方案,防止家族记忆伪装成泛化。我们报告威胁视图,其中钓鱼是正类,合法和垃圾邮件都是负类,因此标记营销垃圾邮件算作假阳性,因为将垃圾邮件留在收件箱中是预期的产品行为。操作点是校准的钓鱼概率高于0.255。

在此语料库上,修正后的NLP模型在自然混合上达到了0.9518的三类别准确率。表V中的融合比较是核心结果。发布的内容承载混合保持了高召回率,但操作点不佳,标记了58%的垃圾邮件,F1仅为0.774。添加专用钓鱼概率头显著提高了精确率。完全放弃内容风险通道,仅融合URL、邮件头和钓鱼概率通道,在F1=0.914时表现最佳。原因清晰且与泄漏无关:内容风险通道等于一减去合法性概率,因此它在真实垃圾邮件上触发,而在保留的真实垃圾邮件上,内容承载混合错误标记了93.9%为钓鱼,而内容无关混合仅错误标记了3.6%。放弃内容几乎不损失召回率,因为几乎没有钓鱼邮件仅靠内容通道就能被挽救。使用此混合器,整个系统几乎实现了模型的所有文本钓鱼召回率:合成对抗家族被完全捕获,真实的Nazario和Nigerian家族分别为0.976和0.996。

表V:在10,677封邮件基准测试上的全系统融合(保留,钓鱼-vs-其余,校准P>0.255)。通道:u URL, h 邮件头, c 内容风险, p 钓鱼概率。

融合

召回率

FPR

F1

垃圾邮件 FPR

校准OR [u, h, c] (发布)

0.898

0.044

0.774

0.58

校准OR [u, h, c, p]

0.844

0.001

0.912

0.004

校准OR [u, h, p] (推荐)

0.881

0.005

0.914

0.004

探索并故意拒绝了一个学习融合,这本身就是一个结果。在固定的百分之一假阳性率下的五折较量中,一个普通梯度提升堆叠器[8, 13]达到了99%的召回率,单调约束变体为98.6%,而加权平均为63%。这些语料库内的数字很诱人但不可信:在机制分组协议下,学习组合器在组外崩溃,因为它们的余量来自记忆生成器家族。更简单的校准概率OR能够泛化,因此这是我们推荐和发布的。

四个限制条件界定了这些数字(在此处说明,而非放在遥远的限制列表)。URL和邮件头通道是代理。真实钓鱼家族可能与NLP训练数据重叠;将其概率降低到合成分布会使召回率从1.000降至0.875。操作阈值是在合成数据上校准的,在合成到真实的保留集上显示出大约百分之二十一的假阳性率,因此必须在部署前重新校准。历史URL上的实时丰富超时进一步降低了代理URL通道的性能。

XI 评估
详细结果表与它们的子系统放在一起(表I、IV、II和V)。本节将它们与服务级别目标进行交叉分析;界定每个声明的限制条件已在第X节中整合并在下面总结。

在检测方面,四个引擎构成了一幅连贯的图景:强的保留词法URL性能(第六节);一个融合侧车,其检测率范围从对新鲜钓鱼的完全覆盖到对细微通用域名诱饵的74.7%,干净良性FPR为1.3%(第七节);一个NLP分类器,能够泛化到保留的真实钓鱼,同时通过可部署性和变形门(第九节);以及一个全系统融合,在代表性基准测试上达到F1=0.914(第十节)。同步器在四个馈送中维持了2,678个活跃指示器,每个周期约八秒(第八节)。

在延迟方面,每个已实现的引擎都在其目标内良好运行。域名守卫在几十纳秒到几十微秒内解析,单URL一级推理约1582微秒,NLP模型在CPU上的中位数和95百分位数分别为9.8毫秒和11.3毫秒——比每个模型的99百分位数服务级别目标(URL为5秒,NLP为10秒)低一个数量级。

在可观测性方面,单个Jaeger跟踪跨越了所有服务,流水线范围的Kafka计数器显示了1:1消息守恒(第五节)。这是关于消息流的集成证据,而非检测结果。

几个限制条件界定了这些数字。每引擎数据涉及三个已实现的引擎,而非完全集成的生产裁决。侧车硬良性FPR是在未应用生产白名单的情况下测量的;1.3%的干净保留数字具有代表性。全系统基准测试使用代理通道,在其真实钓鱼切片上存在训练污染风险,并且需要阈值重新校准——详情见第X节。

XII 讨论
该系统最好从两个层面解读:三个模态引擎在真实模型和数据上进行了基准测试;决策级融合在代理通道上进行了表征,并仍然是一个初步的综合结果(第X节)。

指导性教训是模态分离作为一个建模原则。NLP模型在剥离URL和发件人后,在平静的商业诱饵上达到纯文本的帕累托边界;域名守卫移除了容易的灾难性URL,以便侧车可以激进地加权;全系统基准测试表明,放弃将垃圾邮件与钓鱼混为一谈的内容风险通道,转而使用专用的钓鱼概率头,是使融合裁决对新的垃圾邮件活动保持稳健的原因。

剩余的限制是被跟踪的而非开放的:拉丁字母URL偏见和概念漂移;没有同步器领导者选举;融合阈值等待重新校准;行级安全和死信路径尚未实施。最明显的缺口是一个真实的、标记的、包含实时URL和邮件头的完整邮件的多通道语料库——这将允许融合在生产通道而非代理上进行重新训练。

XIII 结论
我们提出了一种用于钓鱼和威胁分类的混合流水线,其核心主张是融合独立的、特定于模态的信号优于强迫一个模型来裁决整条消息。三个引擎——URL、NLP和威胁情报同步——被独立基准测试;一个决策级融合阶段在代表性的全系统基准测试上重新组合它们的分数。泛化能力,而非同分布准确性,是约束性条件:NLP重新设计将保留的真实钓鱼召回率从0.8%提升至87.3%,而URL栈将确定性守卫与基于实时丰富的概率融合相结合。

融合基准测试表明,URL、邮件头和钓鱼概率通道上的校准概率OR达到了F1=0.914,并对新的垃圾邮件活动保持稳健,但它使用了代理通道和一个等待重新校准的操作点——这是一个初步的综合结果,而非生产裁决。未来的工作是获取真正的多通道标记语料库,以便融合可以在生产通道上验证,在实时流量上重新校准阈值,并一旦该语料库存在,用学习到的元分类器替换手动调整的跨模态规则。