Page 200 - 《软件学报》2026年第6期
P. 200

陈永威 等: 基于异质图匹配网络的恶意软件相似性度量方法                                                    2519


                  4   实验分析

                  4.1   实验设置
                  4.1.1    数据集
                    绿盟企业数据集: 数据集来自绿盟科技提供的               2012–2021  年间捕获的  2 620  个恶意软件. 利用  VirusTotal 来判
                 断样本是否为恶意软件, VirusTotal 整合了       70  多种防病毒引擎来检测样本, 为避免少数几个引擎的误报, 本文参考
                 文献  [25] 将报毒引擎数小于     5  个的样本视为良性样本, 不参与相似性的计算, 将报毒引擎数大于等于                     5  个的样本
                 标记为恶意样本, 恶意样本家族标签通过             VirusTotal 结合恶意样本家族标记工具       AVclass2 [26] 获得. 筛除良性样本,
                 最后共   2 500  个恶意软件  (样本  md5  和  HGMSim  源码: https://gitee.com/yt_mm/hgmsim-code) 进行实验, 包含  155
                 种恶意软件家族.
                    BODMAS   数据集  [27] : 由  Blue Hexagon  发布的包含时间戳和精心策划家族信息的恶意软件数据集, 其采集于
                 2019  年  8  月–2020  年  9  月, 共包含  57 293  个恶意软件样本, 累计  581  个家族. 不同家族样本数量差异较大, 本文只
                 选择恶意软件数量大于        10  的家族, 同时每个家族最多选择        100  个恶意软件, 最后共    9 802  个恶意软件进行实验, 包
                 含  196  个家族.
                    利用家族标记获得样本对间的相似性关系, 将同家族样本相似度标记为相似, 不同家族样本相似度标记为不
                 相似. 随机将   70%  样本作为训练请求图, 15%      样本作为测试请求图, 15%       样本作为验证请求图. 对于每个训练请求
                                                 ′                       g  构成负样本对, 绿盟企业数据集共生成
                                                                          ′′
                 图  g i , 随机从训练请求图选取一个相似图       g  构成正样本对和一个不相似图
                                                 i                        i
                 3 500  个样本对作为训练集. 验证集和测试集同理. BODMAS           数据集共生成      13 722  个样本对作为训练集, 验证集和
                 测试集同理.
                  4.1.2    基线模型
                    将所提   HGMSim  方法与基于程序序列、基于程序图、基于异质图和基于跨图交互等的相似性度量方法进行
                 对比.
                         [6]
                    TLSH : 广泛使用的基于局部敏感          hash  的相似性度量算法, 该方法使用局部敏感           hash  作为二进制样本的签
                 名, 利用  hash  值之间的相似值来衡量两个样本间的相似程度. 数据预处理: 直接使用原始二进制恶意软件. 通过
                 Python  的  TLSH  库实现该方法.
                                [8]
                    Siamese_CNNs : 基于恶意软件灰度图的二进制恶意软件相似性度量算法, 该方法将恶意样本转换成灰度图,
                 利用  CNN  获得恶意样本图片的表示, 通过         Siamese 架构结合全连接层得到样本对的相似值. 数据预处理: 将二进
                 制恶意软件转换成       8  位向量图像, 同时使用双边插值法将向量图像转换成                105×105  的灰度图. 实现的模型结构和
                 原论文保持一致.
                    Siamese_GNN [17] : 基于图神经网络的恶意软件相似性度量算法, 使用           Asm2Vec [28] 模型获得样本函数调用图中
                 各个函数节点的特征向量, 然后使用设计的              GNN  获得恶意样本嵌入, 利用嵌入间相似值来衡量样本间的相似值.
                 数据预处理: 反汇编恶意软件获得其函数间控制流图, 获得恶意软件的函数调用图和各函数中的汇编指令, 利用生
                 成的  180  万个函数汇编指令, 训练      asm2vec-pytorch (https://github.com/oalieno/asm2vec-pytorch) 提供的  Asm2Vec
                 模型, 用于函数调用图中节点特征向量的计算. 实现的模型结构和原论文保持一致.
                    RGCN [18] : 异质图领域的经典模型, 该方法扩展了         GCN  的信息传递框架. 引入关系类型权重来区分异质图中
                 不同类型的节点, 从而更好地捕获异质图中的结构信息. 数据预处理: 反汇编样本获得函数调用图, 统计指令统计
                 信息作为图节点的特征向量, 实现的模型结构和原论文保持一致.
                    MGMN  [22] : 跨图交互领域最新的模型, 该方法考虑跨层交互             (如点-图) 中丰富的信息, 提出多层图匹配网络
                 (MGMN) 框架, 用于端到端计算任意一对图结构对象之间的图相似度. 数据预处理: 反汇编样本获得函数调用图,
                 统计指令统计信息作为图节点的特征向量. 使用               MGMN  源码  (https://github.com/ryderling/MGMN) 进行实验.
                  4.1.3    超参数设置
                    基线模型的超参数设置尽可能与原论文保持一致, HGMSim                   的超参数选择参考       Gemini [13] , 具体数值由调参
   195   196   197   198   199   200   201   202   203   204   205