工具:奇安信网络空间测绘——鹰图平台(简称HUNTER)
目录
网络空间测绘主要指利用网络探测、端口探活、协议识别等技术,获取全球网络实体设备的信息,以及开放服务等虚拟资源的信息。网络空间测绘通过设计有效的关联分析规则,将各类资源分别映射至地理、社会、网络三大空间,并将探测结果和映射结果绘制成一张动态实时的网络空间地图,可以发现互联网资产暴露面,实现资产的可查、可定位、操作可识别。
目前市面上常见的资产搜索方式主要有语法检索、icon检索、批量检索。icon检索是一种基于图像特征提取和匹配的检索方式,通用实现方式是通过md5计算icon_hash,精确查询指定icon命中的资产。
但想要根据指定icon,找到“图形相同大小不同”或“图形相似”的icon所命中的资产时,上述方法难免显得捉襟见肘。为了解决该问题,HUNTER平台在今年1月份推出了相似ICON功能。
查询某个企业网站时,即使上传的icon看起来长得一样,但实际每个icon的hash都是不同的,命中的资产大概率也是不同的,这就导致用户需要多次上传hash不同的icon,才能尽可能的找全资产。
有了相似icon推荐功能,用户只需要上传icon,系统会根据用户上传的icon自动推荐“图形相同但大小不同”或“图形相似”的icon,默认按照推荐icon的命中资产数降序排列,最多展示30个,且展示的相似icon支持多选下钻。
若发现某icon命中的资产疑似目标,可点击网站标题,选择【看相似icon】或【看相似网站】,扩大搜集范围。
在icon相似功能设计中,我们使用了 VGG 卷积神经网络模型与 ResNet50 深度网络模型分别计算特征向量,基于 Milvus 向量搜索引擎实现毫秒级别的计算海量特征的相似网页图标。
在VGG中,根据卷积核大小和卷积层数目的不同,可分为`A`,`A-LRN`,`B`,`C`,`D`,`E`共6个配置(ConvNet Configuration),我们选择了配置D,即 VGG16。它包含了13个卷积层、3个全连接层、5个池化层,其中卷积层和全连接层具有权重系数统称为权重层。
VGG16 具有 139,357,544个参数,这些参数包括卷积核权重和全连接层权重,因此VGG16模型具有很高的拟合能力,但缺点也很明显,即需要的存储容量大,调参难度大。
VGG16比较容易形成较深的网络结构,随着网络的加深,导致模型训练难以收敛,会出现训练集准确率下降的现象,为此我们还引入了 ResNet50 深度网络模型来求取特征向量。ResNet50 深度网络模型的原理是将靠前若干层中的一层数据输出直接跳过多层,引入到后面数据层的输入部分,从而减少了网络退化问题。因此,我们基于集成学习的思想,通过组合VGG16模型和ResNet50模型来实现网页图标的特征向量提取。
如前所述,我们构建了ResNet50模型与VGG16模型来提取图片的特征向量,然后根据获取到的特征向量进行相似计算并存储相似结果。
2.1 模型的使用
为了在不同平台使用模型,以及平台侧的快速部署迭代,我们对这两个训练好后的模型存储后转为了统一的ONNX格式。
ONNX格式使用Protobuf序列化数据结构去存储神经网络的权重信息,我们基于gRPC框架完成了对部署平台推送模型数据的方法,实现了模型部署的统一规范与使用上的一致性。
因此在平台侧,我们基于ONNX格式的 VGG16 模型与 ResNet50 模型得到一个通用的计算网页图标特征向量的方法。
2.2向量存储
当进行网络空间测绘活动时,对于扫描到的网页图标我们会根据模型计算出特征向量,并对特征向量进行归一化后存储到数据库中。随着鹰图平台中引擎扫描能力的不断提升,网页图标会随之不断增加,使得系统中存储的数据量持续增长,如何对海量的特征向量数据进行存储并快速计算相似,成为我们面临的一大挑战。为此我们采用了业界主流的 Milvus 向量搜索引擎存储特征向量。
采用Milvusd搜索引擎存储特征向量的主要优势如下:
在Milvus向量引擎的生产实践中,我们在 Milvus 分别创建了VGG模型与ResNet50模型的向量集合,然后在输入网页图标后,分别基于模型计算图像特征向量并存储在引擎中。
Milvus 支持多种距离计算方法,包括欧式、内积和汉明距离。欧氏距离适合数据完整,量纲统一的场景,因此我们在对 Milvus 构建索引时选择了欧式距离。当客户端在查询指定的 MetricType为欧式距离时,Milvus 会使用索引进行查询,由此提供了近实时搜索能力。Milvus 引擎天然拥抱云原生架构,支持基于 K8s部署 Milvus 分布式集群,实现了Milvus引擎的高效运维。
存储完海量的网页图标特征数据后,我们就可以通过向Milvus引擎检索向量,获取相似网页图标组。
如上所述,计算网页图标相似分类的主要流程如下:
基于我们以上的模型与引擎,通过测绘历史扫描获取的近六千万图标作为模型训练集、验证集、测试集,聚合出了一系列相似图片组,效果如下所示。