杂志的下一篇文章
使用模型简化技术增强的PeakForce AFM分析
期刊上的上一篇文章
基于格式保持加密的勒索软件检测技术中和方法
 
 
订购文章重印
字体类型:
宋体 佐治亚州 宋体,Verdana
字体大小:
澳大利亚 澳大利亚 澳大利亚
行距:
列宽:
背景:
第条

基于GCN增强函数调用图中节点特征差异的Android恶意软件检测方法

1
新疆大学软件学院,乌鲁木齐830091
2
新疆大学信息科学与工程学院,乌鲁木齐830046
*
信件应寄给的作者。
传感器 2023,23(10), 4729;https://doi.org/10.3390/s23104729
收到的提交文件:2023年4月25日/修订日期:2023年5月10日/接受日期:2023年5月10日/发布日期:2023年5月13日
(本条属于本节智能传感器)

摘要

:
智能手机已成为我们日常生活中不可或缺的工具,安卓操作系统广泛安装在我们的智能手机上。这使得Android智能手机成为恶意软件的主要目标。为了应对恶意软件构成的威胁,许多研究人员提出了不同的恶意软件检测方法,包括使用函数调用图(FCG)。虽然FCG可以捕获函数的完整调用-被调用语义关系,但它将被表示为一个巨大的图结构。许多无意义节点的存在会影响检测效率。同时,图神经网络(GNN)的特性使得FCG中的重要节点特征在传播过程中趋向于相似的无意义节点特征。在我们的工作中,我们提出了一种Android恶意软件检测方法,以增强FCG中节点功能的差异。首先,我们提出了一种基于API的节点特征,通过该特征,我们可以直观地分析应用程序中不同功能的行为属性,并确定其行为是良性的还是恶意的。然后,我们从反编译的APK文件中提取FCG和每个函数的特征。接下来,我们根据TF–IDF算法的思想计算API系数,并基于API系数排序提取敏感函数子图(S-FCSG)。最后,在将S-FCSG和节点特征输入GCN模型之前,我们为S-FCSG的每个节点添加了自循环。分别使用一维卷积神经网络和全连接层进行进一步的特征提取和分类。实验结果表明,我们的方法增强了FCG中节点特征的差异,检测准确率高于使用其他特征的模型,这表明基于图结构和GNN的恶意软件检测有很大的研究空间。

1.简介

随着科技的飞速发展,智能手机已经成为我们日常生活中不可或缺的工具。市场上可用的智能手机主流操作系统是Android和iOS,Android操作系统占据了市场主导地位。由于Android操作系统很受欢迎,它也是首选的恶意软件目标。2021年,全球谷歌Play用户下载了1113亿个移动应用程序,而2018年为760亿个[1]. 许多恶意应用程序隐藏在Google Play Store中,在未经授权的情况下窃取和修改用户的信息。一些人甚至劫持用户的智能手机,强迫他们进行金融交易。
许多安全技术公司提供Android防病毒产品,帮助人们抵御恶意软件。2019年1月,AV-Comparatives从Google Play Store下载了250个反恶意软件安全应用程序,这些应用程序由不同的开发人员创建,用于测试其反恶意软件程序的有效性[2]. 测试结果显示,80个反恶意软件安全应用程序能够检测到30%以上的恶意应用程序,没有错误警报,其余170个应用程序中的138个检测到的Android恶意软件样本少于30%,32个应用程序从Google Play Store中删除。实际上,许多Android防病毒产品在离线时的检测效率很低,只有连接到在线数据集才能实现最大的检测效率。
为了应对恶意软件构成的威胁,研究人员利用功能工程研究了大量针对Android恶意软件的功能,这些功能大致可分为三大类:静态功能、动态功能和混合功能。静态分析、动态分析和混合分析是用于获得这三种类型特征的分析方法[]. 静态分析方法在不执行应用程序的情况下分析应用程序及其关联对象[4]. 动态分析方法在应用程序使用时分析功能(在真实设备或虚拟环境中)[4]. 混合分析方法是一种以不同形式结合静态和动态特征的综合方法,包括更全面的特征维度范围。
近年来,神经网络已经被用来利用图的结构和性质[5],但传统的神经网络模型,如CNN[6]和LSTM[7],不能直接使用图形结构作为输入。图形神经网络(GNN)的出现是解决这个问题的一个很好的方法。作为最常用的GNN模型之一,图卷积神经网络(GCN)在前向传播过程中通过聚集相邻节点的特征来更新下一层节点的特征,这可视为一种特殊形式的低通滤波[8,9]. 基于低通滤波的GCN特征保留了图中节点特征的共性,不可避免地忽略了差异,使得学习到的节点特征相似,重要节点的原始特征丢失[10]. 具有节点特征的函数调用图在GCN模型正向传播后与相邻节点的特征进行聚合,因为低通滤波特性导致函数调用图中的节点特征相似,可能会丢失节点的重要原始特征。这不利于模型识别和检测。有没有一种方法可以减少这种特征的干扰,增强节点特征的差异,从而提高模型的检测能力?
本文从反编译的APK中提取函数调用图(FCG),该图可以自动捕获不同函数之间的语义关系,并基于最新的API权限和图结构从每个函数中提取三种类型的特征作为节点特征。然后,我们计算出能够表示每个API重要性的API系数,并根据API系数排序提取出子图(S-FCSG)敏感函数。S-FCSG减少了无意义节点的数量,最大限度地保留了节点特征,避免了GCN模型正向传播过程中重要节点特征收敛为无意义节点特征。最后,我们将自循环添加到S-FCSG的每个节点,并将其输入到GCN模型中,以便节点特征可以在节点特征聚合期间再次计算自己,从而增加不同节点之间的特征差异。三个具有不同卷积核深度的一维卷积神经网络进一步提取节点特征之间的相关性,并使用完全连接层进行最终分类。实验结果表明,该方法的准确率为98.28%;因此,我们的方法是有效的。本文的贡献如下:
  • 函数调用图是一种经常使用的静态特性,因为它很好地捕捉了函数的意图和行为特性。我们提出了一种子图提取方法,可以有效地删除无意义的节点,并最大限度地保留节点特征。函数调用子图避免了无意义节点的干扰,降低了函数调用图的邻接矩阵和特征矩阵的维数;
  • 我们从Android开源项目中提取了最新的API保护级别映射关系[11]而不是直接使用Pscout中的[12]. 基于API保护级别关系,我们提出了一种功能权重特征,并通过实验证明,将该特征嵌入节点可以有效帮助神经网络识别和检测Android恶意软件;
  • 由于GCN的模型学习基于低通滤波器的特征,因此在前向传播过程中,图结构中的节点特征将收敛到相似性,并干扰我们的检测。一方面,我们提取敏感函数调用子图。另一方面,受GCN公式的启发,我们提出了一种再次聚合节点特征的方法,以增强不同节点特征之间的差异;
  • 传统的深度学习模型无法直接学习图结构类型的数据。我们提出了一个使用GCN模型的GCN+1-D CNN模型来学习函数调用图中不同节点之间的行为特征,并使用具有不同卷积核深度的1-D CNN模型提取重要节点之间的关联关系。实验结果表明,我们的模型在Android恶意软件检测方法中具有较高的准确率。
论文的其余部分组织如下:第2节介绍了以前在Android恶意软件检测方面的工作。第3节是我们方法的介绍和实现过程,包括特征提取、图形提取和神经网络的建立。第4节描述了实验环境、数据集、实验过程和结果。本文的结论和局限性如下第5节.

2.相关工作

在本节中,我们将介绍其他研究人员提出的基于静态和动态特征的Android恶意软件检测方法。我们描述了方法和模型,并强调了未来工作的主要贡献和方向。我们的研究贡献可以激发进一步的问题和未来的研究方向。

2.1. 静态功能

通过分析源代码或从有关应用程序的其他信息中获得的特性称为静态特性[]. 静态分析可以在安装之前检测恶意软件,并且可以在模型环境中检测,从而降低实验成本。

2.1.1. 传统静态功能

通过反编译APK文件来创建文件目录,例如assets、AndroidManifest.xml和classes.dex,研究人员可以从AndroidManifest.xmls获得权限、意图和其他配置,从classes.de获得操作码。他们通常将权限、意图和操作码等数据视为APK的特征,并将其输入神经网络进行识别和分类。
Wu等人[13]提出了一种称为DroidMat的基于静态特征的机制。他们从AndroidManifest.xml中提取了静态特征,包括请求的权限、传递的意图消息、被视为API调用入口点的组件等。接下来,他们使用多种聚类机制来识别恶意软件的不同意图,以增强模型的识别能力。最后,使用kNN算法,他们将应用程序分为良性应用程序和恶意应用程序。他们的方法比著名的工具Androguard具有更好的准确度(97.87%)和召回率(87.39%),并且分析相同数量的样本需要Androguar的一半时间。
Li等人[14]从应用程序中提取了详尽的功能,并将其分为八类:硬件组件、请求的权限、应用程序组件、过滤的意图、受限API调用、使用的权限、可疑API调用和网络地址,尽管并非所有这些详尽的功能对Android恶意软件检测都有意义。然后,他们使用主成分分析(PCA)来选择更重要的特征。与传统的浅层结构机器学习模型(如SVM)相比,他们选择了三层以上的深度学习模型,即深度神经网络(DNN)作为检测模型。它们优于其他机器学习方法,结果更为详细,精度达到97.16%。未来,他们将考虑将静态和动态功能相结合,以表征Android应用程序。

