原文:
www.kdnuggets.com/2016/10/machine-learning-detect-malicious-urls.html
作者:Faizan Ahmad,Fsecurify CEO。
1. Google 网络安全证书 - 快速开启网络安全职业生涯。
2. Google 数据分析专业证书 - 提升你的数据分析技能
3. Google IT 支持专业证书 - 支持你的组织的 IT
随着过去几年机器学习的增长,许多任务都借助机器学习算法来完成。不幸或幸运的是,关于机器学习算法在安全方面的工作很少。因此,我想在Fsecurify上展示一些内容。
几天前,我有了一个想法:如果我们可以使用某种机器学习算法从非恶意 URL 中检测恶意 URL 会怎样。对此主题已经有一些研究,所以我认为应该尝试一下,从零开始实现一些东西。让我们开始吧。
数据收集
第一个任务是收集数据。我做了一些搜索,发现了一些提供恶意链接的网站。我设置了一个小爬虫,爬取了许多来自不同网站的恶意链接。接下来的任务是寻找清晰的 URL。幸运的是,我不需要爬取任何数据。已经有一个数据集可用。如果我没有提及数据来源,请不要担心。你将在本文末尾获得数据。
所以,我收集了大约 400,000 个 URL,其中大约 80,000 个是恶意的,其他的是干净的。这就是我们的数据集。接下来我们继续。
分析
我们将使用逻辑回归,因为它速度很快。第一步是对 URL 进行标记化。我为此编写了自己的标记化函数,因为 URL 与其他文档文本有所不同。
下一步是加载数据并将其存储到列表中。
既然我们已经将数据放入列表中,我们需要对 URL 进行向量化。我使用了tf-idf 分数,而不是使用词袋分类,因为 URL 中的某些词比其他词更重要,例如 ‘virus’, ‘.exe’, ‘.dat’ 等。让我们将 URL 转换为向量形式。
我们有了向量。现在让我们将其转换为测试和训练数据,并进行逻辑回归分析。
就是这样。看,它简单却有效。我们获得了 98%的准确率。这是一个非常高的值,能让机器有效检测恶意网址。想测试一些链接看看模型的预测是否准确吗?当然。我们来试试。
结果非常惊人。
-
wikipedia.com (好网址)
-
google.com/search=faizanahmad (好网址)
-
pakistanifacebookforever.com/getpassword.php/ (坏网址)
-
ahrenhei.without-transfer.ru/nethost.exe (坏网址)
这正是一个人类可能预测的结果。不是吗?
数据和代码可在Github获取。
简历: Faizan Ahmad 是一名富布赖特计算机科学本科生,同时也是 Fsecurify 的首席执行官。
相关:
-
大数据安全的 5 个最佳实践
-
数据科学家如何缓解敏感数据暴露的漏洞?
-
大数据与数据科学在安全和欺诈检测中的应用