CN108710800A - 一种安卓应用程序的加壳识别方法 - Google Patents

一种安卓应用程序的加壳识别方法 Download PDF

Info

Publication number
CN108710800A
CN108710800A CN201810495785.2A CN201810495785A CN108710800A CN 108710800 A CN108710800 A CN 108710800A CN 201810495785 A CN201810495785 A CN 201810495785A CN 108710800 A CN108710800 A CN 108710800A
Authority
CN
China
Prior art keywords
classifier
preset
training
optimal
application
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.)
Pending
Application number
CN201810495785.2A
Other languages
English (en)
Inventor
王适文
何能强
严寒冰
孙才俊
秦素娟
张华�
丁丽
李佳
狄少嘉
徐原
何世平
温森浩
李志辉
姚力
张洪
朱芸茜
郭晶
朱天
高胜
胡俊
王小群
张腾
李挺
陈阳
李世淙
徐剑
吕利锋
党向磊
刘婧
饶毓
张帅
贾子骁
肖崇蕙
吕志泉
韩志辉
马莉雅
雷君
周彧
高川
周昊
楼书逸
文静
贾世琳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Time Ruian (beijing) Network Technology Co Ltd
National Computer Network and Information Security Management Center
Original Assignee
China Time Ruian (beijing) Network Technology Co Ltd
National Computer Network and Information Security Management Center
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Time Ruian (beijing) Network Technology Co Ltd, National Computer Network and Information Security Management Center filed Critical China Time Ruian (beijing) Network Technology Co Ltd
Priority to CN201810495785.2A priority Critical patent/CN108710800A/zh
Publication of CN108710800A publication Critical patent/CN108710800A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques

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)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Biology (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及一种安卓应用程序的加壳识别方法,包括从已标记的APK文件中提取应用特征,构建样本集,其中,所述已标记的APK文件包括标记为加固的APK文件和标记为未加固的APK文件;将所述样本集划分为训练集和测试集;根据所述样本集和测试集训练预设分类器,选择最优分类器;将待检测的APK文件输入所述最优分类器来识别其是否加壳。本发明采用静态方式提取特征,利用机器学习模型对安卓应用程序进行加壳识别,提高了加壳识别的效率和准确率。

Description

一种安卓应用程序的加壳识别方法
技术领域
本发明涉及计算机技术领域,尤其涉及一种安卓应用程序的加壳识别方法。
背景技术
近年来,安卓(Android)操作系统的设备,出货量大,市场份额占比高,安卓系统占据着移动市场的统治级地位。然而,安卓系统在自身架构、架构的安全机制以及平台的运营模式方面均存在不足,而且这些不足一旦被攻击者利用,用户的利益将受到侵害,因此,安卓平台日益严重的安全问题,使得恶意软件研究成为当务之急。
但是,随着当前安卓加固行业的发展,恶意应用(应用程序,可简称为“应用”)也逐渐使用加固手段来避免检测,因此,在进行恶意应用分析之前,识别应用程序是否加固,成为必要的步骤。如图1所示,当进行批量应用程序分析时,可先对应用程序进行分类,分为加固应用和未加固应用,对加固应用进行脱壳处理,再进行恶意软件分析。现有的加壳识别方法主要包括指纹匹配方法和动态脱壳方法,但是,指纹匹配方法扩展性不强,动态脱壳实现复杂,需要运行应用才能判断,识别效率低。
发明内容
本发明所要解决的技术问题在于,提供一种安卓应用程序的加壳识别方法,采用静态方式提取特征,利用机器学习模型对安卓应用程序进行加壳识别,提高了加壳识别的效率和准确率。
为了解决上述技术问题,本发明提供了一种应用程序的加壳识别方法,包括:
从已标记的APK文件中提取应用特征,构建样本集,其中,所述已标记的APK文件包括标记为加固的APK文件和标记为未加固的APK文件;
将所述样本集划分为训练集和测试集;
根据所述样本集和测试集训练预设分类器,选择最优分类器;
将待检测的APK文件输入所述最优分类器来识别其是否加壳。
进一步的,所述从已标记的APK文件中提取应用特征,包括以下步骤:
采用静态分析的方法从已标记的APK文件中提取应用特征。
进一步的,所述应用特征包括主程序、DEX比重和APK信息熵。
进一步的,所述方法还包括,搭建Map Reduce架构的分类集群,计算所述APK信息熵。
进一步的,所述将所述样本集划分为训练集和测试集,包括以下步骤:
采用随机抽取的方式,将所述样本集划分为训练集和测试集,所述训练集和测试集的比例分别为75%和25%。
进一步的,所述根据所述样本集和测试集训练预设分类器,选择最优分类器,包括以下步骤:
根据所述样本集和测试集训练预设分类器;
采用十折交叉验证方法选出最优分类器。
进一步的,所述采用十折交叉验证方法选出最优分类器,包括以下步骤:
采用十折交叉验证方法选出每种预设分类器的最优预设分类器,再从所有所述最优预设分类其中选择出最优分类器;或者,
采用十折交叉验证方法训练所有的预设分类器,并从中选出最优分类器。
进一步的,所述预设分类器包括贝叶斯分类器、J48决策树分类器、K近邻分类器、随机森林分类器、MLP分类器、SVM分类器中的一种或多种。
根据本发明又一方面,提供一种控制器,其包括存储器与处理器,所述存储器存储有计算机程序,所述程序在被所述处理器执行时能够实现所述方法的步骤。
根据本发明又一方面,提供一种计算机可读存储介质,用于存储计算机指令,所述指令在由一计算机或处理器执行时实现所述方法的步骤。
本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明一种安卓应用程序的加壳识别方法可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有下列优点:
(1)本发明采用静态方式提取应用特征,利用机器学习模型对安卓应用程序进行加壳识别,提高了安卓应用程序加壳识别的效率和准确率。
(2)本发明可以有效地从海量安卓应用程序中筛选出加壳应用程序,适用于安卓恶意应用检测时脱壳前的预处理,且采用静态分析的方式,使本发明所述方法简单高效,便于实施操作。
(3)本发明采用十折交叉验证方法从预设的分类器中选择出最优分类器,进一步提高了所述方法的效率和准确率。
(4)本发明采用Map Reduce架构计算信息上,将耗时的熵计算过程分而治之,达到并行的效果,从而提高系统整体可扩展性和吞吐量,从而高了为提高信息熵计算的速度,进而提高了所述方法的识别效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
图1为恶意程序分析基本流程示意图;
图2为本发明一实施例提供安卓应用程序的加壳识别方法示意图;
图3为本发明一实施例提供信息熵计算示意图;
图4为本发明一实施例提供的安卓应用程序的加壳识别过程示意图。
具体实施方式
为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的一种安卓应用程序的加壳识别方法的具体实施方式及其功效,详细说明如后。
如图1所示,本发明实施例提供了一种应用程序的加壳识别方法,包括:
步骤S1、从已标记的APK文件中提取应用特征,构建样本集,其中,所述已标记的APK文件包括标记为加固的APK文件和标记为未加固的APK文件;其中,APK全称为AndroidPackage的缩写,即安卓安装包。
安卓恶意应用检测主要采用两种方法,即静态分析和动态分析。静态分析是指通过分析程序代码来判断程序行为;动态分析是指在严格控制的环境下执行应用程序,尽可能的触发软件的全部行为并记录,以检测应用程序是否包含恶意行为。由于动态分析在效率相对较低,因此静态分析成为主要的安卓恶意应用检测分析手段。相应的,所述步骤S1中,也可采用静态分析的方法从已标记的APK文件中提取应用特征,采用静态分析的方法,简单高效,便于实施操作,从而提升了所述方法的识别效率。
普通应用(即未加壳应用)的主程序类一般空缺应用程序名称(applicationname)属性,而加壳程序会定制应用程序(Application),从而实现壳程序加载。一般加壳程序会将Dex文件的内容抽离后加密,存储到单独文件,因此,加壳程序的Dex比重较低;由于加壳程序会抽取Dex文件中的内容,并且加密后单独存储,而加密后的APK文件信息熵较高。基于上述分析,应用特征可包括主程序、DEX比重和APK信息熵,其中DEX指可执文件,应用特征的具体说明见表1:
表1
信息熵计算公式为pi为信源取第i个符号的概率,其中,i=1,2,3...n,n为信源个数。pi可通过步骤S11求得:
步骤S11、通过搭建Map Reduce架构的分类集群,计算所述样本中的APK信息熵。采用Map Reduce思想,将耗时的熵计算过程分而治之,达到并行的效果,如图3所示,通过步骤S11可提高信息熵计算的速度,从而提高系统整体可扩展性和吞吐量。
步骤S2、将所述样本集划分为训练集和测试集;
作为一种示例,步骤S2包括包括以下步骤:
采用随机抽取的方式,将所述样本集划分为训练集和测试集,所述训练集和测试集的比例分别为75%和25%,需要说明的是,该训练集和测试集的比例仅为一种示例,实际应用中可适应性调整。本发明示例中,可直接基于十折交叉的验证方式来划分样本集,为后续十折交叉的验证做准备。
步骤S3、根据所述样本集和测试集训练预设分类器,计算预设分类器最终的准确率,选择最优分类器;
作为一种示例,步骤S3可包括以下步骤:
步骤S31、根据所述样本集和测试集训练预设分类器,其中,预设分类器可包括贝叶斯分类器、J48决策树分类器、K近邻(k-Nearest Neighbor,KNN)分类器、随机森林分类器、MLP(Multi Layer Perceptron)分类器、SVM(Support Vector Machines)分类器中的一种或多种。
步骤S32、采用十折交叉验证方法选出最优分类器。
但可以理解的是,训练选择最优分类器时,可以采用上述示例中的一种预设分类器,进行步骤S32进行训练,得出最优分类器。也可采用上述预设分类器中的多个,进行以下步骤:
步骤S321、采用十折交叉验证方法选出每种预设分类器的最优预设分类器;
步骤S322、再从所有所述最优预设分类其中选择出最优分类器。
或者,采用上述预设分类器中的多个,进行以下步骤:
步骤S323、采用十折交叉验证方法训练所有的预设分类器,并从中选出最优分类器。
需要说明的是,上述六种预设分类器仅为示例,实际使用中,并不限于此,可根据具体应用需求,使用其他分类器作为预设分类器,也可采用一种其他分类器训练选择最优分类器,但可以理解的是,预设分类器种类越多,选择出的最优分类器的精度越高,从而使得所述方法的效率和精确度越高。
步骤S4、将待检测的APK文件输入所述最优分类器来识别其是否加壳。
所述步骤S4中,也可通过搭建Map Reduce架构的分类集群,计算待检测的APK文件的APK信息熵,提高信息熵计算的速度,从而进一步提高系统整体可扩展性和吞吐量。
本发明实施例所述方法支持阿里,百度,梆梆,爱加密,娜迦,360,腾讯等加固厂商的壳程序识别。通过静态分析,提取出应用特征,使用机器学习模型对应用程序进行分类,分类流程如图4所示示例,识别出加壳的应用程序,将应用程序划分为加壳样本和普通样本(即未加壳样本),从而为恶意应用的分析提供基础。
本发明实施例还提供一种控制器,其包括存储器与处理器,所述存储器存储有计算机程序,所述程序在被所述处理器执行时能够实现所述应用程序的加壳识别方法的步骤。
本发明实施例还提供一种计算机可读存储介质,用于存储计算机指令,所述指令在由一计算机或处理器执行时实现所述应用程序的加壳识别方法的步骤。
综上所述,本发明实施例采用静态方式提取应用特征,利用机器学习模型对安卓应用程序进行加壳识别,提高了安卓应用程序加壳识别的效率和准确率。本发明实施例可以有效地从海量安卓应用程序中筛选出加壳应用程序,适用于安卓恶意应用检测时脱壳前的预处理,且采用静态分析的方式,使本发明所述方法简单高效,便于实施操作。此外,本发明实施例采用十折交叉验证方法从预设的分类器中选择出最优分类器,进一步提高了所述方法的效率和准确率。本发明实施例采用Map Reduce架构计算信息上,将耗时的熵计算过程分而治之,达到并行的效果,提高了系统整体可扩展性和吞吐量,从而高了为提高信息熵计算的速度,进而提高了所述方法的识别效率。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (10)

1.一种应用程序的加壳识别方法,其特征在于:包括:
从已标记的APK文件中提取应用特征,构建样本集,其中,所述已标记的APK文件包括标记为加固的APK文件和标记为未加固的APK文件;
将所述样本集划分为训练集和测试集;
根据所述样本集和测试集训练预设分类器,选择最优分类器;
将待检测的APK文件输入所述最优分类器来识别其是否加壳。
2.根据权利要求1所述的应用程序的加壳识别方法,其特征在于:
所述从已标记的APK文件中提取应用特征,包括以下步骤:
采用静态分析的方法从已标记的APK文件中提取应用特征。
3.根据权利要求1所述的应用程序的加壳识别方法,其特征在于:
所述应用特征包括主程序、DEX比重和APK信息熵。
4.根据权利要求3所述的应用程序的加壳识别方法,其特征在于:
所述方法还包括,搭建Map Reduce架构的分类集群,计算所述APK信息熵。
5.根据权利要求1所述的应用程序的加壳识别方法,其特征在于:
所述将所述样本集划分为训练集和测试集,包括以下步骤:
采用随机抽取的方式,将所述样本集划分为训练集和测试集,所述训练集和测试集的比例分别为75%和25%。
6.根据权利要求1所述的应用程序的加壳识别方法,其特征在于:
所述根据所述样本集和测试集训练预设分类器,选择最优分类器,包括以下步骤:
根据所述样本集和测试集训练预设分类器;
采用十折交叉验证方法选出最优分类器。
7.根据权利要求6所述的应用程序的加壳识别方法,其特征在于:
所述采用十折交叉验证方法选出最优分类器,包括以下步骤:
采用十折交叉验证方法选出每种预设分类器的最优预设分类器,再从所有所述最优预设分类其中选择出最优分类器;或者,
采用十折交叉验证方法训练所有的预设分类器,并从中选出最优分类器。
8.根据权利要求1所述的应用程序的加壳识别方法,其特征在于:
所述预设分类器包括贝叶斯分类器、J48决策树分类器、K近邻分类器、随机森林分类器、MLP分类器、SVM分类器中的一种或多种。
9.一种控制器,其包括存储器与处理器,其特征在于:所述存储器存储有计算机程序,所述程序在被所述处理器执行时能够实现权利要求1至8中任意一项权利要求所述的方法的步骤。
10.一种计算机可读存储介质,用于存储计算机指令,其特征在于:所述指令在由一计算机或处理器执行时实现如权利要求1至8中任意一项权利要求所述的方法的步骤。
CN201810495785.2A 2018-05-22 2018-05-22 一种安卓应用程序的加壳识别方法 Pending CN108710800A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810495785.2A CN108710800A (zh) 2018-05-22 2018-05-22 一种安卓应用程序的加壳识别方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810495785.2A CN108710800A (zh) 2018-05-22 2018-05-22 一种安卓应用程序的加壳识别方法

Publications (1)

Publication Number Publication Date
CN108710800A true CN108710800A (zh) 2018-10-26

Family

ID=63868423

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810495785.2A Pending CN108710800A (zh) 2018-05-22 2018-05-22 一种安卓应用程序的加壳识别方法

Country Status (1)

Country Link
CN (1) CN108710800A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111967002A (zh) * 2020-07-09 2020-11-20 国家计算机网络与信息安全管理中心 一种应用程序的加壳检测方法及装置
EP3918500B1 (en) * 2019-03-05 2024-04-24 Siemens Industry Software Inc. Machine learning-based anomaly detections for embedded software applications

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102024112A (zh) * 2010-12-17 2011-04-20 四川大学 基于静态特征的pe文件加壳检测方法
CN103279711A (zh) * 2013-05-03 2013-09-04 国家电网公司 一种静态特征值稳定的pe文件加壳检测方法
CN105205358A (zh) * 2015-09-21 2015-12-30 中科信息安全共性技术国家工程研究中心有限公司 一种识别Android APP加固的方法及检测方法
CN105740703A (zh) * 2016-01-29 2016-07-06 北京奇虎科技有限公司 一种应用程序的加固方法及装置
CN106650330A (zh) * 2016-12-22 2017-05-10 合肥国信车联网研究院有限公司 一种基于Dex加载器的Android应用软件加固保护方法
CN106845240A (zh) * 2017-03-10 2017-06-13 西京学院 一种基于随机森林的Android恶意软件静态检测方法
US20170357814A1 (en) * 2008-10-21 2017-12-14 Lookout, Inc. Methods and systems for blocking the installation of an application to improve the functioning of a mobile communications device

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170357814A1 (en) * 2008-10-21 2017-12-14 Lookout, Inc. Methods and systems for blocking the installation of an application to improve the functioning of a mobile communications device
CN102024112A (zh) * 2010-12-17 2011-04-20 四川大学 基于静态特征的pe文件加壳检测方法
CN103279711A (zh) * 2013-05-03 2013-09-04 国家电网公司 一种静态特征值稳定的pe文件加壳检测方法
CN105205358A (zh) * 2015-09-21 2015-12-30 中科信息安全共性技术国家工程研究中心有限公司 一种识别Android APP加固的方法及检测方法
CN105740703A (zh) * 2016-01-29 2016-07-06 北京奇虎科技有限公司 一种应用程序的加固方法及装置
CN106650330A (zh) * 2016-12-22 2017-05-10 合肥国信车联网研究院有限公司 一种基于Dex加载器的Android应用软件加固保护方法
CN106845240A (zh) * 2017-03-10 2017-06-13 西京学院 一种基于随机森林的Android恶意软件静态检测方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3918500B1 (en) * 2019-03-05 2024-04-24 Siemens Industry Software Inc. Machine learning-based anomaly detections for embedded software applications
CN111967002A (zh) * 2020-07-09 2020-11-20 国家计算机网络与信息安全管理中心 一种应用程序的加壳检测方法及装置

Similar Documents

Publication Publication Date Title
US10915631B2 (en) Deep learning on execution trace data for exploit detection
Sun et al. SigPID: significant permission identification for android malware detection
Naeem et al. Identification of malicious code variants based on image visualization
Su et al. A deep learning approach to android malware feature learning and detection
Mosli et al. Automated malware detection using artifacts in forensic memory images
WO2021096649A1 (en) Detecting unknown malicious content in computer systems
US20110055123A1 (en) Systems and Methods for Using Multiple In-line Heuristics to Reduce False Positives
Yang et al. Detecting android malware by applying classification techniques on images patterns
Narra et al. Clustering versus SVM for malware detection
CN109598124A (zh) 一种webshell检测方法以及装置
CN112148305B (zh) 一种应用检测方法、装置、计算机设备和可读存储介质
KR20200039912A (ko) Ai 기반 안드로이드 악성코드 자동화 분석 시스템 및 방법
WO2022100489A1 (en) System, method and apparatus for malicious software detection
Elkhawas et al. Malware detection using opcode trigram sequence with SVM
CN110704841A (zh) 一种基于卷积神经网络的大规模安卓恶意应用检测系统及方法
Chavan et al. A comparative analysis of android malware
Park et al. Birds of a feature: Intrafamily clustering for version identification of packed malware
Ognev et al. Clustering of malicious executable files based on the sequence analysis of system calls
CN108710800A (zh) 一种安卓应用程序的加壳识别方法
CN108229168B (zh) 一种嵌套类文件的启发式检测方法、系统及存储介质
Shi et al. SFCGDroid: android malware detection based on sensitive function call graph
Li et al. SynDroid: An adaptive enhanced Android malware classification method based on CTGAN-SVM
CN111783088B (zh) 一种恶意代码家族聚类方法、装置和计算机设备
Pei et al. Combining multi-features with a neural joint model for Android malware detection
CN110826062B (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20181026

RJ01 Rejection of invention patent application after publication