APP下载

基于异构图注意力网络的Android恶意软件检测

2022-12-09贺娇君蔡满春芦天亮

关键词:异构应用程序注意力

贺娇君, 蔡满春, 芦天亮

(中国人民公安大学信息网络安全学院,北京 100038)

0 引言

随着移动智能终端技术的不断提升,移动智能设备得到广泛的使用。目前智能设备的操作系统主要分为IOS和Android两大类,截止2021年7月,Android在全球移动智能终端操作系统市场中占83.8%[1],Android以开源的优势已经成为主流的移动操作系统。然而由于系统的可扩展性和开发的开放性,Android系统频遭黑客们的攻击,数据泄露和隐私侵犯时有发生,用户被置于各种威胁和高风险中,为网络安全带来了极大的挑战。

目前主流的Android恶意代码检测方法是对请求权限、API调用、字节码等特征进行提取,然后针对数据的语法特征和语义系统特征使用机器学习方法构建检测模型。基于语法的方法往往忽略了应用程序的语义信息。例如,一些检测模型只提取出应用程序的请求权限来构建特征向量,但恶意程序可以在利用程序漏洞而不调取权限的情况下实施恶意行为。MaMadroid[2]提取API的抽象包,使用马尔科夫链表示包与包之间的转换概率,该方法的缺点是只提取了数据的序列信息,无法获得节点之间的结构特征。同样,基于卷积神经网络和循环神经网络的恶意软件检测模型只获取了数据的平面结构或序列特征,并没有考虑到对于判定应用程序恶意性质非常关键的结构依赖关系。

本文提出了一种基于异构图注意力网络的Android恶意软件检测方法,相较于目前大多数使用的GraphSAGE[3]和Node2vec[4]等图表示方法,克服了只利用拓扑结构或节点特征而未考虑不同类型节点关系的不足。该方法受到异构图注意力网络算法的启发,提取Android应用程序的请求权限、访问URL、API调用、包含组件4种特征节点和其间的边结构关系,在构建异构图后分层聚合基于元路径的邻域特征。为进一步提取更深层次的语义关系,分别对两个应用程序之间不同的关系进行语义聚合,生成节点嵌入。我们综合4种特征关系并将MaMadroid所使用的API调用序列的包转换概率作为应用程序节点属性,在结构化的异构图上建模,使用基于异构图注意力的网络模型对Android恶意软件进行检测,实验的准确率达到98.83%,假阳性率为0.36%,与现有的图神经网络模型相比检测率有所提高。

1 相关工作

1.1 图嵌入与图神经网络

图嵌入是将网络中的节点特征映射到到低维向量中,这些向量仍具有图的拓扑结构信息和节点内容信息,从而完成后续节点分类、链路预测、聚类以及可视化等图分析任务。许多浅层结构模型的图嵌入算法(如DeepWalk、LINE、Node2vec)都不能捕获高度非线性的网络结构,而基于深度学习的图嵌入方法直接使用深度自编码器学习图邻接矩阵的编码与重构,可以通过多层非线性函数捕捉高度非线性的网络结构,较为熟知的深度图嵌入方法有基于图自编码的算法(如SDNE[5]和DNGR[6])和基于无监督训练的图卷积神经网络(如GraphSAGE)。Deep-Walk使用随机游走在无向图中采样生成序列,通过skip-gram模型中的word2vec进行向量学习。LINE是在大规模图上将节点的一阶相似性局部结构信息和二阶相似性的邻居信息拼接在一起作为节点的嵌入。Node2vec是DeepWalk的扩展,它通过策略使用二阶随机行走生成节点序列。2009年由Scarselli等人[7]最早提出图神经网络(Graph Neural Network,GNN)的概念,它能够有效利用图中丰富的语义信息和结构特征,每个节点通过相互交换信息更新本身节点的状态,不管是在传统的自然语言处理领域[8]、图像领域[9],还是在医药化学领域[10],GNN都表现出优异的性能。

1.2 研究现状

