安卓(Android)是一个基于Linux的开源移动智能操作系统, 来自IDC的数据显示[1], 2014年度全球销售的搭载Android系统的移动设备超过10亿台, 占据整个移动设备市场份额的81.5%.Android系统的开放性和使用的广泛性, 吸引了大量开发者加入到Android应用程序的开发中来.至2015年6月, Google Play应用市场中已包含超过143万个应用程序, 总下载次数超过500亿次[2].规模庞大的设备、应用、用户数量以及良好的开放性, 也使得Android系统成为恶意软件攻击的理想平台.报告显示, 2014年全年监控到的恶意程序样本达326万个, 共有3.19亿人次被感染[3].
针对这一现状, 大量研究者对Android平台的安全性进行了研究, 对恶意应用程序的检测是当前研究的重点和热点.Wu等[4]提取应用程序权限、组件数量、API等特征, 使用机器学习方法对恶意应用进行检测.Burguera等[5]利用Linux系统下的strace工具提取应用程序的系统调用序列作为特征, 使用K-means算法对特征进行聚类, 但只能检测一个应用程序的变种是否为恶意应用.Enck等[6]通过污点分析技术对敏感信息进行污点跟踪, 寻找存在隐私泄露问题的应用程序, 检测目标较为单一, 且该系统部署在Android系统内部, 需要占用系统资源.杨欢等[7]通过提取权限、组件、函数调用以及系统调用等多类特征, 使用多种分类算法进行分类, 并给出综合判决结果, 取得了较好的检测效果, 但其特征提取和检测过程复杂度较高, 时间开销较大, 难以应对大量样本的实时检测需求.此外, 以上方法均只能给出一个应用是否为恶意程序, 无法量化的评估应用程序的危险程度.Talha等[8]根据权限对应用程序进行打分, 得到每个应用程序的分值, 以此对应用程序的危险程度进行刻画, 但其打分依据较为简单, 而且只关注单个权限, 没有考虑权限之间的相关性.
基于以上分析, 本文对Android平台上正常应用和恶意应用的权限信息进行研究, 进而通过基于权限的静态分析方法, 使用数据挖掘和机器学习方法设计Android应用程序的安全性审计方法, 实现对恶意应用程序的检出, 以及应用程序安全性的量化评估, 可以为普通用户提供可靠参考, 并为大规模的Android应用程序安全审计提供新的解决方法.
1 权限特征分析 1.1 权限机制介绍Android系统提供了丰富的API, 应用程序对系统资源和功能组件的访问和调用都需要通过相关API来完成.为了对API的使用进行管理, 避免API的滥用可能带来的安全问题, Android设计了权限机制来约束API的使用.应用开发过程中, 开发者必须在名为AndroidManifest.xml文件中声明所需要使用的权限, 并在应用安装过程中征得用户同意[9].应用成功安装后, 在运行过程中意图通过调用API访问某项系统资源时, 系统会对其权限进行审查.审查的具体流程如图 1所示, 若应用拥有权限, 则可继续调用, 否则API返回失败[10], 即应用程序申请的权限与其调用的API直接相关, 权限信息可以一定程度地反映应用程序的行为模式;而且应用程序的权限信息只须静态解析APK文件即可获得, 因此权限信息可以作为Android应用程序的一种轻量级行为特征.
![]() |
图 1 Android系统权限审查流程 Fig. 1 Permission check process of Android system |
Android系统目前已定义了超过100种权限, 文伟平等[12]提出了单个危险权限和危险权限组和的概念, 根据权限描述挑选出了一些危险权限和组合.本文对来自Google Play、机锋、hiapk等多个应用市场的1 000个常见应用以及收集到的1 000个恶意应用样本所申请的权限信息进行了提取(部分应用因使用了代码加固技术, 无法解包, 最后统计到信息的正常应用和恶意应用样本分别为937和962个), 建立一个权限信息数据库, 据此对其权限信息进行分析.
表 1给出了一组具有高度危险性的权限的统计信息.表中,fmal、fnor分别为恶意应用使用频数和正常应用使用频数.应用一旦拥有这些权限, 则具有高度危险性, 这可以为审计应用的安全性提供依据.这些权限中, 除去INSTALL_PACKAGES, DELETE_PACKAGES等少量权限外, 其他权限总体使用频率较低, 能覆盖到的应用程序比较有限.本文对恶意应用和正常应用中使用频率最高的权限分别进行统计, 如图 2所示.从统计结果分析, 可以看到正常应用和恶意应用常用的权限存在着较为明显的差异.
![]() |
图 2 恶意应用和正常应用的权限使用频率 Fig. 2 Permission frequency of malwares and normal APPs |
![]() |
表 1 Android系统中的典型高危权限 Table 1 Typical dangerous permissions of Android system |
1) 平均申请的权限数量差异较大.正常应用平均申请18.67条权限, 而恶意应用的这一数字为11.84.一方面,相较于正常应用多样化的功能与用途, 恶意应用的功能较为单一, 故所需的权限数量和正常应用相比较少;另一方面, 恶意应用开发者一般更为谨慎, 会对面临的检测尽可能进行规避, 申请尽可能少的权限是有效的伪装和保持“低调”的途径.
2) 常用的权限差别较大.除了正常应用和恶意应用都高频率地申请了INTERNET(访问网络), ACCESS_NETWORK_STATE(获取网络状态)等个别基础功能权限外, 其他权限的次序差异非常明显, 恶意应用偏好SEND_SMS(发送短信), READ_SMS(读取短信)等与通讯功能及用户数据直接相关的权限, 正常应用则偏好诸如VIBRATE(震动), WRITE_EXTERNAL_ STORAGE(读写SD卡)等系统内部的功能性权限;
3) 相同权限的使用率差别较大.恶意应用和正常应用中使用频率差异最大的20个权限如图 3所示.例如,SEND_SMS, READ_SMS权限在恶意应用中使用率分别达到61.2%和36.1%, 而其在正常应用中仅为5.7%和7.7%.
![]() |
图 3 恶意应用和正常应用权限使用频率差异 Fig. 3 Permission frequency difference betweenmalwares and normal APPs |
权限信息可以反映应用程序的行为模式, 而恶意应用与正常应用在权限上存在着明显差异, 因此可以以权限信息为指标, 利用其在正常应用与恶意应用中表现出的差异性, 来对应用程序的安全性进行评估与量化.
2 指标选取与权重确定Android系统权限数量众多, 在恶意应用和正常应用中存在显著差异的只是其中的一小部分, 且将全部权限作为评价指标, 会大幅度增加时间和性能开销, 故需要对Android权限进行精简、筛选, 同时挖掘对应用安全有鉴别作用的权限组合, 建立评价指标集.另一方面, 不同权限在表征应用的安全性时的重要性并不相同.以INSTALL_PACKAGE权限和VIRABATE权限为例, 显然相较于后者, 申请了前者的应用更可能是一个恶意应用, 因此要根据每个指标对应用安全性影响的大小来确定其权重.
2.1 评价指标集的构建本文对一个应用的权限信息进行两方面的评估, 一是其所申请的单个权限的安全性, 二是其所包含的权限组合的安全性.为此, 需要利用应用程序样本对权限信息进行分析, 筛选出具有鉴别意义的权限和权限组合.本文基于数据挖掘思想, 设计评价指标集的构建方法, 先给出如下定义[13]:
定义1 权限项集I:称权限的集合I={p1, p2, …, pm}为权限项集, 单个权限即为一个C(I)-1的权限项集.
定义2 支持度S:设在对n个样本的统计中, 权限项集I在恶意应用中出现nmal次, 在正常应用中出现nnor次, 则I的支持度S(I)=(nmal+nnor)/n.
定义3 分离度D:设在对n个样本的统计中, 权限项集I在恶意应用中出现nmal次, 在正常应用中出现nnor次, 则I的分离度D(A)=|nmal-nnor|/(nmal+nnor).
定义4 最小支持度Smin:指标权限项集支持度的阈值.
定义5 最小分离度Dmin:指标权限项集分离度的阈值.
指标集的构建分为两步:普通指标的筛选和特殊指标的添加.普通评价指标的筛选算法如下:
算法1 评价指标筛选
输入:所有权限项集的集合P, 指标权限项集最大基数cmax, 最小支持度Smin, 最小分离度Dmin
输出:评价指标权限项集集合Rc
1: Rc ←φ;
2: d← 1;
3: while d≤cmax do
4: for all Id in Pdo
5: if (S(Id)>Smin) & (D(Id)>Dmin) then
6: Add Id to Rc;
7: Remove Id FROM P;
8: Remove I FROM P, I = {In | Id⊆In};
9: end if
10: end for
11: d = d + 1;
12: end while
输入样本集包含的所有权限项集构成集合P, 从其中基数为1的权限项集(即单个权限)开始, 遍历所有不超过给定的cmax的权限项集, 考察其支持度与分离度, 其中Id为基数为d的权限项集.支持度高则可以覆盖到的样本范围较广, 分离度高则在正常和恶意样本中差异明显, 这样的权限项集对评估应用安全性有积极作用, 将其加入普通指标集Rc;为了筛选出更多互相独立的权限项集, 将Id的超集In从P中去掉.经过此算法最终得到一个包含多维度指标的集合Rc.算法1的复杂度为O(n), 其中n为基数小于cmax的权限项集的总个数.
经过算法1得到的指标集合中的权限项集具有覆盖范围广和分离度较高的特点, 此外还有两类特殊的权限项集, 对于评价应用安全性也有十分明显的鉴别作用, 一是支持度较低但分离度接近1, 即几乎只在恶意应用或正常应用中出现, 即表 1中列出的除INSTALL_PACKAGES和DELETE_PACKAGES之外的权限;二是被Android官方技术文档标记为不允许第三方应用使用的权限, 我们选择其中的具有高度危险性的5条权限, 作为评价指标的一部分, 如表 2所示.将这2类权限构成的集合记为特殊指标集Rs, 由R=Rc∪Rs构成最终的评价指标集合.
![]() |
表 2 特殊权限指标项集 Table 2 Special permission indices |
不同权限项集在表征应用安全性时的意义不同, 为了利用评价指标对应用安全性进行量化评估, 要依据评价指标对恶意程序鉴别能力的强弱给定不同权重.原则上, 分离度和支持度高的指标应当在评价过程中发挥较大作用.
为了确定评价指标的权重, 本文引入优序图法(precedence chart)[14].优序图法是统计学中确定指标权重的一种方法.优序图法将待确定权重的一组指标, 两两比较其重要性, 重要性高的获得增益, 最终依据每个指标获得的总增益与所有指标获得的总增益之和的比值为该指标确定权重.因篇幅所限, 不在此对优序图法的运算过程进行详细阐述.原始优序图简单的使用“1”作为增益, 只能定性地判断指标之间的优劣关系, 而无法量化, 本文对此进行了改进, 并设计了算法2用以确定评价指标的权重.评价指标集合由Rc和Rs构成, 使用算法2法确定Rc中各指标的权重, 再以Rc中最大权重赋予Rs中的指标.I*为算法描述方便, 给每个项集I赋予了唯一编号dI*进行标识, 其中d为该项集的基数, I*为其在该基数下的所有项集中的序号.
算法2 确定指标权重
输入:评价指标项集Rc、Rs, 指标项集最大基数cmax, 分离度参数α, 支持度参数β、α, β>0且α+β=1.
输出:权重矩阵V
1: d← 1;
2: while d ≤ cmax do
3: for all p∈Rc(d) do
4: for all q∈Rc(d) do
5: if w(p) ≥ w(q) then
6: M= sign (nmal(p)-nnor(p) w(p);
7: Cdp*= Cdp* + M;
8: end if
9: end for
10: Td=Td+ Cdp*;
11: end for
12: d = d + 1;
13: end while
14:d← 1;
15: while d ≤cmax do
16: for all p∈Rc(d) do
17: Vdp*= Cdp* /Td;
18: end for
19: for all q∈Rs(d) do
20: Vdq*= max (Vdp*);
21: end for
22: end while
23: Procedure w(I)
24: return α* D(I) + β* S(I)
25: End Procedure
从单个权限开始, 将Rc中基数相同的指标两两进行比较, 以α·D(I)+β·S(I)为指标权重大小的判断依据, 较大者获得增益sing (nmal(I)-nnor(I)×[α·D(I)+β·S(I)], 其中, nmal(I)和nnor(I)分别为指标项集I在恶意应用和正常应用中出现的次数;α和β为给定的参数, 满足α, β>0且α+β=1.M为指标项集p在于指标项集q的比较中所获得的增益, 初值为0.Cdp*为基数d下的指标项集获得的总增益, 初值为0.Td为基数d下的所有项集获得的总增益, 初值为0.Rc中的指标计算完成后, 将每个基数下的最大权重赋予Rs集合中相应基数的所有指标.最终可以得到权重矩阵Vm×n, 其中m为最大指标项集基数, n为单个基数下包含的最大指标项集个数.算法2的复杂度为O(n2), 其中n为输入的指标项集的总个数.
3 应用评估与参数确定 3.1 应用评估在已有的评价指标集和权重矩阵基础之上, 使用机器学习方法来对应用安全性进行评估.首先, 对应用的权限信息进行抽象, 以适用评价指标进行评价.对于评价指标集R和权重矩阵Vm×n, 构造矩阵Am×n, 记一个应用所包含的所有权限项集为PAPK, Vij所对应的指标权限项集I, 令
$ {A_{ij}} = \left\{ \begin{array}{l} 1, \;\;\;\;I \in {P_{{\rm{APK}}}};\\ 0, \;\;\;\;其他. \end{array} \right. $ | (1) |
则由式(1), 将一个应用的权限信息抽象成为一个矩阵Am×n, 定义该应用程序的评估向量为
$ \begin{array}{*{20}{l}} {{S_{APK}} = ({s_1},{s_2}, \ldots ,{s_m}) = }\\ {[\sum\limits_{i = 1}^n {({V_{1i}} \cdot A_{i1}^T)} ,\sum\limits_{i = 1}^n {({V_{2i}} \cdot A_{i2}^T)} , \cdots ,\sum\limits_{i = 1}^n {({V_{mi}} \cdot A_{im}^T)} ]} \end{array} $ | (2) |
由式(2) 可得一个m维向量来表征指标项集的评价结果.评估向量包含了各个基数下指标项集的评价结果, 根据评估向量判断一个应用是否为恶意应用, 是一个典型的二分类问题, 引入逻辑回归[15]方法:
$ h(x) = \frac{1}{{1 + \exp (\boldsymbol{w} \cdot x + b)}}. $ | (3) |
使用极大似然法求解分类参数:
1) 输入训练样本, 解包, 提取权限信息;
2) 通过算法1、算法2输出评价指标集和权重矩阵;
3) 计算训练样本的评估向量;
4) 使用梯度下降法迭代训练, 求解参数w、b极大似然值.
设求得参数的极大似然估计值
$ F({\boldsymbol{S}_{{\rm{APK}}}}) = \frac{1}{{1 + {\rm{exp}}(\boldsymbol{\hat w} \cdot {\boldsymbol{S}_{{\rm{APK}}}} + \hat b)}}. $ | (4) |
给定决策函数:
$ {y^*} = \left\{ \begin{array}{l} 1, \;\;\;\;\;F({\boldsymbol{S}_{{\rm{APK}}}}) \le 0.5;\\ -1, \;\;\;\;\;\;\;\;其他. \end{array} \right. $ | (5) |
即若y*=1, 则为恶意应用;否则, 为正常应用.
训练得到的参数的极大似然估计值
$ L({\mathit{\boldsymbol{x}}_0}) = \frac{{\mathit{\boldsymbol{\hat w}}}}{{\left\| {\mathit{\boldsymbol{\hat w}}} \right\|}} \cdot {\mathit{\boldsymbol{x}}_0} + \frac{{\hat b}}{{\left\| {\mathit{\boldsymbol{\hat w}}} \right\|}}. $ | (6) |
式中:
需要给定的参数为:指标项集的最小支持度Smin;指标项集的最小分离度Dmin;分离度和支持度参数α, β.使用不同参数组合将得到不同的权重矩阵Vm×n, 进而影响系统性能.在确定的cmax下, 使用模拟退火算法来确定参数组合, 以σ值(见4.2节)作为参数组合的评价标准:
1) 生成参数组合;
2) 使用算法1、算法2计算权重矩阵Vm×n;
3) 使用同一组样本训练分类器并进行测试, 计算σ;
4) 若σ值提高或满足Metropolis接受准则, 则更新当前最优解;否则舍弃当前参数组合;
5) 若未满足停止条件, 则重复步骤1).
4 实验与分析 4.1 实验环境与数据为了对本方法的有效性和性能进行测试, 本文使用Java语言实现了一个原型系统, 使用爬虫程序共得到近13 000个应用程序[16], 去除掉不可解包的应用后共得到12 170个样本, 将其与收集到的2 678个恶意应用样本[17]混合后分成10份, 进行十叠交叉验证[13].
为了对本方法在不同cmax下的效果进行验证, 根据参数确定算法以及实验经验, 给定一组在不同cmax下都能得到较好实验结果的参数:Smin=0.14, Dmin=0.65, α=0.6, β=0.4.所有实验都在在处理器为Intel(R) Core(TM) i5 3.10 Ghz, 内存为8 GB的机器上进行.
4.2 实验结果与分析首先介绍混淆矩阵[13](confusion matrix)以对实验结果进行分析.对于一个二分类问题, 即将实例分为正类(positive)与负类(negative), 其结果会出现4种情况:如果实例是正类并且被预测成正类, 即为真正类(true positive, TP), 如果实例是负类被预测成正类, 称之为假正类(false positive, FP).相应地, 可以得到真负类(true negative, TN)与假负类(false negative, FN).据此, 一个分类的混淆矩阵如表 3所示.并由此定义如下分类器评价指标:
![]() |
表 3 混淆矩阵分类 Table 3 Confusion matrix classification |
$ {R_{{\rm{TP}}}} = {\mathop{\rm Re}\nolimits} {\rm{call}} = \frac{{{\rm{TP}}}}{{{\rm{TP}} + {\rm{FN}}}}. $ | (7) |
$ {R_{{\rm{FP}}}}{\rm{ = }}\frac{{{\rm{FP}}}}{{{\rm{TN}} + {\rm{FP}}}}. $ | (8) |
$ \sigma = \frac{{{\rm{TP}} + {\rm{TN}}}}{{{\rm{TP}} + {\rm{FP + TN + FN}}}}. $ | (9) |
式中:RTP表示恶意应用被正确识别出的比例, RFP表示正常应用被误报的比例, σ为被正确分类的正常应用和恶意应用所占的比例.
实验结果如表 4所示(所列数据均为十叠交叉验证后的平均值;这步试验中所有的输入样本都已提前解包, 故时间统计中不考虑解包所需时间).训练用时ttrain包括指标筛选、权重确定、训练分类器所用时间;测试用时ttest指计算评估向量、分类以及计算评估值所用时间;N为指标个数.
![]() |
表 4 4个典型程序样本的评估结果 Table 4 Evaluation results of four typical program samples |
在cmax=1时, 即指标均为单个权限, 将实验结果与已有的基于权限的评估和检测方法所得结果进行比较.文献[8]提出的APK Auditor对一个应用申请的所有单个权限, 直接使用其在恶意应用中出现的次数为该应用打分, 最后根据分值对应用程序安全性进行评估, 最终使用6 909个样本进行实验, 得到结果RTP=88.28%;本文同时考虑了单个权限信息和权限组合, 并从支持度和区分度2个方面进行指标的选取, 并对其赋予不同权重, 使得结果有了提高.
随着指标权限项集的最大基数增大, 分类效果也有了提高, 但提高幅度逐渐减小.这是因为不包含低维指标项集且满足所给定支持度和分离度的权限项集数量逐渐减少.当cmax=3时, 对恶意应用的正确分类比例达到了94.10%.将结果与DroidMat进行比较, DroidMat[4]使用1 738个样本进行实验, 得到结果RTP=87.39%;当cmax=4时, 时间开销增加很大, 分类结果只提升了;当将cmax提高至5时, 按给定的约束条件, 没能筛选出新的指标.对FN中的样本进行分析, 发现主要是一些将关键代码隐藏在本地库文件中的恶意程序, 从而减少了权限需求, 这类恶意程序也是限制静态检测方法准确度提高的瓶颈.
试验结果显示RTP值在10%左右, 经过对FP中的样本进行人工分析, 发现被误判的应用大多是开发者申请了远超过自身功能所需的权限, 故在各个维度的指标评价中都得到了较高分值最终被分类器分入恶意应用之中.这类应用本身一旦被攻击者利用, 会对系统带来较高威胁.
由实验结果看到, 本系统可以通过设定不同的最大权限项集基数以根据实际使用场景的需要, 在时间开销和检测准确度之间进行取舍;当cmax=1时, 在有较高检测准确度的同时, 单个(已解包)应用的平均检测时间小于1 ms, 在大规模样本的检测中可以发挥高效的安全审计能力.
表 5给出了几个典型应用程序和恶意样本的评估向量和评估值(cmax=3).微信6.2.5版本共申请了29个权限, 但多是普通的功能性权限;WIFI万能钥匙申请的权限中包含SEND_SMS, ACCESS_GPS等较为危险的权限, 故第一维表现出较高的危险性, 而其权限关联特征并不符合恶意应用特征;两个恶意程序样本都申请了高危权限, “棒球巨星2010”样本几乎申请了所有的高危权限.可以看到, 评估值可以直观地反映出应用的危险程度, 是对应用进行安全审计的有效量化指标.
![]() |
表 5 4个典型程序样本的恶意样本评估结果 Table 5 Malware evaluation results of four typical program samples |
将本系统与Androguard[18]工具进行了比较.本系统使用cmax=3, 从我们收集到的样本集中, 使用随机选取的方法生成包含1 000个正常应用与1 000个恶意应用的子集作为本系统的训练集;将剩余的1 678个恶意样本与随机选取的未作为训练样本的1 678个正常应用一起构成测试集, 进行对比实验, 并将这一过程在3台同样配置的机器上分别重复2次, 以降低样本随机选择中的偶然性, 总共6次对比试验的平均结果(完整的检测过程用时t统计, 即包含解包所需时间)如表 6所示, 其中Nreal为实测样本数.与之相比本系统对恶意应用的正确分类比例达到了93.8%, 对正常应用和恶意应用的综合分类准确度达到92.0%, 均明显高于Androguard的实验结果, 并且时间开销更小, 因此本系统相较于Androguard在准确度和效率上均有较大提高.
![]() |
表 6 本系统与Androguard的性能比较结果 Table 6 Results of performance contrast between our system and Androguard |
本文基于Android应用程序的权限信息这一轻量级特征, 使用数据挖掘方法选取具有鉴别作用的权限项集作为应用安全的评价指标, 并结合改进的优序图法赋予指标不同权重, 再利用逻辑回归方法对指标评价结果进行分类, 检出恶意应用, 同时对其危险程度进行量化.本文所提出的方法在较大规模样本输入的场景下可以发挥灵活高效的安全审计能力, 并能为用户提供应用程序安全性的量化评估.下一步的工作:一是将对应用的权限信息进行精简, 通过已有研究建立的API~权限映射集和细粒度权限管理等方法[10, 19], 分析应用权限信息, 去除冗余权限, 提高分类精度;二是挖掘其他轻量级特征, 提高对使用本地库的恶意应用的检测能力.
[1] | International Data Corporation. Android and iOS Squeeze the Competition [EB/OL]. [2015-09-26]. http://www.idc.com/getdoc.jsp?containerId=prUS25450615 |
[2] | Wikipedia contributors. Google Play [EB/OL]. [2015-09-26]. https://en.wikipedia.org/w/index.php?title=Google_Play & oldid=687967431. |
[3] | 360互联网安全中心. 2014年中国手机安全状况报告[EB/OL]. [2015-09-26]. http://zt.360.cn/1101061855.php?dtid=1101061451 & did=1101205565. |
[4] | WU D, MAO C, WEI T, et al. Droidmat: Android malware detection through manifest and api calls tracing [C]//Proceedings of the Asia JCIS 2012. Tokyo: IEEE, 2012: 62-69. |
[5] | BURGUERA I, ZURUTUZA U, NADJM-TEHRANI S. Crowdroid: behavior-based malware detection system for Android [C]//Proceedings of the 1st ACM Workshop on Security and Privacy in Smartphones and Mobile Devices. Chicago: ACM, 2011: 15-26. |
[6] | ENCK W, GILBERT P, HAN S, et al. TaintDroid: an information-flow tracking system for realtime privacy monitoring on smartphones[J]. ACM Transactions on Computer Systems (TOCS), 2014, 32(2): 5. |
[7] |
杨欢, 张玉清, 胡予璞, 等. 基于多类特征的Android恶意行为监测系统[J].
计算机学报, 2014, 1: 15–27.
YANG Huan, ZHANG Yu-Qing, HU Yu-pu, et al. A malware behavior detection system of Android application based on multi-class features[J]. Chinese Journal of Computers, 2014, 1: 15–27. |
[8] | TALHA K, ALPER D, AYDIN C. APK Auditor: Permission-based Android malware detection system[J]. Digital Investigation, 2015, 13: 1–14. DOI:10.1016/j.diin.2015.01.001 |
[9] | Google. The Android manifest.xml file [EB/OL]. [2015-09-28]. https://developer.android.com/reference/android/Manifest.permission.html. |
[10] | FELT A, CHIN E, HANNA S, et al. Android permissions demystified [C]//Proceedings of the 18th ACM Conference on Computer and CommunicationsSecurity. Chicago: ACM, 2011: 627-638. |
[11] |
符易阳, 周丹平. Android安全机制分析[C]//第26次全国计算机安全学术交流会论文集. 武夷山: [s. n. ], 2011: 23-25.
FU Yi-yang, ZHOU Dan-ping. Android's security mechanism analysis [C]//Proceedings of the 26th National Conference of Computer Security. Wuyishan:[s. n.], 2011: 23-25. |
[12] |
文伟平, 梅瑞, 宁戈, 等. Android恶意软件检测技术分析和应用研究[J].
通信学报, 2014, 35(8): 78–85.
WEN Wei-ping, MEI Rui, Ning Ge, et al. Malware detection technology analysis and applied research of android platform[J]. Journal on Communications, 2014, 35(8): 78–85. |
[13] | HAN J, KAMBER M, PEI J. Data mining concepts and techniques [M]. 3rd ed. Amsterdam: Elsevier, 2011. |
[14] | MOODY P. Decision making: Proven methods for better decisions[M]. New York: McGraw-Hill Companies, 1983. |
[15] | 李航. 统计学习方法[M]. 北京: 清华大学出版社, 2012. |
[16] | Google-play-crawler [CP/OL]. [2015-09-28]. https://github.com/Akdeniz/google-play-crawler |
[17] | VirusTotal [EP/OL]. [2015-09-26]. www.virustotal.com. |
[18] | Androguard Team. Androguard [CP/OL]. [2015-09-28]. https://github.com/androguard/androguard. |
[19] |
王少辉, 王超, 孙国梓. DroidDefence:细粒度的Android应用权限管理系统[J].
四川大学学报:工程科学版, 2014, 6: 14–18.
WANG Shao-hui, WANG Chao, SUN Guo-zi. DroidDefence: an extended fine-grained Android application permission management system[J]. Journal of Sichuan University: Engineering Science Edition, 2014, 6: 14–18. |