0

    基于 Milvus 的钓鱼网站检测

    2023.05.25 | admin | 201次围观

    Seven-机器学习算法工程师

    李晴-Zilliz 数据工程师

    背景介绍

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

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

    优化手段

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

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

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

    架构

    整体流程

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

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

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

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

    调试匹配的阈值。

    查询高于设定阈值的网站所对应的真实网站的 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 探索

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

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

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

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

    判断检测结果

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

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

    结语

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

    参考文献

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

    Image Compression Using AutoEncoder in Keras

    欢迎加入 Milvus 社区

    github.com/milvus-io/milvus 源码

    milvus.io 官网

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

    zilliz.blog.csdn.netCSDN博客

    space.bilibili.com/478166626Bilibili

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论