为了克服传统Android恶意软件检测在捕获拓扑结构和语义特征方面的缺失,许多方法将程序语义表示为图,通过分析生成的图检测恶意软件。最初大多数方法使用图的特征工程度量恶意代码家族之间的相似性,人为设计如节点度、图中心性等特征[11],计算敏感API调用节点图的Katz、Betweenness、Closeness、Pagerank值以度量节点中心性,将26个敏感API调用的4个中心值组合为输入的特征向量,使用图卷积神经网络[12](Graph Convolutional Net-work,GCN)进行训练。Yang[13]在计算节点中心性Betweenness、Closeness的同时,将n跳内数量作为属性特征丰富结构信息。后来为进一步快速获取新节点嵌入的表示、降低运算的开销,funcGNN[14]选取节点的标签、属性、列表以及编辑距离作为特征,使用GraphSAGE算法采样邻居特征,归纳嵌入节点,提出了一种基于GNN的判断同类恶意代码家族相似度的方法。挖掘样本的结构信息可以进一步检测出隐蔽的Android恶意软件,Hom-Droid[15]通过分析函数调用的社会网络同源性,挖掘出社会网络中代表网络不同结构特征的敏感API三元体,并从可疑子图提取语义特征检测隐蔽的Android恶意软件。除此之外,GDroid[16]引入包含不同类型节点和边的异构图丰富样本特征的结构信息,研究人员将应用程序和API映射成一个大的异构图,成为第一个探索图神经网络在恶意软件分类领域应用的研究。

现实场景下的图结构模型通常具有多种类型的节点和边,这种网络称为异质信息网络(Hetegeneous Information Network,HIN)。异质信息网络包含更加丰富的语义,可以反映恶意软件的结构特征。HinDroid[17]使用HIN为应用程序、API及其之间的关系构造图结构,并对应用程序和API之间的调用关系、API之间的关联位置关系和API的包及方法名称关系建模,使用元路径的方法比较应用程序间路径的相似性。Scorpion[18]使用异构图模拟不同类型的实体特征和恶意软件中的语义关系,以metagraph2vec的方式学习节点嵌入,在保留节点间结构和语义关系的前提下,降低特征向量的维度,最后采用SVM分类器输出分类结果,与HinDroid方法中只加权元路径就进行分类有了较大改进。AiDroid[19]在随机游走生成语料之后,通过skip-gram算法编码节点,提出了样本外节点表示学习算法,自主学习对应的节点表示。实验证明,基于异构图的Android恶意软件检测算法一定程度上提升了检测效果。

2 基于异构图注意力网络的Android恶意软件检测

异构图注意力网络[20](Heterogeneous graph Atten-tion Network,HAN)是一种新的图神经网络,节点间以元路径(meta-path)的方式连接不同的语义路径,能更好地捕获不同语义信息。HAN由节点级注意力和语义级注意力组成,节点级注意力是将不同类型的节点都映射到同一个特征空间中,学习基于元路径邻居节点的权重并聚合得到特定语义的节点嵌入,而语义级注意力综合学习每个元路径的权重并融合前面的结果得到新的节点嵌入。

本文将异构图注意力网络应用于Android恶意软件的检测,主要分为3个阶段:首先是特征提取与网络构建阶段,从数据集中提取Android样本的应用程序名、请求权限、访问URL、API调用和包含组件信息,针对不同类型关系构建异构图;其次使用HAN算法学习不同元路径下的异质信息网络,得到最终的节点嵌入;最后是检测阶段,对样本进行分类并评估模型的分类效果,总体框架如图1所示。

图1 基于异构图注意力网络的Android恶意软件检测模型框架

2.1 特征提取

恶意软件的特征提取由静态分析或动态分析获得。静态分析是在未运行的状态下对程序进行全覆盖的特征提取。动态分析是通过在沙箱、虚拟机和其他操作环境下模拟运行恶意样本,并同时对其进行测试与记录。Android应用程序以APK格式打包并安装在Android系统上,APK文件通常包含代码文件、授权和服务配置文件、Lib文件和其他资源文件。

本文使用静态特征提取工具Androguard从APK的DEX源文件以及AndroidManifest.xml配置文件中提取请求权限、访问URL、敏感API调用和包含组件4种类型的特征,作为判断程序是否具有恶意的依据。

(1)权限

