CN112100621B - 一种基于敏感权限和api的安卓恶意应用检测方法 - Google Patents

一种基于敏感权限和api的安卓恶意应用检测方法 Download PDF

Info

Publication number
CN112100621B
CN112100621B CN202010951202.XA CN202010951202A CN112100621B CN 112100621 B CN112100621 B CN 112100621B CN 202010951202 A CN202010951202 A CN 202010951202A CN 112100621 B CN112100621 B CN 112100621B
Authority
CN
China
Prior art keywords
api
authority
sample
android
feature
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
Application number
CN202010951202.XA
Other languages
English (en)
Other versions
CN112100621A (zh
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.)
Harbin Engineering University
Original Assignee
Harbin Engineering University
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 Harbin Engineering University filed Critical Harbin Engineering University
Priority to CN202010951202.XA priority Critical patent/CN112100621B/zh
Publication of CN112100621A publication Critical patent/CN112100621A/zh
Application granted granted Critical
Publication of CN112100621B publication Critical patent/CN112100621B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F18/243Classification techniques relating to the number of classes
    • G06F18/24323Tree-organised classifiers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明属于移动端网络安全技术领域,具体涉及一种基于敏感权限和API的安卓恶意应用检测方法。本发明解决了现有的安卓恶意应用检测静态分析时只关注那些具有高风险的特征,而忽略了低风险的特征的情况的问题。本发明在获取权限和API特征之后,不仅考虑了高风险的敏感特征,而且还考虑了低风险的敏感特征,通过计算每个权限和API的敏感度,去除掉敏感度低的、冗余的权限和API特征,减少了权限和API的数量,提高了对恶意应用程序检测的速度和准确度。

Description

