CN109271788B - 一种基于深度学习的Android恶意软件检测方法 - Google Patents
一种基于深度学习的Android恶意软件检测方法 Download PDFInfo
- Publication number
- CN109271788B CN109271788B CN201810963774.2A CN201810963774A CN109271788B CN 109271788 B CN109271788 B CN 109271788B CN 201810963774 A CN201810963774 A CN 201810963774A CN 109271788 B CN109271788 B CN 109271788B
- Authority
- CN
- China
- Prior art keywords
- file
- software
- android
- malicious
- apk
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Health & Medical Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种基于深度学习的Android恶意软件检测方法,属于计算机与信息科学技术领域。本发明首先对Android应用软件进行特征提取,然后通过对Android应用文件进行解压缩和反编译等操作提取相关的安全特征。提取的特征包括3个方面:文件结构特征、安全经验特征和Dalvik指令集构成的N‑gram统计特征。然后对提取的特征进行数值化处理,构建特征向量。最后基于上述提取的相关特征构建DNN(Deep Neural Network)模型。通过构建的模型对新来的Android软件进行分类和识别。该方法融合了指令集的分析,具有对抗恶意软件混淆的作用,同时基于深度模型的恶意软件检测能够增强特征学习,能够很好地表达大数据的丰富内在信息,更加容易适应不断进化的恶意软件。
Description
技术领域
本发明涉及一种基于深度学习的Android恶意软件检测方法,属于计算机与信息科学技术领域。
背景技术
随着移动互联网的不断发展,智能终端成为了每个人生活中重要组成部分。Android作为使用最广泛的移动操作***,由于其开放和灵活的生态环境导致恶意软件泛滥。如何有效地检测Android恶意软件是一项具有重要价值的研究课题。当前主流的Android恶意代码检测方法大致分为静态检测方法和动态检测方法。
1.动态检测方法
所谓动态检测与分析,是指让被检测程序运行起来后再抽取特征进行检测和分析的方法。动态检测方法主要是通过将Android应用文件运行在Android设备上,然后通过采集软件运行过程中的API调用序列、资源使用等数据实现对软件的分析。虽然动态分析具有不受代码加壳、混淆等限制因素影响的优点,但是该方法在实际使用中存在数据采集提取困难、软件运行代价大、代码覆盖率低、容易被恶意软件通过对运行环境的检测而反检测等问题。因此,通过动态分析的方法来检测恶意软件在实际中使用较少。
2.静态检测方法
静态检测的方法主要是通过对Android应用文件进行扫描和分析,提取出Android文件中和安全相关的敏感信息和特征,例如敏感权限、***动作、敏感***调用等。然后针对提炼的这些特征进行分析和归纳并判断其是否为恶意软件。和动态分析方法相比,静态分析的方法具有较高的代码覆盖率和较小的时间开销,通常能够达到较好的检测准确率。该方法也是当前各种病毒查杀软件主流的检测方法。但是在实际的环境中,Android应用开发者为了对代码进行保护往往会进行混淆和加密等操作,这种环境下静态分析就不容易提取到有效特征从而对其进行误判。同时,恶意软件每年都在飞速的进化和发展,常规的检测方法难以适应不断涌现的新的恶意软件。
针对上述的问题,本课题提出了一种基于深度学习的恶意软件分类方法。一方面,通过对Android应用文件进行分析,提取出了一些恶意软件常见的静态特征。另一方面,通过对Android应用文件进行反编译提取出Smalli源码,然后从Smalli源码中提取出Dalvik操作码,然后对其指令集进行抽象并提取出N-gram序列特征。最后将上述提取的特征归一化处理后通过深度学习算法进行抽象建模完成恶意软件的识别。基于指令集分析的检测***,具有对抗恶意软件混淆的作用。基于深度模型的恶意软件检测能够增强特征学习,对大数据的丰富内在信息能够进行很好的表达,更加容易适应不断进化的恶意软件。
发明内容
本发明的目的是解决常规Android恶意软件检测方法检测准确率低、检测适用范围有限、且难以适应新出现的软件的问题,提出一种基于深度学习的恶意软件检测方法。
本发明的设计原理为:首先对Android应用软件进行特征提取。然后通过对Android应用文件进行解压缩和反编译等操作提取相关的安全特征。提取的特征包括3个方面:文件结构特征、安全经验特征和Dalvik指令集构成的N-gram统计特征。然后对提取的特征,进行数值化处理构建特征向量。最后基于上述提取的相关特征构建DNN(Deep NeuralNetwork)模型。通过构建的模型对新来的Android进行软件分类和识别。
本发明的技术方案是通过如下步骤实现的:
步骤1,获取Android正负样本文件,然后对文件进行预处理。
步骤1.1,从http://amd.arguslab.org/behaviors获取恶意Android软件库共24552个,从Android市场上获取正常软件供21000个。
步骤1.2,对每一个应用软件进行解压缩操作,提取出Android应用软件的AndroidManifest.xml文件、res文件、classs.dex文件等文件供后续分析。
步骤1.3,通过Andguard工具对class.dex文件进行反编译操作,然后提取出Dalvik操作码。
步骤2,对Android应用文件进行特征提取。
步骤2.1,就步骤1得到的文件进行特征提取,提取的特征包括文件结构特征,安全经验特征和Dalvik指令集抽象后的N-gram特征。
步骤2.2,然后对提取到的特征进行数值化,归一化表示后获得每个应用的特征向量。
步骤3,构建神经网络分类器并对软件进行识别检测。
步骤3.1,根据数据库的特征向量划分测试集和数据集并训练神经网络。
步骤3.2,对新来的软件进行预处理和特征提取,然后基于构建的神经网络分类器进行分类,给出软件分类结果完成对软件的检测。
有益效果
相比于对传统静态分析方法,本发明提取了更加丰富的软件特征,包括文件结构特征、经验特征和基于Dalvik指令集的N-gram统计特征。这些特征能够对Android软件特性进行更加全面地表征,以达到较高的检测准确率。
相比于传统的机器学习分类算法,深度学习能够增强特征学习,对大数据的丰富内在信息进行很好的表达,更加容易适应不断进化的恶意软件。
附图说明
图1为本发明的基于深度学习的Android恶意软件检测方法原理图。
具体实施方式
为了更好的说明本发明的目的和优点,下面结合实例对本发明方法的实施方式做进一步详细说明。
具体流程为:
步骤1,获取Android正负样本文件,然后对文件进行预处理
步骤1.1,从http://amd.arguslab.org/behaviors获取恶意Android软件库共24552个,从Android市场上获取正常软件供21000个。
步骤1.2,对每一个应用软件通过Andguard工具提取出Android应用软件的AndroidManifest.xml文件、res文件、classs.dex文件等文件供后续分析。
步骤1.3,通过Andguard工具对class.dex文件进行反编译操作,然后提取出每个Smalli文件的Dalvik操作码。
步骤2,对Android应用文件进行特征提取。
步骤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个特征统计数量值。
Fn=[fn0,fn1,fn2……fn999] (1)
然后将n个1000维特征加权然后归一化表示后即可得到新的1000维特征F作为最终的Dalvik字节码N-gram统计特征,具体的形式如公式(2)所示。
F=[k0,k1……km……k999] (2)
公式中,km表示新统计特征中,第m个特征值。
·表1指令符号含义定义
步骤2.2,对步骤2.1提取到的特征进行数值化,归一化表示后获得每个应用的特征向量。假设数据库D,则该数据库可以用如下的矩阵进行表示。
其中,数据库D共有n个样本,每个样本的属性共有p维,每个样本都有目标值Y。此处,目标值取值0或1,1表示为正样本,0表示为负样本。在本方法中每个样本的特征维度为1067,n为45120。
步骤3,构建神经网络分类器并对软件进行识别检测。
步骤3.1,根据数据库的特征向量划分测试集和训练集并训练神经网络。
步骤3.2,对新来的软件进行预处理和特征提取,然后基于构建的神经网络分类器进行分类,给出软件分类结果完成对软件的检测。
测试结果:实验中共计选取正负样本45120个(部分文件损坏无法提取),其中恶意样本23511个,正常软件21609个个。然后基于构建的神经网络模型在整个数据集上进行5折交叉验证。最终测得正负样本的平均准确率、平均召回率、和平均F值如表2所示。从表中的实验数据可以看出本方法具有较高的检测准确率能达到较好的检测效果。
·表2测试实验结果
以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (1)
1.一种基于深度学习的Android恶意软件检测方法,其特征在于所述方法包括如下步骤:
步骤1,获取Android正负样本文件,然后对文件进行预处理,包括:选取正负Android应用软件,并对APK文件进行解压缩处理得到APK中文件中所有的文件;然后对class.dex文件进行反编译处理,提取出每个APK中每一份smalli文件里Dalvik操作码;
步骤2,就步骤1得到的文件进行特征提取并得到每一个软件特征向量,包括:对步骤1得到的文件进行处理得到APK文件的经验特征、结构特征和Dalvik指令集的N-gram统计特征,并将上述特征进行数值化和归一化处理后得到每一个软件的特征向量,其中结构化特征,包括APK申请的敏感权限,应用包含的***动作、以及activity、service、BroadcastReceive、Content Provider数量共63维;经验特征,它主要包括长期恶意APK检测分析的经验总结的特征,包括资源文件中是否包含可执行文件,assets文件夹中是否包含APK文件、APK文件中资源文件中包含的图像文件个数和参数大于20的函数的个数共4维;Dalvik操作码的N-gram统计特征1000维,考虑到恶意软件实现恶意意图的功能代码都会集中在一个恶意文件中,因此在统计N-gram特征时以单个Smalli文件为单位,然后将每个文件统计的N-gram特征进行加权和归一化处理后作为最终的特征向量;
步骤3,根据步骤2提取的数据构建分类模型,在构建过程中在数据集上采用5折交叉验证方法对模型进行评估,最后基于构建神经网络分类器并对软件进行识别检测,构建恶意软件分类模型时采用全联接深度神经网络,一方面该模型适合处理高维数据的输入;另一方面,深度学习能够增强特征学习,模型学习过程中能对APK提取的1067维特征进行相应的组合变换,自动挖掘特征间深层次联系,以适应不断进化的恶意软件,实现较高的恶意软件检测准确率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810963774.2A CN109271788B (zh) | 2018-08-23 | 2018-08-23 | 一种基于深度学习的Android恶意软件检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810963774.2A CN109271788B (zh) | 2018-08-23 | 2018-08-23 | 一种基于深度学习的Android恶意软件检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109271788A CN109271788A (zh) | 2019-01-25 |
CN109271788B true CN109271788B (zh) | 2021-10-12 |
Family
ID=65154347
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810963774.2A Active CN109271788B (zh) | 2018-08-23 | 2018-08-23 | 一种基于深度学习的Android恶意软件检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109271788B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110069927A (zh) * | 2019-04-22 | 2019-07-30 | 中国民航大学 | 恶意apk检测方法、***、数据存储设备和检测程序 |
CN110245493A (zh) * | 2019-05-22 | 2019-09-17 | 中国人民公安大学 | 一种基于深度置信网络的Android恶意软件检测的方法 |
CN110363003B (zh) * | 2019-07-25 | 2022-08-02 | 哈尔滨工业大学 | 一种基于深度学习的Android病毒静态检测方法 |
CN110717182A (zh) * | 2019-10-14 | 2020-01-21 | 杭州安恒信息技术股份有限公司 | 一种网页木马检测方法、装置、设备及可读存储介质 |
CN111460452B (zh) * | 2020-03-30 | 2022-09-09 | 中国人民解放军国防科技大学 | 一种基于频率指纹提取的安卓恶意软件检测方法 |
CN112966272B (zh) * | 2021-03-31 | 2022-09-09 | 国网河南省电力公司电力科学研究院 | 一种基于对抗式网络的物联网Android恶意软件检测方法 |
CN112861135B (zh) * | 2021-04-12 | 2024-05-31 | 中南大学 | 基于注意力机制的恶意代码检测方法 |
CN113139189B (zh) * | 2021-04-29 | 2021-10-26 | 广州大学 | 一种挖矿恶意软件的识别方法、***和存储介质 |
CN113656308A (zh) * | 2021-08-18 | 2021-11-16 | 福建卫联科技有限公司 | 一种计算机软件分析*** |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102938040A (zh) * | 2012-09-29 | 2013-02-20 | 中兴通讯股份有限公司 | Android恶意应用程序检测方法、***及设备 |
US8826439B1 (en) * | 2011-01-26 | 2014-09-02 | Symantec Corporation | Encoding machine code instructions for static feature based malware clustering |
CN104376262A (zh) * | 2014-12-08 | 2015-02-25 | 中国科学院深圳先进技术研究院 | 一种基于Dalvik指令和权限组合的安卓恶意软件检测方法 |
CN105205396A (zh) * | 2015-10-15 | 2015-12-30 | 上海交通大学 | 一种基于深度学习的安卓恶意代码检测***及其方法 |
CN106096405A (zh) * | 2016-04-26 | 2016-11-09 | 浙江工业大学 | 一种基于Dalvik指令抽象的Android恶意代码检测方法 |
CN107169354A (zh) * | 2017-04-21 | 2017-09-15 | 北京理工大学 | 多层级Android***恶意行为监控方法 |
CN108304720A (zh) * | 2018-02-06 | 2018-07-20 | 恒安嘉新(北京)科技股份公司 | 一种基于机器学习的安卓恶意程序检测方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100478953C (zh) * | 2006-09-28 | 2009-04-15 | 北京理工大学 | 基于统计特征的网页恶意脚本检测方法 |
CN107577942B (zh) * | 2017-08-22 | 2020-09-15 | 中国民航大学 | 一种用于Android恶意软件检测的混合特征筛选方法 |
-
2018
- 2018-08-23 CN CN201810963774.2A patent/CN109271788B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8826439B1 (en) * | 2011-01-26 | 2014-09-02 | Symantec Corporation | Encoding machine code instructions for static feature based malware clustering |
CN102938040A (zh) * | 2012-09-29 | 2013-02-20 | 中兴通讯股份有限公司 | Android恶意应用程序检测方法、***及设备 |
CN104376262A (zh) * | 2014-12-08 | 2015-02-25 | 中国科学院深圳先进技术研究院 | 一种基于Dalvik指令和权限组合的安卓恶意软件检测方法 |
CN105205396A (zh) * | 2015-10-15 | 2015-12-30 | 上海交通大学 | 一种基于深度学习的安卓恶意代码检测***及其方法 |
CN106096405A (zh) * | 2016-04-26 | 2016-11-09 | 浙江工业大学 | 一种基于Dalvik指令抽象的Android恶意代码检测方法 |
CN107169354A (zh) * | 2017-04-21 | 2017-09-15 | 北京理工大学 | 多层级Android***恶意行为监控方法 |
CN108304720A (zh) * | 2018-02-06 | 2018-07-20 | 恒安嘉新(北京)科技股份公司 | 一种基于机器学习的安卓恶意程序检测方法 |
Non-Patent Citations (1)
Title |
---|
Investigating the android intents and permissions for malware detection;Fauzia Idrees 等;《2014 Seventh International Workshop on Selected Topics in Mobile and Wireless Computing》;20141010;第354-358页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109271788A (zh) | 2019-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109271788B (zh) | 一种基于深度学习的Android恶意软件检测方法 | |
CN111639337B (zh) | 一种面向海量Windows软件的未知恶意代码检测方法及*** | |
CN107659570A (zh) | 基于机器学习与动静态分析的Webshell检测方法及*** | |
Sabhadiya et al. | Android malware detection using deep learning | |
CN109614795B (zh) | 一种事件感知的安卓恶意软件检测方法 | |
CN108280350A (zh) | 一种面向Android的移动网络终端恶意软件多特征检测方法 | |
KR101858620B1 (ko) | 기계 학습을 이용한 자바스크립트 분석 장치 및 방법 | |
CN110795732A (zh) | 基于SVM的Android移动网络终端恶意代码的动静结合检测方法 | |
Zhang et al. | SaaS: A situational awareness and analysis system for massive android malware detection | |
Kakisim et al. | Sequential opcode embedding-based malware detection method | |
CN114595451A (zh) | 基于图卷积的安卓恶意应用分类方法 | |
Thiyagarajan et al. | Improved real‐time permission based malware detection and clustering approach using model independent pruning | |
Li et al. | Novel Android Malware Detection Method Based on Multi-dimensional Hybrid Features Extraction and Analysis. | |
CN113468524B (zh) | 基于rasp的机器学习模型安全检测方法 | |
Ugarte-Pedrero et al. | On the adoption of anomaly detection for packed executable filtering | |
Ghasempour et al. | Permission extraction framework for android malware detection | |
CN114285587A (zh) | 域名鉴别方法和装置、域名分类模型的获取方法和装置 | |
CN112016088A (zh) | 生成文件检测模型的方法、装置、检测文件的方法及装置 | |
CN112163217B (zh) | 恶意软件变种识别方法、装置、设备及计算机存储介质 | |
CN113626817B (zh) | 恶意代码家族分类方法 | |
Wang et al. | Malware detection using cnn via word embedding in cloud computing infrastructure | |
CN110795705B (zh) | 轨迹数据处理方法、装置、设备及存储介质 | |
Guo et al. | Classification of malware variant based on ensemble learning | |
CN113409014A (zh) | 基于人工智能的大数据业务处理方法及人工智能服务器 | |
CN114676428A (zh) | 基于动态特征的应用程序恶意行为检测方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |