随着企业安全防范能力的增强,很多攻击方法逐渐变难,社工的方法开始活跃,尤其是钓鱼邮件,已经成为攻击的重要手段。
针对钓鱼邮件的检测,有许多方法,这两年大模型的方法开始盛行。国内也有不少方案,有用通用模型的,有用专业模型的,但检测方法及效果,都体现在PPT上,透露细节的不多。
日本有篇论文,对他们的钓鱼邮件检测方法和实验数据,做了详细披露,可供参考。
.eml文件表示文本格式的电子邮件消息,其中包含包含元数据和格式信息(例如发件人和时间戳信息)的标头,以及包含邮件正文和附件的正文。由于标头和正文可以使用不同的字符集和编码方案进行编码,我们的系统会对其进行解码并重建电子邮件,以便 LLM 更轻松地进行解读。例如,电子邮件主题“ Subject: Security Alert!”在使用 UTF-8 字符集和 Base64 编码进行编码时,显示为“Subject: =?UTF-8?B?U3ViamVjdDogU2VjdXJpdHkgQWxlcnQh?=”。此类字符串虽然通常可以通过 LLM 对短文本的高级解析功能进行解读,但随着字符串长度的增加,其失败风险也会随之增加。
为避免 LLM 分析中不必要的开销,我们将删除诸如 DKIM 和 DMARC 身份验证签名或以X-开头的自定义标头等标头信息。为了确保实验公平性,与电子邮件服务器做出的任何垃圾邮件过滤决策相关的标头均已从数据集中排除。附件的处理方式为提取文件名并丢弃二进制数据。
电子邮件可能很长,或者包含复杂的 HTML 结构。鉴于 LLM 的令牌限制约束,调整输入数据以不超过这些限制至关重要。我们的系统设置了一个初始令牌限制,如果超过此阈值,则会简化电子邮件正文。在本文中,我们将整个电子邮件文本的令牌限制设置为 3,000。此限制基于 Llama 2 的 4k 令牌限制,并考虑了提示模板和响应所消耗的令牌。简化过程适用于不同的 LLM 规范,包括测量令牌数量、组织多部分电子邮件以及省略text/html和text/plain格式中不必要内容的步骤。具体流程包括以下四个步骤。
测量令牌数量 :首先,我们的系统会使用每个 LLM 对应的分词器来计算电子邮件中的令牌数量。此步骤至关重要,因为令牌数量会因每个 LLM 使用的分词器而异。如果超出令牌限制,系统将按顺序执行以下步骤,直到令牌数量低于限制。
整理多部分电子邮件 多部分电子邮件包含 HTML 和纯文本消息。HTML 格式的邮件通常包含钓鱼手段,旨在利用其丰富的外观欺骗用户。例如,邮件中显示的超链接可能与href属性中指定的实际链接不同。当存在多种邮件格式时,我们的系统会优先处理 HTML 邮件,并删除其他邮件以节省令牌。
省略文本/html内容 我们描述了一种省略HTML格式邮件的方法。钓鱼邮件的主要目的是通过点击超链接将浏览者引导至钓鱼网站。我们的系统会保留关键信息(例如a标签和包含虚假信息以欺骗用户的文本),同时删除与样式或元数据相关的不必要的HTML元素。删除过程如下:
-
-
删除除主要属性之外的所有属性:src、href、alt、title、name、id、class。
-
-
-
将URL路径中img标签的src属性和a标签的href属性缩减为10个字符,域名除外。
-
如果超出了令牌限制,则从 HTML 中心删除一个 HTML 元素,直到令牌数量低于限制。
省略文本/纯文本内容 电子邮件的顶部通常包含重要信息,以吸引收件人的注意力并帮助他们快速理解电子邮件内容。同样,电子邮件的底部通常包含发件人的签名或联系信息。为了保留这些重要信息,同时减少标记数量,我们的系统会从邮件中间删除该行,直到标记总数低于限制。
我希望您能够充当垃圾邮件检测器,判断给定的电子邮件是钓鱼邮件还是合法邮件。您的分析应该全面且基于证据。钓鱼邮件通常冒充合法品牌,并使用社交工程技术来欺骗用户。这些技术包括但不限于:
虚假奖励、虚假账户问题警告以及营造紧迫感或兴趣感。伪造发件人地址和
嵌入欺骗性 HTML 链接也是常见的伎俩。
请按照以下步骤分析电子邮件:
1. 识别任何冒充知名品牌的邮件。
2. 检查电子邮件标题是否存在欺诈迹象,例如
发件人姓名或电子邮件地址是否存在差异。
评估主题行是否存在典型的钓鱼特征(例如,紧迫性、奖励承诺)。请注意,收件人地址已被替换为虚拟地址。
3. 分析电子邮件正文,查找旨在诱导点击超链接的社会工程手段。检查 URL 以确定其是否具有误导性或指向可疑网站。
4. 对电子邮件进行全面评估,重点突出支持您结论的具体要素。并详细说明在电子邮件中发现的任何网络钓鱼或合法性迹象。
5. 总结您的发现,并结合您收集的证据,对电子邮件的合法性做出最终判断。
Email: <Insertemailtextdatahere>
基于3生成的prompt,调用LLM时附带function calling的方法,定义一个函数:
函数名为print_phishing_result,其描述为“输出给定电子邮件是钓鱼电子邮件还是合法电子邮件”。这允许 LLM 生成结构化输出,包括确定电子邮件是否为钓鱼电子邮件(is_phishing)、钓鱼置信度分数(phishing_score)、冒充的品牌(brand_inpersonated)、详细理由(rationale)和决策原因的简要摘要(brief_reason)。输出决策原因有助于用户做出明智的决定,是丢弃还是打开电子邮件。后续的操作,由这个函数直接进行就可以了。
|
|
|
|
|
一个布尔值,指示电子邮件是网络钓鱼(真)还是合法(假)。
|
|
|
|
|
|
|
|
|
|
|
|
|
LLM 具有可配置的参数,这些参数会影响输出,例如生成文本的多样性和随机性。例如,ChatGPT 允许调整top_p和temperature等参数。本研究使用每个 LLM 中所有参数的默认值。
用于垃圾邮件检测的典型数据集包括安然电子邮件数据集 Enron Email Dataset. https://www.cs.cmu.edu/~enron/ (2024),SpamAssassin 公共邮件语料库SpamAssassin public mail corpus. https://spamassassin.apache.org/old/publiccorpus/ (2024),以及 TREC 公共垃圾邮件语料库2007 TREC Public Spam Corpus. https://plg.uwaterloo.ca/~gvcormac/treccorpus07/ (2007)。然而,这些数据集相当陈旧。
系统实际采用了 rf-peixoto/phishing_pot. https://github.com/rf-peixoto/phishing_pot (2024),它分享最新的网络钓鱼电子邮件,涵盖不同的语言和品牌。此存储库捕获来自蜜罐的网络钓鱼电子邮件,并定期更新以提供.eml数据。
在我们的实验中,我们评估了四个模型:GPT-3.5-Turbo(简称 GPT-3.5)、GPT-4、Llama2-70B(简称 Llama 2)和 Gemini Pro。
同时比较了简单prompt和实际prompt的区别,简单prompt如下
Determine whether a given email isa phishing email ora legitimate email. Email: ‘‘‘’’’
含义: 在所有实际为正类的样本中,模型正确识别出的比例。
理解: 召回率衡量的是模型对正样本的"查全"能力——在所有应该被找到的正样本中,实际找到了多少。
从表中可以看出,GPT-4效果最好,其次是Gemini Pro。实际准确率非常高,99.7%,生产使用完全无问题了。
对GPT-4和GeminiPro来说,prompt对结果影响较小,但对GPT3.5和Llama 2来说,prompt效果影响较大。
大模型的核心能力是理解自然语言,而邮件恰好是自然语言的,所以用大模型分析钓鱼邮件非常合理。
从业界情况及上述实验看,效果还比较理想,越好的模型,效果越好。尤其是GPT-4和Gemini Pro,准确率及召回率都非常高,说明这个应用非常有价值。
论文在 https://arxiv.org/html/2402.18093v2
原文始发于微信公众号(AI与安全):利用大模型检测钓鱼邮件:方法,效果及数据集
评论