文章作者:

Seven-机器学习算法工程师

李晴-Zilliz 数据工程师

背景介绍

在海量信息中,不乏非法分子利用网络骗取用户信任并从中获利,钓鱼网站就是其中之一。“钓鱼”网站的网址、网页内容、布局等与真实网站极其相似,没有安全意识的网民容易因此上当受骗,造成严重后果。

现有的比较典型的检测钓鱼网站的方法有:基于黑白名单机制的检测,基于文本特征或网页图像特征的匹配检测,和基于机器学习的分类检测。然而,基于黑白名单的检测方法时效性较差,名单范围也存在着不足;基于特征的算法的准确性和鲁棒性又不是很理想。近年来,机器学习应用于各领域并取得巨大成功,尤其是将深度学习应用于检测识别可以有效得提高检测效率。基于此,本文将介绍如何结合深度学习与 Milvus 向量搜索引擎,以提高对钓鱼网站的正确检测率和检测速度。

优化手段

机器学习用于识别图像中的物体、将语音转换为文字、匹配新闻条目以及推荐系统。这些应用越来越多地使用深度学习技术,并且显著提高了语音识别、目标识别和检测效果。

将深度学习应用于钓鱼网站的检测能取得良好的效果,目前深度学习的常用模型包括自动编码器(AutoEncoder)、卷积神经网络、深度信念网络。最广为人知的卷积网络训练出的模型有较强泛化能力,但是它的深度模型梯度易消散,主要用于二维数据尤其适用于图像方面。相比之下, 虽然自动编码器是全连接网络、训练时需要较多参数,但是其具有较强数据表征能力、大量数据场景适用的优点。

因此,为了减少对钓鱼网站的误报和漏报,本文利用 AutoEncoder 模型对钓鱼网站截图进行图片特征提取。我们对以往收集的各类钓鱼网站进行整理,并对该网址的首页图片进行特征提取。结合 Milvus 进行特征存储和特征搜索。最后根据匹配结果,再对经过阈值筛选的网站进行域名信息和 whois 信息对比,最终达到检测钓鱼网站的目的。

架构

整体流程 

  1. 数据收集阶段:收集各类钓鱼网站首页截图。

  2. 模型训练阶段:利用收集的图片作为训练集进行 AutoEcoder 模型的训练。

  3. 特征提取模块:利用训练好的模型对钓鱼网站图片进行特征提取。通过在 Milvus 中插入特征向量获得 ID,将 ID 与其向量属性插入 PostgreSQL 数据库。

  4. 钓鱼检测模块:利用 Milvus 进行特征向量检索,根据获得的 ID 进一步在 PostgreSQL 查询。

  5. 调试匹配的阈值。

  6. 查询高于设定阈值的网站所对应的真实网站的 whois 信息和域名备案信息,比较它们与查询网站的此类信息。

Note:本项目从测试版 v1 升级到实验版 v2,运用 Milvus 对特征相似度计算部分进行了优化。在 1.0 版本中,本项目将特征存储为 numpy.array 格式,因此在相似特征匹配阶段是通过遍历 .npy 文件进行的相似度计算。在 2.0 版本中引入 Milvus 后,大大提升了此模块的搜索速度。

特征提取模型

此处选用了 AutoEncoder 用于特征提取。它是一种深度学习模型,是数据压缩降维和特征提取的一种有效方式。

AutoEncoder 框架包含两大模块:编码模块和解码模块。通过编码模块将输入样本映射到特征空间得到 compressed data,即编码过程;然后再通过解码模块将抽象特征映射回原始空间得到重构样本,即解码过程。模型的优化目标则是通过最小化重构误差来同时优化 encode 和 decode。

本项目利用收集到的网站图片训练 AutoEncoder 网络。测试图片经过训练好的网络的 encode 可以得到代表原网站图片数据的 compressed data。

Milvus 探索

