首页> 中国专利> 基于随机森林分类方法的Android平台恶意应用检测方法

基于随机森林分类方法的Android平台恶意应用检测方法

摘要

本发明公开了一种基于随机森林分类方法的Android平台恶意应用检测方法。包括下列步骤:获取APP样本,包括恶意和善意的APP样本;获取APP的所有可申请权限列表、API信息,得到权限集和API集;提取APP样本的静态特征,包括所申请的权限、所调用的API;基于各APP样本的静态特征、权限集和API集构建样本库,所述样本库包括的表项有:APP标识符、区分善意和恶意的类型标识符、对权限集中各权限的申请标识符、对API集中的各API的调用标识符;基于样本库构建随机森林的每棵决策树,得到随机森林分类器;基于随机森林分类器对待检测APP进行检测。本发明的实施,能实现对恶意APP的高效检测,提高Android平台的安全性。

著录项

  • 公开/公告号CN105550583A

    专利类型发明专利

  • 公开/公告日2016-05-04

    原文格式PDF

  • 申请/专利权人 电子科技大学;

    申请/专利号CN201510969901.6

  • 发明设计人 桂盛霖;杨漫游;王沐;李多航;

    申请日2015-12-22

  • 分类号G06F21/56(20130101);

  • 代理机构51203 电子科技大学专利中心;

  • 代理人周刘英

  • 地址 611731 四川省成都市高新区(西区)西源大道2006号

  • 入库时间 2023-12-18 15:54:55

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-02-13

    授权

    授权

  • 2016-06-01

    实质审查的生效 IPC(主分类):G06F21/56 申请日:20151222

    实质审查的生效

  • 2016-05-04

    公开

    公开

说明书

技术领域

本发明涉移动终端软件安全技术领域,尤其涉及一种将机器学习领域中的分类算 法应用于Android恶意应用检测的方法。

背景技术

近几年随着智能终端设备,尤其是智能手机的发展,人们的生活变得越来越方便。 现在的智能手机甚至能够完成许多以前必须在PC上才能完成的功能,这更加吸引了人们的 使用。然而,越来越庞大的智能手机用户群体也引起了许多恶意应用开发者的注意。随着智 能手机用户群体的发展,恶意应用的数量也在不断增长。恶意应用开始成为了手机安全和 用户隐私的一大威胁。在这样的情况下,寻找一种能够准确地批量检测恶意应用的方法就 显得十分必要。

在公开号为CN104123500A的专利申请中,描述了一种基于深度学习的Android平 台恶意应用检测方案,本方案通过对Android应用原始安装文件和运行时进行特征提取,然 后通过深度学习建立模型来进行检测。由于需要在运行时进行检测,故其检测的效率比较 低,效果不佳。

发明内容

本发明的发明目的在于:针对上述存在的问题,提供了一种Android恶意应用的检 测方法,通过使用随机森林分类方法,实现了Android平台下恶意应用与善意应用的区分, 保障了用户的利益。

本发明的基于随机森林分类方法的Android平台恶意应用检测方法,包括下列步 骤:

获取Android应用(以下简称APP)样本,包括善意应用样本和恶意样本;

获取APP的所有可申请权限、所有可调用API,得到权限集和API集;

提取各APP样本的静态特征,包括各应用样本所申请的权限、所调用的API;

基于各APP样本的静态特征、权限集和API集构建样本库,所述样本库包括的表项 有:APP标识符、区分善意和恶意的类型标识符、对权限集中各权限的申请标识符、对API集 中的各API的调用标识符;

根据样本库,构建随机森林的每棵决策树,得到随机森林分类器:

基于样本库进行取样,得到不同组的训练数据集,将一组训练数据集所包括的APP 作为决策树的根节点下的APP,对决策树的各节点进行分裂处理,得到一棵决策树:

随机选择基于当前节点下的m(其中m为预设值,用于计算最佳的分裂方式,其取值 小于样本库所包括的静态特征的总数)个静态特征,并分别计算各静态特征所对应的信息 增益;取信息增益最大的静态特征作为当前节点的分裂属性,基于分裂属性对每个节点进 行分裂,即将具有分裂属性所对应的静态特征的APP分到一个叶子节点,不具有分裂属性所 对应的静态特征的APP分到另一个叶子节点,直到当前节点下的APP的个数为1或分裂属性 用完;各叶子节点所属的类别取决于其下的APP的类型(善意或恶意),若同时包括两类APP, 则取决于包含APP个数最多的类型;