2.1.2. 函数调用图

函数调用图(FCG)属于一种静态特征。它可以捕获函数的语义信息,而基于许可的静态分析方法无法捕获这些信息。
Liu等人[15]使用来自FCG的信息提出的G特征。他们将G功能输入机器学习算法以检测恶意软件。他们的方法在最新的恶意软件测试数据集中实现了86.9%的准确率,并避免了传统FCG的高维向量导致的崩溃问题。Fan等人[16]提出了一种检测Android背负应用程序的方法,称为DAPASA。他们使用类似tf–idf的算法提取敏感子图(SSG),该算法可以分析应用程序最可疑的行为。他们从SSG中提取了五个特征来描述调用模式,并将其输入到机器学习算法中,以检测应用程序是背负的还是良性的。他们的方法仅使用五个数字特征就达到了94.32%的准确率。它从调用结构的一个新角度,结合了基于许可和基于API的方法提出的五个特性,从而对这两种方法进行了补充。此外,可以通过构建更详细的行为模型来改进他们的工作。
对于图结构特征,原有的深度学习模型无法直接学习特征。它需要将图结构数据转换为向量,而图神经网络可以直接学习特征。Feng等人[17]根据函数调用关系构造近似调用图来表示应用程序。他们提取每个函数内属性作为图中的节点特征。然后,他们使用图形神经网络模型生成向量表示。他们的方法将传统的静态特征构造为新的图形结构数据,并且不基于图形结构数据提出新的特征。Vinayaka等人[18]捕获函数之间的调用者-被调用者关系以形成函数调用图。他们考虑了由于APK文件大小的差异导致的函数调用图中节点数的差异,并提出了一种平衡技术,以使节点数相似。此外,他们测试了五种不同的GCN算法来评估该方法的性能。进行了实验来比较不同算法模型的性能。他们测试的最优算法模型达到了92.29%的准确率,本文也使用了该模型。Cai等人[19]使用函数调用学习应用程序的行为特征。他们提出了增强函数调用图(E-FCG)来描述应用程序的运行时行为,并开发了基于GCN的算法来获得E-FCG的矢量表示。他们的方法克服了由于缺少功能属性而无法理解应用程序的行为特征以及传统机器学习方法无法直接学习图形表示的问题。

2.2. 动态功能

当Android应用程序在真实设备或模拟器上运行时,获得的运行时行为特性称为动态特性,用于监视网络流量、电池使用、CPU使用、请求和调用等[].
Garg等人[20]提出了基于网络的检测应用程序模型。他们从移动设备上运行的每个应用程序中提取了四种不同流量类别的网络功能,即DNS、HTTP、TCP和源-目标,并使用机器学习分类器算法来监测和学习不同应用程序的网络行为。他们的方法可以(1)使用网络跟踪检测恶意应用程序,(2)使用不同版本的操作系统,(3)检测未知应用程序,以及(4)使用加密数据检测受感染的应用程序。他们未来的工作将侧重于提高未知应用程序的检测率。现有的动态分析方法在很大程度上依赖于表征系统调用,并且这些方法容易受到系统调用混淆的影响。
Cai等人[21]提出了一种称为DroidCat的动态应用程序分类技术来补充现有方法。通过使用基于方法调用和组件间通信(ICC)意图的各种动态功能集,同时充分处理反射,DroidCat实现了比静态功能以及依赖于系统调用的动态功能更好的健壮性。他们设计了DroidCat在不同条件下的效能效果以及最重要的动态特性。他们发现,捕获应用程序执行结构的功能比典型的安全功能(如敏感流)要重要得多。他们的检测技术实现了97%的F1测量一致性准确性,用于对九年来不断发展的应用程序进行分类。
John等人[22]将系统调用作为表示操作系统交互的特征,提出了一种使用GCN的检测机制,该机制使用系统调用图的中心性度量作为输入特征。它们是GCN首次应用于动态Android恶意软件检测,准确率达到92.3%,并尝试将动态特征与图形神经网络模型相结合。Taheri等人[23]提出了一种基于混合特征的检测方法,将权限和意图作为静态特征,并通过附加提取的API调用的n-gram序列关系作为78个动态特征对77个网络流进行恶意软件检测和分类。这是他们贡献的第二部分。在第一部分中,他们展示了CICMalDroid开放可访问数据集并标记了其特性。本文也使用了该数据集。他们计划在未来生成一个Android数据集,该数据集具有更多捕获的功能,样本量巨大。
不同研究人员提出的方法及其贡献的比较如所示表1与基于权限的静态特征和动态特征相比,具有节点特征的函数调用图可以利用拓扑信息推断应用程序的行为特征。尽管代码混淆会影响静态特征分析,但函数重命名无法更改函数调用图的拓扑。它可以减少函数重命名的影响,并避免了诸如动态特性的实验成本高以及难以触发应用程序的完全恶意行为等问题。虽然使用图神经网络模型可以更好、更广泛地使用图结构类型的数据,但本文使用静态特征的函数调用图来表示APK文件和GCN来学习图结构数据。我们提出的方法在一定程度上解决了函数调用图和GCN模型带来的缺陷,并通过实验证明了我们方法的有效性。

3.方法

在本节中,我们将重点介绍所提出的基于API的节点特征函数权重、子图提取方法以及添加节点自循环的作用。如所示图1,我们的模型是我们方法的总体框架。首先对已知类别的APK样本进行图结构数据预处理,生成模型所需的函数调用图及其相应的节点特征矩阵。然后,将函数调用图和节点特征矩阵输入到GCN和一维CNN模型中。根据模型的正向和反向传播,更新模型参数并对APK样本进行分类。图结构数据预处理和模型检测的过程分为不同的阶段。这些阶段在本节中进行了解释,相应的小节在图中进行了标记。

3.1. 特征提取程序

我们的方法从FCG和反编译的APK文件中提取三种类型的特征。其中两个特征是Dalvik操作码和函数权重,它们是从DEX文件中的每个函数中获得的,另一个是基于图结构级别的节点重要性。最后,我们将这三种类型的特征连接起来作为FCG的节点特征。

3.1.1. Dalvik操作码

Dalvik是谷歌为Android操作系统专门设计的虚拟机,操作码存在于DEX文件的代码中。根据Gabor Paller提供的操作码列表[24],我们从类中的每个方法中提取Dalvik操作码,并将其种类分类为我们的第一个特征。在开始工作之前,我们需要区分内部类和外部类。内部类是从反编译的APK的DEX文件中获得的。我们可以获得每个内部类的代码源,但外部类不能。它们源于第三方库。由于它们的不同,我们使用一个长度为14的数组来表示每个方法的Dalvik操作码特性。
对于外部类,它无法从每个函数中获取详细的代码指令,因此我们将外部类的函数表示为dalvik_opcode[0]=1。
对于内部类,我们通过分析内部类的每个函数中的每条指令来获得Dalvik操作码。为了更好地分析每个功能中的这些指令,将它们分为13类,如表2然后,获取相应的关键字并值,并存储为Dalvik_opcode[] = 1.
对于DEX文件类中的每个方法,我们将每个方法的Dalvik操作码特性表示为Dalvik_opcode[] = 1 ( [ 0 , 13 ] ).
注意,如果dalvik_opcode[0]=1,那么dalvik_ opcode[] ( [ 1 , 12 ] )可以等于0。反之亦然。dalvik_opcodes是一个在Python中定义的变量数组,总长度为14,用于存储不同索引下的操作码状态.

3.1.2. 节点重要性

