机器学习中的网络钓鱼网站检测

2025年6月24日 | 阅读 6 分钟
Detecting Phishing Websites using Machine Learning

网络钓鱼是一种网络犯罪,通过使用欺诈性的电子邮件、消息和网站来窃取敏感信息,如密码、信用卡详细信息和其他个人数据。随着互联网和在线交易的增长,网络钓鱼攻击变得越来越复杂,使得个人难以检测和避免它们。

网络钓鱼仍然是黑客欺骗我们的金钱并窃取我们的个人和财务信息的最佳且最成功的方式之一。

当今的网络钓鱼攻击非常复杂,并且越来越难以检测。根据 Intel 的一项调查,97% 的安全专家无法区分合法电子邮件和网络钓鱼电子邮件。

机器学习可以成为检测网络钓鱼网站的强大工具。通过在大量合法的和欺诈性的网站数据集上训练机器学习算法,算法可以学会区分两者。这可以导致开发有效的网络钓鱼检测系统,该系统可以自动识别潜在危险网站并向用户发出警告。

有几种类型的机器学习算法可用于网络钓鱼检测,包括监督学习、无监督学习和深度学习。监督学习算法在标记数据上进行训练,其中每个网站的特征用于将其分类为合法或网络钓鱼。另一方面,无监督学习算法根据其特征对网站进行聚类,从而可以检测出可能是网络钓鱼网站的异常值。

深度学习算法,如卷积神经网络 (CNN),使用复杂的神经网络架构来分析网站特征并做出预测。

在为网络钓鱼检测训练机器学习算法时,使用大型且多样化的网站数据集非常重要。这将有助于确保算法能够学习和检测代表各种网络钓鱼攻击类型的网络钓鱼网站。此外,必须仔细选择算法用来区分合法网站和网络钓鱼网站的特征。网络钓鱼检测中常用的特征包括 URL 结构、网站内容以及视觉线索,例如官方徽标或安全证书的使用。

使用机器学习进行网络钓鱼检测的一个优点是,它比传统的黑名单或基于启发式的方法更准确、更有效。这是因为机器学习算法可以根据其特征识别网络钓鱼网站,而不是依赖于预定义的规则或签名。这使得它们更加健壮,并且不太容易出现误报或漏报。

使用机器学习进行网络钓鱼检测的另一个优点是,它可以轻松集成到现有的安全系统和工作流程中。例如,机器学习算法可用于自动扫描收到的电子邮件,并标记任何包含指向网络钓鱼网站链接的消息。它们还可以集成到浏览器扩展中,使用户在访问潜在危险网站之前就能收到警告。

尽管使用机器学习进行网络钓鱼检测有很多好处,但也存在一些必须解决的限制和挑战。主要挑战之一是确保算法能够检测到新的和不断演变的网络钓鱼攻击类型。这需要不断更新算法使用的训练数据和特征。此外,机器学习算法容易受到对抗性攻击,攻击者会操纵网络钓鱼网站的特征来逃避检测。为了解决这个问题,使用健壮且安全的、能够抵抗这些攻击的机器学习模型非常重要。

使用 Python 实现网络钓鱼检测 ML 模型

数据集详情

提供的数据集包含 11430 个 URL,具有 89 个检索到的特征。该数据集旨在作为使用机器学习的网络钓鱼检测系统的基准。特征来自三个不同的类别:七个通过联系其他服务提取,而其余 56 个则取自 URL 的结构和语法。集合分布均匀;它包含正好 50% 的真实 URL 和 50% 的网络钓鱼 URL。

现在我们需要在代码中实现它。

导入库

加载数据集

EDA(探索性数据分析)

输出

Detecting Phishing Websites using Machine Learning

数据集中共有 11430 行和 89 列。

输出

Detecting Phishing Websites using Machine Learning

输出

Detecting Phishing Websites using Machine Learning

输出

Detecting Phishing Websites using Machine Learning

输出

Detecting Phishing Websites using Machine Learning

我们可以解释为合法网站和网络钓鱼网站的数量相同(5715)。

输出

Detecting Phishing Websites using Machine Learning

输出

Detecting Phishing Websites using Machine Learning

输出

Detecting Phishing Websites using Machine Learning

输出

Detecting Phishing Websites using Machine Learning

输出

Detecting Phishing Websites using Machine Learning

然后,我们将状态列编码,合法为 0,网络钓鱼为 1。

输出

Detecting Phishing Websites using Machine Learning

输出

Detecting Phishing Websites using Machine Learning

输出

Detecting Phishing Websites using Machine Learning

输出

Detecting Phishing Websites using Machine Learning

我们对数据集进行归一化,因为值将在 0 到 1 的范围内。

输出

Detecting Phishing Websites using Machine Learning

分割数据集

我们将数据集划分为训练集和测试集。

输出

Detecting Phishing Websites using Machine Learning

输出

Detecting Phishing Websites using Machine Learning

输出

Detecting Phishing Websites using Machine Learning

输出

Detecting Phishing Websites using Machine Learning

输出

Detecting Phishing Websites using Machine Learning

然后,我们从 numpy 数组创建张量。

输出

Detecting Phishing Websites using Machine Learning

输出

Detecting Phishing Websites using Machine Learning

输出

Detecting Phishing Websites using Machine Learning

输出

Detecting Phishing Websites using Machine Learning

输出

Detecting Phishing Websites using Machine Learning

输出

Detecting Phishing Websites using Machine Learning

输出

Detecting Phishing Websites using Machine Learning

创建一个 train_loop 函数,使用此函数,我们将循环训练我们的模型。

现在,我们将在 100 个 epoch 上在训练集上训练我们的模型。

输出

Detecting Phishing Websites using Machine Learning

现在我们将绘制准确性图。

输出

Detecting Phishing Websites using Machine Learning

训练准确性(值为 accuracy)为蓝线,训练损失(值为 loss)为红线。

大多数预测数据点的准确性在 95% 到 99% 之间,

总之,机器学习可以成为检测网络钓鱼网站的强大工具。通过在大量合法的和欺诈性的网站数据集上训练算法,可以开发出能够自动识别潜在危险网站并向用户发出警告的准确有效的系统。然而,必须解决与网络钓鱼检测相关的机器学习的限制和挑战,以确保这些系统保持有效和安全。