本发明属于恶意代码分析领域,是一种基于静态分析、混合关联结构、以及超图卷积神经网络对android软件进行分析以及分类的方法,其分析的对象为android软件,可自动输出该android软件是否为恶意软件。
背景技术:
1、随着平板电脑和智能手机等移动设备的日益普及,针对移动设备的攻击不断增加,移动恶意软件是最危险的威胁之一,它会导致各种安全事件和经济损失。这对用户、社会和国家构成了严重的威胁。因此,对android恶意软件及其检测技术的研究具有重要的现实意义。
2、近年来随着深度学习技术的广泛应用,利用深度学习技术检测android恶意软件应运而生,恶意软件检测的有效性得到了显著的提升。研究人员利用各种深度神经网络模型提出了各种检测算法和解决方案,在这些研究中,图神经网络表现出良好的性能。超图是一种利用超边连接两个或多个顶点的图结构,它可以对高阶数据相关性进行建模。这些特性使得超图相比于一般图结构具有较强的数据样本间非线性高阶关联关系的刻画和挖掘能力,能够更加准确地对多元关系进行建模,进行更加丰富的语义学习。同时超图结构在处理多模态、异构数据时更加灵活,方便多模态地融合与扩展。
3、在文献《hindroid:an intelligent android malware detection system basedon structured heterogeneous information network》中,hou等人将android应用程序和api表示为节点,节点之间的关系用边表示,形成了一个结构化的异构网络,然后使用基于元路径的方法来描述应用程序和api的语义相关性,并使用多内核学习聚合不同的相似性。该方法存在以下问题:
4、(1)他只分析了apk之间基于api调用的最直接关系,没有充分挖掘apk与api之间的高阶关联关系,这将会忽略由api调用带来的apk之间的多元关系,例如使用同一api(如apii)的各个应用程序的类型和分类信息是无法从简单图上获取的,简单图中体现的低阶关联均是二元的,体现的apk和apk二者之间的关联;
5、(2)其使用一般的图结构表示apk与api之间的直接调用关系,对apk调用不同的api没有进行区分,在建立apk与api之间的关系时会造成部分原始信息的丢失,例如apk1和apk2都调用了相同的api1,api1是和网络状态相关的调用;apk3和apk4都调用了相同的api2,api2是和文件操作相关的调用。在最终的简单图表示中只会体现apk1和apk2、apk3和apk4都调用了一个相同的api,而并未体现api本身;
6、在文献《gdroid:android malware detection and classification with graphconvolutional network》中,gao等人通过挖掘apk对api的调用以及api的使用模式信息,构建包含了apk-api边和api-api的异构图,并利用图神经网络来对异构图中信息进行训练学习和分类。和文献1相似,该方法中仍存在以下问题:
7、(1)仅根据api之间功能的相似性构建apk之间的关系,在由不同api形成的关联关系的表征上粒度较粗,例如图中最终呈现的是两个apk之间有多少个使用模式相同的api,而并不会区分是由哪些api造成的关联关系;
8、(2)仅考虑了apk对api的直接调用关系,而对他们之间的高阶关联的挖掘不充分,忽略了apk之间的多元关系挖掘,例如例如使用同一api(如apii)的各个应用程序的类型和分类信息是无法从简单图上获取的,简单图中体现的低阶关联均是二元的,体现的apk和apk二者之间的关联;
9、(3)该方法在计算apk之间的关联关系时会涉及到多个大规模矩阵连乘,这会带来较大的时间和计算开销。
技术实现思路
1、针对上述问题,本发明旨在提出一种基于超图神经网络的android恶意软件检测方法,该方法对利用超图实现恶意软件检测上做出了初步探索;该方法能够在由不同api形成的关联结构的表征上粒度更细,每个api都有对应的单独的超边表示;该方法能够融合高阶和低阶的关联关系,进行更加丰富的语义学习;该方法能够利用超图更加准确的描述多个不同的api关联的apk之间的关系(apk之间的多元关系),防止在将多元关系强制转换为二元关系过程中造成的损失;同时简化了关联关系建模的过程,避免了多个大规模矩阵连乘的计算步骤。
2、为了达到上述目的,本发明采用如下技术方案:
3、本发明提供了一种基于超图的android恶意软件检测系统,包括以下模块:
4、程序分析模块:用于对android apk文件进行静态分析,提取其api调用信息;
5、超图与简单图构造模块:用于对apk和提取到的api进行超图结构表示,将apk映射为节点,api映射为超边,调用某一api的所有apk被代表这一api的超边所连接;同时利用团扩展将先前构建好的超图转化为简单图;
6、特征提取模块:用于使用超图卷积神经网络的混合关联结构检测模型中基于空域的学习,即从节点到节点的邻居信息聚合方式提取超图和简单图的高阶特征和低阶特征,然后融合这两部分特征作为apk节点的特征;
7、分类模块:用于使用超图卷积神经网络对apk和api之间混合关联关系进行节点分类任务的训练与学习,即对特征提取模块中得到的融合了高阶关联和低阶关联的融合特征进行训练学习,使用mlp等分类器对其进行最终的检测和分类。并将训练好的智能分类器用于对android恶意软件进行检测与识别,输出分类结果。
8、上述技术方案中,超图与简单图构造模块,实现具体步骤如下:
9、步骤a1:超图构造,对于android的apk文件,将其映射为超图中的节点;对于程序分析模块中得到的api调用信息,将其映射超图中的超边,将调用了相同api的apk通过超边进行连接,当apk1和apk2都调用了api1,apk2、apk3和apk4都调用了api2,则构建的超图为:超图节点集合n={apk1,apk2,apk3},超图超边集合he={he1=(apk1,apk2),he2=(apk2,apk3,apk4)},通过不同的超边来区分不同的api调用带来的apk间关联;
10、步骤a2:简单图转化,对于步骤a1中得到的超图,通过团拓展算法将其转化为简单图,表示apk之间的低阶关联关系。
11、上述技术方案中,特征提取模块,实现具体步骤如下:
12、步骤b1:初始化apk节点特征,通过one-hot编码对apk相关的api调用信息进行编码,作为apk节点的初始特征,节点特征扩展为其他能表示apk节点自身信息的特征,具体的为对更多的程序分析结果进行特征编码、使用自然语言处理对程序代码进行嵌入或者使用图嵌入对应用程序的函数调用图或控制流图这些方式进行嵌入;
13、步骤b2:低阶关联特征提取,对于图构造模块中得到的简单图和上述步骤b1中的apk初始节点特征,使用图卷积神经网络对其进行处理,得到低阶关联特征;
14、步骤b3:高阶关联特征提取,对于图构造模块中得到的超图和上述步骤b1中的apk节点初始特征,使用超图卷积神经网络对其进行处理,得到高阶关联特征;
15、步骤4:融合特征提取,对于上述步骤bb2和步骤b3中得到的低阶关联特征以及高阶关联特征,使用注意力机制对二者进行融合,得到最终的特征用于节点分类。
16、本发明还提供了一种基于超图的android恶意软件检测方法,通过对apk文件进行静态分析,提取其api调用信息;通过分析apk与api之间的调用关系,将它们映射为超图中的节点和超边来构建超图;通过团扩展将超图转化为简单图;通过对超图和简单图利用基于空域的学习获得节点的高阶和低阶关联特征;通过融合节点的高阶与低阶两部分关联特征得到apk节点特征;通过超图卷积神经网络对节点特征进行学习。
17、上述技术方案中,具体还包括以下步骤:
18、s1:对android apk文件进行静态分析,得到api调用信息;
19、s2:用于对apk和提取到的api进行超图结构表示,将apk映射为节点,api映射为超边,调用某一api的所有apk被代表这一api的超边所连接;同时利用团扩展将先前构建好的超图转化为简单图;
20、s4:用于使用超图卷积神经网络的混合关联结构检测模型中基于空域的学习,即从节点到节点的邻居信息聚合方式提取超图和简单图的高阶特征和低阶特征,然后融合这两部分特征作为apk节点的特征
21、s5:用于使用超图卷积神经网络对apk和api之间混合关联关系进行节点分类任务的训练与学习,即对特征提取模块中得到的融合了高阶关联和低阶关联的融合特征进行训练学习,使用mlp等分类器对其进行最终的检测和分类。并将训练好的智能分类器用于对android恶意软件进行检测与识别,输出分类结果。
22、上述技术方案中,其特征在于,步骤2包括如下步骤:
23、步骤a1:超图构造,对于android的apk文件,将其映射为超图中的节点;对于程序分析模块中得到的api调用信息,将其映射超图中的超边,将调用了相同api的apk通过超边进行连接,当apk1和apk2都调用了api1,apk2、apk3和apk4都调用了api2,则构建的超图为:超图节点集合n={apk1,apk2,apk3},超图超边集合he={he1=(apk1,apk2),he2=(apk2,apk3,apk4)},通过不同的超边来区分不同的api调用带来的apk间关联;
24、步骤a2:简单图转化,对于步骤a1中得到的超图,通过团拓展算法将其转化为简单图,表示apk之间的低阶关联关系。
25、上述技术方案中,步骤3包括如下步骤:
26、步骤b1:初始化apk节点特征,通过one-hot编码对apk相关的api调用信息进行编码,作为apk节点的初始特征,节点特征扩展为其他能表示apk节点自身信息的特征,具体的为对更多的程序分析结果进行特征编码、使用自然语言处理对程序代码进行嵌入或者使用图嵌入对应用程序的函数调用图或控制流图这些方式进行嵌入;
27、步骤b2:低阶关联特征提取,对于图构造模块中得到的简单图和上述步骤b1中的apk初始节点特征,使用图卷积神经网络对其进行处理,得到低阶关联特征;
28、步骤b3:高阶关联特征提取,对于图构造模块中得到的超图和上述步骤b1中的apk节点初始特征,使用超图卷积神经网络对其进行处理,得到高阶关联特征;
29、步骤4:融合特征提取,对于上述步骤b2和步骤b3中得到的低阶关联特征以及高阶关联特征,使用注意力机制对二者进行融合,得到最终的特征用于节点分类。
30、本发明同现有技术相比,其有益效果表现为:
31、一、本发明是第一个利用超图来进行恶意软件检测的方法,能够较强地刻画和挖掘apk间非线性高阶关联,同时使用超图可以在由不同api形成的关联关系的表征上粒度更细,从而更加准确地描述不同api关联的apk之间的关系,防止在将多元关系转换为二元关系的过程中造成原始信息丢失。
32、二、本发明在对低阶关联关系的获取中,利用团扩展对超图进行处理将其转化为简单图,能够省去巨大矩阵乘法运算带来的计算和时间开销。
33、三、本发明基于超图卷积神经网络的混合关联结构检测模型对android apk及其特征进行学习,融合了高阶和低阶的关联关系,能够进行更加丰富的语义学习。
34、四、本发明利用的超图可以通过其灵活的超边扩展,实现理多模态、异构的数据表示,更方便多模态的融合与扩展。便于研究人员后续加入权限、接口、安卓动态链接库等特征使模型进行更加丰富的语义学习,从而提高模型检测的准确性。