FCG是从反编译的APK文件中提取的有向图。在有向图中,每个节点的入度和出度是不同的,而度值可以直接反映该节点的重要性。我们可以根据节点的入度和出度来分析当前节点的行为特征。通常,我们仅对外部类功能节点使用内度,对应用程序初始化功能节点仅使用外度。
在图论和网络分析中,中心性是判断网络中节点影响的指标。节点的度越高,节点的度中心性越高,这意味着节点在网络中的影响力越大。这就是度中心性[25]. 计算公式如下(1).
e(电子) 第页 e(电子) e(电子) C类 e(电子) n个 t吨 第页 t吨 = N个 n个 d日 e(电子) 第页 e(电子) e(电子) + N个 o(o) u个 t吨 d日 e(电子) 第页 e(电子) e(电子) n个 1
虽然度中心性反映了节点的影响,包括节点的度内和度外,但我们不能使用此度量来确定节点是否经常指向其他节点。我们需要节点的度内和度外值来分析节点在网络中是否扮演发起人、执行人或中间节点的角色。因此,我们将节点的度内外和度中心性结合起来作为FCG中每个节点的特征,表示为
N个 o(o) d日 e(电子) 第页 o(o) 第页 t吨 n个 c(c) e(电子) = [ n个 e(电子) 第页 e(电子) e(电子) , O(运行) u个 t吨 e(电子) 第页 e(电子) e(电子) , e(电子) 第页 e(电子) e(电子) C类 e(电子) n个 t吨 第页 t吨 ]

3.1.3. 功能权重

应用程序编程接口(API)是一些预定义的功能。通过API,可以为应用程序快速扩展功能,而无需了解如何实现这些功能以提高开发效率。
程序员经常使用API开发Android应用程序。他们可以通过API从智能手机访问关键信息,但使用API需要在AndroidManifest.xml中配置权限,例如android.permission。READ_SMS权限[26]允许应用程序读取SMS消息。虽然每个权限都有其保护级别,但上述权限是危险的,这意味着它具有更高的风险权限,这使得请求授权的应用程序能够访问用户的私有数据或获得对设备的控制权,从而对用户产生不利影响。我们在API和保护级别之间建立映射。然后,我们可以分析DEX文件中的代码,以获得应用程序所需的权限保护级别,并计算每个API函数作为FCG的每个节点特征的权重。
要创建API和保护级别之间的映射,我们需要首先在API和所需权限之间以及权限和保护级别之间进行映射。至于权限和保护级别之间的映射,可以从AOSP的AndroidManifest.xml中获得,而对于API和权限之间的映射则使用Pscout来构建映射[12]. 我们认为Pscout是完整但过时的,因为它的最新地图是基于2018年发布的Android 5.1,并且该版本已经被几代人取代(最新的Android系统是Android 13,于2022年5月12日发布)。
自Android 6.0(API级别23)以来,谷歌以两种方式正式记录了权限规范[27]:
  • 使用Java annotation@requiresPermission将API与权限相关联;
  • 使用@link android。Manifest.permission#描述API所需的权限。
通过上述两种方式,我们可以从Android开源项目(AOSP)中提取与API对应的权限[11]并形成API权限映射。如所示图2,这是来自AOSP的Java代码片段。此代码片段可以告诉我们,setActiveAdmin API需要MANAGE_DEVICE_ADMINS和INTERACT_ACROSS_USERS_FULL权限。同样,图3告诉我们getFactoryResetProtectionPolicy API需要MASTER_CLEAR权限。如所示表3,这是我们从中提取的字段的解释图2图3。从AOSP中总共提取了1640个API。
我们使用提取的权限保护级别映射和API权限映射来构建API和保护级别之间的映射。
根据调用的不同API的计数,计算每个函数的API调用权重。如果API权限具有多个保护级别,则只采用保护级别的最大权重值进行计算。对于内部类中的每个函数,我们将每个函数的API调用权重表示为等式(2). 相反,对于外部类中的函数,我们将每个方法的API调用权重表示为自身保护级别的权重值,如等式所定义(). 普通、签名、特权和危险是API的四种常见保护级别。由于普通权限是API权限的默认值,因此风险很低。系统将自动向应用程序授予此类权限,而无需用户的明确许可。除正常保护级别外,所有保护级别都会带来一些风险,我们需要充分捕获已识别的风险和潜在风险。因此,我们将普通权限的API权重定义为0,将其他权限定义为1。我们使用此方法计算了数据集中12898个APK文件(6530个良性APK文件和6368个恶意文件)的函数权重,这些文件是从可访问的开放数据集中获得的。有关我们工作中使用的数据集的详细信息,请参阅第4.2节.
A类 P(P) _ C类 _ W公司 e(电子) 小时 t吨 n个 t吨 e(电子) 第页 n个 _ e(电子) t吨 小时 o(o) d日 = n个 e(电子) 小时 t吨 第页 第页 o(o) t吨 e(电子) c(c) t吨 o(o) n个 e(电子) v(v) e(电子)
A类 P(P) _ C类 _ W公司 e(电子) 小时 t吨 e(电子) x个 t吨 e(电子) 第页 n个 _ e(电子) t吨 小时 o(o) d日 = 最大值 ( e(电子) 小时 t吨 A类 P(P) )
如果函数的API调用权重值较高,则意味着此函数中有更多的API调用。然而,其他保护级别的API调用比危险保护级别的多,这只能意味着此函数中存在更多行为。因此,我们提出了具有危险保护级别的API调用计数与公式定义的API调用总数之间的比率(4). 此比率表示对被识别为危险的API的调用的百分比。
第页 t吨 o(o) e(电子) c(c) 小时 _ e(电子) t吨 小时 o(o) d日 = d日 n个 e(电子) 第页 o(o) u个 _ 第页 _ c(c) _ c(c) o(o) u个 n个 t吨 第页 _ c(c) _ c(c) o(o) u个 n个 t吨
我们选择API调用权重、比率及其乘积作为FCG中每个节点的功能权重特征,表示为
e(电子) t吨 小时 o(o) d日 e(电子) 小时 t吨 e(电子) c(c) 小时 _ e(电子) t吨 小时 o(o) d日 = [ 第页 _ c(c) _ e(电子) 小时 t吨 , 第页 t吨 o(o) , 第页 _ c(c) _ e(电子) 小时 t吨 第页 t吨 o(o) ]
此外,我们对这些特征进行了以下评估:
评估1:从我们的数据集中随机选择2000个APK文件。
在评估1中,我们计算了API调用权重和2000个APK文件(1000个恶意软件和1000个良性文件)的比率之和,如所示图4通常,API调用权重值越大,APK文件越大。虽然2000个随机选择的APK文件的大小差异很大,但我们可以看到,在相同的权重值下,恶意软件的比率值大于良性的比率值,这意味着该APK文件中具有危险保护权限的API被调用的频率更高。在下面的评估中,我们将从这些样品中选择尺寸相似的样品来证明这一发现。
评估2:在评估1中选择300个大小相似的APK文件。
在评估2中,我们从2000个样本中找到300个大小相似的样本(150个恶意软件和150个良性),并计算API调用权重和这些样本的比例之和,如图5正常情况下,在权重值相同的情况下,恶意软件的比值大于良性,在合理值相同的情形下,恶意程序的权重值大于良性。因此,恶意软件的权重值和比率值通常大于良性。
正如我们所见图4图5,恶意软件更多地分布在散点图的右上方,而非良性。根据评估1和2的结果,我们推测恶意软件的重量和比例之间的产品价值通常应该大于良性。因此,我们进行了评估3和评估4。
评估3:计算 e(电子) 小时 t吨 第页 t吨 o(o) 基于评估2。
如所示图6,它基本上可以证明我们的上述猜测。
评估4:在评估3中选择100个大小相似的APK文件,以计算 e(电子) 小时 t吨 第页 t吨 o(o) .
为了从图中更清楚地得出我们的推论,我们计算了 e(电子) 小时 t吨 第页 t吨 o(o) 在减少APK样本数后再次进行。如所示图7,我们可以肯定地证明我们的推测: e(电子) 小时 t吨 第页 t吨 o(o) 恶意软件的数量通常应该大于良性。
通过以上四种评估,函数权重中的API调用权重可以在一定程度上反映APK文件的大小。我们可以清楚地发现恶意软件的比率 e(电子) 小时 t吨 第页 t吨 o(o) 对于类似的API调用权重,该值通常大于良性比率。因此,即使没有神经网络的精确计算,我们也可以使用此特征大致区分APK类。后面的实验部分表明,使用此节点特征使我们的模型非常有效。

3.2. 图形提取程序

在本节中,我们的方法首先提取函数调用图(FCG),然后在FCG之上提取敏感函数调用子图(S-FCSG)。S-FCSG的提取包括三个步骤:计算API系数、提取FCSG和提取S-FCSG。

3.2.1. 生成整个函数调用图(FCG)

双人防守[28]是一个完整的Python工具,用于处理Android文件,并在我们的工作中用于提取FCG。它可以反编译APK文件并获取类中的函数。通过分析每个函数中被调用的指令,将调用函数和被调用函数作为节点,根据调用关系添加有向边,然后构建有向函数调用图。函数调用图可以通过不同函数之间的调用-被调用关系自动捕获它们的行为特征。如所示图8从这个有向图中,我们可以发现不同节点之间的调用-被调用关系。

3.2.2. 计算API系数

计算API系数是为了表明API在Android应用程序中的重要性。如果仅将数据集中API出现的频率计算为API系数,则测量结果将有偏差,例如MIGDroid[29].
灵感来自TF–IDF的想法[30]算法中,我们使用适合我们工作的TF–IDF算法来计算API系数,并使用API系数来表示此API的重要性。从上述AOSP中提取的1640个API中,我们选择了978个具有高保护级别和特殊调用频率的API,并使用这些978个API构建敏感API集。
我们定义了四个术语来帮助我们计算API系数。
  • c(c) o(o) u个 n个 t吨 ( 第页 , 第页 k个 ) :计数 第页 在APK中调用;
  • c(c) o(o) u个 n个 t吨 ( 第页 k个 , ) :APK中调用的API总数;
  • n个 u个 b条 e(电子) 第页 ( c(c) ) :类型的APK计数c(c)在数据集中。c(c)指示APK的类别是恶意的还是良性的;
  • n个 u个 b条 e(电子) 第页 ( 第页 ) :称为APK的计数 第页 .
根据TF–IDF中的公式,我们提出了适用于我们工作的公式,如下所示:
T型 F类 ( 第页 , 第页 k个 ) = c(c) o(o) u个 n个 t吨 ( 第页 , 第页 k个 ) c(c) o(o) u个 n个 t吨 ( 第页 k个 , )
F类 ( 第页 , c(c) ) = 日志 n个 u个 b条 e(电子) 第页 ( c(c) ) n个 u个 b条 e(电子) 第页 ( 第页 ) + 1
T型 F类 F类 ( c(c) ) = T型 F类 ( 第页 , 第页 k个 ) F类 ( 第页 , c(c) )
T型 F类 F类 ( 第页 e(电子) ) 表示恶意软件的TF–IDF值。
T型 F类 F类 ( b条 e(电子) n个 n个 ) 表示良性的TF–IDF值。
为了避免因未使用的API导致分母为0的程序异常,我们在IDF公式中向log函数的分母添加了1。API系数值应与 T型 F类 F类 ( 第页 e(电子) ) T型 F类 F类 ( b条 e(电子) n个 n个 ) .计算公式如下:
A类 P(P) c(c) o(o) e(电子) (f) (f) c(c) e(电子) n个 t吨 ( 第页 ) = T型 F类 F类 ( 第页 e(电子) ) T型 F类 F类 ( b条 e(电子) n个 n个 )
通过计算,我们可以了解到,在我们的敏感API集合中,getInstance(context)的API系数值排名第一,其在恶意软件和良性软件中的TF和TF–IDF值也排名第一,这表明该API被调用次数最多,也是最重要的。一些具有危险保护级别的API也排名靠前,例如connect(WifiP2pManager$通道、WifiP2pConfig、WifiP2pManager$ActionListener)、getExternalStorageDirectory()等。

3.2.3. 提取函数调用子图(FCSG)

我们基于敏感API集提取包含所有敏感API节点的函数调用子图(FCSG)。如算法1所示,这是我们的提取过程。
算法1生成函数调用子图(FCSG)
输入: 
F类 C类 G公司  = {V(V),E类};  S公司 E类 N个 S公司 T型 V(V) E类 _ A类 P(P) _ S公司 E类 T型 ;
输出: 
F类 C类 S公司 G公司
1:
  S公司 U型 B类 G公司 R(右) A类 P(P) H(H) _ N个 O(运行) E类 _ L(左) S公司 T型 Φ
2:
 对于每个 V(V) 第页 S公司 E类 N个 S公司 T型 V(V) E类 _ A类 P(P) _ S公司 E类 T型  
三:
     如果  V(V) 第页 F类 C类 G公司  然后
4:
          对于每个 V(V) F类 C类 G公司  
5:
              如果  小时 o(o) 第页 t吨 e(电子) t吨 _ 第页 t吨 小时 ( V(V) , V(V) 第页 ) < = 2  然后
6:
                   S公司 U型 B类 G公司 R(右) A类 P(P) H(H) _ N个 O(运行) E类 _ L(左) S公司 T型 V(V) 第页 { V(V) }
7:
              结束条件为
8:
          结束
9:
     结束条件为
10:
结束
11:
F类 C类 S公司 G公司 u个 b条 第页 第页 小时 ( F类 C类 G公司 , S公司 U型 B类 G公司 R(右) A类 P(P) H(H) _ N个 O(运行) E类 _ L(左) S公司 T型 )
12:
返回  F类 C类 S公司 G公司
算法1显示了从我们前面提到的AOSP中提取FCSG的步骤,其中输入了每个应用程序的FCG和敏感API集。我们定义SBUGRAPH_NODE_LIST变量来保存API节点及其相邻节点。请注意,在提取FCSG期间,FCG被视为无向图。
在算法1中 小时 o(o) 第页 t吨 e(电子) t吨 _ 第页 t吨 小时 ( V(V) , V(V) 第页 ) 用于计算 V(V) V(V) 第页 顶点 e(电子) t吨 ( S公司 B类 U型 G公司 R(右) A类 P(P) H(H) _ N个 O(运行) E类 _ L(左) S公司 T型 ) 函数用于删除列表中的重复顶点。  u个 b条 第页 第页 小时 ( F类 C类 G公司 , S公司 B类 U型 G公司 R(右) A类 P(P) H(H) _ N个 O(运行) E类 _ L(左) S公司 T型 ) 函数根据SBUGRAPH_NODE_LIST中的节点提取FCG的子图FCSG。
小时 o(o) 第页 t吨 e(电子) t吨 _ 第页 t吨 小时 ( V(V) , V(V) 第页 ) 它提取路径长度小于或等于2的最短邻居节点。由于我们从数据集中随机选择了2001个APK文件,结果表明,API节点到其相邻节点的平均最短路径长度从(2,4)处APK的最大数量(94.8%)不等,只有少数APK大于4,如所示图9为了提取子图,我们设置最短路径长度小于或等于2的相邻节点。

3.2.4. 生成敏感函数调用子图(S-FCSG)

我们进一步从FCSG中提取敏感函数调用子图(S-FCSG)。如所示图10,这是一个S-FCSG,算法2是我们的提取过程。
算法2生成敏感函数调用子图(S-FCSG)
输入: 
F类 C类 S公司 G公司  = {V(V),E类};  S公司 E类 N个 S公司 T型 V(V) E类 _ A类 P(P) _ S公司 E类 T型 ;  A类 P(P) _ C类 O(运行) E类 F类 F类 C类 E类 N个 T型 _ L(左) S公司 T型
输出: 
S公司 F类 C类 S公司 G公司
1:
S公司 B类 U型 G公司 R(右) A类 P(P) H(H) _ N个 O(运行) E类 _ L(左) S公司 T型 ϕ
2:
对于每个 V(V) F类 C类 S公司 G公司  
三:
   如果  V(V) S公司 E类 N个 S公司 T型 V(V) E类 _ A类 P(P) _ S公司 E类 T型  
    c(c) o(o) e(电子) (f) (f) c(c) e(电子) n个 t吨 _ 第页 n个 k个 ( V(V) , A类 P(P) _ C类 O(运行) E类 F类 F类 C类 E类 N个 T型 _ L(左) S公司 T型 ) 然后
4:
        V(V) n个 b条 (f) _ t吨 第页 e(电子) e(电子) ( F类 C类 S公司 G公司 , V(V) )
5:
   结束条件为
6:
结束
7:
S公司 B类 U型 G公司 R(右) A类 P(P) H(H) _ N个 O(运行) E类 _ L(左) S公司 T型 { V(V) n个 }
8:
S公司 F类 C类 S公司 G公司 u个 b条 第页 第页 小时 ( F类 C类 S公司 G公司 , S公司 B类 U型 G公司 R(右) A类 P(P) H(H) _ N个 O(运行) E类 _ L(左) S公司 T型 )
9:
返回 S公司 F类 C类 S公司 G公司
算法2显示了使用FCSG、敏感API集和API系数列表作为输入的S-FCSG的提取过程。该算法的本质是从FCSG中提取具有高API系数节点的敏感子图。在提取过程中,FCSG也被视为无向图。
变量SBUGRAPH_NODE_LIST的函数与算法1中的变量SBUGRAPH_NODE_LIST的函数相同。
The  c(c) o(o) e(电子) (f) (f) c(c) e(电子) n个 t吨 _ 第页 n个 k个 ( V(V) , A类 P(P) _ C类 O(运行) E类 F类 F类 C类 E类 N个 T型 _ L(左) S公司 T型 ) 函数用于计算API节点的API系数的等级 V(V) ,的功能 b条 (f) _ t吨 第页 e(电子) e(电子) ( F类 C类 S公司 G公司 , V(V) ) 利用宽度优先搜索查找所有连接的相邻节点 V(V) 在FCSG中。
在子图提取过程中,我们使用全保持方法将有向图视为无向图。我们在数据集中随机测试了3000个样本APK,从按API系数排序的前1、3、5、7、10、20和30个敏感API节点开始提取子图,并分别观察了图中节点数和节点特征的变化,如所示表4。使用此方法提取的子图可能包含API系数排名不高的API节点,这些节点是位于最高API系数排名节点的两个跃点内的API节点。
使用表4S-FCSG有效地减少了函数调用图中的节点数,直接降低了图结构的复杂性,同时保留了最大的节点特征和结构。基于图神经网络的特点,S-FCSG避免了图卷积神经网络传播过程中高特征权重节点与无意义节点或不太重要节点相似的倾向,从而减少了模型学习中冗余节点的干扰。S-FCSG的邻接矩阵和特征矩阵的维数小于FCG,这加快了下面模型的训练并消耗了资源。经过比较,我们选择了具有前10个参数的S-FCSG用于下一个实验。

