黄梅根 曾云科
(重庆邮电大学计算机科学与技术学院 重庆 400065)
基于权限组合的Android窃取隐私恶意应用检测方法
黄梅根曾云科
(重庆邮电大学计算机科学与技术学院重庆400065)
在分析Android系统总共165个权限的基础上,提炼出30个理论上可以获取Android系统隐私资源的恶意权限组合。提出一种针对应用类别的基于恶意权限组合的恶意值、待测应用恶意权值、恶意阈值的窃取隐私恶意应用检测方法。通过实验验证了该方法的正确性和准确率,并在Android系统中得以实现。
Android系统恶意权限组合恶意应用检测应用类别
Android OS自从发布以后凭借其开放性吸引了大批研发人员的关注和大量智能终端厂商的参与,很快便取得了智能终端市场的绝对优势地位。据调研公司Kantar Worldpanel ComTech统计数据显示,2015年Android操作系统在中国智能手机市场的市场份额是70.9%,远远超过其他智能手机操作系统[1]。但也正是由于其开放性,Android系统上的恶意应用也随着Android系统的发展而迅速发展起来了。
如今的手机已经不像传统的手机只被用来打电话或发短信,它现在已经渗入了人们生活各个方面,诸如交友、购物、娱乐、资讯等。据Android官网统计,每天至少有一百万台基于Android系统的设备被激活[2]。Android系统的快速普及也给了恶意应用更大的滋生动力,以获取人们生活各方面的隐私信息。据网秦的“云安全”监测平台统计,2014 年第一季度查杀到手机恶意软件共计 41 199款,被感染的智能手机共计1784 万部,其中窃取用户隐私的恶意行为占大部分,隐私安全问题不容忽视[3]。又据360互联网安全中心统计,2014全年360互联网安全中心共截获Android平台新增恶意应用326.0万个,平均每天截获新增恶意应用近8932个[4]。Android 移动终端存在很大的安全隐患。
本文的主要研究如下:首先从隐私信息入手,提出一系列威胁用户隐私的恶意权限组合,其中任意一个恶意权限组合都能达到窃取用户隐私的目的。然后以GooglePlay对所有Android应用的分类为基础,对每个分类下的大量正常应用的权限进行统计分析,以确认某些特定分类确实需要获取终端的某些隐私信息。为了避免因为这种情况造成的误报,本文计算出每个类别对每个恶意权限组合的恶意值。最后把恶意值作为初始参数,通过恶意值计算出待检测应用的恶意权值,从而判断该应用是否是窃取隐私的恶意应用。本文设计了多组实验评估本文提出方法的有效性和准确性。
1.1Android权限机制
Google公司为Android系统设计了一系列涉及到安全操作和隐私信息的权限标签。应用中如果有需要执行某些安全相关操作或者访问隐私数据的情况,开发者就需要在其配置文件AndroidMainfest.xml[5]中声明相应权限。Android系统中的权限分为普通、危险、签名、签名或系统四种级别[6]。普通和危险级别的权限在应用安装时会被提示在屏幕上,以通知用户是否授予相应权限;而签名或系统级别权限,只有当申请该权限的应用具有与系统相同的签名或该应用是系统应用时才能被授权。应用有了相应的权限后就可以进行相应的操作或访问相应的隐私数据。例如:应用如果申请CALL_PHONE这个权限,那么它就可以在无需用户确认的情况下拨打电话,恶意应用可能会利用这个权限来实施消耗用户的话费或监听用户谈话内容等恶意操作,侵犯用户隐私。Android官网列出了Android系统自带的165个权限[7]。
1.2国内外研究现状
目前,Android恶意应用检测技术分为动态检测技术和静态检测技术。Enck等人的轻量级应用检测工具Kirin提出了一组危险权限组合[8],如表1所示。文献[9]对Android的隐私信息风险点进行了分析,并通过编写窃取隐私的恶意代码验证各个风险点确实存在。文献[10]曾针对Android隐私数据提出了TaintDroid模型,其对隐私数据做着色跟踪以判断应用是否窃取用户隐私。文献[11]提出了Saint机制,Saint可以控制应用安装时权限的分配,程序运行时根据自定义策略保护应用的对外接口。文献[12]提出了APEX,通过修改包管理器让用户可以在运行应用时授予或撤销应用申请的某些权限。文献[13]从Android所有权限中提取出相关度小、使用频繁的68个权限并计算每个权限的先验概率,再通过改进的贝叶斯算法计算后验概率以计算应用的恶意概率,以此判断应用是否是恶意应用。文献[14]根据GooglePlay对Android应用的分类分别统计每一类应用中每个权限出现的概率,通过每个权限的概率计算未知应用的恶意值以判断应用是否恶意。对大量数据运用数据挖掘技术可以挖掘出很多有用的信息[15],文献[16,17]利用数据挖掘技术挖掘出恶意应用的特征,以此来检测未知恶意应用。
表1 Kirin 安全策略
在以权限判断恶意应用的研究中,文献[8,16]总结恶意权限组合以判断应用是否是恶意应用。但某些恶意权限组合确实是某些类别应用所必需的,例如FINE_LOCATION+ INTERNET这个组合可以被用来跟踪用户地理位置,天气预报类应用的确需要这个组合来判断用户的位置以显示本地天气预报。文献[14]通过分别计算每个应用类别中每一个权限出现的概率,以此为基础分析待测应用是否是恶意应用。由于同一类别的Android应用申请单个权限的差异性也很大,因此这种方法的精确性会受到该原因的影响。本文把上述两种研究方法结合起来,首先通过分析提出30个能窃取用户隐私的恶意权限组合,然后通过实验统计和计算得出每个恶意权限组合在每一类应用中的恶意值,最后通过恶意值计算出待检测应用的恶意权值,以恶意权值判断待测应用是否是窃取用户隐私的恶意应用。相比于文献[8,16],本文的方法在恶意权限组合的基础上加入了应用类别的概念,把应用类别对恶意权限组合的影响纳入考虑范围,从而可以降低误报率;相比于文献[14]仅通过计算单个权限在每个类别中出现的概率的方法,本文则提出一系列窃取用户隐私的恶意权限组合,通过计算各恶意权限组合相对于应用类别的恶意值来判断应用的恶意性,以恶意权限组合和类别来判断应用的恶意性,其对恶意应用的针对性更强。
2.1恶意权限组合
本文以窃取Android系统隐私数据为切入点。Android系统隐私数据可以划分为四类:通话、短信、地理位置信息、其他个人隐私信息。通过参考Kirin安全规则[8]并分析在Android源代码中对应于官网165个权限[7]每个权限的详细解释,本文提出如表2所示的一系列恶意权限组合。
表2 恶意权限组合
如果其中任意一个权限组合被应用申请且被用户授予权限,那么该应用就有获取用户相应的隐私数据并发送给恶意应用指定接收方的能力。如表2中第1条恶意权限组合,READ_PHONE_STATE权限允许应用实时监听手机通话状态;表3是Android系统定义的手机通话模块的三种状态。
表3 通话模块的状态
那么窃取隐私的恶意应用则可以根据监听到通话模块的状态由CALL_STATE_RINGING变为CALL_STATE_OFFHOOK而确定用户正在通话,从而再利用RECORD_AUDIO权限启动录音功能记录用户通话内容;监听到通话模块状态由CALL_STATE_OFFHOOK变为CALL_STATE_IDEL而判断用户通话完毕挂机,从而中止录音;最后再利用INTERNET权限把录音上传到指定服务器并删除本地录音。至此,恶意应用就利用恶意权限组合1完成了窃取用户通话内容并上传的恶意操作。
2.2具体检测方法
但并不是所有申请了表2中权限组合的应用都是恶意应用,如一个天气预报APP就需要获取ACCESS_FINE_LOCATION+INTERNET或ACCESS_COARSE_LOCAION+INTERNET这些恶意权限组合,它们可以给用户自动提供本地天气预报;如果一味按照以上恶意权限组合规则去判断一个应用是否是恶意应用,则会造成很多误报。
针对类似情况,本文提出一种在不同应用类别情景下基于恶意权限组合的窃取Android隐私恶意应用检测方法。该方法的设计思想为:首先根据GooglePlay对Android应用的分类(如表4所示),从每个类别中各取30个非恶意应用作为实验样本,统计30个恶意权限组合在每个类别实验样本中出现的概率,并通过概率计算出各个恶意权限组合对于各类别的恶意值。例如天气类应用中恶意权限组合16、17的恶意值计算出来应该很小,而在音乐与音频类应用中其恶意值应该很大。然后利用恶意值计算待检测应用的恶意权值。如果应用的恶意权值小于或等于预设的阈值,那么就认为该应用不是窃取用户隐私的恶意应用,反之则是窃取隐私的恶意应用。下面给出详细介绍。
设应用类别集合C={c1,c2,…,c26},ci代表表4中相应的应用类别,设恶意权限组合集合M={m1,m2,…,m30},mj代表表2中相应的恶意权限组合。设T为恶意阈值。
表4 GooglePlay对应用的分类
定义1概率P(ci,mj):在ci类应用样本中第mj条恶意权限组合出现的概率。
(1)
其中TS(ci):类别ci中实验样本的总数;PT(ci,mj):类ci样本中第mj条恶意权限组合在实验样本中出现的次数。
定义2恶意值B(ci,mj):对类ci,第mj条恶意权限组合的恶意值。
(2)
以0.9为底的对数函数在0到1区间内的较大斜率单调递减性质可以放大各恶意权限组合的恶意值之间的差异性。P(ci,mj)等于0则恶意值B(ci,mj)趋向于无穷大,表征类ci应用申请第mj条恶意权限组合是不合理的。
定义3恶意权值T(a):应用a的恶意权值;
(3)
本文检测方法的步骤:
Step1构建非恶意样本库。
GooglePlay是Android应用的官方市场,它对上线的应用有严格的审核机制。本文根据GooglePlay对应用的26个分类,从其中下载评分高、下载用户多的应用,并通过杀毒软件过滤,分别采集每类样本各30个,共780个,把它们作为非恶意应用实验样本。GooglePlay应用分为26类,如表4所示(由于个性化与动态壁纸内容相同故归为一类)。
Step2根据式(1)、式(2)计算出P(ci,mj)、B(ci,mj)。
Android SDK(soft development kit)中的资产打包工具AAPT(Android asset packaging tool)可以提取应用AndroidManifest.xml中申请的权限,编写Java程序自动执行APTT工具,对Step1构建的非恶意样本库中的应用进行解压,以应用类别为单位逐一提取每个样本应用的权限并以二维数组的形式保存,二维数组的行存储的是一个应用申请的所有权限。将二维数组的每一行与表2对比,统计该类别中每个恶意权限组合出现的次数,即式(1)中的PT(ci,mj)。图1、图2分别是娱乐、天气两个类别的非恶意样本通过统计得出的PT(ci,mj)统计图。根据PT(ci,mj)计算式(1)的概率P(ci,mj)和式(2)中的恶意值B(ci,mj),由于不同类别中不同恶意权限组合的B(ci,mj)各不相同,限于篇幅不予列出。
图1 娱乐类应用权限组合分布图
图2 天气类应用权限组合分布图
Step3由B(ci,mj)根据式(3)计算任意一个应用a的恶意权值T(a)。
由Step2得到B(ci,mj)后就可以通过式(3)检测任意一个类别中任意一个应用的恶意性了。执行过程如图3所示。执行Java程序启动aapt.exe提取其AndroidManifest.xml中声明的权限,并在程序中把应用a的权限与表3中的恶意权限组合对比,得到应用a中出现的恶意权限组合的集合N(a),通过式(3)计算应用a的恶意权值T(a)。如果T(a)大于恶意阈值T,则判断a为威胁用户隐私的恶意应用,若T(a)小于或等于T则判断a是正常应用。T的取值很关键,如果该值过大,会造成检测的准确率很低,T太小会造成正常应用的误报率很高。通过给阈值T取不同的值,反复实验对比分析,取经验值T=0.5时检测的准确率较高、误报率较低,综合表现最佳。
图3 恶意应该检测流程图
实验在内存为4 GB、处理器为Intel(R) Core(TM) 2.6 GHz的机器上完成,用Java语言实现了如图3所示检测流程。为了衡量实验的效果,先定义真阳性TP(True Positive),即正常应用被检测为正常的数量;假阳性FP(Fail Positive),即正常应用被检测为恶意的数量;真阴性TN(True Negative),即恶意应用被检测为恶意的数量;假阴性FN(Fail Negative),即恶意应用被检测为正常的数量;定义FPR=FP/(TP+FP),即正常应用的误报率;TNR=TN/(TN+FN),即恶意应用被检测为恶意应用的检出率;ACC=(TP+TN)/( TP+FP+TN+FN),即检测的总体准确率。
VirusShare[18]是一个庞大的病毒库,其收集了被各大杀毒中心认定为病毒的病毒样本,其中也包含Android系统上窃取用户隐私的恶意应用。本文从其中下载窃取用户隐私的恶意应用500个,从其中随机抽取300个作为实验数据。从初始样本中取150个正常应用,再另外从GooglePlay中下载150个正常应用。以正常应用和窃取用户隐私的恶意应用各50个为一组,共6组作为实验数据。统计实验结果如表5所示。
表5 实验结果
由表5可以计算出本文方法的总体准确率ACC为82.83%,恶意应用样本的检出率为74.67%,正常应用的误报率为9%。用以上6组数据作为样本,用文献[8]的方法进行检测,得出总体准确率ACC为62.15%,恶意应用样本的检出率为32.29%,正常应用的误报率为8%。本文方法虽然误报率略高于文献[8],但总体检测准确率和恶意应用检出率均高出文献[8]很多。同时,本文与文献[19]同属于基于权限检测恶意应用的静态检测方法,本文的平均准确率略高于文献[19]的总体平均准确率ACC的80.634%。可见本文检测方法虽然误报率略高一点,但是其准确率和恶意应用检出率都较高,相比之下综合表现更佳。作为一个轻量级检测方法,用来初步判断Android应用是否有窃取隐私信息的恶意倾向还是有效的。
实现是在一台内存为4 GB、处理器为Intel(R) Core(TM) 3.2GHz、操作系统为Ubuntu12.04的机器上,先下载并编译Android4.0.3源代码;然后修改Android系统安装应用的入口代码PackageInstaller:在用户安装应用时对安装应用申请的权限进行检测,如果检测到待安装应用存在恶意权限组合,则要求用户选择应用类别以进一步检测,如图4所示;最后根据用户选择的应用类别计算出待安装应用的恶意权值T(a),如果T(a)大于阈值T则提示该应用的何风险,并让用户选择是否继续安装。
图4 提示用户选择应用类别
本文通过参考Kirin检测工具的安全策略,并分析Android系统的所有权限,从隐私信息入手提出了一系列窃取用户隐私信息的Android恶意权限组合;由于某些恶意组合出现在某些特定类别应用中是合理的,所以又通过大量实验计算出每个类别分别对每个恶意权限组合的恶意值;利用恶意值可以计算出任意待检测应用的恶意权值,把恶意权值与本文提出的阈值T比较,从而判断该应用是否是窃取隐私的恶意应用。实验结果证明本文提出的方法的检测准确率高。最后通过编译并修改Android系统源代码,把本文的方法添加到应用安装入口PackageInstaller中,增加了Android系统的安全性。下一步将扩大样本的数量等,进一步完善本文的检测方法。
[1] Smartphone OS sales market share[EB/OL].(2015-3-7) http://www.kantarworldpanel.com/global/smartphone-os-market-share/.
[2] Android,the world’s most popular mobile platform[EB/OL].(2015-4-22) http://developer.android.com/about/index.html.[3] 2014年第一季度网秦全球手机安全报告[EB/OL].(2014-5-28) http://s1.nq.com/file/cnnq/download/2014Q1.pdf.
[4] 360互联网安全中心2014年手机安全报告[EB/OL].(2015-3-20) http://zt.360.cn/1101061855.php?dtid=1101061451&did=1101205565.
[5] The Android manifest.xml file [EB/OL].(2015-4-3) https://developer.android.com/samples/BluetoothLeGatt/AndroidManifest.html.
[6] 蒋绍林,王金双,张涛,等.Android安全研究综述[J].计算机应用与软件,2012,29(10):205-210.
[7] Mainfest.Permission[EB/OL].(2015-4-22) http://developer.and roid.com/reference/android/Manifest.permission.html.
[8] Enck W,Ongtang M,Patrick McDaniel.On Lightweight Mobile Phone Application Certification[C]//Proceedings of the 16th ACM Conference on Computer and Communication-s,2009:235-245.
[9] 张嘉宾.Android应用的安全性研究[D].北京:北京邮电大学,2013.
[10] Enck W,Gilbert P,Byunggon C,et al.TaintDroid:An information flow tracking system for real-time privacy monitoring on smartphones[C]//Proceeding of the 9th USENIX Symposium on Operating Systems Design and Implementation (OSDI 10),2010:393-408.
[11] Ongtang M,McLaughlin S,Enck W,et al.Semantically rich application-centric security in Android [C]//Annual Computer Security Applications Conference,2009:304-309.
[12] Nauman M,Khan S,Zhang X.Apex:Extending Android permission model and enforcement with defined runtime constraints [C]//ACM Conference on Computer and Communication Security,2010:328-332.
[13] 张锐,杨吉云.基于权限相关性的Android恶意软件检测[J].计算机应用,2014,34(5):1322-1325.
[14] 张叶慧,彭新光,蔡志标.基于类别以及权限的Android恶意应用检测[J].计算机工程与设计,2014,35(5):1568-1571.
[15] 李海峰,章宁,朱建明,等.时间敏感数据流上的频繁项集挖掘算法[J].计算机学报,2012,35(11):2283-2293.
[16] 杨欢,张玉清,胡予濮,等.基于权限频繁模式挖掘算法的 Android 恶意应用检测方法[J].通信学报,2013,34(S1):106-115.
[17] 杨欢,张玉清,胡予濮,等.基于多类特征的Android应用恶意行为检测系统[J].计算机学报,2014,37(1):15-27.
[18] Virusshare.com-Because share is caring [EB/QL].(2015-4-3) http://virusshare.com/support.
[19] Sanz B,Santos I,Laorden C,et al.Permission usage to detect Malware in android [C]//International Joint Conference CISIS’ 12-ICEUTE’ 12-SOCO’ 12 Special Sessions,2013:289-298.
DETECTION METHOD FOR ANDROID MALWARE OF PRIVACY STEALING BASED ON PERMISSIONS COMBINATION
Huang MeigenZeng Yunke
(College of Computer Science and Technology,Chongqing University of Posts and Telecommunications,Chongqing 400065,China)
On the basis of analysing 165 permissions of Android system,we extracted 30 malicious permissions combinations that can theoretically acquire privacy resources of Android system.Aiming at the application category we proposed a detection method for the malwares stealing privacies,which is based on malicious value of malicious permissions combination,malicious weight of application under test,and malicious threshold.The correctness and accuracy of this method have been verified through the experiment.The method has also been implemented in Android operating system.
Android operating systemMalicious permissions combinationMalware detectionApplication category
2015-05-21。重庆市自然科学基金项目(cstc2012jjA4014);重庆市教委科学技术研究项目(KJ130518)。黄梅根,高工,主研领域:网络通信。曾云科,硕士生。
TP309
A
10.3969/j.issn.1000-386x.2016.09.074