首页 / 专利库 / 人工智能 / 深层模型 / 一种基于深度学习的Android恶意软件检测方法

一种基于深度学习的Android恶意软件检测方法

阅读:1040发布:2020-09-19

专利汇可以提供一种基于深度学习的Android恶意软件检测方法专利检索,专利查询,专利分析的服务。并且本 发明 涉及一种基于 深度学习 的Android恶意 软件 检测方法,属于计算机与信息科学技术领域。本发明首先对Android 应用软件 进行特征提取,然后通过对Android应用文件进行解压缩和反编译等操作提取相关的安全特征。提取的特征包括3个方面:文件结构特征、安全经验特征和Dalvik指令集构成的N-gram统计特征。然后对提取的特征进行数值化处理,构建 特征向量 。最后基于上述提取的相关特征构建DNN(Deep Neural Network)模型。通过构建的模型对新来的Android软件进行分类和识别。该方法融合了指令集的分析,具有对抗 恶意软件 混淆的作用,同时基于深度模型的恶意软件检测能够增强特征学习,能够很好地表达 大数据 的丰富内在信息,更加容易适应不断进化的恶意软件。,下面是一种基于深度学习的Android恶意软件检测方法专利的具体信息内容。

1.一种基于深度学习的Android恶意软件检测方法,其特征在于所述方法包括如下步骤:
步骤1,获取Android正负样本文件,然后对文件进行预处理,包括:选取正负Android应用软件,并对APK文件进行解压缩处理得到APK中文件中所有的文件;然后对class.dex文件进行反编译处理,提取出每个APK中每一份smalli文件里Dalvik操作码;
步骤2,就步骤1得到的文件进行特征提取并得到每一个软件特征向量,包括:对步骤1得到的文件进行处理得到APK文件的经验特征、结构特征和Dalvik指令集的N-gram统计特征,并将上述特征进行数值化和归一化处理后得到每一个软件的特征向量;
步骤3,根据步骤2提取的数据构建分类模型,在构建过程中在数据集上采用5折交叉验证方法对模型进行评估,最后基于构建神经网络分类器并对软件进行识别检测。
2.根据权利要求1所述的一种基于深度学习的Android恶意软件检测方法,其特征在于:步骤2中提取Android应用的特征时,提取的特征包括结构特征、经验特征和Dalvik指令集抽象的N-gram特征;结构化特征,包括APK申请的敏感权限,应用包含的系统动作、应用包含的activity、service、Broadcast Receive、Content Provider数量等63维;经验特征,它主要包括长期恶意APK检测分析的经验总结的特征,包括资源文件中是否包含可执行文件,assets文件夹中是否包含APK文件、APK文件中资源文件中包含的图像文件个数和参数大于
20的函数的个数等4维;Dalvik指令集抽象后的3-gram统计特征1000维。
3.根据权利要求1所述的一种基于深度学习的Android恶意软件检测方法,其特征在于:步骤2中统计N-gram特征时考虑到恶意软件实现恶意意图的功能代码都会集中在一个恶意文件中,因此在统计N-gram特征时以单个Smalli文件为单位,然后将每个文件统计的N-gram特征进行加权和归一化处理后作为最终的特征向量。
4.根据权利要求1所述的一种基于深度学习的Android恶意软件检测方法,其特征在于:步骤3中构建恶意软件分类模型时采用神经网络模型,一方面深度神经网络模型适合处理高维数据的输入;另一方面,深度学习能够增强特征学习,在构建模型过程中能对APK提取的1067维特征进行相应的组合变换,并自动挖掘特征间深层次联系,以适应不断进化的恶意软件,实现较高的恶意软件检测准确率。

说明书全文

一种基于深度学习的Android恶意软件检测方法

技术领域

[0001] 本发明涉及一种基于深度学习的Android恶意软件检测方法,属于计算机与信息科学技术领域。

背景技术