3.3. 神经网络模型

在本节中,我们希望使用神经网络模型自动捕获图结构中不同节点之间的语义关系。在本文中,我们提出了一个组合的GCN+1-D CNN模型,如所示图11GCN模型用于直接嵌入图结构数据和节点特征。在传播GCN模型的过程中,可以聚合当前节点及其邻居的特征,以便在不同节点之间进行特征学习。使用一维CNN模型进一步捕获节点特征之间的相关性,通过GCN模型学习后,将捕获的相关特征反馈给全连接网络进行分类。

3.3.1. 图卷积网络

对于GCN模型,我们比较了两种算法模型:
(1) 图形转换[31]:
Kipf等人考虑多层图卷积网络(GCN)的分层传播规则,如方程式所示(9):
H(H) ( + 1 ) = σ ( ˜ 1 2 A类 ˜ ˜ 1 2 H(H) ( ) W公司 ( ) )
A类 ˜ 是一个邻接矩阵,其中添加了一个标识矩阵,用于汇集每个节点及其邻居的信息。  W公司 ( ) 是一个可学习的权重矩阵 σ 是一个激活函数。
方程式(10)是前向传播模型的简单形式图12是用于半监督学习的多层图卷积网络(GCN)的示意图。
Z = (f) ( X(X) , A类 ) = o(o) (f) t吨 x个 ( A类 ^ R(右) e(电子) L(左) u个 ( A类 ^ X(X) W公司 ( 0 ) ) W公司 ( 1 ) ) , A类 ^ = ˜ 1 2 A类 ˜ ˜ 1 2
(2) 图形SAGE[32]:
GraphSAGE方法与GraphConv密切相关。随着GraphSAGE层的增加,节点从相邻节点中聚集特征,并从图的其他相邻节点中获得越来越多的特征。方程式(11)和(12)是聚合功能的过程。方程式(13)是二级标准化。图13直观地演示了GraphSAGE示例和聚合方法。
小时 N个 ( ) ( + 1 ) = A类 G公司 G公司 R(右) E类 G公司 A类 T型 E类 ( 小时 j个 , j个 N个 ( ) )
小时 ( + 1 ) = σ ( W公司 c(c) o(o) n个 c(c) t吨 ( 小时 ( ) , 小时 N个 ( ) ( + 1 ) ) )
小时 ( + 1 ) = 小时 ( + 1 ) 小时 ( + 1 ) 2
一般来说,GNN中的低通滤波器主要保留了节点特征的通用性。它不可避免地忽略了差异,因此所学习的连接节点的特征表示是相似的[10]. 同样,本文提到的GraphConv和GraphSAGE模型使互连节点的特征表示在模型的正向传播中收敛到相似。第3.2节,我们提取敏感函数调用子图,并从图中删除无意义节点和不重要节点,这可以有效地避免在GCN模型的正向传播过程中对与无意义节点相似的重要节点进行特征表示。
与GrapConv算法相比,GraphSAGE是一种归纳图嵌入,可以嵌入从未出现过的节点,但GraphConv不能。因此,我们将GrapSAGE作为我们的GCN模型,并设置参数 A类 G公司 G公司 R(右) E类 G公司 A类 T型 E类 意思是和 σ 到ReLu。受方程式影响(9)在GraphConv中,我们将自循环添加到S-FCSG,然后将其输入到GCN模型中,以便GraphSAGE模型在向前传播聚合的节点特征时再次聚合其自身的特征,在防止重要节点与无意义节点的特征相似的基础上,进一步增强重要节点的特征。如所示图14,这分别显示了GraphSAGE模型嵌入后的初始特征权重和GraphSAGE与自循环S-FCSG模型嵌入之后的特征权重。在此过程中,我们将模型中的权重和偏差设置为零。

3.3.2. 全局池层

S-FCSG具有高维邻接矩阵和节点特征矩阵。我们使用全局池层来提取关键特征并降低节点特征矩阵的维数。排序池模型[33]用作我们的全局池层。该算法首先沿GCN模型输出的特征维数按升序对节点特征进行排序,并选择排序后的前K个节点的特征权重。在全局池层之后,不同维的节点特征矩阵都可以归一化为相同的维,这有助于下一个模型的定义和计算。我们将提取的K节点特征向量合并为K维节点特征矩阵。
K的大小表示为我们的实验选择的重要节点的数量,我们在下一节中通过实验证明,在全局池层中使用不同的K值会产生不同的实验结果。

3.3.3. 一维卷积神经网络与全连通层

我们的一维卷积神经网络和全连接层由三个一维卷积层组成,一个合并层、一个最大池层和一个全连接层。每个卷积层具有不同的卷积核深度,用于提取不同粒度的节点之间的行为特征。合并层连接来自一维CNN输出的三个节点特征向量,我们在下一个最大池层中将采样内核设置为三,步幅设置为三。然后,完全连接的层有128个隐藏层节点。最后,我们使用sigmoid函数进行二值分类。

4.实验与评估

4.1. 实验软件和环境

Pytorch 1.10用于构建我们的模型框架和Androguard[28]用于从APK中提取函数调用图。DGL公司[34]用于实现GraphSAGE模型,Joblib[35]用于帮助我们并行反编译APK。该环境建立在Windows 10上,具有8GB的RAM用于分析和提取,使用Ubuntu 18.04和11GB的VRAM进行计算。这两个操作系统都安装了Python 3.7。

4.2. 数据集

在我们的工作中,我们使用了2017年1月1日之后从Androzoo生成的6530个良性APK[36]数据集是我们的良性数据集,来自Drebin的6368个恶意软件APK[37]和CICMalDroid 2020[38]分别作为我们的恶意软件数据集3500和2868。然而,其中一些APK被破坏了,我们清理了一些无法反编译或无法获得代码资源的APK。数据集分为80%的训练集和20%的验证集。
同时,我们提前对这些APK进行了反编译,并使用Python的pickle方法来形成序列化文件,这可以大大减少培训期间分析APK文件的时间。

4.3. 评价指标

我们使用标准指标评估了我们的模型,如准确性、精密度、F1评分、TPR、FPR和AUC。这些指标按等式计算 A类 c(c) c(c) u个 第页 c(c) = ( T型 P(P) + T型 N个 ) T型 P(P) + T型 N个 + F类 P(P) + F类 N个 ) P(P) 第页 e(电子) c(c) o(o) n个 = T型 P(P) ( T型 P(P) + F类 P(P) ) F类 1 S公司 c(c) o(o) 第页 e(电子) = 2 P(P) 第页 e(电子) c(c) o(o) n个 R(右) e(电子) c(c) ( P(P) 第页 e(电子) c(c) o(o) n个 + R(右) e(电子) c(c) ) T型 P(P) R(右) = T型 P(P) ( T型 P(P) + F类 N个 ) F类 P(P) R(右) = F类 P(P) ( F类 P(P) + T型 N个 ) 、和 A类 U型 C类 是ROC曲线下的面积。在上述方程式中 T型 P(P) 表示正确检测到的恶意软件数量 F类 P(P) 表示错误分类为恶意的良性APK的计数 T型 N个 表示正确检测到的良性APK计数,以及 F类 N个 表示错误分类为良性的恶意软件APK的计数。

4.4. 实验过程和结果

