202403.GAT_AMD:精读笔记

202403.GAT_AMD:基于图注意力网络和多模态特征深度融合的Android恶意软件检测方法 Android malware detection method based on graph attention networks and deep fusion of multimodal features(精读)

总结用了什么模块

对调用图的生成大小有一个自适应调节的机制存在,让调用图的的大小尽量控制在一个区间内,即避免图过大导致计算开销巨大,又避免图过小导致信息过少

动机

安卓恶意软件检测中常见特征包括xml文件中的权限特征和dex文件中的语义和结构特征。恶意软件检测的关键就是如何从这些文件中提取出有效的多维度特征。

作者在2019年提出过一种主题模型(topic model),可以有效地提取代码的语义特征。这篇文章在这个模型上继续发展,19年的方法是从apk中提取全局的主题向量,但是恶意软件的恶意行为通常发生在特定的代码区域,全局特征不能准确的表示区域特征。

因此本文构建了一个调用图,图节点对于程序代码的特定单元,并提取节点的主题向量作为节点特征。然后使用GAT模型来提取显著区域特征作为整个图的特征,从而融合节点特征和结构信息

本文的调用图:

CSCG图特征 和 权限特征 这两个特征的差异很大并且相关性也很低。本文使用深度特征融合网络(三层神经网络)来融合这两种特征并二分类

方法介绍

技术框架

数据预处理:

主题模型训练

CSCG构建:

图特征提取和多特征融合

GAT_AMD 方法再总结

CSCG构建

本节介绍:构建方法概述、节点合并方法、合并方法中的自适应节点大小计算。展示节点特征提取和边构建方法。最后举了一个例子

概述

每个类相当于是一个Java文件,被视为一个节点。为了增强节点中的语义信息并控制图的规模,在构造类集调用图的时候设置节点数量上限ts_max和下限tx_min

第三方库可能会干扰主题向量的代表性,但是第三方库中也有很小的概率包含恶意行为,完全删除第三方库可能导致调用关系不完整,因此为减小第三方库节点的比例,在合并节点的时候会尝试将每个第三方库合并为一个类集节点,并将非第三方库分离成尽可能多的类集节点。
意思就是当第三方文件数量达到ts_min时,将每个第三方库直接合并为一个类集节点,当第三方文件数量不足的时候,可以适当分离第三方库节点。
这么操作就减少了第三方库的节点比例,减少了第三方库的影响

根据ts_maxtx_min和第三方库检测结果计算每个apk文件的节点尺寸k,确保所有非第三方类集节点包含大致等量的信息。由于apk文件规模差异很大,过大的apk可能会导致规模和结构的信息丢失,这里设计了一种自适应算法来自动计算特定apk的节点尺寸k,算法对apk文件的类调用图按比例所见,从而有效保留结构和大小信息

获得合并的类集节点以后,计算节点特征的主题向量,然后将基本类调用图之间的调用关系作为边映射到CSCG

类集调用图建立的例子 40

类集调用图构建一共5个步骤:

  1. 计算Java文件之间的调用关系,得到基本类调用图
  2. 计算java文件之间的合并关系,根据自适应算法计算出k值[1],这里计算出的是2,也就是普通节点中最多包含k个文件。然后进行节点合并,得到7个类集节点(B-H),类集节点中,H包含第三方库中的全部6个文件,其他节点最多包含k个文件
  3. 根据合并后的类集节点计算调用关系
  4. 利用Java词法分析器[2]对17个类进行分词,得到每个节点对于的单词,然后计算7个节点的LSI向量
  5. 添加全局LSI特征作为根节点A,由于BCD没有被调用,这里添加ABCD的边,然后将调用图转换为无向图作为最终的CSCG

![](/img/user/czc知识库/杂七杂八/9-附件/附件/未命名 4_image.png)

图特征提取

本文提出最大池化层结合GAT模型的名为Max-GAT的网络。Max-GAT基于GAT获得的所有节点特征,通过最大池化从每个维度提取最大数量的特征,并将结果作为CSCG特征。

图中,每个CSCG表示为 n*n 邻接矩阵和 n*500 节点特征矩阵,其中500是特征维度,n是节点数量。

![](/img/user/czc知识库/杂七杂八/9-附件/附件/未命名 4_image-1.png)

多模态特征融合and二分类

为了融合图模态和权限模态特征,本文设计了一个多层神经网络。
每层的大小(输出特征维度)在括号中表示。
对于APK文件,首先获取CSCG,然后计算初始128维图模态特征向量(Max_GAT)。
选择59维权限特征向量作为初始权限模态特征向量。两个模态特征之间的尺寸差异不利于特征融合。因此,为每个模态特征引入全连接层以减少这些差异。
然后,构建一个三层神经网络,每层作为融合点,并从 Fc3_Fus 获得 64 维融合特征。通过最终的全连接层 FC_out 得到最终的二分类结果。

![](/img/user/czc知识库/杂七杂八/9-附件/附件/202403.GAT_AMD:基于图注意力网络和多模态特征深度融合的Android恶意软件检测方法 Android malware detection method based on graph attention networks and deep fusion of multimodal features_image-5.png)

时间复杂度分析

这里又相当于是代码的介绍


  1. 这里设计了一种自适应算法来自动计算特定apk的节点尺寸k,算法对apk文件的类调用图按比例所见,从而有效保留结构和大小信息 ↩︎

  2. Java词法分析器对剩余源代码进行分段。分段结果中仅保留标识符、字符串和数字。每个样本最多保留 100,000 个单词。 ↩︎