APP下载

面向种群的Android应用风险评估研究

2022-12-11万振华

计算机技术与发展 2022年12期
关键词:壁纸决策树应用程序

余 琴,李 涛,王 颉,万振华

(1.武汉科技大学 计算机科学与技术学院,湖北 武汉 430065;2.智能信息处理与实时工业系统湖北省重点实验室,湖北 武汉 430065;3.深圳开源互联网安全技术有限公司,广东 深圳 518000)

0 引 言

近些年来,中国大力推动互联网普及工作,手机渐渐成为人们日常生活不可或缺的一部分。Felt等人[1]对940个应用程序进行研究分析,发现大约有1/3的应用程序存在过度调用隐私权限的情况。《移动应用安全形势分析报告(2020年)》[2]显示,2020年度收录存在安全漏洞威胁的APK 860万余个,同一App普遍存在多个漏洞。其中流氓行为、恶意扣费、广告推送、隐私信息泄露等恶意行为高达81%,对用户的个人信息以及财产安全带来巨大威胁。该文提出了一种面向种群的Android应用风险评估模型。从第三方应用市场收集多种功能的应用程序进行分析和研究,根据特征权限使用情况及权限等级进行风险预估,利用k-means算法划分风险等级,最后使用决策树对聚类结果进行调整和优化。

1 相关研究

Android目前使用的权限机制在数据安全保护方面并没有取得很好的效果[3]。基于权限管理的安全机制是Android隐私保护的重要组成部分[4],故权限机制成为判断应用程序是否存在恶意行为的一个重要因素。

文献[5]提出了一种轻量级的快速检测方法,根据分析特征权限在恶意应用和正常应用中使用的频率来定量其恶意值,通过计算样本恶意值与规定的阈值进行比较来判断样本的恶意程度。文献[6]提取应用程序声明和自定义的各类权限以及动态检测获取执行过程中使用到的权限,利用层次分析法计算权重,评估应用风险值。但是,自定义权限在第三方应用程序中使用频繁,卜同同等[6]收集的软件样本有限,因此难免会出现自定义权限数据集不充分的问题。文献[7]设计了一种挖掘权限频繁项集的算法来处理应用程序权限列表,构建权限特征关系库。但是将不同功能的应用混合在一起构建数据集,忽略了应用程序的差异,即没有考虑到不同权限对不同功能的应用程序的敏感程度是不同的。

传统的应用检测方法主要是从个体的角度来判断应用的安全性,难以满足大规模用户检测的需要[8]。文献[9]借鉴生物学中种群的概念,提出了一种面向种群的适用于大规模Android应用评估和恶意应用检测的方法。通过群体特征分析和种群聚类,进行高效大规模的应用隐私泄露风险评估。但是,聚类结果缺乏可解释性。

2 基于聚类和决策树的应用风险评估方法

2.1 种群风险评估模型框架

该文提出了一种面向种群的Android应用风险评估模型,可以根据应用程序标签信息将爬取到的应用划分进不同的种群,并自动提取应用权限列表。然后,根据权限使用情况和Android系统权限等级对未知应用进行评估并给出对应的风险等级,为用户在选择Android应用时提供一个较好的参考依据。整个模型主要由数据采集模块和风险评估模块组成,系统的流程框架如图1所示。

图1 系统流程框架

具有相似功能的应用程序类似一个种群,它们所需的系统权限也相似。在数据采集模块,使用python编写的爬虫爬取网站提供的应用介绍、评分值、好评率、下载量等相关信息,同时,根据类别标签对应用程序进行分类爬取下载,并标上新的群体标签。把群体作为处理单元,使用逆向分析工具对APK进行反编译得到AndroidManifest.xml文件,获取应用程序的权限或权限组的信息。将获取到的所有信息存储在云端数据库中,并建立多维度评价指标体系。利用统计学相关知识对权限特征集合进行静态分析,根据统计情况计算单个权限风险指数,从而获得种群中应用程序的风险值。然后,利用数据挖掘中的k-means算法对应用程序风险值进行聚类,获得初步风险等级。为了提高风险评估聚类结果的可解释性,使用决策树将多维度评价指标体系纳入应用程序风险评估的研究范围,增强权限调用合理性判定。

2.2 风险值计算

通过研究Android应用权限的使用情况发现,不同功能的应用在权限申请方面存在较大的差异。将相同功能类型的应用作为一个种群,种群类别分为x个类,种群的类别会根据爬取App总数的增加而变化,于是类别集合为[8]:

定义1 类别标签:Class={C1,C2,…,Cx},Cx为每个种群的类别标签,如新闻阅读、主题壁纸、社交聊天等类别。

定义2 应用个体:Application={Cx,Introduction,Score,Download,Evaluate,PermissionMatrix}。其中,Cx为种群的类别标签,Introduction为应用介绍,Score为应用评分,Download为下载量,Evaluate为评价信息,PermissonMatrix 为每个应用经过权限预处理后的权限信息矩阵,具体定义如下:

定义3 PermissionMatrix={Pij|i=1,2,…,n;j=1,2,…,m},在权限矩阵中,如果应用个体拥有权限j,那么Pij为1,否则Pij为0。

定义4 权限申请率Permission_rate:

其中,Cx_Sum为种群Cx中应用程序总数,Pi_Num为权限Pi在种群Cx中出现的次数。

定义5 权限等级风险值 :Android将权限划分成不同的类型,包括安装时权限、运行时权限和特殊权限[10]。不同类型权限的风险程度是不同的,比如READ_CONTACTS(读取手机联系人)属于危险权限,存在泄露用户隐私信息的可能性越大。现将权限等级风险值Griski定义如下:

该文从Android开发者文档[10]中关于权限介绍指南提取权限类型。例如,普通权限有ACCESS_NETWORK_STATE、BLUETOOTH、CHANGE_NETWORK_STATE、INSTALL_SHORTCUT等,危险权限有ACCESS_BACKGROUND_LOCATION、READ_CALL_LOG等,特殊权限有LOADER_USAGE_STATS、INSTANT_APP_FOREGROUND_SERVICE等。

如果某个群体使用某种权限的概率比较高,则表明该权限是该群体的必要权限,哪怕该权限属于危险权限,也应该具有较低的危险值。反之,如果权限的概率比较低,哪怕该权限属于普通权限,也应该具有较高的危险值。为了量化应用权限的风险指数,给出如下定义:

定义6 样本中某个应用程序的权限特征向量为P=(P1,P2,…,Pn),某种群应用程序Cx的权限等级风险指数向量PGrisk=(Grisk1,Grisk2,…,Griskn)。某个应用程序的风险值计算方法为:

0

选取K-means算法对风险值进行聚类,获得初步的风险等级,该聚类算法可以对大型数据集进行高效分类[11]。将所有应用程序的风险值收敛成k簇。结合欧氏距离,将k个簇设置成k个安全等级,表示为L=(Level1,Level2,…,Levelk)。Level1到Levelk的等级逐渐升高,相应的风险值也依次增加。也就是说,Level1级的应用程序风险值最低,安全系数最高,存在窃取用户信息等危险行为的可能性就越低;levelk级的应用程序风险值最高,安全系数最低,存在窃取用户信息等危险行为的可能性就越高。

应用程序的权限机制是进行风险评估的一个重要因素,但不是决定性因素,因为广告推送、恶意扣费等行为是很难通过研究权限机制发现的。此外,新互联网时代的应用程序风险危机来自方方面面[12-15]。应用程序的风险程度只通过研究权限或权限组合已经无法适用于当下互联网时代,故该文在使用k-means算法对风险值聚类后,再使用CART决策树算法[16]将多方面信息纳入应用程序风险评估的研究范围,对聚类结果进行优化,增强可解释性。

2.3 风险评估算法流程

面向种群的Android应用风险评估算法流程如图2所示。

图2 风险评估算法流程

风险评估算法具体步骤如下:

输入:某种群Cx数据集,风险值格式为{Prisk_sum1,Prisk_sum2,…,Prisk_sumn}

应用信息矩阵为Application={Scorei,Downloadi,Evaluatei,Avg_Riski};

输出:C=(Cluster1,Cluster2,…,Clusterk)和CART决策树。

(2)聚类后可以得到种群Cx的风险簇划分Cluster1,Cluster2,…,Clusterk,进而可以得到种群中每个应用程序的风险等级leveli,与应用信息矩阵Application={Scorei,Downloadi,Evaluatei,Avg_Riski}结合后得到多维度评价指标数据集,具体格式为Multi_Data={a1j,a2j,a3j,a4j,levelij},划分节点的属性集为Attribute={Score,Download,Evaluate,Avg_Risk}。其中,a1j为应用评分用户信息,a2j为应用下载量信息,a3j为应用评价信息,a4j为平均风险值(风险值/权限数)。

(3)对于多维度评价指标数据集,从根节点开始进行以下操作,构建二叉树:

①如果当前数据集中的样本都属于同一个属性,则设为一个叶节点并返回决策子树,当前节点停止递归。

