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

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


                 and  a  heterogeneous  graph  matching  network  is  constructed.  Then,  the  study  proposes  a  heterogeneous  graph  embedding  method  based  on
                 local  node  graph  matching  strategy  and  implements  malware  similarity  measurement  to  solve  the  problem  of  difficulty  in  distinguishing
                 malware  with  highly  similar  graph  structures  between  different  families.  Finally,  experimental  results  show  that  HGMSim  performs  best  in
                 malware similarity measurement.
                 Key words:  malware similarity; call graph; heterogeneous graph matching network; cross-graph interaction


                  1   引 言

                    恶意软件是网络安全的主要威胁之一, 近年来               Windows 恶意软件数量不断增加. 根据         AV-ATLAS  团队提供
                 的数据, 过去一年发现了近        1  亿个新恶意软件     (数据统计网站: https://portal.av-atlas.org/malware/statistics), 大多数
                 新恶意软件都是已有恶意软件结合多态引擎和代码混淆技术创建的变体, 恶意软件变体在拥有相同恶意功能的前
                 提下有着不同的语法表示形式. 当前反病毒工具大多采用基于签名的方法, 该方法易被混淆、多态或其他类似技
                 术绕过  [1−3] , 同时实时地为每个变体创建签名费时费力. 恶意软件相似性度量方法可以检测恶意软件变体, 基于相
                 似值聚类恶意软件可以推断恶意软件是否属于同一家族或同一组织开发, 有助于安全专家快速了解威胁来源, 辅
                 助构建攻击者画像. 因此, 如何高效准确地度量             Windows 恶意软件相似性有实际应用价值.
                    相比动态分析只能度量运行代码的相似性, 静态分析能提供更全面的代码覆盖                           [4] , 因此本文专注于基于静态
                 特征的恶意软件相似性度量方法. 按照输入特征不同, 静态恶意软件相似性度量方法主要包括基于程序序列的方
                 法和基于程序图的方法. 基于程序序列的方法效率较高, 但其相似性度量大多为句法相似, 对二进制代码中的简单
                 变换敏感且易受到混淆机制的影响. 基于程序图的方法, 大多使用函数调用图                        CG (call graph) 作为方法的输入, 其
                 相似性度量为结构相似, 相似代码的图结构变化较小, 同基于程序序列的方法相比抗混淆能力更强, 能达到更好的
                 相似性度量效果      [5] . 但是, 现有基于程序图的方法忽略了       CG  中不同种类函数节点的语义差异以及软件间               CG  语义
                 关系的挖掘, 为此本文将研究如何利用异质图技术和跨图交互技术对恶意软件                          CG  建模, 实现有效地恶意软件相
                 似性度量, 解决如下两方面问题.
                    恶意软件    CG  语义未充分挖掘: 基于程序图的恶意软件相似性度量方法大多简单使用                        CG  作为输入, 并未充
                 分考虑   CG  中丰富的异质语义. 首先, CG      中存在着多种类型节点, 主要包括静态链接库函数、动态导入函数和本
                 地函数. 不同类型函数的编写者不同, 如本地函数由恶意软件开发者编写, 不同类型函数的特征提取方式也存在差
                 异  (详见第  3.1.2  节). 其次, CG  中存在着多种类型调用边, 如本地函数调用敏感动态导入函数, 隐含着该软件的恶
                 意行为. 现有基于程序图的恶意软件相似性度量方法在构图时仅考虑同类函数或者在图表征学习时将不同类型函
                 数同等对待, 忽略了      CG  中丰富的异质语义.
                    图结构高度相似的不同家族恶意软件难以区分: 首先, 不同家族软件会共享代码, 许多新恶意软件是由旧恶意
                 软件代码片段组装而成        [4] , 部分家族之间共享基础恶意功能的实现代码, 如获取管理员权限、自启动和重启服务
                 等, 导致其函数调用图结构中存在大量相似的子图结构. 图                  1  展示了两个不同家族恶意软件的部分重复子图结构
                 (SG  表示函数调用图中的子图), 其调用关系和对应函数的汇编代码完全一致. 其次, 恶意软件函数调用图部分结
                 构可能被隐藏, simbot 家族恶意软件       (md5  值: 74aa01eb4412c873e732376168f3b772) 在运行时会解密. text 段以执
                 行恶意功能, 静态反汇编仅能生成加解密相关函数的图结构, 恶意功能相关的图结构由于被加密而缺失. 不同恶意
                 家族使用相同加密方法隐藏恶意图结构时, 会导致它们的函数调用图结构变得相似从而难以区分. 现有基于图的
                 恶意软件相似性度量方法只考虑单个恶意软件图结构特征的挖掘, 难以区分高度相似的不同家族恶意软件, 导致
                 相似性度量性能下降.
                    本文提出基于异质图匹配网络的恶意软件相似性度量方法                     HGMSim. 首先, 从恶意软件中提取        CG, 为深入挖
                 掘  CG  中不同类型节点的异质语义和         CG  之间的关系语义, 提出异质图匹配网络, 该网络包含两个恶意软件                  CG  和
                 CG  间同类型节点的跨图边. 然后, 提出基于局部点图匹配的异质图嵌入方法, 将构建的异质图匹配网络作为输入, 得
                 到  CG  的嵌入向量, 再利用相似性度量函数得到          CG  间的相似值, 实现恶意软件间的相似性度量. 主要贡献如下.
                    (1) 构建异质图匹配网络对恶意软件函数调用图之间的关系建模, 提出基于异质图匹配网络的恶意软件相似
   187   188   189   190   191   192   193   194   195   196   197