Milvus 向量搜索引擎支持使用多种 AI 模型向量化非结构化数据,并为向量数据提供搜索服务。它可处理的业务包括图像处理、机器视觉、自然语言处理、语音识别、推荐系统以及新药发现等 AI 模型,为向量化后的非结构数据提供搜索分析服务。通过深度学习模型将非结构化数据转化为特征向量导入 Milvus 库,Milvus 对特征向量进行存储并建立索引,然后在 Milvus 中进行搜索,Milvus 将返回与搜索向量相似的结果。

在本项目存储阶段,特征向量存储至 Milvus 后可得到向量的唯一标识 ID。我们使用了传统关系型数据库:PostgreSQL ,用于存储 ID 和向量。查询阶段,将 Milvus 向量检索结果,在 PostgreSQL 中进一步查询,即可快速得出混合查询结果,具体解决方案如下:

特征向量存储(蓝色实线)

  • 将源特征向量数据存入 Milvus 特征向量数据库,Milvus 会给返回每个源向量数据对应的 ID。

  • 将每个特征向量的唯一标识 ID 与其标签属性存储至关系型数据库。

特征向量检索(橙色实线)

  • 向 Milvus 中传入需要查询的特征向量数据,Milvus 会得出与搜索向量相似度最高的查询结果 ID。

  • 利用该结果 ID 在 PostgreSQL 中进行查询,最终得出检索向量的混合查询结果,包含 ID、向量、标签属性和距离计算结果。

判断检测结果

得到的高于阈值要求的匹配结果后,因为存在钓鱼网站与真正的网站外观一模一样的情况,所以我们需要进一步查询这些钓鱼网站相对应的正常网站的 whois 信息和域名备案信息,比较它们与查询网站的此类信息。

例如,因为钓鱼网站上的域名备案号与钓鱼网站仿冒的正常网站是一样的,所以可以使用正常网站的备案号去查询域名。将正常网站的域名与查询网站进行对比,如果一致则为正常网站,反之为钓鱼网站。如果没有域名备案,则需要查询双方的 whois信息。例如,注册时间较短或者有效时间较短的域名更可能是钓鱼网站。

结语

本文介绍了 Milvus 在钓鱼网站检测方面的实践,采用混合查询的方式提升了对钓鱼网站的正确检测率和检测速度。目前,因为 Milvus 稳定且高效的向量检索性能,本项目极大地节省了开发成本并满足业务需求。本项目组将尝试在语音领域、自然语言处理领域,和计算机视觉等领域继续引入 Milvus 的服务。未来,我们也会持续关注 Milvus,期待更多新功能的出现!

参考文献

  1. 许珑于. 基于深度学习的钓鱼网站检测技术的研究[D].电子科技大学,2017.

  2. Image Compression Using AutoEncoder in Keras

欢迎加入 Milvus 社区

github.com/milvus-io/milvus    源码

milvus.io    官网

zhihu.com/org/zilliz-11/columns    知乎

zilliz.blog.csdn.net    CSDN 博客

space.bilibili.com/478166626    Bilibili