[0002] 随着移动互联网的不断发展,智能终端成为了每个人生活中重要组成部分。Android作为使用最广泛的移动操作系统,由于其开放和灵活的生态环境导致恶意软件泛滥。如何有效地检测Android恶意软件是一项具有重要价值的研究课题。当前主流的Android恶意代码检测方法大致分为静态检测方法和动态检测方法。
[0003] 1.动态检测方法
[0004] 所谓动态检测与分析,是指让被检测程序运行起来后再抽取特征进行检测和分析的方法。动态检测方法主要是通过将Android应用文件运行在Android设备上,然后通过采集软件运行过程中的API调用序列、资源使用等数据实现对软件的分析。虽然动态分析具有不受代码加壳、混淆等限制因素影响的优点,但是该方法在实际使用中存在数据采集提取困难、软件运行代价大、代码覆盖率低、容易被恶意软件通过对运行环境的检测而反检测等问题。因此,通过动态分析的方法来检测恶意软件在实际中使用较少。
[0005] 2.静态检测方法
[0006] 静态检测的方法主要是通过对Android应用文件进行扫描和分析,提取出Android文件中和安全相关的敏感信息和特征,例如敏感权限、系统动作、敏感系统调用等。然后针对提炼的这些特征进行分析和归纳并判断其是否为恶意软件。和动态分析方法相比,静态分析的方法具有较高的代码覆盖率和较小的时间开销,通常能够达到较好的检测准确率。该方法也是当前各种病毒查杀软件主流的检测方法。但是在实际的环境中,Android应用开发者为了对代码进行保护往往会进行混淆和加密等操作,这种环境下静态分析就不容易提取到有效特征从而对其进行误判。同时,恶意软件每年都在飞速的进化和发展,常规的检测方法难以适应不断涌现的新的恶意软件。
[0007] 针对上述的问题,本课题提出了一种基于深度学习的恶意软件分类方法。一方面,通过对Android应用文件进行分析,提取出了一些恶意软件常见的静态特征。另一方面,通过对Android应用文件进行反编译提取出Smalli源码,然后从Smalli源码中提取出Dalvik操作码,然后对其指令集进行抽象并提取出N-gram序列特征。最后将上述提取的特征归一化处理后通过深度学习算法进行抽象建模完成恶意软件的识别。基于指令集分析的检测系统,具有对抗恶意软件混淆的作用。基于深度模型的恶意软件检测能够增强特征学习,对大数据的丰富内在信息能够进行很好的表达,更加容易适应不断进化的恶意软件。

发明内容

[0008] 本发明的目的是解决常规Android恶意软件检测方法检测准确率低、检测适用范围有限、且难以适应新出现的软件的问题,提出一种基于深度学习的恶意软件检测方法。
[0009] 本发明的设计原理为:首先对Android应用软件进行特征提取。然后通过对Android应用文件进行解压缩和反编译等操作提取相关的安全特征。提取的特征包括3个方面:文件结构特征、安全经验特征和Dalvik指令集构成的N-gram统计特征。然后对提取的特征,进行数值化处理构建特征向量。最后基于上述提取的相关特征构建DNN(Deep Neural Network)模型。通过构建的模型对新来的Android进行软件分类和识别。
[0010] 本发明的技术方案是通过如下步骤实现的:
[0011] 步骤1,获取Android正负样本文件,然后对文件进行预处理。
[0012] 步骤1.1,从http://amd.arguslab.org/behaviors获取恶意Android软件库共24552个,从Android市场上获取正常软件供21000个。
[0013] 步骤1.2,对每一个应用软件进行解压缩操作,提取出Android应用软件的AndroidManifest.xml文件、res文件、classs.dex文件等文件供后续分析。
[0014] 步骤1.3,通过Andguard工具对class.dex文件进行反编译操作,然后提取出Dalvik操作码。
[0015] 步骤2,对Android应用文件进行特征提取。
[0016] 步骤2.1,就步骤1得到的文件进行特征提取,提取的特征包括文件结构特征,安全经验特征和Dalvik指令集抽象后的N-gram特征。
[0017] 步骤2.2,然后对提取到的特征进行数值化,归一化表示后获得每个应用的特征向量。
[0018] 步骤3,构建神经网络分类器并对软件进行识别检测。
[0019] 步骤3.1,根据数据库的特征向量划分测试集和数据集并训练神经网络。
[0020] 步骤3.2,对新来的软件进行预处理和特征提取,然后基于构建的神经网络分类器进行分类,给出软件分类结果完成对软件的检测。
[0021] 有益效果
[0022] 相比于对传统静态分析方法,本发明提取了更加丰富的软件特征,包括文件结构特征、经验特征和基于Dalvik指令集的N-gram统计特征。这些特征能够对Android软件特性进行更加全面地表征,以达到较高的检测准确率。
[0023] 相比于传统的机器学习分类算法,深度学习能够增强特征学习,对大数据的丰富内在信息进行很好的表达,更加容易适应不断进化的恶意软件。附图说明
[0024] 图1为本发明的基于深度学习的Android恶意软件检测方法原理图。