在我们的实验中,有许多参数影响了我们的实验结果。第一个是GCN模型的层数。由于Hamilton等人的建议,我们开始使用两层GCN模型进行实验[32]. S-FCSG中的不同节点特征逐渐收敛,与连续训练的GCN模型相似。这并不意味着GCN模型中的更多层在我们的方法中更好。我们用两层、三层和四层测试了GCN模型对我们的实验结果的影响。我们观察到,在K=20时,三层模型的检测精度较高,如所示图15.
除了模型层数的影响外,全局池层中K值的大小也影响我们的实验结果。K值的大小表示从APK文件中提取的行为特征的维度。较高的维度可能包含更多关于行为特征的信息,但也可能导致特征重叠,这不利于学习重要的行为特征。然后,我们测试了K值分别为20、40和60的不同GCN层对我们的实验结果的影响。如所示表5实验结果使用GraphSAGE和不同层数的自循环图以及K值作为输入。
表5我们发现,当GCN模型的层数较低时,K值越大,即节点行为特征的维数越大,结果越好。然而,随着模型层数量的增加,这种现象不再明显。随着GCN模型层数的增加,在K值为20和40时,模型检测的准确性高于GCN模型的层数为2时的准确性。这可能是因为节点特征尚未完全聚合GCN模型两层中相邻节点的特征,并且模型无法在低特征维下正确识别APK类别。然而,当再次使用多层GCN模型来聚合节点特征时,当K的值为60时,这些特征可能重叠,并且所使用的特征失去了它们原来的重要性,从而在模型检测中造成干扰,并使最终结果不如双层GCN模型。通过对不同模型层和K值的实验比较,GCN模型在层数为3且K=40时的效果最好,准确率为98.28%。我们的训练过程的纪元设置为150,如所示图16用于GCN模型层为3层、K为40层的实验过程。当历元达到150时,损失函数曲线和训练精度曲线完全收敛。
在相同的模型参数下,我们比较了GraphConv的结果[31],图形存储[32]和GraphSAGE,输入为自循环图,如所示图17ROC图显示,将输入的GraphSAGE用作自循环图的分类效果高于其他两个模型,这表明我们可以通过向S-FCSG添加自循环来有效增强重要节点特征,并提高原始模型的分类性能。
我们比较了几种现有的恶意软件检测方法。模型算法的范围从过去的机器学习到最新的GCN模型,以及函数调用图中从单一权限到复杂行为特征的使用。尤其是Vinayaka等人提出的方法[18]使用FCG作为特征,使用GCN模型进行检测。然而,他们使用读出函数来提取FCG中节点的整体特征,这相当于重要和无意义节点特征的集合。表6图18将我们的方法与现有的方法进行比较。AUC值越接近1,分类器的性能越好。通过比较AUC区域的大小和其他指标,我们的方法在Android恶意软件检测中具有更好的结果和更好的性能。

5.结论

在本文中,我们提出了一种Android恶意软件检测方法,以增强函数调用图(FCG)中节点特征的差异。通过验证中提出的功能权重特征第3.1.3节我们知道,API的高权限保护级别通常在恶意APK中比在良性APK中更常见。基于FCG,我们获得了图中的关键节点,并提取它们及其邻域来构建敏感函数调用子图(S-FCSG)。首先,S-FCSG能够捕获重要节点,同时有效减少FCG中的节点数,并最大限度地保留节点特征和结构。然后,S-FCSG删除无意义的节点,防止重要节点特征在GCN传播过程中变得无意义,减少了低通滤波对我们模型学习到的重要信息的干扰的影响以及实验的效果。基于节点特征的GraphSAGE聚合,我们考虑将节点特征纳入聚合操作,增加重要节点特征的权重以及不同节点特征之间的差异。通过全局池层提取重要的节点特征作为S-FCSG的节点行为特征,以便具有重要特征的信息可以方便地识别和检测我们的模型。实验表明,我们的方法在识别和检测Android恶意软件方面优于以前基于机器学习的方法和当前基于FCG的方法。
本文重点研究了图的节点特征和GCN模型的特征,但图的结构语义丰富,有许多切入点需要研究,例如图的节点、边、属性和类型。在未来,我们将首先研究子图提取方法。在我们的方法中,所有数据集都使用相同的子图提取方法。虽然该方法是有效的,但我们希望使用组合GraphSAGE采用更好的动态子图提取方法[32]模型。其次,对图中节点的重要评估也有利于研究内容。我们的方法使用特征权重来评估节点的重要性,以及Huang等人提出的动态评估节点重要性的方法[42]是一种非常新颖的方法,值得我们研究。最后,使图的特征信息更丰富,将使模型更容易识别,因此构建异构图也将是我们的下一个研究步骤。总之,基于图结构和图卷积网络的恶意软件检测还有很大的研究空间。

作者贡献

概念化、H.W.和N.L。;方法论,H.W。;软件,H.W。;验证、H.W.、G.T.和Y.S。;形式分析,H.W。;调查,G.T。;资源,H.W。;数据管理,Y.S。;书面原稿编制,H.W。;写作与编辑,H.W。;可视化、G.T.和Y.S。;监督,N.L。;项目管理,N.L。;所有作者均已阅读并同意手稿的出版版本。

基金

这项研究部分由国家社会科学基金(20&ZD293)资助。

机构审查委员会声明

不适用。

知情同意书

不适用。

数据可用性声明

本研究分析了公开可用的数据集。研究数据可以找到https://www.sec.cs.tu-bs.de/~danarp/drebin公司(2022年5月5日访问),https://www.unb.ca/cic/datasets/maldroid-2020.html(2022年3月17日访问)和https://androzoo.uni.lu(2022年5月13日访问)。

致谢

作者感谢在线开源Python库和匿名审稿人对本文的贡献。

利益冲突

作者声明没有利益冲突。

缩写

本文中使用了以下缩写:
全球通信网络图卷积网络
FCG公司函数调用图
燃料电池蒸汽发生器函数调用子图
S-FCSG公司敏感函数调用子图
AOSP公司安卓开源项目
1-D美国有线电视新闻网一维卷积神经网络