基于 Milvus 的钓鱼网站检测相关推荐

  1. 2021-07-23 Week1 基于截图的钓鱼网站检测、中小微企业安全现状调查

    Phishpedia: A Hybrid Deep Learning Based Approach to Visually Identify Phishing Webpages 使用机器学习方法,利用 ...

  2. 钓鱼网站检测 repo复现

    写在前面 纠结要起个什么样的文章标题-这篇帖子不会写的太硬核,就是想稍微理一下我自己的思路. 最近看了入侵检测和钓鱼检测的论文.入侵检测给我的感觉是系统太大了,而且从199几年就开始用机器学习做了?? ...

  3. 基于域名的恶意网站检测

    基于域名的恶意网站检测 0x00. 数据来源 0x01. 基于网页内容的判别方法 0x02. 基于域名数据的判别方法 0x03. 参考文献 0x00. 数据来源 根据老师给的 300w 域名列表爬到的 ...

  4. 基于 Milvus 构建的近似最近邻(ANN)搜索引擎

    ✏️  作者介绍: 周充,格像科技后端工程师 需求背景 根据格像科技公司的业务需求,我们需要搭建一个近似最近邻(Approximate Nearest Neighbor,即 ANN)搜索引擎,以便将在 ...

  5. 【WEB安全】轻松检测钓鱼网站的技巧

    你可能会认为钓鱼网站很难检测和跟踪,但实际上,许多钓鱼网站都包含唯一标识它们的HTML片段. 你可能会认为钓鱼网站很难检测和跟踪,但实际上,许多钓鱼网站都包含唯一标识它们的HTML片段.本文就以英国皇 ...

  6. php网站跨站脚本监测,基于PHP的在线跨站脚本检测工具.pdf

    基于PHP的在线跨站脚本检测工具.pdf 2015年 l0月 15日 现代电子技术 0ct.2015 第38卷第2O期 ModernElectronicsTechnique V01.38No.20 基 ...

  7. 基于java的流量数据检测_java网站流量统计管理系统

    每天记录学习,每天会有好心情.*^_^* 今天将为大家分析一个基于web的java网站流量统计管理系统,基于Web的网站访问流量统计系统在功能上强化了对用户行为的统计和分析,有利于网站管理者.开发者根 ...

  8. 基于表单的网站身份验证的权威指南[关闭]

    基于表单的网站身份验证 我们认为Stack Overflow不仅应该是非常具体的技术问题的资源,而且还应该是关于如何解决常见问题变化的一般指导原则. "基于表单的网站身份验证"应该 ...

  9. web安全渗透之钓鱼网站提权

    本实验实现1:要生成一个钓鱼网址链接,诱导用户点击,实验过程是让win7去点击这个钓鱼网站链接,则会自动打开一个文件共享服务器的文件夹,在这个文件夹里面会有两个文件,当用户分别点击执行后,则会主动连接 ...

最新文章

  1. 圣诞节!教你用Python画棵圣诞树
  2. 深入理解幂等性及Restful风格API的幂等性问题详解
  3. 设计模式(八)代理模式(结构型)
  4. 三菱模拟量输入与输出程序_初学PLC是学习西门子还是三菱?
  5. scrapy ip地址 tcp time out_TCP的运作流程(一)——“三次握手”
  6. 转]移动视频监控(1)---项目综述
  7. 程序员锁死公司服务器,导致600万元资金打水漂。网友神回复
  8. 「leetcode」202. 快乐数:今天你快乐了么?
  9. 服务器各项指标的图形化显示
  10. Linux实验报告一【 下载配置搜狗安装包16.04】
  11. mysql8.0初始化密码_MySQL 8.0 手动配置、修改初始化密码
  12. 多态的表现形式有哪些?
  13. 经典的开源免费网络游戏:planeshift
  14. MineCraft | 命令附魔
  15. 银河麒麟Kydroid1.0新品正式发布--助力安可产业生态建设
  16. 上海亚商投顾:创业板指高开高走 ChatGPT概念卷土重来
  17. android h5游戏图片不缓存,H5小游戏资源缓存方法与流程
  18. https://www.yearbookchina.com
  19. Anaconda安装下载-亲测详细版
  20. DTMB BDA TV USB

热门文章

  1. 什么是数据库安全审计
  2. 厦门--忙里偷闲的小游
  3. document.getElementById()基本使用方法————JavaScript
  4. 2017年10月21日 第十二次总结
  5. 防止未经授权的呼叫-检测和定位监狱中的手机
  6. Phaser.js开发-怪物吃糖果
  7. python发微博_Python使用新浪微博API发送微博的例子
  8. SpringBoot整合AOP
  9. Android ART Hook 实现 - SandHook
  10. java正则表达式基础 关于特殊字符、捕获组和非捕获匹配