一种基于敏感权限和API的安卓恶意应用检测方法
技术领域
本发明属于移动端网络安全技术领域,具体涉及一种基于敏感权限和API的安卓恶意应用检测方法。
背景技术
近年来,在各类移动智能设备操作***中,安卓***以其开源的特性迅速成为了移动终端的主流操作***。随着各类安卓下载平台的不断扩大,众多恶意应用开发者将攻击的眼光瞄准了Android应用。恶意应用的很多操作,可能用户甚至感受不到直至造成了损失,比如窃取用户隐私数据,包括电话簿、邮箱、位置、密码以及文件等,还有进行资费相关的恶意行为,如短信电话的恶意扣费、登录银行账户等等。在各个不同平台中,Android市场的高危应用和恶意应用数量之多居各应用市场之首。2019年全年,360安全大脑累计为全国手机用户拦截恶意程序攻击约9.5亿次,平均每天拦截手机恶意程序攻击约259.2万次。共截获移动端新增恶意程序样本约180.9万个,平均每天截获新增手机恶意程序样本约0.5万个。特别是5G时代的到来使得移动设备的使用越来越方便、快捷,但随之而来的安全问题也日益突出,所以如何有效地解决Android平台的安全问题,是当今世界一个热点研究领域。
为了更好的解决现如今安卓存在的问题,大量学者将研究重点放在安卓恶意应用程序的检测方法上。当前针对安卓恶意应用的检测方法主要可分为静态分析、动态分析。静态分析不用真正运行Android应用程序,而是使用逆向工程、模式匹配、静态***调用等技术,解析程序源代码或者字节码,对程序进行数据流分析、控制流分析,用来发现程序中可能存在的恶意行为执行路径。Hou S等人基于对从smali文件中提取的静态API调用的分析,将属于smali代码中某些方法的API调用进一步分类为一个块。然后根据生成的代码块,应用深度学习框架,用于检测未知的Android恶意软件。(Hou S,Saas A,Ye Y,etal.DroidDelver:An Android Malware Detection System Using Deep Belief NetworkBased on API Call Blocks[M]//Web-Age Information Management.SpringerInternational Publishing,2016.)动态分析是将应用置于真实设备环境或者虚拟设备环境中运行,生成尽可能多的执行路径去覆盖代码片段,并对运行时的行为进行监控,采取权限变更、网络I/O,***调用等程序运行时数据,然后对这些数据进行进一步分析以检测Android应用程序是否可能存在安全问题。因此,动态分析可以发现一些动态加载、代码混淆等应用运行时才可能出现的恶意行为。Dash等人提出的DroidScribe则收集了包括***调用、解码的Binder通信、抽象出的行为模式等多维度,多层级的动态特征,利用SVM分类算法,对恶意软件进行检测并分类。(Dash S K,Suarez-Tangil G,Khan S,etal.Droidscribe:Classifying android malware based on runtime behavior[C]//2016IEEE Security and Privacy Workshops(SPW).IEEE,2016:252-261)
综上所述,由于动态检测技术在时间和资源消耗上有较大开销,而且提取到的特征信息并不稳定,而静态检测很好地解决了这一困难。在实际应用中,安卓应用市场每一天都会上架很多应用程序,动态检测需要的花销很难在短时间内检测完平台上的恶意程序,静态检测技术则很好地把效率和开销平衡起来,以较低的时间和资源为代价,获得一个较高的检测精度,适合安卓应用市场的需求。
发明内容
本发明的目的在于解决现有的安卓恶意应用检测静态分析时只关注那些具有高风险的特征,而忽略了低风险的特征的情况,提供一种基于敏感权限和API的安卓恶意应用检测方法。
本发明的目的通过如下技术方案来实现:包括以下步骤:
步骤1:输入待检测的安卓应用程序样本,取部分样本构造训练集,其余样本组成测试集;对训练集中安卓应用程序样本进行标定,将训练集划分为恶意应用程序集M和良性应用程序集B;设定敏感度阈值η、随机森林分类器中的参数d和k;
步骤2:获取训练集中安卓应用程序样本的权限特征集合P={p1,p2,…,pi,…}和API特征集合A={a1,a2,…,ai,…};
步骤3:计算权限特征集合P中每一个权限pi的敏感度S(pi);
Figure BDA0002676992260000021
Figure BDA0002676992260000022
Figure BDA0002676992260000023
其中,I(pi,m)表示权限pi和恶意应用程序的相关性,m∈M;I(pi,b)表示权限pi和良性应用程序的相关性,b∈B;p(pi)为权限pi出现在安卓应用程序样本中的概率;p(m)为安卓应用程序样本是恶意应用程序的概率;p(b)为安卓应用程序样本是良性应用程序的概率;p(pi,m)为权限pi出现在安卓应用程序样本中且该样本是恶意应用程序时的概率;p(pi,b)为权限pi出现在安卓应用程序样本中且该样本是良性应用程序时的概率;
步骤4:计算API特征集合A中每一个API特征ai的敏感度S(ai);
Figure BDA0002676992260000031
Figure BDA0002676992260000032
Figure BDA0002676992260000033
其中,I(ai,m)表示API特征ai和恶意应用程序的相关性;I(ai,b)表示API特征ai和良性应用程序的相关性;p(ai)为API特征ai出现在安卓应用程序样本中的概率;p(ai,m)为API特征ai出现在安卓应用程序样本中且该样本是恶意应用程序时的概率;p(ai,b)为API特征ai出现在安卓应用程序样本中且该样本是良性应用程序时的概率;
步骤5:对权限特征集合P和API特征集合A进行筛选;
若权限特征集合P中权限pi的敏感度S(pi)大于敏感度阈值η,则在权限特征集合P中保留权限pi;否则,在权限特征集合P中删除该权限;
若API特征集合A中API特征ai的敏感度S(ai)大于敏感度阈值η,则在API特征集合A中保留API特征ai;否则,在在API特征集合A中删除该API特征;
步骤6:使用筛选后的权限特征集合P和API特征集合A构造随机森林分类器;
步骤6.1:从训练集的N个安卓应用程序样本中有放回的抽取N次,得到包含N个安卓应用程序样本的数据集D;其中,N为训练集中安卓应用程序样本的数量;
步骤6.2:在对每个节点进行***时,从权限特征集合P和API特征集合A中随机选出d个静态特征,分别计算d个静态特征的信息增益,选择信息增益最大的静态特征作为当前节点的***属性;基于节点的***属性对节点进行***,将数据集D中拥有该***属性的安卓应用程序样本分到该节点的左节点中,将其余安卓应用程序样本分到该节点的右节点中;
步骤6.3:对决策树中每个节点按照步骤6.2进行***,直到该节点的所有样例都属于恶意应用程序或者都属于良性应用程序时,该节点停止***;
步骤6.4:重复执行步骤6.1至步骤6.3,生成k棵决策树;将k棵决策树组合形成随机森林分类器;
步骤7:获取测试集中安卓应用程序样本的权限特征集合Pd和API特征集合Ad,将测试集的权限特征集合Pd和API特征集合Ad输入到训练好的随机森林分类器中,得到检测结果。
本发明还可以包括:
所述的步骤2中获取训练集中安卓应用程序样本的权限特征集合P={p1,p2,…,pi,…}和API特征集合A={a1,a2,…,ai,…}的方法具体为:
步骤2.1:使用工具apktool对训练集中安卓应用程序样本进行反编译,反编译后生成的文件包括AndroidManifest.xml、res文件夹、apktool.yml和smali文件夹;
步骤2.2:从AndroidManifest.xml中获取权限信息,并删除掉重复的权限,将所有去重后的权限特征构成一个权限特征集合P={p1,p2,…,pi,…};
步骤2.3:遍历每个smali文件,提取出所有API数据,包括API名称、参数和API返回值,对每个样本中提取的API信息进行去重,将去重后的API调用信息构成一个API特征集合A={a1,a2,…,ai,…}。
本发明的有益效果在于:
本发明解决了现有的安卓恶意应用检测静态分析时只关注那些具有高风险的特征,而忽略了低风险的特征的情况的问题。本发明在获取权限和API特征之后,不仅考虑了高风险的敏感特征,而且还考虑了低风险的敏感特征,通过计算每个权限和API的敏感度,去除掉敏感度低的、冗余的权限和API特征,减少了权限和API的数量,提高了对恶意应用程序检测的速度和准确度。
附图说明
图1是一种基于敏感权限和API的安卓恶意应用检测方法的流程图。
图2是本发明实施例中对应的随机森林中的第i棵决策树,其中i={1,2,3,,k}。
具体实施方式
下面结合附图对本发明做进一步描述。
本发明属于移动端网络安全领域,涉及一种安卓恶意应用检测方法,具体涉及一种基于敏感权限和API的安卓恶意应用检测方法。
由于动态检测技术在时间和资源消耗上有较大开销,而且提取到的特征信息并不稳定,而静态检测很好地解决了这一困难。在实际应用中,安卓应用市场每一天都会上架很多应用程序,动态检测需要的花销很难在短时间内检测完平台上的恶意程序,静态检测技术则很好地把效率和开销平衡起来,以较低的时间和资源为代价,获得一个较高的检测精度,适合安卓应用市场的需求。所以,本发明最终选择使用静态检测技术。但以往的方法提取静态特征时只关注那些高风险的敏感特征,往往忽略了低风险的敏感特征。而低风险的敏感特征同样也具备区分应用程序良与恶的强大能力。所以本发明提出一种基于敏感权限和API的安卓恶意应用检测方法,提取到的敏感权限和API中不仅有高风险的敏感特征,而且还有低风险的敏感特征,然后使用这些特征训练得到一个随机森林分类器进行分类,可以在一个较短时间内得到一个较高的检测率。
为了解决现有的安卓恶意应用检测静态分析时只关注那些具有高风险的特征,而忽略了低风险的特征的情况,本发明提出一种基于敏感API提取的安卓恶意应用检测方法。首先使用工具apktool对样本进行反编译来获取到样本中的权限和API调用信息,然后根据敏感度删除掉敏感度低的特征,保留敏感度高的特征形成一个特征集,这个特征集中包含了高风险和低风险的特征,最后根据特征集训练得到一个随机森林分类器来对未知应用程序进行分类。本发明的具体内容如下:
步骤1:获取安卓应用程序样本,包括恶意应用程序和良性应用程序。恶意应用程序是指任何有损于用户利益的应用程序,良性应用程序是指不损害用户利益的应用程序。
步骤2:获取应用程序样本中的静态特征,静态特征中仅包括权限特征和API调用信息。将权限特征构成一个权限特征集合P={p1,p2,…,pi,…},将API调用信息构成一个API特征集合A={a1,a2,…,ai,…}。
步骤3:获得权限集合P中权限pi的敏感度S(pi)和API调用集合A中API调用ai的敏感度S(ai)。
步骤4:将S(pi)与敏感度阈值η进行比较。如果S(pi)>η,则在集合P中保留该权限,否则,在集合P中删除该权限。将S(ai)与敏感度阈值η进行比较。如果S(ai)>η,则在集合A中保留该API,否则,在集合A中删除该API。
步骤5:使用步骤4获取到的权限特征集和API特征集,结合已知的使用信息增益判断***属性的方法来构建出k棵决策树,这k棵决策树组合成为一个随机森林分类器。
步骤6:根据步骤2提取待检测应用程序中的权限特征集合Pd和API调用特征集合Ad,基于Pd和Ad使用随机森林分类器对待检测的应用程序进行检测。
上述步骤2所述获取应用程序样本中的静态特征的具体过程为:
(2.1)使用工具apktool对样本进行反编译,反编译后生成的文件包括AndroidManifest.xml、res文件夹、apktool.yml和smali文件夹。
(2.2)从AndroidManifest.xml中获取权限信息,并删除掉重复的权限,将所有去重后的权限特征构成一个权限特征集合P={p1,p2,…,pi,…}。
(2.3)遍历每个smali文件,提取出所有API数据,包括API名称、参数和API返回值,对每个样本中提取的API信息进行去重,将去重后的API调用信息构成一个API特征集合A={a1,a2,…,ai,…}。
上述步骤3所述获得权限集合P中权限pi的敏感度S(pi)和API调用集合A中API调用ai的敏感度S(ai)的具体过程为:
通过互信息公式获取权限pi和恶意应用程序m的相关性I(pi,m),权限pi和良性应用程序b的相关性I(pi,b)。
Figure BDA0002676992260000061
Figure BDA0002676992260000062
其中,p(pi)是权限pi出现在样本中的概率,p(m)是应用程序是恶意应用程序的概率,p(b)是应用程序是良性应用程序的概率,p(pi,m)是pi出现在样本中同时应用程序是恶意应用程序时的概率,p(pi,b)是pi出现在样本中同时应用程序是良性应用程序时的概率。
由I(pi,m)和I(pi,b)可以计算出pi的敏感度S(pi)。
Figure BDA0002676992260000063
其中,S(pi)的范围为[0,1]。当S(pi)=0时表示权限pi在恶意应用程序和良性应用程序中都经常被使用是一个不敏感的权限。当S(pi)=1时表示权限pi是一个敏感度高的权限,该权限是一个只在良性应用程序中调用的低风险的权限,或者是一个只在恶意应用程序中调用的高风险的权限。
而API调用ai的敏感度S(ai)的计算过程与权限pi的敏感度S(pi)是一样的。
本发明具有的有益效果是:本发明在获取权限和API特征之后,不仅考虑了高风险的敏感特征,而且还考虑了低风险的敏感特征,通过计算每个权限和API的敏感度,去除掉敏感度低的、冗余的权限和API特征,减少了权限和API的数量,提高了对恶意应用程序检测的速度和准确度。
实施例1:
一种基于敏感权限和API的安卓恶意应用检测方法,包括以下步骤:
步骤1:获取安卓应用程序样本,包括恶意应用程序和良性应用程序。恶意应用程序是指任何有损于用户利益的应用程序,良性应用程序是指不损害用户利益的应用程序。
步骤2:获取应用程序样本中的静态特征,静态特征中仅包括权限特征和API调用信息。将权限特征构成一个权限特征集合P={p1,p2,…,pi,…},将API调用信息构成一个API特征集合A={a1,a2,…,ai,…}。
步骤3:获得权限集合P中权限pi的敏感度S(pi)和API调用集合A中API调用ai的敏感度S(ai)。
步骤4:将S(pi)与敏感度阈值η进行比较。如果S(pi)>η,则在集合P中保留该权限,否则,在集合P中删除该权限。将S(ai)与敏感度阈值η进行比较。如果S(ai)>η,则在集合A中保留该API,否则,在集合A中删除该API。
步骤5:使用步骤4获取到的权限特征集和API特征集,结合已知的使用信息增益判断***属性的方法来构建出k棵决策树,这k棵决策树组合成为一个随机森林分类器。
步骤6:根据步骤2提取待检测应用程序中的权限特征集合Pd和API调用特征集合Ad,基于Pd和Ad使用随机森林分类器对待检测的应用程序进行检测。
上述步骤2所述获取应用程序样本中的静态特征的具体过程为:
(2.1)使用工具apktool对样本进行反编译,反编译后生成的文件包括AndroidManifest.xml、res文件夹、apktool.yml和smali文件夹。
(2.2)从AndroidManifest.xml中获取权限信息,并删除掉重复的权限,将所有去重后的权限特征构成一个权限特征集合P={p1,p2,…,pi,…}。
(2.3)遍历每个smali文件,提取出所有API数据,包括API名称、参数和API返回值,对每个样本中提取的API信息进行去重,将去重后的API调用信息构成一个API特征集合A={a1,a2,…,ai,…}。
上述步骤3所述获得权限集合P中权限pi的敏感度S(pi)和API调用集合A中API调用ai的敏感度S(ai)的具体过程为:
通过互信息公式获取权限pi和恶意应用程序m的相关性I(pi,m),权限pi和良性应用程序b的相关性I(pi,b)。
Figure BDA0002676992260000081
Figure BDA0002676992260000082
其中,p(pi)是权限pi出现在样本中的概率,p(m)是应用程序是恶意应用程序的概率,p(b)是应用程序是良性应用程序的概率,p(pi,m)是pi出现在样本中同时应用程序是恶意应用程序时的概率,p(pi,b)是pi出现在样本中同时应用程序是良性应用程序时的概率。
由I(pi,m)和I(pi,b)可以计算出pi的敏感度S(pi)。
Figure BDA0002676992260000083
其中,S(pi)的范围为[0,1]。当S(pi)=0时表示权限pi在恶意应用程序和良性应用程序中都经常被使用是一个不敏感的权限。当S(pi)=1时表示权限pi是一个敏感度高的权限,该权限是一个只在良性应用程序中调用的低风险的权限,或者是一个只在恶意应用程序中调用的高风险的权限。
而API调用ai的敏感度S(ai)的计算过程与权限pi的敏感度S(pi)是一样的。
上述步骤5所述利用已知的方法构建一个随机森林分类器的具体过程为:
(5.1)N为训练样例的个数,从N个训练样例中不放回的抽取N次,最终得到一个包含N个训练样例的数据集D。
(5.2)在对每个节点进行***时,从M个静态特征中随机选出m个静态特征(M为权限特征和API特征的总和且m远远小于M),分别计算这m个静态特征的信息增益g,选择信息增益最大的作为当前节点的***属性,基于***属性对每个节点进行***,将数据集D中拥有该***属性的的应用程序分到该节点的左节点中,没有拥有该***属性的应用程序分到该节点的右节点中。
(5.3)当前这棵决策树的每个节点都按照步骤(5.2)进行***,直到该节点的所有样例都属于恶意应用程序或者都属于良性应用程序时,该节点停止***。
(5.4)按照步骤(5.1)(5.2)(5.3)的顺序重复生成k棵决策树后,将这k棵决策树组合形成一个随机森林分类器。
上述步骤6使用随机森林分类器对待检测的应用程序进行检测的具体过程为:
(6.1)对于随机森林中的第i棵决策树,其形状如图2所示,对待检测应用程序进行判断时,首先判断节点1中的权限p1是否存在于Pd中,如果存在,则转向节点1的左侧节点2。由于节点2是叶子节点,并且节点2中的应用程序都为良性,所以判断待检测应用程序为良性应用程序。如果不存在,则转向节点1的右侧节点3,判断节点3中的APIa1是否存在于Ad中,如果不存在,则转向节点3的右侧节点5,节点5是叶子节点,并且节点5中都为恶意应用程序,所以判断待检测应用程序为恶意应用程序。
(6.2)让随机森林中的k棵决策树都按照步骤(6.1)对待检测应用程序进行判断,最终根据k个判断结果中的多数来决定待检测应用程序的类别。例如,一共有100个决策树,其中70个决策树判断为恶意应用程序,30个决策树判断为良性应用程序,则最终判断待检测应用程序为一个恶意应用程序。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (2)

1.一种基于敏感权限和API的安卓恶意应用检测方法,其特征在于,包括以下步骤:
步骤1:输入待检测的安卓应用程序样本,取部分样本构造训练集,其余样本组成测试集;对训练集中安卓应用程序样本进行标定,将训练集划分为恶意应用程序集M和良性应用程序集B;设定敏感度阈值η、随机森林分类器中的参数d和k;
步骤2:获取训练集中安卓应用程序样本的权限特征集合P={p1,p2,…,pi,…}和API特征集合A={a1,a2,…,ai,…};
步骤3:计算权限特征集合P中每一个权限pi的敏感度S(pi);
Figure FDA0002676992250000011
Figure FDA0002676992250000012
Figure FDA0002676992250000013
其中,I(pi,m)表示权限pi和恶意应用程序的相关性,m∈M;I(pi,b)表示权限pi和良性应用程序的相关性,b∈B;p(pi)为权限pi出现在安卓应用程序样本中的概率;p(m)为安卓应用程序样本是恶意应用程序的概率;p(b)为安卓应用程序样本是良性应用程序的概率;p(pi,m)为权限pi出现在安卓应用程序样本中且该样本是恶意应用程序时的概率;p(pi,b)为权限pi出现在安卓应用程序样本中且该样本是良性应用程序时的概率;
步骤4:计算API特征集合A中每一个API特征ai的敏感度S(ai);
Figure FDA0002676992250000014
Figure FDA0002676992250000015
Figure FDA0002676992250000016
其中,I(ai,m)表示API特征ai和恶意应用程序的相关性;I(ai,b)表示API特征ai和良性应用程序的相关性;p(ai)为API特征ai出现在安卓应用程序样本中的概率;p(ai,m)为API特征ai出现在安卓应用程序样本中且该样本是恶意应用程序时的概率;p(ai,b)为API特征ai出现在安卓应用程序样本中且该样本是良性应用程序时的概率;
步骤5:对权限特征集合P和API特征集合A进行筛选;
若权限特征集合P中权限pi的敏感度S(pi)大于敏感度阈值η,则在权限特征集合P中保留权限pi;否则,在权限特征集合P中删除该权限;
若API特征集合A中API特征ai的敏感度S(ai)大于敏感度阈值η,则在API特征集合A中保留API特征ai;否则,在API特征集合A中删除该API特征;
步骤6:使用筛选后的权限特征集合P和API特征集合A构造随机森林分类器;
步骤6.1:从训练集的N个安卓应用程序样本中有放回的抽取N次,得到包含N个安卓应用程序样本的数据集D;其中,N为训练集中安卓应用程序样本的数量;
步骤6.2:在对每个节点进行***时,从权限特征集合P和API特征集合A中随机选出d个静态特征,分别计算d个静态特征的信息增益,选择信息增益最大的静态特征作为当前节点的***属性;基于节点的***属性对节点进行***,将数据集D中拥有该***属性的安卓应用程序样本分到该节点的左节点中,将其余安卓应用程序样本分到该节点的右节点中;
步骤6.3:对决策树中每个节点按照步骤6.2进行***,直到该节点的所有样例都属于恶意应用程序或者都属于良性应用程序时,该节点停止***;
步骤6.4:重复执行步骤6.1至步骤6.3,生成k棵决策树;将k棵决策树组合形成随机森林分类器;
步骤7:获取测试集中安卓应用程序样本的权限特征集合Pd和API特征集合Ad,将测试集的权限特征集合Pd和API特征集合Ad输入到训练好的随机森林分类器中,得到检测结果。
2.根据权利要求1所述的一种基于敏感权限和API的安卓恶意应用检测方法,其特征在于:所述的步骤2中获取训练集中安卓应用程序样本的权限特征集合P={p1,p2,…,pi,…}和API特征集合A={a1,a2,…,ai,…}的方法具体为:
步骤2.1:使用工具apktool对训练集中安卓应用程序样本进行反编译,反编译后生成的文件包括AndroidManifest.xml、res文件夹、apktool.yml和smali文件夹;
步骤2.2:从AndroidManifest.xml中获取权限信息,并删除掉重复的权限,将所有去重后的权限特征构成一个权限特征集合P={p1,p2,…,pi,…};
步骤2.3:遍历每个smali文件,提取出所有API数据,包括API名称、参数和API返回值,对每个样本中提取的API信息进行去重,将去重后的API调用信息构成一个API特征集合A={a1,a2,…,ai,…}。
CN202010951202.XA 2020-09-11 2020-09-11 一种基于敏感权限和api的安卓恶意应用检测方法 Active CN112100621B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010951202.XA CN112100621B (zh) 2020-09-11 2020-09-11 一种基于敏感权限和api的安卓恶意应用检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010951202.XA CN112100621B (zh) 2020-09-11 2020-09-11 一种基于敏感权限和api的安卓恶意应用检测方法

Publications (2)

Publication Number Publication Date
CN112100621A CN112100621A (zh) 2020-12-18
CN112100621B true CN112100621B (zh) 2022-05-20

Family

ID=73752103

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010951202.XA Active CN112100621B (zh) 2020-09-11 2020-09-11 一种基于敏感权限和api的安卓恶意应用检测方法

Country Status (1)

Country Link
CN (1) CN112100621B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115408702B (zh) * 2022-11-01 2023-02-14 浙江城云数字科技有限公司 Stacking接口运行风险等级评估方法及其应用

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105306439A (zh) * 2015-09-17 2016-02-03 哈尔滨工程大学 一种基于决策树自修复的特征规则检测方法
CN106203122A (zh) * 2016-07-25 2016-12-07 西安交通大学 基于敏感子图的安卓恶意重打包软件检测方法
CN106845240A (zh) * 2017-03-10 2017-06-13 西京学院 一种基于随机森林的Android恶意软件静态检测方法
CN106919841A (zh) * 2017-03-10 2017-07-04 西京学院 一种高效的基于旋转森林的Android恶意软件检测模型DroidDet
CN107153789A (zh) * 2017-04-24 2017-09-12 西安电子科技大学 利用随机森林分类器实时检测安卓恶意软件的方法
CN107180192A (zh) * 2017-05-09 2017-09-19 北京理工大学 基于多特征融合的安卓恶意应用程序检测方法和***
CN109684840A (zh) * 2018-12-20 2019-04-26 西安电子科技大学 基于敏感调用路径的Android恶意软件检测方法
CN109753800A (zh) * 2019-01-02 2019-05-14 重庆邮电大学 融合频繁项集与随机森林算法的Android恶意应用检测方法及***
CN109858250A (zh) * 2019-02-20 2019-06-07 哈尔滨工程大学 一种基于级联分类器的安卓恶意代码检测模型方法
CN110263539A (zh) * 2019-05-15 2019-09-20 湖南警察学院 一种基于并行集成学习的安卓恶意应用检测方法及***
CN110851834A (zh) * 2019-11-18 2020-02-28 北京工业大学 融合多特征分类的安卓恶意应用检测方法

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105306439A (zh) * 2015-09-17 2016-02-03 哈尔滨工程大学 一种基于决策树自修复的特征规则检测方法
CN106203122A (zh) * 2016-07-25 2016-12-07 西安交通大学 基于敏感子图的安卓恶意重打包软件检测方法
CN106845240A (zh) * 2017-03-10 2017-06-13 西京学院 一种基于随机森林的Android恶意软件静态检测方法
CN106919841A (zh) * 2017-03-10 2017-07-04 西京学院 一种高效的基于旋转森林的Android恶意软件检测模型DroidDet
CN107153789A (zh) * 2017-04-24 2017-09-12 西安电子科技大学 利用随机森林分类器实时检测安卓恶意软件的方法
CN107180192A (zh) * 2017-05-09 2017-09-19 北京理工大学 基于多特征融合的安卓恶意应用程序检测方法和***
CN109684840A (zh) * 2018-12-20 2019-04-26 西安电子科技大学 基于敏感调用路径的Android恶意软件检测方法
CN109753800A (zh) * 2019-01-02 2019-05-14 重庆邮电大学 融合频繁项集与随机森林算法的Android恶意应用检测方法及***
CN109858250A (zh) * 2019-02-20 2019-06-07 哈尔滨工程大学 一种基于级联分类器的安卓恶意代码检测模型方法
CN110263539A (zh) * 2019-05-15 2019-09-20 湖南警察学院 一种基于并行集成学习的安卓恶意应用检测方法及***
CN110851834A (zh) * 2019-11-18 2020-02-28 北京工业大学 融合多特征分类的安卓恶意应用检测方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
An API Semantics-Aware Malware Detection Method Based on Deep Learning;Xin Ma等;《Security and Communication Networks》;20191111;第2019卷;第1-9页 *
Android平台下的基于应用分类和敏感权限挖掘的恶意应用检测方法研究;刘倩等;《计算机与数字工程》;20190620;第47卷(第6期);第1446-1451+148页 *
基于敏感权限和API的Android恶意软件家族分类方法;于媛尔等;《郑州大学学报(理学版)》;20200302;第52卷(第3期);第75-79+91页 *
基于随机森林的Android恶意应用检测研究;孙强强;《信息安全与通信保密》;20190610(第6期);第46-54页 *

Also Published As

Publication number Publication date
CN112100621A (zh) 2020-12-18

Similar Documents

Publication Publication Date Title
CN109753800B (zh) 融合频繁项集与随机森林算法的Android恶意应用检测方法及***
Arshad et al. SAMADroid: a novel 3-level hybrid malware detection model for android operating system
CN109635872B (zh) 身份识别方法、电子设备及计算机程序产品
CN106503558B (zh) 一种基于社团结构分析的Android恶意代码检测方法
Ficco Malware analysis by combining multiple detectors and observation windows
US9762593B1 (en) Automatic generation of generic file signatures
CN109614795B (zh) 一种事件感知的安卓恶意软件检测方法
Sandeep Static analysis of android malware detection using deep learning
CN112149124B (zh) 一种基于异构信息网络的安卓恶意程序检测的方法和***
Wang et al. LSCDroid: Malware detection based on local sensitive API invocation sequences
CN113901465A (zh) 一种基于异质网络的Android恶意软件检测方法
Ndagi et al. Machine learning classification algorithms for adware in android devices: a comparative evaluation and analysis
CN112100621B (zh) 一种基于敏感权限和api的安卓恶意应用检测方法
Li et al. Novel Android Malware Detection Method Based on Multi-dimensional Hybrid Features Extraction and Analysis.
Ahmad et al. A new cryptojacking malware classifier model based on dendritic cell algorithm
CN113468524B (zh) 基于rasp的机器学习模型安全检测方法
CN117527369B (zh) 基于哈希函数的安卓恶意攻击监测方法及***
Congyi et al. Method for detecting Android malware based on ensemble learning
CN114817925B (zh) 基于多模态图特征的安卓恶意软件检测方法及***
Shi et al. SFCGDroid: android malware detection based on sensitive function call graph
AbuAlghanam et al. Android Malware Detection System Based on Ensemble Learning
Du et al. A mobile malware detection method based on malicious subgraphs mining
CN108563950B (zh) 基于SVM的Android恶意软件检测方法
CN111240696A (zh) 移动恶意程序相似模块提取方法
Gumaa Graph approach for android malware detection using machine learning techniques

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