Android的权限机制提供了对应用的访问控制,一个应用程序所申请的权限在一定程度上有效地反映了其行为。敏感权限的使用可能会对用户的隐私和设备运行状态产生严重影响,如申请敏感权限SEND_SMS、ACCESS_NETWORK_STATE、READ_PHONE_STATE会读取手机信息、发送短信,然后通过调取sendTextMessage()、getActiveNetworkInfo()、getDevicedId()、getSubscribeId()等API实施恶意行为。

(2)URL

应用程序中的一些网络地址信息可能与恶意性质有关,它通过定期与外部网络建立连接达到检索敏感信息或泄漏数据的目的,这些网络地址可以作为鉴别相关僵尸网络的特征。

(3)敏感API

通过静态解析工具解析smali代码中包含invoke-static、invoke-virtual、invoke-direct和invoke-super等指令得到API调用。由于提取的API函数大多为应用程序运行本身所必须的非特征节点,增加了数据的复杂度和检测难度,为提升检测效率,在选取敏感API特征时,只对匹配Pscout[21]API调用集的API进行处理统计,从而有效提高特征的代表性,部分敏感API如表1所示。

表1 敏感API项

(4)组件

Android系统共有4种应用组件类型,分别为活动(Activity)、服务(Service)、广播接收器(Broadcast receiver)和内容提供者(Content provider)。每个组件都是一个入口点,系统或用户通过入口点进入应用[22]。通过Androguard获取4大组件的初步特征集,为了进一步简化数据只保留4大组件的名称,舍弃前面的com.***的内容。

2.2 异质信息网络构建

定义1异质信息网络定义为一个有向图G=(V,E,T,R),每个节点vi∈V属于节点类型集合T中的一个节点类型,每个边ei∈E属于边类型集合R中的一个边类型,类型映射函数分别表示为:V→T和E→R。当节点类型数量和边类型数量均为1时,G为同质信息网络,当节点类型数量和边类型数量之和大于2时,G为异质信息网络。

定义2网络模式TG=(T,R)定义为对于给定网络G=(V,E,T,R),由节点类型为T的节点和边类型为R的边构成的图。

定义3元路径M定义为的路径,简写为T1T2…Tl。它描述了节点类型T1和Tl之间的关系,其中R=R1◦R2◦…◦Rl-1表示关系之间的组合运算符。

图2 异质信息网络实例以及网络模式

将Android样本中提取的应用程序名、请求权限和访问URL、API调用和包含组件分别作为节点在图G=(V,E,T,R)上表示,V=(v1,v2,…,vn)代表节点的集合,E=(e1,e2,…,en)代表节点间边的集合,T=(tapp,tpermission,tURL,tAPI,tcomponent)为节点类型的集合,R=(rapp-permission,rapp-URL,rapp-API,rapp-component)为边类型的集合。为了使模型更加准确,使用MaMadroid中包转换概率作为应用程序节点的属性值,赋予应用程序节点特征。节点v的特征向量表示为xv,完整的节点特征向量集为{xv,∀v∈V}。我们将提取的特征实体标记为A(应用程序名)、P(请求权限)、U(URL)、I(API)、C(组件),根据节点间关系构建数据样本的异质信息网络,实体间邻接矩阵表示如下:

(1)R1:描述应用程序与请求权限的关系,构建APP-request-Permission矩阵R,其中每个元素Ri,j∈{0,1},Ri,j=1表示应用程序i请求权限j。

(2)R2:描述应用程序与访问URL的关系,构建APP-access-URL矩阵A,其中每个元素Ai,j∈{0,1},Ai,j=1表示应用程序i访问URLj。

(3)R3:描述应用程序与API调用的关系,构建APP-call-API矩阵C,其中每个元素Ci,j∈{0,1},Ci,j=1表示应用程序i调用APIj。

(4)R4:描述应用程序与组件使用的关系,构建APP-use-Component矩阵U,其中每个元素Ui,j∈{0,1},Ui,j=1表示应用程序i使用组件j。

表2 定义的元路径

2.3 异构图注意力网络

在构建异质信息网络后,使用异构图注意力网络的节点级注意力将全部类型的节点都映射到统一的特征空间中,通过语义级注意力学习元路径邻居节点的权重并聚合得到特定语义的节点嵌入。

2.3.1 节点级注意力