工具书类

  1. 2021年谷歌游戏年度应用下载。在线可用:https://www.statista.com/statistics/734332/google-play-app-installs-per-year网站/(2022年2月22日访问)。
  2. Android测试2019-250应用程序。在线可用:https://www.av-comparatives.org/tests/android-test-2019-250-apps/(2022年2月22日访问)。
  3. 刘,K。;徐,S。;徐,G。;张,M。;Sun,D。;Liu,H.基于机器学习的android恶意软件检测方法综述。IEEE接入 2020,8, 124579–124607. [谷歌学者] [交叉参考]
  4. 巴特,P。;Dutta,K.关于安卓平台中各种威胁和当前安全状态的调查。Acm计算。Surv公司。(CSUR) 2019,52, 1–35. [谷歌学者] [交叉参考]
  5. 图形神经网络简介。在线可用:https://distract.pub/2021/gnn-intro(网址:https://distract.pub/2021/gnn-intro)(2022年3月22日访问)。
  6. Lecun,Y。;博图,L。;Y.本吉奥。;Haffner,P.基于梯度的学习应用于文档识别。程序。电气与电子工程师协会 1998,86, 2278–2324. [谷歌学者] [交叉参考]
  7. Gers,F。;施密杜贝尔,J。;Cummins,F.学会遗忘:使用LSTM进行持续预测。1999年第九届国际人工神经网络会议论文集ICANN 99。(Conf.Publ.No.470),英国爱丁堡,1999年9月7日至10日;第2卷,第850-855页。[谷歌学者] [交叉参考]
  8. Wu,F。;Souza,A。;张,T。;五十,C。;Yu,T。;Weinberger,K.简化图卷积网络。机器学习研究,第36届机器学习国际会议论文集,2019年6月9日至15日,美国加利福尼亚州长滩; Chaudhuri,K.、Salakhutdinov,R.、Chaudhury,K.和Salakhuttinov,R编辑。;MLR出版社:美国宾夕法尼亚州费城,2019年;第97卷,第6861-6871页。[谷歌学者]
  9. 李强。;Wu,X.M。;刘,H。;张,X。;Guan,Z.通过图形过滤标记有效的半监督学习。《IEEE/CVF计算机视觉和模式识别会议论文集》,美国加利福尼亚州长滩,2019年6月10日至20日;第9582–9591页。[谷歌学者]
  10. Bo,D。;王,X。;Shi,C。;Shen,H.超越图卷积网络中的低频信息。2021年2月2日至9日,在线AAAI人工智能会议记录;第35卷,第3950-3957页。[谷歌学者]
  11. Android开源项目。在线可用:https://github.com/aosp-mirror网站(2022年6月22日访问)。
  12. 金,K.W.Y。;周Y.F。;黄,Z。;Lie,D.PScout:分析Android权限规范。2012年10月16日至18日,美国纽约州纽约市,CCS’12,ACM计算机和通信安全会议记录;第217–228页。[谷歌学者] [交叉参考]
  13. Wu,D.J。;毛,C.H。;魏,T.E。;Lee,H.M.公司。;Wu,K.P.DroidMat:通过清单和API调用跟踪检测Android恶意软件。2012年8月9日至10日在日本东京举行的2012年第七届亚洲信息安全联合会议记录;第62-69页。[谷歌学者] [交叉参考]
  14. 李,D。;王,Z。;Xue,Y.DeepDetector:使用深度神经网络检测Android恶意软件。2018年6月22日至23日,法国巴黎,2018年国际计算与通信工程进展会议(ICACCE)论文集;第184-188页。[谷歌学者] [交叉参考]
  15. 刘,Y。;张,L。;Huang,X.使用G特性提高基于函数调用图的Android恶意软件检测的效率。Wirel公司。个人通讯。 2018,103, 2947–2955. [谷歌学者] [交叉参考]
  16. 范,M。;刘杰。;Wang,W。;李,H。;田,Z。;Liu,T.DAPASA:通过敏感子图分析检测Android Piggybacked应用程序。IEEE传输。Inf.法医安全。 2017,12, 1772–1785. [谷歌学者] [交叉参考]
  17. 冯·P。;马,J。;李·T。;马,X。;Xi,N。;Lu,D.基于图形神经网络调用图的Android恶意软件检测。《2020年网络与网络应用国际会议论文集》,中国海口,2020年12月10-13日;第368-374页。[谷歌学者] [交叉参考]
  18. Vinayaka,K.V.公司。;Jaidhar,C.D.使用函数调用图和图卷积网络检测Android恶意软件。2021年5月21日至23日在印度贾兰达尔举行的2021年第二届安全网络计算与通信国际会议(ICSCCC)会议记录;第279-287页。[谷歌学者] [交叉参考]
  19. 蔡,M。;江,Y。;高,C。;李,H。;Yuan,W.从Android恶意软件检测的增强功能调用图中学习功能。神经计算 2021,423, 301–307. [谷歌学者] [交叉参考]
  20. 加格,S。;Peddoju,S.K.公司。;Sarje,A.K.基于网络的Android恶意应用程序检测。国际期刊信息安全。 2017,16, 385–400. [谷歌学者] [交叉参考]
  21. 蔡,H。;Meng,N。;莱德,B。;Yao,D.DroidCat:通过应用程序级评测有效地检测和分类Android恶意软件。IEEE传输。Inf.法医安全。 2019,14, 1455–1470. [谷歌学者] [交叉参考]
  22. T.S.约翰。;托马斯·T。;Emmanuel,S.使用系统调用图检测Android恶意软件的图卷积网络。2020年2月27日至3月1日在印度古瓦哈蒂举行的2020年第三届ISEA安全与隐私会议(ISEA-ISAP)会议记录;第162-170页。[谷歌学者] [交叉参考]
  23. 塔赫里,L。;A.F.A.卡迪尔。;Lashkari,A.H.使用网络流和API-Calls的可扩展Android恶意软件检测和家族分类。2019年10月1日至3日在印度钦奈举行的2019年国际卡纳汉安全技术会议(ICCST)会议记录;第1-8页。[谷歌学者] [交叉参考]
  24. Dalvik操作码。在线可用:http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html(2022年6月10日访问)。
  25. Freeman,L.C.社交网络概念澄清的中心性。Soc.网络。 1978,1, 215–239. [谷歌学者] [交叉参考]
  26. Android开发者。在线可用:https://developer.android.com/reference/android/Manifest.permission网站(2022年6月12日访问)。
  27. 使用注释改进代码检查。在线可用:https://developer.android.com/studio/write/annotations(2022年6月12日访问)。
  28. 欢迎阅读Androguard的文档。在线可用:https://androguard.readthedocs.io/en/latest/index.html(2022年3月17日访问)。
  29. 胡,W。;陶,J。;马,X。;周,W。;赵,S。;Han,T.MIGDroid:通过方法调用图检测APP-Repackage Android恶意软件。2014年8月4日至7日,中国上海,《2014年第23届国际计算机通信与网络会议论文集》;第1-7页。[谷歌学者] [交叉参考]
  30. Aizawa,A.tf–idf测量的信息理论视角。信息处理。管理。 2003,39, 45–65. [谷歌学者] [交叉参考]
  31. Kipf,T.N。;Welling,M.用图卷积网络进行半监督分类。2017年4月24日至26日,法国土伦,《学习代表国际会议论文集》。[谷歌学者]
  32. 汉密尔顿,W.L。;Ying,R。;Leskovec,J.大图的归纳表示学习。2017年12月4日至9日,美国纽约州红钩市,第31届神经信息处理系统国际会议,《NIPS论文集》;第1025-1035页。[谷歌学者]
  33. 张,M。;崔,Z。;诺伊曼,M。;Chen,Y.图分类的端到端深度学习体系结构。2018年2月2日至3日在美国洛杉矶新奥尔良举行的AAAI人工智能会议记录;第32卷。[谷歌学者] [交叉参考]
  34. 深度图形库。在线可用:https://www.dgl.ai网址(2022年7月18日访问)。
  35. Joblib:将Python函数作为管道作业运行。在线可用:https://joblib.readthedocs.io网站(2022年7月4日访问)。
  36. Allix,K。;Bissyandé,T.F。;Klein,J。;Le Traon,Y.AndroZoo:为研究社区收集数百万Android应用程序。2016年5月14日至22日在美国纽约州纽约市举行的第13届国际采矿软件库会议记录中;第468–471页。[谷歌学者] [交叉参考]
  37. 阿普·D。;Spreitzenbarth,M。;Hubner,M。;Gascon,H。;Rieck,K。;Siemens,C.Drebin:有效且可解释地检测您口袋中的android恶意软件。NDSS公司 2014,14, 23–26. [谷歌学者]
  38. Mahdavifar,S。;A.F.A.卡迪尔。;法特米,R。;Alhadidi,D。;Ghorbani,A.A.使用半监督式深度学习对android恶意软件进行动态分类。在2020年IEEE关于可靠、自主和安全计算的国际会议记录、关于普及智能和计算的国际大会记录、关于云和大数据计算的国际商会记录、关于网络科学和技术大会的国际商会(DASC/PiCom/CBDCom/CyberSciTech)记录中,加拿大阿联酋卡尔加里,2020年8月17日至22日;第515-522页。[谷歌学者]
  39. Onwuzurike,L。;Mariconti,E。;Andriotis,P。;克里斯托法罗,E.D。;罗斯,G。;Stringhini,G.MaMaDroid:通过构建行为模型的马尔可夫链来检测Android恶意软件(扩展版)。ACM事务处理。私人安全。 2019,22. [谷歌学者] [交叉参考]
  40. 太阳,X。;Y.中阳。;辛,Z。;毛,B。;Xie,L.使用基于组件的控制流图检测Android应用程序中的代码重用。IFIP信息和通信技术进展,ICT系统安全和隐私保护会议记录,摩洛哥马拉喀什,2014年6月2-4日; Cuppens-Boalahia,N.,Cuppens,F.,Jajodia,S.,Abou El Kalam,A.,Sans,T.,Eds。;施普林格:德国柏林/海德堡,2014年;第142-155页。[谷歌学者]
  41. Ge,X。;潘,Y。;范,Y。;Fang,C.AMDroid:使用函数调用图检测Android恶意软件。2019年IEEE第19届软件质量、可靠性和安全指南国际会议(QRS-C)会议记录,保加利亚索非亚,2019年7月22日至26日;第71–77页。[谷歌学者] [交叉参考]
  42. 黄,H。;Sun,L。;杜,B。;刘,C。;吕伟。;Xiong,H.用于节点重要性估计的知识图表示学习。2021年8月14日至18日,新加坡,第27届ACM SIGKDD知识发现和数据挖掘会议记录;第646–655页。[谷歌学者]
