张怡婷 张 扬 张 涛 杨 明 罗军舟
(1南京邮电大学计算机学院, 南京 210023)(2东南大学计算机科学与工程学院, 南京 210096)(3国网智能电网研究院信息通信研究所, 南京 210009)
基于朴素贝叶斯的Android软件恶意行为智能识别
张怡婷1,2张 扬2张 涛3杨 明2罗军舟2
(1南京邮电大学计算机学院, 南京 210023)(2东南大学计算机科学与工程学院, 南京 210096)(3国网智能电网研究院信息通信研究所, 南京 210009)
针对Android系统提供的基于应用权限授权的安全管理机制粒度较粗,并且一旦用户对应用软件授权即无法更改或追踪权限使用的问题,提出了一种基于朴素贝叶斯的Android软件恶意行为识别方法.该方法综合考虑软件运行时的用户操作场景和用户行为习惯以及软件权限等特性,抽取软件是否为系统应用、权限使用时是否有用户操作、软件是否申请了过多的权限、是否存在敏感权限组合、权限的使用是否存在突发性等作为分类属性,并通过对Android安全框架的扩展,实现了对恶意行为的实时分析和处理.实验结果表明,所设计和实现的Android软件恶意行为智能识别技术具有较高的识别率和较低的误报率,并且对系统性能的影响较小,可以有效增强Android系统的安全性.
Android安全;隐私泄露;权限使用;恶意行为识别
随着移动通信技术和智能终端的迅速发展和普及,人们更多地使用手机而非传统PC机来访问各种网络服务.作为占据市场领导地位的Android智能手机[1],在提供通信、个人事务处理以及娱乐等应用服务的同时,也由于其开放性和自由性面临着巨大的安全挑战.自2010年8月卡巴斯基病毒实验室报告发现Android操作系统上的首个木马程序Trojan-SMS.AndroidOS.FakePlayer.a以来,针对Android平台的恶意软件呈爆发性增长趋势.据网秦公司报告[2],2014年第一季度查杀到的手机恶意软件数共计41 199,同比增长63.9%;感染智能手机共计1 784万部,同比增长71.5%.
因此,如何识别Android软件恶意行为已成为学术界和工业界关注的热点.然而,现有智能终端上的软件行为分析源自传统PC机上的恶意软件识别技术,缺乏针对智能终端用户操作场景、用户行为习惯,以及软件属性、权限之类的Android系统独有特性的综合考虑.
针对以上问题,本文抽取多种高区分度软件的基本属性、运行环境和行为特征,应用朴素贝叶斯分类器设计了一种Android软件恶意行为识别技术,并通过对Android安全框架的扩展,实现了对恶意行为的实时分析和处理,实验结果证明了该技术的有效性.
Android系统是一种基于Linux权限分离的操作系统,它充分利用Linux已有的权限管理机制,通过为每一个应用分配不同的UID和GID,使不同的应用之间、应用和系统之间相互隔离.Android系统还在此基础上进行了扩展,提供了软件权限(permission)机制,对软件可以执行的某些具体操作进行权限细分和访问控制,以限制软件对系统或者其他软件的操控能力.
在软件开发时,软件所需要用到的每条权限都必须以一条字符串的形式在软件的AndroidManifest.xml文件中显式地申请.在AndroidManifest.xml文件中,权限分为2类:系统内置权限(users-permission标签)和用户自定义权限(permission标签).Android系统在应用程序框架层中引入了130多个内置权限,包括拨打电话的权限、使用网络的权限、读取SMS短消息的权限等.从表1可以看出,CALL-PHONE,SEND-SMS,INTERNET 等3种权限涉及用户费用,另外还有7种权限涉及到用户的隐私信息.通过窃取这些信息,再结合上述3种付费权限,恶意程序能够很容易对用户的隐私造成危害.因此,本文将研究如何实时监控这10种权限的使用情况.
表1 敏感权限列表
在软件安装时,软件所需要的权限以列表的形式呈现给用户,由用户选择是否给予软件授权.软件对应的GIDS是由应用程序框架在软件安装过程中生成,如果申请的某permission获得用户的授权,并且/etc/permissions/目录下的xml文件中存在(permission, gid)映射,那么该软件的GIDS中将包含这个gid.
在软件运行时,由于Android系统使用基于Dalvik虚拟机的沙箱机制,所有的应用程序都会先被解压缩到沙箱中执行.在该过程中,系统会对应用软件的权限进行检查:大部分权限,例如READ-SMS,WRITE-SMS,SEND-SMS等,都在应用程序框架的PackageManager.checkPermission函数中进行检查,依据是该权限是否在软件的AndroidManifest.xml文件中被声明;而另一些权限,例如INTERNET,BLUETOOTH等,是在操作系统内核中进行检测,依据是该应用软件对应的UID是否加入了该权限对应的gid,即软件的GIDS中是否包含该gid.
由上述分析可知,Android系统对应用软件权限控制的核心是permission,但是一旦用户选择安装软件,即赋予了该软件所申请的各类权限.那么,在目前的Android系统框架下,用户无法对权限进行更改,或者监控权限的使用情况.如何避免软件恶意使用这些权限,这也正是本文所要解决的问题.
现有的Android恶意软件检测技术主要分为静态特征检测和动态行为分析.
静态特征检测是识别恶意软件最常用、最直接的方法,根据分析对象的不同,主要分为二进制程序扫描和源代码扫描.静态特征码检测在识别已知恶意软件时非常高效准确,但在检测未知的恶意软件或已知恶意软件的变种时,则显得无能为力.并且,随着近些年Android系统中恶意软件数量呈指数级增长,病毒库也变得越来越庞大,静态特征码检测的效率难以得到保证.此外,受制于智能终端上的物理资源和电池续航能力,静态特征码检测会给用户的正常使用带来较大的影响.为了简化静态特征检测的复杂度,Enck等[3]提出了Kirin系统,通过分析Android软件申请的权限来判定软件是否存在恶意行为.Barrera等[4]采用SOM算法研究Android权限机制,通过对1 100个Android软件的权限进行分析,证明了不同类别软件在申请权限时存在很大的差异.由此可见,Android软件权限可以作为检测恶意性的特征属性.但是现有基于Android权限的恶意软件静态检测技术,仅凭借经验提取了一些恶意权限的组合,其完整性与可靠性较弱.
动态行为分析是对软件运行时的行为表现进行特征抽取与建模,然后通过模式识别算法判断这一系列的行为是否是恶意行为的技术.该方法不依赖于特征库,能够识别出未知的恶意软件.动态行为分析对特征属性的抽取与建模有很强的依赖性,目前的研究工作主要集中在行为监控、特征提取与特征模式匹配等方面.
1) 行为监控.Enck等[5]设计实现了TaintDroid系统以标记内存数据的流向,通过修改Dalvik虚拟机将传统的信息流追踪技术应用于Android系统中,在软件运行时对系统中敏感信息的传播进行监控,从而达到安全防范的目的.然而TaintDroid因采用传统的动态污点传播技术,使得运行时的程序性能开销明显提升,这对于实时性要求非常高的移动平台缺乏实用性.Zhang等[6]实现了软件动态分析平台VetDroid,可以分析出应用的权限使用行为,包括如何使用申请的权限访问系统资源,以及这些资源如何被进一步使用.但该工作仅提供了一种辅助分析的平台工具,本身无法实现恶意行为的分析和拦截.
2) 特征提取.Miettinen等[7]提出了智能手机异常检测中需要监控的一些系统信息,包括操作系统事件响应、操作系统资源使用率等一系列量化指标,并在此基础上提出了一个入侵检测理论模型.Schmidt等[8]从Linux内核角度分析了Android系统的安全性,并利用网络流量、系统调用以及文件系统日志来检测系统异常.但是这些工作本质上是系统异常的检测,无法具体分析出导致软件异常的原因,也没有考虑用户相关的特征,例如用户习惯、是否有用户在进行操作等.
3) 特征模式匹配.Rieck等[9]提出使用支持向量机对恶意软件行为进行有监督的学习,首先对大量恶意软件样本行为进行映射,然后利用支持向量机对行为进行划分.该算法需要有大量的恶意软件样本做依托,而且对智能终端性能要求较高.Bose等[10]提出了一种在智能终端上基于聚类的智能算法,通过分析短信或彩信的日志文件,学习软件使用短信或彩信的行为,从而检测恶意软件.类似地,Xie等[11]提出pBMDS系统,通过拦截智能终端上用户的输入,从而建立HMM模型来检测智能终端上的病毒.这2种方法对智能终端病毒的检测仅局限于短信和彩信的恶意发送,并没有对其他诸如打电话、网络或者敏感权限的恶意调用进行检测与拦截.Shabtai等[12]在Android系统中使用了标准的机器学习算法,包括K均值、逻辑回归、决策树、贝叶斯网络和朴素贝叶斯,分别对恶意软件进行识别.从实验结果看,决策树和朴素贝叶斯算法均能达到很高的准确率.
综上所述,动态行为分析是Android恶意软件识别的重要技术手段,但现有研究工作缺乏对软件运行时用户相关特征和软件属性、权限等特性的综合考虑,并且无法实现对恶意行为的实时分析和拦截.因此,本文将引入用户操作场景和软件属性、权限相关的属性特征,应用机器学习算法进行恶意行为的识别,并通过对Android安全框架的扩展实现对这些行为的实时分析和拦截.
3.1 特征属性的选择
为了识别Android软件使用特定敏感权限时是否属于恶意行为,本文从软件本身和软件所处的运行环境2个层面选择5个布尔量值的属性特征.
1) 软件是否系统应用.系统应用是指智能终端在安装Android系统时自带的软件,例如短信应用、拨号应用、通讯录、固件管理器、邮件服务等,通常这些软件不会恶意收集用户信息或者恶意耗费用户话费.因此,敏感权限的使用者是否是系统应用可以作为被抽象出来的一个特征.
2) 权限使用时是否有用户操作.通常用户不希望在不知情的情况下,软件在后台对智能终端进行操作,尤其是涉及敏感数据的操作.所以,权限使用时是否有用户操作可抽象出来作为恶意行为识别的一个特征.
3) 在安装软件时是否申请了大量权限.恶意软件为了能够对智能终端系统更大程度地控制,通常申请的权限远大于真实功能所需要的权限.针对软件申请权限数量的统计分析可知,通常恶意软件申请的权限数量要比非恶意软件的权限数量多,所以一旦敏感权限的使用者在安装软件时申请了大量的权限,则怀疑其对敏感数据的操作是恶意行为.
4) 申请权限中是否存在敏感权限组合.通常恶意软件所申请的多种权限被组合一起使用时,有可能威胁到系统或者用户数据的安全.本文采用Apriori算法对软件申请的权限进行关联规则挖掘,分析对象为Zhou等[13]在S&P 2012会议上发布的1 260个恶意软件数据集,以及Android市场中17个分类的850个热门软件.表2列出了部分置信度85%以上仅存于恶意软件中的敏感权限组合.当被赋予这些敏感权限组合后,则该软件得到了执行恶意行为的能力.虽然有实施恶意行为能力的软件并不一定会实施恶意行为,但一旦这类软件调用敏感权限时,则可能造成很大的破坏.因此,软件安装时申请敏感权限组合则可认为是恶意行为的一个特征.
表2 恶意软件使用较多的敏感权限组合
5) 敏感权限的使用是否存在突发性.本文通过随机抽取在手机中执行的49个恶意软件,共采集了8 849条敏感权限使用记录.通过分析发现,很多恶意软件在启动时,会伴随大量的敏感权限的使用.例如Gone in 60 seconds软件会在启动时使用查看通讯录、短信记录、通话记录这些敏感的权限,然后在用户无法反应的速度内,将这些信息上传到远端服务器,然后关闭应用进程;另一个软件moonsms在打开时,会连续向一个特定号码发送一连串特定代码含义的短信,试图通过短信的方式进行远程控制.然而在数据集中随机选出的34个非恶意的热门软件中,并没有发现类似现象.所以敏感权限的使用是否呈现突发特征也可以被抽象成恶意行为识别算法中的一个特征.
3.2 恶意行为的识别
本文将Android系统中软件恶意行为的识别问题建模成在特定环境下对软件敏感权限使用的分类问题.基于朴素贝叶斯分类器的恶意行为智能识别算法,记X={x1,x2,x3,x4,x5}表示用于分类的特征属性值;Y={ym,yb}表示分类结果为恶意行为和非恶意行为.恶意行为智能识别算法的执行过程如图1所示.
图1 恶意行为智能识别的流程
1) 准备阶段.这个阶段的主要工作是确定软件恶意行为的特征属性X,包括确定软件是否为系统应用、权限使用时是否有用户操作、安装软件时是否申请了大量权限、这些权限中是否存在敏感权限组合、敏感权限的使用是否存在突发性.收集一系列敏感权限的使用记录,并人工标记每条记录的分类结果,形成训练样本集合.
2) 分类器训练阶段.该阶段的主要工作是计算出贝叶斯公式中条件概率与先验概率的乘积,即计算训练样本中敏感权限被使用时每个特征属性Xi在各个结果分类中出现的频率与每个类别划分Yi出现频率的乘积,对出现频率为0的安全信任级别分类进行Laplace校准,最后将结果记录.其输入是特征属性和训练样本,输出为目标函数f(X),从而生成朴素贝叶斯分类器.
3) 应用阶段.该阶段的任务是使用分类器对待分类项进行分类.实时监控软件使用敏感权限的行为,将行为输入分类器,分类器根据训练得到的目标函数f(X)计算出贝叶斯公式中后验概率的分子部分(分母部分对所有特征属性X都相同,即可约掉).至此,通过朴素贝叶斯决策方法比较各个分类的计算结果,选取其中值最大的类别作为最终分类结果Y.针对分类可能存在的错误,本文引入了比率规格化参数φ来量化分类结果的可靠程度,其计算方法为
(1)
式中,Pb为软件被判定为非恶意软件的概率;Pm为软件被判定为恶意软件的概率.当φ<0.8时,认为分类结果无效,将由用户自行判断本次敏感权限使用是否为恶意.
4) 迭代更新阶段.该阶段的任务是实时迭代更新训练模型.本文初始模型是基于8 849条敏感权限使用记录所生成的,但当加入新的敏感权限使用记录后,需要对初始模型进行动态更新,从而能增加训练样本的规模,提高算法分类的准确度.
为了实现对软件恶意行为的实时分析和拦截,本文在Android应用程序框架层调用系统敏感权限时设置拦截函数,然后将拦截到的权限名称和正在调用进程的名称上传到应用层中心控制软件中,通过中心控制软件对该权限的使用做出判断,然后给予反馈.Android系统敏感权限的动态实时监控的执行过程如图2所示,共分为5个阶段.
1) 捕获阶段.该阶段主要通过拦截函数识别出正在使用敏感权限的进程名称.主要工作分为2部分:① 实时捕获所有权限使用的记录;② 设置过滤器,从中筛选出对敏感权限的使用,并构建成二元组形式〈packageName, permission〉,为中心控制程序的判断做准备.
图2 Android系统敏感权限的动态实时监控
2) 上传阶段.该阶段将应用程序框架层所捕获并构建出的二元组,通过Android的AIDL进程间通信机制,上传给应用程序层的中心控制程序.在系统进程中注册类似于函数回调机制的接口,由中心控制程序负责实现.
3) 分析处理阶段.根据用户在程序界面上设置的单个应用进程的监控模式对所接收到的特定应用进程权限使用请求做出反馈.首先查找二元组〈packageName, permission〉中软件的应用进程名,根据应用进程名,找到中心控制程序中用户对该软件所设置的模式〈ALWAYS-ALLOW, ALWAYS-DENIAL, ASK-USER, ARTIFICIAL-INTELLIGENCE〉,然后根据不同的反馈模式所处理的结果生成统一格式的反馈结果,并准备传回系统进程.
4) 结果反馈阶段.将Android应用程序层的判断结果回传给Android应用程序框架层.该阶段同样通过Android的AIDL进程间通信机制来实现.
5) 反馈结果处理阶段.该阶段的任务是处理执行中心控制程序的反馈结果.这个阶段所得到的最终结果分为ALLOW,DENY和ASK-USER三种形式.根据这3种反馈形式,应用程序框架层分别进行放行权限的使用、拦截权限的使用或者询问用户3种处理方式,并且将执行结果存入Android自带的Sqlite数据库中.
5.1 恶意行为识别效果的实验分析
为了验证本文实现的基于朴素贝叶斯分类器的Android软件恶意行为智能识别算法,本文在HTC G7设备上安装了83个软件(其中恶意软件49个、非恶意软件34个),运行40 d,对10个敏感权限的使用进行了详细的记录和分析,将8 849条敏感权限的使用记录作为训练样本,并采用有监督的学习方式,手动标记这些记录的类别.
本文记Nm,m为软件恶意行为分类正确的数量,Nb,b为软件非恶意行为分类正确的数量,Nm,b为软件恶意行为被分类为非恶意的数量,Nb,m为软件非恶意行为被分类为恶意的数量,N为数据集中的样本数量.各测试指标如下:
① 正确率(correct rate).PD表示数据集中归类正确的概率,即
(2)
② 错误率(error rate).PE表示数据集中归类错误的概率,即
(3)
③ 命中率(true positive rate).PT表示Android系统中软件的恶意行为被正确归类的概率,即
(4)
④ 误报率(false positive rate).PF表示Android系统中软件的非恶意行为被归类到恶意行为的概率,即
(5)
对于本文样本空间中8 849条敏感权限的使用记录,采用分层10折交叉方法进行验证,并迭代10轮,每轮随机使用不同测试集计算分类器的PD,PE,PT和PF.
实验结果显示,基于朴素贝叶斯分类器的Android软件恶意行为分类器的分类正确率为87.6%、错误率为12.4%、命中率为100%、误报率为36.7%.可见,该初始化的分类器有着较高的命中率、正确率以及较低的错误率,但是该分类器的误报率比较高.因此,本文将规格化比率φ参数引入分类器的判别:当φ<80%时分类器不做出决策,而是提示用户进行选择.
假设用户对Android软件恶意行为的反馈正确率为75%,则改进后的算法正确率为90.1%、错误率为9.9%、命中率为98.2%、误报率为15.3%.由于大幅度减少了误报率,保障了非恶意软件的正常使用.
5.2 智能分析和处理软件的测试
在上述工作的基础上,本文开发和实现了一款Android软件恶意行为的智能分析与处理软件.应用该软件可以对系统中任意应用进行敏感权限访问的4种设置:允许、禁止、询问和智能分析,分别对应允许访问、禁止访问、询问用户和进行智能判断4种操作.
根据Android平台中响应时间超时5 s就会弹出应用程序无响应(application not responding,ANR)的消息,提示用户是否继续等待或者关闭,本文针对软件性能的测试要求各操作的响应时间不超过5 s,从而不产生ANR异常.本文在HTC G7和Android模拟器上重复开启了10次, 求取平均启动时间, 随机点击了20次按钮求取平均响应速度,并使用PerfMon V1.1和Memory Status软件辅助检测包括CPU和内存在内的资源占有率,得到的性能测试结果如表3所示.
表3 软件性能测试结果
注:括号中F表示Android安全防护软件未启动时的状态;T表示Android安全防护软件打开以后的状态.
由表3可见,是否开启本软件对系统性能的影响较小,因此应用该软件可以有效增强Android系统的安全性.
本文针对Android系统所提供的安全管理机制粒度较粗,并且一旦用户对应用软件授权即无法更改或追踪权限的使用问题,在充分考虑用户操作场景、软件属性、权限之类特性的前提下,应用朴素贝叶斯分类器设计了一种软件恶意行为分析方法,并通过对Android安全框架的扩展,实现了对恶意行为的实时分析和处理,可以有效增强Android系统的安全性.
References)
[1]IDC Press. Smartphone OS market share 2014, 2013, 2012, and 2011[EB/OL]. (2004-07-01)[2014-08-07].http://www.idc.com/prodserv/smartphone-os-market-share.jsp.
[2]NQMobile网秦. 2014年第一季度全球手机安全报告[EB/OL]. (2004-06-10)[2014-08-07]. http://cn.nq.com/news/360.
[3]Enck W, Ongtang W, McDaniel P. On lightweight mobile phone application certification[C]//Proceedingsof16thACMConferenceonComputerandCommunicationsSecurity.Chicago, Illinois, USA, 2009: 235-245.
[4]Barrera D, Kayacik H, Paul C, et al. A methodology for empirical analysis of permission-based security models and its application to Android[C]//Proceedingsofthe17thACMConferenceonComputerandCommunicationsSecurity. Chicago, Illinois, USA,2010: 73-84.
[5]Enck W, Gilbert P, Chun B G. TaintDroid: an information-flow tracking system for realtime privacy monitoring on smartphones[C]//ProceedingsofUSENIXSymposiumonOperatingSystemsDesignandImplementation.Berkeley, California, USA, 2010: 24-38.
[6]Zhang Y, Yang M, Xu B, et al. Vetting undesirable behaviors in Android apps with permission use analysis[C]//Proceedingsofthe20thACMConferenceonComputerandCommunicationsSecurity. Berlin, Germany, 2013: 611-622.
[7]Miettinen M, Halonen P, Hatonen K. Host-based intrusion detection for advanced mobile devices[C]//ProceedingsofAdvancedInformationNetworkingandApplications. Vienna, Austria, 2006: 72-76.
[8]Schmidt A, Schmidt H, Clausen J, et al. Enhancing security of Linux-based Android devices[C]//Proceedingsofthe15thInternationalLinuxSystemTechnologyConference. Hamburg, Germany, 2008: 174-189.
[9]Rieck K, Holz T, Willems C, et al. Learning and classification of malware behavior[C]//Proceedingsofthe5thInternationalConferenceonDetectionofIntrusionsandMalware,andVulnerabilityAssessment. Paris, France, 2008: 108-125.
[10]Bose A, Shin K. Proactive security for mobile messaging networks[C]//Proceedingsofthe5thACMWorkshoponWirelessSecurity. Los Angeles, California, USA, 2006: 95-104.
[11]Xie L, Zhang X, Seifert J, et al. pBMDS: a behavior-based malware detection system for cellphone devices[C]//ProceedingsoftheThirdACMConferenceonWirelessNetworkSecurity. Hoboken, New Jersey, USA, 2010: 37-48.
[12]Shabtai A, Kanonov U, Elovici Y, et al. "Andromaly": a behavioral malware detection framework for Android devices[J].JournalofIntelligentInformationSystems, 2012, 38(1): 161-190.
[13]Zhou Y, Jiang X. Dissecting Android malware: characterization and evolution[C]//ProceedingsofIEEESymposiumonSecurityandPrivacy. San Francisco, California, USA, 2012: 95-109.
Intelligent identification of malicious behavior in Android applications based on Naive Bayes
Zhang Yiting1,2Zhang Yang2Zhang Tao3Yang Ming2Luo Junzhou2
(1College of Computer, Nanjing University of Posts and Telecommunications, Nanjing 210023, China)(2School of Computer Science and Engineering, Southeast University, Nanjing 210096, China)(3Information and Communication Department, State Grid Smart Grid Research Institute, Nanjing 210009, China)
As Android only provides coarse security management mechanism based on per-application permission authorization, and the granted permissions cannot be tuned and tracked during runtime, a malicious software behavior identification method using Naive Bayes classifier is proposed. When analyzing software behavior, not only software property such as permissions, but also user operation and behavior and some other characteristics are all taken into accounts. Accordingly, different classification features are extracted, such as whether the software is a system application, whether permission use is caused by user operations, whether the application is overprivileged whether there exists certain permission combination, whether there exist permission use bursts, and etc. By extending the Android security framework, malicious behavior can be detected and processed in real time. Experimental results show that the proposed method can detect malicious behavior with high detection rate, lower false positive rate and little system performance loss, which proves itself to be effective in enhancement of the security of Android system efficiently and effectively.
Android security; privacy leakage; permission use; malicious behavior identification
10.3969/j.issn.1001-0505.2015.02.005
2014-12-07. 作者简介: 张怡婷(1978—),女,讲师,zyt@njupt.edu.cn.
国家自然科学基金资助项目(61272054, 61320106007)、国家高技术研究计划(863计划)资助项目(2013AA013503)、国家电网公司科技资助项目(EPRIXXKJ[2014]2244)、江苏省网络与信息安全重点实验室资助项目(BM2003-201)、网络与信息集成教育部重点实验室(东南大学)资助项目(93K-9).
张怡婷,张扬,张涛,等.基于朴素贝叶斯的Android软件恶意行为智能识别[J].东南大学学报:自然科学版,2015,45(2):224-230.
10.3969/j.issn.1001-0505.2015.02.005
TP393
A
1001-0505(2015)02-0224-07