②如果Attribute=空集(已经没有属性)或者Multi_Data中的数据在剩余属性中表现相同(属性无法划分),则返回决策树子树,当前节点停止递归。

③将连续特征A(A∈Attribute)的属性值从小到大排列,取相邻两属性值的平均数作为划分点,其中第j个划分点Tj表示为:Tj=(aj+aj+1)/2。根据划分点将节点数据集分为D1和D2子集,然后计算每个划分点下对应的基尼指数:

④在计算出来的各个基尼系数中,选择基尼系数最小的属性A和对应的属性值a,把多维度评价指标数据集划分成D1子集和D2子集。

⑤对D1子集和D2子集递归的调用①~④步,生成决策树。

3 实验结果与分析

该文选取360应用市场和Google的官方应用市场Google Play作为数据源,使用python爬取大量Android应用以及相关信息,其中包括系统安全、通讯社交、生活休闲、地图旅游、教育学习等。将爬取的应用按照应用标签划分进不同的种群并存储在云端数据库中,建立多维度评价指标体系。新闻阅读、主题壁纸广泛用于人们的日常生活中,几乎每个用户都会根据个人需要安装这两类应用,故选取这两类应用程序作为研究对象。其中,新闻阅读有1 744个,主题壁纸有1 207个。图3所示为新闻阅读类应用程序和主题壁纸类应用程序的权限申请率。

从图3可以看出,同一种权限或者权限组合在不同群体的应用程序中的使用情况是不同的。例如,ACCESS_COARSE_LOCATION权限,新闻阅读这一群体中申请率为0.64,而主题壁纸群体中申请率只有0.29。然后使用上文定义的风险值计算公式,对应用程序的危险程度进行量化。新闻阅读类风险值分布和主题壁纸类风险值分布如图4和图5所示。

图3 新闻阅读类应用程序和主题壁纸类应用程序的权限使用频率

图4 新闻阅读类风险值分布(总数1 744)

图5 主题壁纸类风险值分布(总数1 207)

在实验中,采用k-means算法对两个群体进行聚类。在分析数据规模和数据范围后,经过多次对比聚类结果,最后将数据划分成4个等级,如表1和表2所示。等级越高,风险值就越高,存在恶意行为的可能性就越大。

表1 新闻阅读种群聚类结果

表2 主题壁纸种群风险聚类结果

接着,再使用决策树将评分、下载量、好评率、平均风险值(风险值/权限数)等信息纳入应用程序风险评估的研究范围,提高风险评估聚类结果的可解释性。

表3 新闻阅读种群和主题壁纸种群风险评估结果

从表3可以看出,经过决策树修正优化聚类结果,新闻阅读种群和主题壁纸种群各风险等级的应用程序个数发生了改变。进一步研究发现,风险等级会因为程序功能、用户体验感等因素发生改变,而这些因素是很难通过研究权限或权限组获得的。例如,com.hnr.dxxw属于新闻阅读种群,经过决策树修正风险等级从危险变为偏高,com.hnr.dxxw比同种群其他应用增加了视频直播、线上学习功能,申请的权限更多,风险值也相对偏高。但是,并不存在窃取用户个人信息的情况,反而因为强大的功能深受大众喜爱。

实验结果表明,不同种群在权限申请方面存在一定的差异。从种群的角度来判定权限使用的合理性,可以考虑到不同功能应用程序之间的差异。使用k-means算法对种群风险值进行聚类,得到各风险等级的威胁值范围。最后,利用决策树将多维度指标体系纳入评估系统,提高风险评估结果的可解释性。在实际应用中,为用户选择Android应用提供一个较好的参考依据。

4 结束语

借用了生物种群的思想,提出了一种面向种群的Android应用权限分析和风险评估模型,将群体的权限使用情况和权限等级结合起来,并引入决策树对结果进行修正调优。实验结果表明,该方法可以量化计算Android应用风险值并且具有较好的自适应性,对用户选择安全低风险和体验感优越的Android应用程序提供较好的参考价值。接下来,将考虑恶意权限组合、动作组件、敏感API、篡改检测等多方面,提高应用风险评估的准确性。

猜你喜欢

壁纸决策树应用程序
一种针对不均衡数据集的SVM决策树算法
水墨晕染
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
决策树和随机森林方法在管理决策中的应用
“绘画”的壁纸
应用圈
选壁纸注意“看摸闻擦”
基于决策树的出租车乘客出行目的识别
基于肺癌CT的决策树模型在肺癌诊断中的应用