提取待检测APP的静态特征,基于所建模型对待检测APP进行分类,检测待检测APP 是否为恶意应用。

由于采用了上述技术方案,本发明的有益效果是:本发明通过提取APP的静态特 征:权限特征和API调用特征,结合机器学习领域中的随机森林分类方法,实现了对恶意APP 的高效检测,提高了Android平台的安全性。

附图说明

图1是本发明的流程图;

图2是具体实施方式中,保存特征信息的文件格式的示例图;

图3是具体实施方式中,分裂节点的示意图;

图4是具体实施方式中,随机森林中的一颗决策树的示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面结合实施方式和附图,对本发 明作进一步地详细描述。

为了实现准确地批量分析出APP是恶意的还是善意的这一难题,本发明提供了一 种基于随机森林分类方法的Android平台恶意应用检测方法。参见图1,本方法主要包括如 下五个步骤:

S1:获取APP样本,包括恶意和善意的APP样本;

S2:获取APP的所有可申请权限列表、API信息,得到权限集和API集;

S3:提取APP样本的静态特征,包括所申请的权限、所调用的API;

S4:基于各APP样本的静态特征、权限集和API集构建样本库,所述样本库包括的表 项有:APP标识符、区分善意和恶意的类型标识符、对权限集中各权限的申请标识符、对API 集中的各API的调用标识符;

S5:基于样本库,使用随机森林分类算法建立模型,即基于样本库构建随机森林的 每棵决策树,得到随机森林分类器;

S6:基于S5所建的随机森林分类器对待检测APP进行检测。

下面分别对各步骤的具体实施方式进行描述,以便更好地理解本发明:

S1:获取APP样本:从各种渠道获取APP样本安装文件,将获取到的获取APP样本分 成善意样本和恶意样本,并保存。

S2:获取APP的所有可申请权限列表、API信息:在Google的Android开发者网站 (http://developer.android.com/reference/android/Manifest.permission.html)上, 提供了安卓APP可以申请到的所有权限信息,将所提供的所有可以申请到的权限保存到本 地,形成一张列表,作为全集,即权限集。

获取APP的所有调用的API信息列表,对所有的样本执行步骤S302操作,得到所有 的样本调用到的所有API信息,去除重复内容。优选的,基于先验经验还可以过滤掉与善意 恶意鉴别基本无关的API后,再将所有留下的API信息保存到本地,形成一张列表,作为全 集,即API集。

S3:提取APP样本的静态特征:

S301:提取各APP样本的权限信息:

本步骤主要是通过使用androguard(https://github.com/androguard/ androguard)这个开源库来获取Android应用的权限信息,具体步骤如下:

(1)导入androguard库。

(2)将APP的APK(AndroidPackage)安装文件路径作为参数传递给androguard库的 APK类,调用这个类的get_permissions方法,便可以得到所有的这个应用所申请到的所有 权限信息。

(3)根据步骤S2所获取到的权限集,对所得到的权限信息进行过滤,得到这个应用 所使用的Android权限列表。

S302:提提取各APP样本的API调用信息:

本步骤主要是通过对APP的APK安装文件进行反编译,然后使用正则表达式匹配 API调用信息来进行的,具体步骤如下:

(1)使用unzip工具对应用的APK安装文件进行解压,获取应用文件中 “classes.dex”文件。

(2)使用dex2jar工具将“classes.dex”文件转化为jar文件“classes.jar”。

(3)使用unzip工具对“classes.jar”文件进行解压,得到相应的class文件。

(4)使用javap工具对class文件进行反编译

(5)使用正则表达式对反编译后的文件进行匹配,提取API调用信息。

(6)根据步骤S2提供的API集,对所得到的API信息进行过滤,得到当前APP样本的 AndroidAPI列表。

以上仅仅是给出了一种提取APP样本的静态特征的处理方式示例,本发明并不局 限于此,本领域技术人员还可以采用其他惯用方式得到各APP样本的静态特征。

S4:基于各APP样本的静态特征、权限集和API集构建样本库:

对所提取的各APP样本的静态特征按如下格式保存:

(1)对获取到的权限信息进行处理,保存成后缀名为.csv的文件。文件的每行代表 一个APP。每行的第一列为区分善意和恶意的类型标识符,若每行的第一列为0,则表示本行 的APP为善意;若每行的第一列为1,则表示本行的APP为善意;接下来的每一列,代表 Android系统的一个权限,列的值为0,表示没有这个权限,即没有申请该权限,列的值为1, 表示APP使用了这个权限,即申请到该权限。同一行每个数字之前用逗号隔开。

(2)对获取到的API调用信息文件进行处理,保存成后缀名为.csv的文件。文件的 每行代表一个APP。每行的第一列为区分善意和恶意的类型标识符,若每行的第一列为0,则 表示本行的APP为善意;若每行的第一列为1,则表示本行的APP为善意;接下来的每一列,代 表一个API,列的值为0,表示没有调用这个API,列的值为1,表示调用了这个API。同行的数 字之间用逗号隔开。注意保存的时候,APP的顺序应当与权限信息的保存顺序相同。

(3)把上述两个矩阵拼成一个。如前文所述,生成矩阵时保证了每一行对应同一个 APP,所以可以把其中一个矩阵的第一列去掉,然后把矩阵的行对齐直接拼接成新的矩阵。 最后得到的文件内容如图2所示。其中,第一列为APP的类型,0表示善意,1表示恶意。第二、 三列为API调用信息,对应API1和API2,第四列为APP权限信息,对应perm1。

即基于所提取的各APP样本的静态特征、得到权限集和API集,通过上述(1)~(3) 构建用于随机森林分类方法建模的样本库,该样本库包括的表项有:APP标识符、区分善意 和恶意的类型标识符、对权限集中各权限的申请标识符、对API集中的各API的调用标识符。

S5:基于样本库,使用随机森林分类算法建立模型:

在随机森林方法中建造每棵决策树的方法为:从N(表示训练样本的个数)个训练 案例中做有放回的取样,取样N次,形成一组训练数据集D(即bootstrap取样)。使用该训练 数据集D训练待构造的树。

预设一个数m,用于决定当在一个节点上做决定时,会使用到多少个变量,其中m应 小于M(表示特征的总数目,在本申请中,对应本发明的静态特征总数目)。

对于每一个节点,随机选择m个基于此点上的变量。根据这m个变量,计算其最佳的 分裂方式,直到节点满足分裂截止条件,从而得到每棵决策树

信息增益:特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)与 特征A给定条件下D的经验条件熵H(D|A)之差,即:g(D,A)=H(D)-H(D|A)。

信息熵:表示随机变量的不确定性。设X是一个有有限个取值的随机变量,其概率 分布为:P(X=xi)=pi,i=1,2,…,n,其中n表示随机变量X的总个数。则随机变量X的熵定义 为:当对数底为2时熵的单位为bit。

条件熵:设有随机变量(X,Y),其联合概率分布为:P(X=xi,Y=yi)=pij,i=1, 2,…,n,j=1,2,…,n,其中n表示随机变量(X,Y)的总个数。条件熵H(Y|X)表示在已知随机 变量X的条件下随机变量Y的不确定性,随机变量X给定的条件下随机变量Y的条件熵H(Y| X),定义为X给定条件下Y的条件概率分布的熵对X的数学期望:其中pi=P(X=xi),i=1,2,…,n。

当信息熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的 熵与条件熵分别称为经验熵和经验条件熵。

基于此,本发明使用随机森林分类算法建立模型,即基于样本库构建随机森林的 每棵决策树的过程具体为:

用N来表示训练样本的个数,M表示静态特征的总数目。以N=15,M=3为例进行描 述;设置用于决定当在一个节点上做决定时,会使用到的变量个数m,基于图2所示的样本 库,本实施方式中m的取值为3。

从N个训练案例中做有放回的取样,取样N次,形成一组训练数据集D。将一组训练 数据集D所对应的APP作为决策树的根节点下的APP。随机选择基于当前节点下的m个静态特 征,并分别计算各静态特征所对应的信息增益;取信息增益最大的静态特征作为当前节点 的分裂属性,基于分裂属性对每个节点进行分裂,即将具有分裂属性所对应的静态特征的 APP分到一个叶子节点,不具有分裂属性所对应的静态特征的APP分到另一个叶子节点,参 见图3,直到当前节点下的APP的个数为1或分裂属性用完。其中的一次分裂过程描述如下:

计算经验熵:H(D)=-915log915-615log615=0.971;

计算信息增益:

对于API1这个特征,当API1存在(为1)时,5个样本全部为恶意。当API1不存在(为 0)时,10个样本中有4个恶意。

所以对应API1的条件熵:H(D|Aapi1)=515log55+1015(-410log410-610log610)=0.647.

故可得到对应API1的信息增益:g(D,Aapi1)=H(D)-H(D|Aapi1)=0.324。

对于API2这个特征,当API2存在(为1)时,6个样本全部为恶意。当API1不存在(为 0)时,9个样本中有3个恶意。

所以对应API2的条件熵:H(D|Aapi2)=615log66+915(-39log39-69log69)=0.551.

故可得到对应API2的信息增益:g(D,Aapi2)=H(D)-H(D|Aapi2)=0.420。

对于权限1(perm1)这个特征,当权限1存在(为1)时,4个样本中1个为恶意。当权限 1不存在(为0)时,11个样本中有8个恶意。

所以对应perm1的条件熵H(D|Aperm1)为:

H(D|Aperm1)=415(-14log14-34log34)+1115(-311log311-811log811)=0.836;

故可得到对应perm1的信息增益为:g(D,Aperm1)=H(D)-H(D|Aperm1)=0.135。

因此选信息增益最大的静态特征,即API2为分裂节点的属性。分裂过程如图3所 示。

从根节点开始,基于是上述分裂方式对各节点进行分裂处理,直到当前节点下的 APP的个数为1或分裂属性用完。最后得到一颗完整的决策树。决策树的各叶子节点所属的 类别取决于其下的APP的类型(善意或恶意),若同时包括两类APP,则取决于包含APP个数最 多的类型。每棵树都会完整成长而不会剪枝,即我们不会人工去干预树的构建。

重复决策树的构建构成,得到多颗决策树,形成一个随机森林。

为了进一步提高监测结果,在通过上述步骤,用信息增益作为挑选分裂决策树节 点属性的标准时,以预设间隔2,测量不同决策树数量时分类的准确率,选择准确率较高的 方案作为最终模型。本具体实施方式中,预设间隔取为20,即前后构建的随机森林所包括的 决策树的数量的变化量为20。

S6:基于S5所建的随机森林分类器对待检测APP进行检测。

对待检测APP,基于步骤S3提取待检测APP的静态特征,即权限信息和API调用信 息。为了便于分类处理,对提取到的静态特征,基于图2所示的存储方式(即将每个待检测 APP的所提取的静态特征保存为一行,每列对应一个静态特征,各静态特征的先后顺序与图 2中各静态特征的顺序一致,即与样本库中的一致。)将静态特征信息保存为后缀名为.csv 的文件。在待检测APP的csv中,不存在区分善意和恶意的类型标识符,第一列直接为对应顺 序的静态特征。基于步骤S5所建的随机森林分类器,对待检测APP进行分类,以此检测出其 是恶意的还是善意的。

对于随机森林里的某棵决策树,其形状如图4所示,即该决策树将所涉及的训练样 本分到了它的各叶子节点当中。由于本申请的csv文件中,每列中出现0表示该静态特征不 存在,1表示存在,因此基于待检测APP的csv文件可直接用于单颗决策树对APP进行分类判 断。现举例如下:

假设待检测APP调用了API2,那么根据如图4所示的决策树,待检测APP落向根节点 的左侧。由于左侧是叶子节点,且该叶子节点下的APP中恶意占多数(有10个且都为恶意), 因此当前待检测APP的类别为恶意。

假设待检测APP未调用API2,那么待检测app将落向根节点右侧的节点2。右侧节点 不是叶子节点,且根据图示,我们需要判断API1是否调用。若API1被调用,则待检测APP落向 图中节点3。根据节点3,若权限1未被调用,则待检测APP落向右侧的叶子节点。如图,节点3 的右叶子节点下的APP中非恶意占多数(只有2个且都是非恶意),那么当前待检测APP则为 非恶意。

让随机森林中的每棵决策树都对待检测APP进行判断,最后根据它们判断结果的 众数就可以给出最终待检测APP的类别。比如,若随机森林中有50个决策树,且30个决策树 均判断待测APP为恶意,那么最终判定当前待检测APP为恶意。

以上所述,仅为本发明的具体实施方式,本说明书中所公开的任一特征,除非特别 叙述,均可被其他等效或具有类似目的的替代特征加以替换;所公开的所有特征、或所有方 法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以任何方式组合。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号