图1。我们方法的总体框架。
图1。我们方法的总体框架。
传感器23 04729 g001
图2。谷歌在AOSP中使用@RequiresPermission注释正式记录权限规范。
图2。谷歌在AOSP中使用@RequiresPermission注释正式记录权限规范。
传感器23 04729 g002
图3。谷歌在AOSP中使用{@link android.Manifest.permission#XXX}注释正式记录权限规范。
图3。谷歌在AOSP中使用{@link android.Manifest.permission#XXX}注释正式记录权限规范。
传感器23 04729 g003
图4。API调用权重和2000个APK文件的比率。
图4。API调用权重和2000个APK文件的比率。
传感器23 04729 g004
图5。300个类似大小的APK文件的API调用权重和比率。
图5。300个类似大小的APK文件的API调用权重和比率。
传感器23 04729 g005
图6。API调用的值 e(电子) 小时 t吨 第页 t吨 o(o) 300个类似大小的APK文件。
图6。API调用的值 e(电子) 小时 t吨 第页 t吨 o(o) 300个类似大小的APK文件。
传感器23 04729 g006
图7。API调用的值 e(电子) 小时 t吨 第页 t吨 o(o) 100个类似大小的APK文件。
图7。API调用的值 e(电子) 小时 t吨 第页 t吨 o(o) 100个类似大小的APK文件。
传感器23 04729 g007
图8。382faa3f0119848f4c0b325fe50ae8659的FCG是Drebin数据集的2b09e069f6660436276358856708b。节点表示APK文件的功能。边表示不同函数之间的调用-被调用关系。
图8。382faa3f0119848f4c0b325fe50ae8659的FCG是Drebin数据集的2b09e069f6660436276358856708b。节点表示APK文件的功能。边表示不同函数之间的调用-被调用关系。
传感器23 04729 g008
图9。2001年从数据集中随机选择的APK文件中的平均最短路径长度。
图9。2001年从数据集中随机选择的APK文件中的平均最短路径长度。
传感器23 04729 g009
图10。382faa3f0119848f4c0b325fe50ae8659的S-FCSG是Drebin数据集的2b09e069f6660436276358856708b。图中节点和边的含义与图8.
图10。382faa3f0119848f4c0b325fe50ae8659的S-FCSG是Drebin数据集的2b09e069f6660436276358856708b。图中节点和边的含义与图8.
传感器23 04729 g010
图11。我们的GCN+1-D CNN模型。
图11。我们的GCN+1-D CNN模型。
传感器23 04729 g011
图12。多层图卷积网络(GCN)的示意图[31].
图12。多层图卷积网络(GCN)的示意图[31].
传感器23 04729 g012
图13。GraphSAGE示例和聚合方法的可视化演示[32].
图13。GraphSAGE示例和聚合方法的可视化演示[32].
传感器23 04729 g013
图14。比较Androzoo数据集com.moyou.gjqx.uc.apk的特征权重。
图14。比较Androzoo数据集com.moyou.gjqx.uc.apk的特征权重。
传感器23 04729 g014
图15。不同GCN模型层的实验结果(K=20)。
图15。不同GCN模型层的实验结果(K=20)。
传感器23 04729 g015
图16。培训的缺失和准确性。
图16。培训的缺失和准确性。
传感器23 04729 g016
图17。不同模型的ROC曲线。
图17。不同模型的ROC曲线。
传感器23 04729 g017
图18。我们的方法与现有方法的比较。
图18。我们的方法与现有方法的比较。
传感器23 04729 g018
表1。不同方法的比较。
表1。不同方法的比较。
作者年份功能算法模型贡献和未来工作
Wu等人[13]2012静态功能(请求的权限、传递的意向消息和组件)kNN算法分析相同数量的样本需要Androguard一半的时间。
Li等人[14]2018静态功能(硬件组件、请求的权限、应用程序组件、过滤的意图、受限的API调用、使用的权限、可疑的API调用和网络地址)深度神经网络未来,他们将考虑结合静态和动态特性来描述Android应用程序。
Liu等人[15]2018静态特性(函数调用图)机器学习算法避免了传统FCG的高维向量导致的崩溃问题。
Fan等人[16]2017静态特征(敏感函数调用子图)机器学习算法从调用结构的新角度补充了基于权限和基于API的方法。
Feng等人[17]2020静态功能(近似调用图)图形神经网络将传统的静态特征构造成新的图形结构数据。
Vinayaka等人[18]2021静态特性(函数调用图)图卷积网络提出了一种平衡技术,使节点数量相似。
Cai等人[19]2021静态功能(增强的函数调用图)图卷积网络克服了由于缺少功能属性而无法理解应用程序的行为特征的问题。
Garg等人[20]2017动态功能(网络功能的四种不同流量类别)机器学习算法未来的工作将侧重于提高未知应用程序的检测率。
Cai等人[21]2019动态特性(方法调用和组件间通信(ICC)意图)机器学习算法发现捕获应用程序执行结构的功能比典型的安全功能重要得多。
John等人[22]2020动态功能(系统调用)图卷积网络用于动态Android恶意软件检测的GCN的第一个应用程序。
Taheri等人[23]2019混合功能(权限、意图和网络流)机器学习算法计划生成一个Android数据集,其中包含更多捕获的功能和大量样本。
表2。Dalvik操作码的13种类型。
表2。Dalvik操作码的13种类型。
操作码(十六进制)操作码关键字解释
100没有空操作指令:对齐代码,没有实际操作。
201-0天移动数据操作说明。
0E-11号机组返回方法返回指令:返回当前工作函数的结果。
412摄氏度常数数据定义说明。
51D-1E型班长锁定指令:用于多线程程序中对同一对象进行操作。
622年20月1日检查对象操作指令:用于转换、检查和新建实例。
721/23-26阵列数组操作说明。
827例外说明。
928-2C/32-3D转到/切换/如果跳转指令:从当前地址跳转到指定的偏移量。
102日-31日cmpl/cmpg/cmp比较指令:比较两个寄存器的值。
1144-6D/F2-F7层iget/iput/sget/sput字段操作说明:读取或写入对象实例的字段。
126E-72/74-78/F0/F8-FB援引函数调用指令:调用其他类实例的方法。
137B-E2型负-/not-/int-to/long-to/float-to/double-to/-int/-long/-float/-double数据类型传输指令。
表3。从中获得的映射关系图2图3.
表3。映射关系从图2图3.
注释的类型字段的含义领域解释
Java注释符号@需要权限Java中的一种注释。
所需权限数全部属于有两个类别:allOf和anyOf。allOf:需要所有权限。anyOf:只需要其中一个权限。
@需要权限批注权限名称安卓。清单.许可。
MANAGE_DEVICE_ADMINS,安卓。清单.许可。
交互_遍历_用户_满
MANAGE_DEVICE_ADMINS和INTERACT_ACROSS_USERS_FULL是必需的权限名称。
API函数名称和参数setActiveAdmin(@NonNull ComponentName policyReceiver,布尔刷新,int)根据这些字段提取API函数名与参数和权限名之间的映射关系。
权限名称安卓。许可证清单
#主_清除
如上所述进行解释。
@链接android。显示。
权限#XXX注释
API函数名称和参数getFactoryResetProtectionPolicy(@Nullable ComponentName admin)
表4。子图提取的比较。
表4。子图提取的比较。
开始提取的敏感API数量FCG中的平均节点数FCSG中的平均节点数平均节点减少率FCG中特征权重的总和FCSG中特征重量的总和节点特征减少率
前1名12,189730340.1%1, 884, 5841,663,77011.7%
前3名777636.2%1,733,3008.0%
前5名791435.0%1,766,9826.2%
前7名798634.5%1,776,0555.8%
前10名817033.0%1,789,4365.0%
前15名853130%1,802,2424.4%
前20名911525.2%1,822,0363.3%
前30名10,09417.1%1,866,3991.0%
表5。实验结果。
表5。实验结果。
GCN层K(K)准确性精密度F1得分TPR公司FPR公司AUC公司
200.95340.96960.95270.93620.0290.9908
2400.95930.96440.95970.95390.0350.9879
600.97190.98200.97160.96140.0170.9962
200.96870.96200.96880.97570.0380.9922
400.98280.98900.98270.97650.0110.9968
600.96520.96250.96530.96810.0370.9936
200.96310.96230.96310.96400.0370.9930
4400.94760.96350.94670.93040.0350.9867
600.96610.96880.96600.96310.0310.9946
表6。我们的方法与现有方法的比较。
表6。我们的方法与现有方法的比较。
方法准确性精密度F1得分TPR公司FPR公司AUC公司
德宾[37]0.96510.95420.94310.95650.0430.9765
MaMaDroid公司[39]0.96810.89090.84890.93710.0630.9599
DAPASA公司[16]0.94320.93560.94220.92790.0720.9578
DroidSim机器人[40]0.93360.91240.89300.88780.1080.9141
AMRoid公司[41]0.97490.97870.97290.97390.0270.9748
V等人提议[18]0.92290.92420.92050.9223不适用不适用
我们的0.98280.98900.98270.97650.0110.9968
免责声明/出版商注释:所有出版物中包含的声明、意见和数据仅为个人作者和贡献者的声明、观点和数据,而非MDPI和/或编辑的声明、看法和数据。MDPI和/或编辑对内容中提及的任何想法、方法、说明或产品造成的任何人员或财产伤害不承担任何责任。

分享和引用

MDPI和ACS样式

吴,H。;北卡罗来纳州卢克塔汉。;田,G。;Song,Y。基于GCN增强函数调用图中节点特征差异的Android恶意软件检测方法。传感器 2023,23, 4729.https://doi.org/10.3390/s23104729

AMA风格

吴浩、卢克塔汉N、田刚、宋毅。基于GCN增强函数调用图中节点特征差异的Android恶意软件检测方法。传感器. 2023; 23(10):4729.https://doi.org/10.3390/s23104729

芝加哥/图拉宾风格

吴浩杰、努尔博尔·卢克塔尔汗、田高奇和宋阳阳。2023.“基于GCN增强函数调用图中节点特征差异的Android恶意软件检测方法”传感器23、10号:4729。https://doi.org/10.3390/s23104729

请注意,从2016年第一期开始,该杂志使用文章编号而不是页码。请参阅更多详细信息在这里.

文章指标

返回页首顶部