选取本文异构图G中的某条元路径,对当前语义下的节点使用节点级注意力学习表示,通过自注意力机制学习各类节点的权重,基于元路径Φ的节点对(i,j)的重要性如下所示:

式(1)中,Φ指本文定义的{M1,M2,M3,M4}中4种类型的元路径,h'i和h'j表示节点i和节点j经过投影变换后统一空间的特征,为在元路径Φ下节点j对节点i的注意力,attnode为统一元路径下节点共享的一个节点级注意力神经网络。

图3 异构图注意力网络模型中的节点级聚合和语义级聚合

然后使用mask对中心节点和邻居节点之间的重要性进行计算,求得注意力系数,并用softmax函数归一化操作:

式(2)中是一个节点级注意力向量,节点对(i,j)的注意力系数依赖于他们的特征,通过学习得到基于元路径Φ的邻居特征聚合如下:

表示最后节点i在元路径Φ下学到的嵌入。给定元路径集合{Φ0,Φ1,…,ΦP},由节点级注意力可得P组在当前语义下的节点嵌入{ZΦ0,ZΦ1,…,ZΦP}。

2.3.2 语义级注意力

为了得到Android样本信息中更为全面的节点嵌入,需要综合不同的语义信息。语义级注意力的输入就是节点级注意力的P组输出{ZΦ0,ZΦ1,…,ZΦP}。(βΦ0,βΦ1,…,βΦP)为每个元路径学到的权重,attsem表示语义级注意力神经网络:

通过非线性变换得到特定语义的嵌入,然后利用语义级注意力向量q转换嵌入相似度,从而学到每个元路径的重要性,如式(5)。其中,W表示权重矩阵,b表示偏置项。

使用softmax函数对每个元路径的重要性都进行归一化处理,最后融合不同元路径得到语义级的节点嵌入,如式(6)和式(7)。

2.4 分类预测

最后将得到的节点嵌入放入一个多层感知器(MLP)来进行分类,通过反向传播算法优化模型更好地学习节点嵌入。本文使用交叉熵作为损失函数,如式(8)所示:

其中为对应的标签值,Yl为经过多层感知器输出再通过softmax层得到的预测值。

基于异构图注意力网络的Android恶意软件检测以分层的方式获取节点邻居和不同元路径的最优结构,充分学习异质信息网络中的拓扑结构和丰富语义信息。被标记的邻接矩阵和节点特征向量作为图神经网络模型的输入,分别学习每个元路径的权重后得到融合特定语义的节点嵌入,最终通过多层感知器判别样本类别。

3 实验评估

3.1 实验环境

实验在NVIDIA GTX1080Ti GPU上进行,使用Androguard分 析APK文 件,通 过PyTorch[23]和DGL[24]图深度学习库进行实验。

实验数据来自Drebin数据集[25]、Androzoo数据集[26]以及360手机助手。其中Drebin包含179个家族的5 560个样本,Androzoo包含5 781 781个样本。表3为将数据集构造为异质信息网络后节点数和边数的具体图数据统计信息。我们将良性样本标记为0,将恶意样本标记为1,通过分层抽样划分训练集、验证集和测试集,分别占整个实验数据集的70%、20%和10%。学习到的节点嵌入输入多层感知器,全连接层间采用ReLU作为激励函数,使用Adam优化器和最小化交叉熵损失函数优化模型,最终通过softmax函数对节点分类判断样本是否为恶意,具体参数的设置如表4所示。

表3 图数据统计信息

表4 参数设置

3.2 评估标准

实验选取准确率(Accuracy)、精确率(Precision)、召回率(Recall)和F1(F1-score)作为评估指标。分别计算了真阳性(TP)、真阴性(TN)、假阳性(FP)和假阴性(FN)等值。F1-score在一定程度上代表了模型的综合训练效果,结果的漏报率越接近0、召回率越接近1则说明模型分类能力越强,评估指标的具体公式如下:

3.3 实验结果与分析

为了验证本文算法模型的性能,将本文模型与以下4种检测恶意软件的基准模型进行对比。

(1)MaMadroid。该算法从控制流图中提取API调用序列并抽象为包或家族,将基于马尔科夫链的包转换概率作为特征向量,最后使用随机森林进行分类。

