一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于API增强顺序的安卓恶意代码检测方法

2022-06-29 23:01:30 来源:中国专利 TAG:

一种基于api增强顺序的安卓恶意代码检测方法
技术领域
1.本发明属于网络信息安全领域,具体涉及一种基于api增强顺序的安卓恶意代码检测方法。


背景技术:

2.移动智能终端的发展不仅给人们生活带来便利,同时也为安卓恶意软件提供了滋生的温床。安卓恶意软件数量呈爆炸式增长,对安卓安全构成严重威胁。安卓恶意代码检测这一领域新的工作层出不穷,先前的研究者们在与恶意软件制作者博弈的过程中开创了许多新颖且高效的方法。之前的研究显示,基于动静态或混合方法提取应用程序特征并输入到机器学习或深度学习模型中进行分类是一种有效的检测方法。静态分析无需运行程序,通过检查程序的清单文件,执行代码等提取感兴趣的特征,效率相对较高,但无法析在执行期间运行的代码。动态分析可以学习到程序的运行时特征,但其低代码覆盖率和低效率给检测带来许多限制。混合方法结合动静态分析,提取程序各种不同类型的信息,但这将导致超大规模特征集(甚至数十万)的使用。
3.安卓平台提供了一个api框架,开发人员可以用来与系统、应用程序或硬件进行交互。并且,恶意软件通常无法绕过系统api来执行恶意活动,这将给恶意代码检测提供线索。然而现有方法api视为彼此独立而忽略了api之间的潜在联系。如申请号为cn202011593644.8的专利文件“用于恶意代码检测的方法及装置、设备”使用flowdroid工具提取安卓应用的函数调用图,然后根据敏感api集合删除调用图中的非敏感api结点及其对应的边,得到敏感api调用图。最后从大量样本的调用图中提取频繁的敏感api调用序列,并将其作为特征来检测恶意代码可疑行为。但这种对特定序列进行精确匹配的方法会在api调用模式发生微小变化时被躲避。申请号为cn201811600760.0的专利文件“基于api调用序列的安卓恶意软件检测方法”将api调用抽象为基础包名,并计算api调用序列中不同api基础包名两两组合出现的概率矩阵作为特征,最后输入到随机森林分类器中进行训练。虽然该方法将api抽象到包级别,但这种抽象方式粒度太粗,不能很好地体现api间的相似性关系。申请号为cn202011097233.x的专利文件“一种基于深度学习的安卓恶意代码检测方法”将安卓应用的class.dex文件和androidmanifest.xml文件转换为灰度图,然后添加颜色通道将灰度图变为三通道rgb图像,最后将图像输入到训练好的卷积神经网络分类检测模型中。但将原始文件直接作为特征将加入许多冗余信息,阻碍模型学习,同时基于图像的训练模型将会耗费更多资源。
4.在恶意软件演化过程中,不同恶意软件通常会调用功能相似但表现不同的系统api来执行同样的恶意行为,以此躲避相似性检测。因此,本发明基于api的功能相似性事实,利用api嵌入模型基于大量系统api调用序列生成api的嵌入向量表示,并基于k-menas聚类算法对api向量进行聚类,得到具有相似性的api簇。api簇用来增强原始系统api调用序列,得到api簇序列。为了保留api调用顺序特征,本发明从增强后的api簇序列中提取邻接矩阵,并采用卷积神经网络模型捕获顺序信息。本发明利用邻接矩阵作为特征向量,较于
直接对调用图进行分析的方法而言可以有效减小特征维度,节省计算资源,并且对相同行为的不同实现敏感。


技术实现要素:

5.有鉴于此,本发明提供了一种基于api增强顺序的安卓恶意代码检测方法,能够解决已有安卓恶意代码检测方法对api变化弹性不足,在安卓恶意软件采用加密,混淆等措施时性能下降的问题。
6.实现本发明的技术方案如下:
7.一种基于api增强顺序的安卓恶意代码检测方法,包括以下步骤:
8.步骤一、收集安卓平台的良性安卓应用和恶意安卓应用作为数据集,将数据集随机等分为十份,九份数据用于训练,一份数据用于测试;
9.步骤二、基于递归算法提取完整系统api调用序列;
10.针对所有样本,具体处理步骤如下:
11.步骤2.1、使用反汇编工具apktool处理安卓应用得到dalvik代码,每个类及方法都在其对应的smali文件中被定义,分析每个安卓应用所生成的smali文件;
12.步骤2.2、识别smali文件中的方法定义语句(“.method”)来收集所有方法,并存入到该安卓应用对应的用户自定义方法集合a中;
13.步骤2.3、识别smali文件中的调用语句(“invoke-*”),从调用语句中依次提取被调用者,存入系统api调用序列s中;
14.步骤2.4、判断系统api调用序列s中的项是否存在于用户自定义方法集合a中,如果存在,则向下查询该方法内包含的所有调用,存入系统api调用序列s中;
15.步骤2.5、重复步骤2.3,直到系统api调用序列s中不存在用户自定义方法集合a中的项;
16.步骤三、基于系统api调用序列集训练api嵌入模型api2vec,并对api嵌入向量进行聚类;
17.步骤四、利用邻接矩阵作为特征,有效地保留行为特性;具体步骤如下:
18.步骤4.1、对于从安卓应用中提取出的系统api调用序列,依次判断序列中的api是否存在于敏感api集中;如果不存在,则将当前api从序列中移除;如果存在,则查询该api所在的簇序号,并利用簇序号替代该api并存入序列中;重复此步骤直至遍历完序列中的所有api;
19.步骤4.2、从步骤4.1得到的api簇序列中提取邻接矩阵特征;给定一个api簇序列l,l={a1,a2,a3......an},其中a1仅属于一个簇定义一个k
×
k的矩阵matrix,其中k为api簇的个数,特征矩阵中的值由下列公式得到,其中,cm、c
l
代表序号为m和l的api簇,matrix[m][l]代表矩阵matrix中第m行第l列的元素;
[0020][0021]
步骤五、将训练集中的安卓应用的邻接矩阵输入到卷积神经网络分类器中进行训练,训练完成后,将测试集中的安卓应用的邻接矩阵输入训练好的模型中进行分类,输出其对应良恶意类别的预测值。
[0022]
进一步地,所述良性安卓应用来自中国的小米应用商城,所述恶意安卓应用从drebin数据集中获取。
[0023]
进一步地,步骤三中,所述嵌入向量为64维。
[0024]
有益效果:
[0025]
(1)本发明提出了一种基于增强api顺序的安卓恶意软件检测新方法,利用api间的相似性信息来生成具有相似性的api簇来增强api调用序列,使模型对相似行为的不同实现敏感,提高检测方法的检测性能。
[0026]
(2)本发明基于cbow算法设计并实现了一个api嵌入模型,生成得到了独立api的密集向量表示,并通过聚类得到了具有相似性的api簇,同时也支持了特征集大小的弹性变化。
附图说明
[0027]
图1为本发明方法流程图。
[0028]
图2为本发明方法中api嵌入以及聚类示意图。
具体实施方式
[0029]
下面结合附图并举实施例,对本发明进行详细描述。
[0030]
本发明设计了一种基于api增强顺序的安卓恶意代码检测方法,利用api序列中的上下文信息挖掘api间的相似性,并利用这种相似性来增强原始的api调用序列,实现对应用程序相同行为的不同实现敏感。同时利用增强api序列的邻接矩阵替代api调用图,能够有效缩小特征规模。本发明主要包括使用基于递归的方法完成应用程序完整系统api调用序列的提取、基于cbow模型原理的api嵌入模型的实现、以及基于卷积神经网络(cnn)的检测框架搭建。
[0031]
本发明所提出的基于api增强顺序的安卓恶意代码检测模型如图1所示,具体步骤如下:
[0032]
步骤一:收集安卓平台的良性安卓应用和恶意安卓应用
[0033]
本发明中所使用良性安卓应用来自中国的小米应用商城,所使用的恶意安卓应用从drebin数据集中获取。在后续步骤中,将数据集随机划分为相同大小的十份,九份数据用于训练,一份数据用于测试。
[0034]
步骤二:基于递归算法提取完整系统api调用序列
[0035]
针对所有样本,具体处理步骤如下:
[0036]
(1)使用反汇编工具apktool处理安卓应用得到dalvik代码,每个类及方法都在其对应的smali文件中被定义。分析每个安卓应用所生成的smali文件。
[0037]
(2)识别smali文件中的方法定义语句(“.method”)来收集所有方法,并存入到该安卓应用对应的用户自定义方法集合a中。
[0038]
(3)识别smali文件中的调用语句(“invoke-*”),从调用语句中依次提取被调用者,存入系统api调用序列s中。
[0039]
(4)判断系统api调用序列s中的项是否存在于用户自定义方法集合a中,如果存在,则向下查询该方法内包含的所有调用,存入系统api调用序列s中。
[0040]
(5)重复第(3)步,直到系统api调用序列s中不存在用户自定义方法集合a中的项。
[0041]
步骤三:基于系统api调用序列集训练api嵌入模型api2vec,并对api嵌入向量进行聚类。
[0042]
如图2所示,为了提取并利用api的相似性,本发明利用系统api调用序列训练了一个api嵌入模型——api2vec,用来将api转换为独立的实值向量。然后利用k-means聚类算法将在特征空间内相近的api嵌入向量分组到簇中。具体步骤如下:
[0043]
(1)基于cbow算法实现了一个api嵌入模型,模型输入为25%的系统api调用序列,模型输出为每个独特api的密集向量表示。特别的,在本发明中所生成的嵌入向量为64维。
[0044]
(2)使用k-means聚类算法将api嵌入向量分组到不同的簇中。为进一步缩小分析范围,本发明使用论文“a machine-learning approach for classifying and categorizing android sources and sinks”中定义的敏感api生成一个敏感api集合,并删除所有簇中的非敏感api。
[0045]
步骤四:生成邻接矩阵特征由于恶意代码开发者不同的编写习惯,或同源恶意软件的更新迭代,往往不会出现完全一致的api序列。但是当恶意应用实现相似的恶意功能时,关键敏感api之间的使用顺序通常不会发生很大变化,大多数时候的更改是添加或删除一些api,所以本发明利用邻接矩阵作为特征,有效地保留行为特性。具体步骤如下:
[0046]
(1)对于从安卓应用中提取出的系统api调用序列,依次判断序列中的api是否存在于敏感api集中。如果不存在,则将当前api从序列中移除;如果存在,则查询该api所在的簇序号,并利用簇序号替代该api并存入序列中。重复此步骤直至遍历完序列中的所有api。
[0047]
(2)从步骤(1)得到的api簇序列中提取邻接矩阵特征。给定一个api簇序列l,l={a1,a2,a3......an},其中a1仅属于一个簇定义一个k
×
k的矩阵matrix,其中k为api簇的个数。特征矩阵中的值由下列公式得到,其中cm、c
l
代表序号为m和l的api簇,matrix[m][l]代表矩阵matrix中第m行第1列中的元素。
[0048][0049]
步骤五:训练卷积神经网络(cnn)分类器并检测恶意应用
[0050]
将训练集中的安卓应用的邻接矩阵输入到卷积神经网络分类器中进行训练。卷积神经网络结构如表1所示。训练完成后,将测试集中的安卓应用的邻接矩阵输入训练好的模型中进行分类,输出其对应良恶意类别的预测值。
[0051]
表1卷积神经网络模型结构
[0052]
[0053][0054]
具体实施方法:
[0055]
本实施方法为采用上述步骤所述的基于api增强顺序的安卓恶意代码检测方法进行仿真效果验证。
[0056]
仿真实验的硬件测试平台为:cpu为英特尔i7-6700 cpu(3.4ghz);内存为32gb;软件平台为windows 10操作系统;编程语言为python。
[0057]
仿真实验所使用的良性样本从小米应用商城中下载的正常安卓应用,共5643个;恶意样本从论文“drebin:effective and explainable detection of android malware in your pocket”的数据集中获取,共5532个,最终组成的实验数据集共11175个样本。同时,本次仿真实验中训练样本集与测试样本集的比例为9:1。
[0058]
仿真实验共使用四个评价指标进行评估,分别为准确率accuracy、精确度precision和召回率recall和f-measure。
[0059][0060][0061][0062][0063]
其中tp表示恶意应用被正确分类为恶意,fp表示良性应用被错误分类为恶意,tn表示良性应用被正确分类为良性,fn表示恶意应用被错误分类为良性。
[0064]
仿真实验从三个方面对本发明模型进行测评,分别为:不同分类模型、不同特征维度、以及于本发明相似的检测模型的对比。
[0065]
(1)本实验对比了不同分类模型对检测性能的影响。所对比的机器学习方法包括含k最近邻kkn,随机森林rf,支持向量机svm,朴素贝叶斯nb,逻辑回归lr等。表2列出了各种分类模型的性能指标情况,结果表明本发明所提出的方法检测性能最好,f-measure达到了0.995。
[0066]
表2不同分类模型的检测性能
[0067][0068]
(2)本实验对比了不同特征维度对检测性能的影响,使用的特征维度在(8,16,32,64,128)中选取。表3表明当特征维度为64时能够获得更好的检测性能。
[0069]
表3不同特征维度的检测性能
[0070][0071]
(3)本实验与论文“mamadroid:detecting android malware by building markov chains of behavioral models,”进行对比。mamadroid将api调用抽象为family或package,然后基于马尔可夫链提取api调用之间的转换频率作为特征,训练了一个随机森林模型,取得了较好的性能。mamadroid在family模式下特征维度为11*11,在package模式下特征为357*357,类似地,本发明使用特征维度为(11,11)和(64,64)下的检测性能与其进行比较。对比结果如表4所示,结果表明在同一数据集下本发明能够取得更好的检测性能。
[0072]
表4与相似方法的性能比较
[0073][0074]
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献