具体实施方式

[0025] 为了更好的说明本发明的目的和优点,下面结合实例对本发明方法的实施方式做进一步详细说明。
[0026] 具体流程为:
[0027] 步骤1,获取Android正负样本文件,然后对文件进行预处理
[0028] 步骤1.1,从http://amd.arguslab.org/behaviors获取恶意Android软件库共24552个,从Android市场上获取正常软件供21000个。
[0029] 步骤1.2,对每一个应用软件通过Andguard工具提取出Android应用软件的AndroidManifest.xml文件、res文件、classs.dex文件等文件供后续分析。
[0030] 步骤1.3,通过Andguard工具对class.dex文件进行反编译操作,然后提取出每个Smalli文件的Dalvik操作码。
[0031] 步骤2,对Android应用文件进行特征提取。
[0032] 步骤2.1,就步骤1得到的文件进行特征提取。第一类是结构化特征,包括APK申请的敏感权限、应用包含的系统动作、应用包含的activity、service、Broadcast Receive、Content Provider数量等63维。第二个是经验特征,它主要包括长期恶意APK检测分析的经验总结的特征,包括资源文件中是否包含可执行文件,assets文件夹中是否包含APK文件、APK文件中资源文件中包含的图像文件个数和参数大于20的函数的个数等。一般安装文件中包含额外的可执行文件的APK极大概率下可执行文件中藏有恶意代码。恶意软件有较少的图像文件个数并且为了躲避检测有恶意倾向的功能函数拥有较多的参数。经验特征共计4维。第三个是Dalvik指令集抽象后的N-gram特征。根据对恶意软件的分析了解到恶意软件实现恶意意图的代码都会集中在一个恶意文件中,统计N-gram特征时以单个文件为单位,然后将统计的N-gram特征进行加权,作为最终的特征向量。首先将Dalvik指令根据功能特性分为10类,具体分类情况如表1所示。然后对APK文件中每一个Smalli文件统计Dalvik指令抽象后的符号序列。然后对该序列做N-gram处理,这里选取的是3-gram。例如一个APK文件有n个Smalli文件,每一个文件会统计出1000维统计特征并记为Fn,具体形式如公式(1)所示,其中fnk表示第n个文件第k个特征统计数量值。
[0033] Fn=[fn0,fn1,fn2……fn999]  (1)
[0034] 然后将n个1000维特征加权然后归一化表示后即可得到新的1000维特征F作为最终的Dalvik字节码N-gram统计特征,具体的形式如公式(2)所示。
[0035] F=[k0,k1……km……k999]  (2)
[0036]
[0037] 公式中,km表示新统计特征中,第m个特征值。
[0038] ·表1指令符号含义定义
[0039]
[0040] 步骤2.2,对步骤2.1提取到的特征进行数值化,归一化表示后获得每个应用的特征向量。假设数据库D,则该数据库可以用如下的矩阵进行表示。
[0041]
[0042] 其中,数据库D共有n个样本,每个样本的属性共有p维,每个样本都有目标值Y。此处,目标值取值0或1,1表示为正样本,0表示为负样本。在本方法中每个样本的特征维度为1067,n为45120。
[0043] 步骤3,构建神经网络分类器并对软件进行识别检测。
[0044] 步骤3.1,根据数据库的特征向量划分测试集和训练集并训练神经网络。
[0045] 步骤3.2,对新来的软件进行预处理和特征提取,然后基于构建的神经网络分类器进行分类,给出软件分类结果完成对软件的检测。
[0046] 测试结果:实验中共计选取正负样本45120个(部分文件损坏无法提取),其中恶意样本23511个,正常软件21609个个。然后基于构建的神经网络模型在整个数据集上进行5折交叉验证。最终测得正负样本的平均准确率、平均召回率、和平均F值如表2所示。从表中的实验数据可以看出本方法具有较高的检测准确率能达到较好的检测效果。
[0047] ·表2测试实验结果
[0048]
[0049] 以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