(2)Drebin。该算法静态提取应用程序中权限、API、组件等8种信息作为二值特征向量,使用线性支持向量机作为分类模型。

(3)Node2vec。使用word2vec算法学习同质图中的节点嵌入,设置每个节点的行走次数为10,最大行走长度为10。

(4)GraphSAGE。该模型对同质图进行两跳内邻居采样,使用均值聚合器聚合采样邻居的特征。

5组对比实验的评估结果如表5、图4所示:

表5 对比算法实验结果

图4 评估指标对比

从表5可知,本文算法的模型检测准确率高达98.83%,假阳性率只有0.36%。图5为5组实验的ROC曲线。AUC值是ROC曲线下方的面积,理想情况下AUC值为1,该值反映了分类结果的整体水平,曲线越接近左上角就证明检测率越高,假阳性就越低,对恶意软件的检测就越敏感。MaMadroid和Drebin均对欧式数据进行处理,仅考虑提取特征的数量和序列关系,F1值和精确率相对较低。Node2vec通过深度优先和广度优先的二阶随机行走获得节点序列,只学习网络中的结构关系,故精确率只有97.43%,与本文算法模型相比低2.46%。基于GraphSAGE的模型获取了节点的属性信息,检测效果明显提升,但因仅捕获单一语义存在丢失信息的可能,所以在F1值、准确率方面没有本文算法高,特别是精确率低,仅为1.84%,有待进一步加强。本文基于异构图注意力网络的模型表现优异,AUC值和准确率分别达到了99.95%和98.83%。

图5 ROC曲线对比

图6为本文算法模型随迭代次数的Loss值变化,Loss值为预测标签和真实标签的交叉熵,由图6可知经过训练Loss值不断趋于0,表明模型的学习能力逐渐增强。从实验多项评估指标结果可知,基于异构图注意力网络的模型具有更强的语义表达能力,能够学习丰富的结构关系和语义特征,准确识别恶意软件,取得更好的检测效果。

图6 迭代次数对损失的影响

3.4 参数分析

为了进一步评估参数对本文算法模型的影响,通过递增迭代轮次测评Epochs变化对本文模型分类效果的提升能力,实验结果如表6所示。

表6 不同Epochs模型的准确率

同时利用t-SNE[27]方法将不同Epochs下模型学习到的节点嵌入降维,得到2维可视化结果,最佳分类效果如图7所示。其中,右上角节点簇代表恶意样本,左下角的节点簇代表良性样本。

图7 节点嵌入可视化

由表6可知,随着Epochs增加分类模型准确率不断提升,在达到20后趋于稳定,逐渐由拟合优化状态逐渐转化为过拟合状态。本文设定Epochs为20时可以学习到更好的节点表示,获得模型的最佳训练效果。

4 结语

目前检测Android恶意软件的主流方法是使用深度学习的方法对非欧式数据进行训练,然而此类方法并不能有效捕捉样本的节点信息和结构特征,本文使用图神经网络对Android恶意软件进行检测,将异构图注意力网络算法应用于恶意软件检测模型中,有效地在异构图中融合了应用程序与请求权限、访问URL、API调用和包含组件之间复杂的拓扑结构和丰富的语义信息。将提取Android样本中的特征转换为不同类型节点,通过节点级注意力将不同类型的节点映射到统一的特征空间,对不同的关系分别进行语义聚合生成节点嵌入,最终使用多层感知器输出分类结果。在对本文数据样本进行训练的实验中,本文算法的检测模型准确率为98.83%,且各项评估指标优于其他对比算法模型,检测效果有了明显的提升。

后续研究将结合Android样本动态运行的特征,充分利用图神经网络的语义信息,弥补选取Android样本静态特征的不足,同时进一步优化异构图神经网络模型,提高分类器的泛化能力和分类效率。

猜你喜欢

异构应用程序注意力
试论同课异构之“同”与“异”
让注意力“飞”回来
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
“扬眼”APP:让注意力“变现”
异构醇醚在超浓缩洗衣液中的应用探索
overlay SDN实现异构兼容的关键技术
A Beautiful Way Of Looking At Things
LTE异构网技术与组网研究
三星电子将开设应用程序下载商店