郑艳梅,鲜茜
(四川大学计算机学院,成都 610065)
随着现代网络通信技术的快速发展,Android操作系统也成为智能手机和平板电脑最流行的操作系统,与其他移动操作系统相比,Android允许用户从第三方商店下载应用程序,其中很多都没有任何机制或工具来检查提交的恶意软件的应用程序,因此导致了恶意软件迅速崛起,也导致了Android成为最受移动恶意软件攻击的平台,而这些恶意软件也变得越来越复杂,以逃避那些最先进的检测方法。Android恶意软件的传播途径主要通过第三方应用市场、短信、社交网络、系统ROM等方式。而大多的应用市场又因为缺乏严格的检测手段和相关的安全标准,导致了Android恶意软件的快速传播。Android系统容易受到各方攻击的另一个原因就是其开源性。近年来,Android恶意软件越来越多,并且具有不同的攻击方法、数量大、传播快、变种多等特点,与此同时针对Android恶意软件检测的研究工作也有所发展。为了维护系统和用户的安全,An⁃droid要求应用程序在使用某些系统数据和功能之前应先请求相关权限。而恶意应用程序比良性应用程序更倾向于请求更多的权限,因此将权限信息作为检测Android恶意软件的方法之一。在本文中,首先,通过对Android系统的权限机制的研究,我们确定了提取权限作为检测的特征;其次,从获取到的应用程序安装包中提取其所有权限信息,并通过卡方检验去除了冗余权限特征,选取了相关的权限特征;最后根据软件类别,利用最大后验估计的方法实现对恶意软件的检测。本文提出的Android恶意行为检测方法先收集了大量真实的恶意软件样本,并在此基础上进行了实验,最后通过实验验证了该方法的有效性。
目前Android恶意软件检测主要为动态检测和静态检测两种方法。动态检测方法,是指在应用程序运行过程中观察其行为特征,试图识别在真实设备上部署和执行应用程序后的恶意行为。这些技术要求与应用程序进行一些人工或自动化的交互,因为只有在某些事件发生后才会触发恶意行为。动态分析可以提供更多的信息,但我们可能不会看到所有的执行路径,而且会消耗大量资源和时间。静态分析方法则是在安装Android应用程序前对其进行安全检测,先通过反编译等逆向手段获取到程序的特征,然后分析其源代码级的指令序列等。把收集到的数据重新整合和映射到一起,以便进行全局的分析。而静态分析的一个特别的缺点是,它对动态代码加载是盲目的,也就是说,静态分析不能处理在执行过程中下载的部分代码。相反,动态分析可以检查应用程序实际执行的所有代码。与动态检测相比,静态检测只需要分析一次就可以查出应用中的可疑行为。且静态分析通常更有效,因为它不需要代码的执行。
为了限制应用的行为,Android系统有一套严格的权限管理机制。当运行一个Android应用程序时,如电话、短信、蓝牙、Wi-Fi等,某些系统功能是不允许被默认调用的。这些功能通常对应于特定的硬件设备。因此我们在AndroidManifest.xml中使用了〈uses-permis⁃sion〉标签来向程序授予相应的权限以便使用这些功能。所有必需的权限需要被授予应用程序才能在系统上运行。权限不仅是Android系统为安全而设计的独特身份,也是为Android应用程序实现某些操作的前提。但实际使用不完全符合设计目标。用户不会像预期那样重视敏感权限的系统警告。一方面,当系统发生警告时用户决定使用该应用程序,此时用户将不会放弃此决定,并忽略该警告。另一方面,一般用户不熟悉权限的真正效果,也不知道敏感权限可能带来的危害。所有上述因素导致尽管系统通知恶意软件仍然被利用的严重后果。因此,判断用户是否选择是不合理和不切实际的。一方面,大多数用户没有相关的系统安全知识;另一方面,用户更关心App的实际功能,而不是潜在的威胁。文献[3]中Yajin Zhou建立了一个Android恶意软件家族的数据集,其中超过了1200种恶意软件样本。并且比较了1260个恶意软件样本和良性软件样本的使用权限差异,通过分析发现,恶意应用与良性软件相比更倾向于请求以下权限:SMS相关权限,例如WRITE_SMS,READ_SMS,SEND_SMS,RE⁃CEIVE_SMS,RECEIVE_BOOT_COMPLETED和CHANGE_WIFI_STATE等。同时,恶意应用明显比良性应用请求更多的权限。恶意软件和一般软件的重要区别也是我们选择权限为特征的原因。我们考虑使用权限有两个原因:应用程序通常需要那些实际上不需要的权限,而使用权限可以为Android恶意软件检测提供有用的信息。
对于恶意软件的检测技术研究,Feng等人开发了Appopscopy,这是一种基于语义的Android签名检测策略。在这种方法中,为每个恶意软件家族创建通用签名。而签名匹配是基于控制流属性的内部组件调用图实现的。除此之外,它还使用了静态污染分析来提高结果的准确性。然而,这种方法在代码混淆和动态代码加载方面似乎相当薄弱。文献[7]中Andrew W-alen⁃stein等人基于程序结构的特征选择来进行恶意软件分析。文中通过选择所有类的方法,发现潜在的接受广播事件的组件,这些是接受组件的入口点。如果一个接受组件在程序剩余部分是孤立的,那么这个组件被标记为可疑。通过在程序依赖图(PDG)进行网络中心度量来对孤立的接收组件进行排序。Aphonso提出了一种主要依靠系统调用频率和API调用的动态分析技术。这种方法的主要缺点是,它只能在应用程序满足某些API级别的情况下检测恶意软件。Blsing等人提出了一个Android应用程序沙箱(AAS),它使用静态和动态分析Android应用程序来自动检测可疑的应用程序。对于静态分析部分,代码是反编译的,有五种不同类型的模式是匹配的:(i)Java本机接口使用、(ii)反射、(iii)生成子进程、(iv)服务和进程间通信使用以及(v)运行时请求的权限。Apvrille和Strazzere采用了基于静态分析的Android恶意软件检测的启发式方法。他们的启发式引擎使用了39种不同的标记,这些标记是基于由恶意软件作者在他们的代码中常用的技术计算出来的。然后,引擎输出一个风险评分,以突出最可能的恶意样本。贝叶斯分类法是一种比较成熟的机器学习算法,其模型被广泛应用于多个方面,且均有很好的效果。贝叶斯分类器主要分为朴素贝叶斯和贝叶斯网络分类两种,而在目前的研究中,将朴素贝叶斯方法用于Android恶意软件的检测已成为研究的主要方向,所以本文利用朴素贝叶斯方法对Android应用恶意行为检测进行了研究。
Android-SDK(Software Development Kit)工具包下的 AAPT(Android Assert Packaging Tool)工具,可以解包APK格式软件,通过命令:aaptd permissions可抽取其中的权限信息并可进行单独存储。本文先是将获取到的应用程序安装包全部放到本地文件夹下,然后编写Java程序来获取该文件夹下的各个安装包,并利用Java程序调动并执行AAPT工具,再通过权限获取命令批量获取到各个应用程序的权限信息并存放到指定本地文件中,然后开始特征预处理工作,抽取关键权限特征和去除冗余权限属性。
本文通过卡方检验来获得软件的恶意倾向相关性,然后根据获得的相关性过滤掉其中低相关的那部分权限特征。卡方检验是用途非常广的一种假设检验方法,它在分类资料统计推断中的应用,分为成组比较和个别比较两类,通过卡方检验公式可以快速获得两个成分的相关性。然而卡方检验的设计思想中对于样本特征只统计样本中的有无特征,不考虑出现计次数,即“低频缺陷问题”,相关性的计算会受到影响。而每条权限信息在Android软件的权限声明信息中要么出现一次要么不出现,正好避开了“低频缺陷问题”,因此卡方检验适用于该应用场景。其中四格卡方检验的公式如下:
式中:a、b、c、d代表两个构成形成的 4种比较;N表示总的频数,即a、b、c、d之和。这里把是否是恶意软件和是否含有该权限作为两个构成,两两组合,统计可得 a、b、c、d.利用式(1)Android的 134个权限依次计算获得卡方值χ2i,根据检验水准α(默认值0.05)查找卡方界值表获得临界值与其比较,如果查表值小于卡方值该权限视为冗余权限予以去除。经过上述处理,权限特征集合得到初步降维,获得权限特征集合T。
基于贝叶斯定理的贝叶斯算法是一类简单常用的分类算法,有严谨的数学理论作支撑。它是在假定所有待分类项的各个属性都相互独立的时候构造出来的一种分类算法,因此称为朴素的,即朴素贝叶斯算法。
基本思想是:先求出在某一待分类项出现的情况下各类别出现的概率,然后将概率最大的分类项作为该类别。对朴素贝叶斯算法定义如下:
1、设为一个待分类项,而每个a为x的一个特征属性。
最大后验估计(Maximum A Posteriori,MAP)可以理解为当先验概率p($)为均匀分布时的MAP估计器。它与最大似然估计相比,不同之处在于:最大后验估计融入了要估计量的先验分布在其中,可看做是规则化的最大似然估计。我们在估计过程中先将目标函数作为后验概率的似然函数,然后利用先验概率和朴素贝叶斯定理得到其后验概率,最后利用极大思想求出该似然函数最大时的参数值,即MAP的目标结果。其公式为:
其中:(1)vMAP为最可能的分类,V为目标属性取值集合(此处为{0,1},1代表是正常程序,0代表是恶意程序),vj为目标属性(j)的取值,a1,a2,……an为样例的特征属性。
(2)估计P(vj)只需要计算每个目标值出现在训练样例中的频率即可其中n为权限特征集合T总样本数量各权限总数。
(4)必须要一个非常大的样例空间才可以,但这不现实。基于一个简单的假定:若属性间在给定目标值时相互独立,有(文献[12]在数学角度上说明了朴素贝叶斯能有效分类的原因以及朴素贝叶斯假设的合理性。项也可根据训练数据上出现的频率得出。代入上式:
便可得到最可能的分类预测。
在实际应用中,并不是所有申请了恶意权限组合的应用都是恶意应用,如一个天气预报App就需要获取ACCESS_FINE_LOCATION+INTERNET或ACCESS_COARSE_LOCATION+INTERNET这些恶意权限组合,它们可以给用户自动提供本地天气预报;如果一味按照恶意权限组合去判断一个应用是否是恶意应用,则会造成很多误报。因此,我们对于不同的Android应用程序类别提出了一种基于权限信息的恶意软件检测的方法。该方法的设计思想为:首先根据Google Play(因为谷歌官方审核相对比较严格,所以本文所选取的正常应用均是从Google Play中进行下载的)对An⁃droid应用的分类,从每个类别中各取100个非恶意应用作为实验样本,再从VirusShare(VirusShare是一个庞大的病毒库,其收集了被各大杀毒中心认定为病毒的病毒样本,也包含Android系统上窃取用户隐私的恶意应用)中分别获取与各非恶意软件类别对应的100个恶意软件,然后编写Java程序来利用AAPT工具,解包APK格式软件,抽取其中的权限信息单独存储。然后开始对特征进行预处理,在抽取关键权限特征的过程中删减其中冗余的权限特征。之后将上述的正常软件和恶意软件各抽取了50个分为一组,并在这些样本中随机抽取3组数据(将其序号编为1、2、3),在未参与训练的新样本中随机抽取3组数据(序号为4、5、6)进行检测,然后计算贝叶斯后验概率。最后通过最大后验估计公式(2)比较其属于正常软件和恶意软件的概率值来得到软件检测结果。整个实验流程如图1。
图1 恶意软件检测流程
实验采用正常应用和恶意应用各50个为一组,共6组来作为实验数据。限于篇幅,此处仅列出了常用的四类软件(工具、财务、健康与健身、娱乐)的实验结果,如下列各表所示。
表1 工具类实验结果
表2 财务类实验结果
表3 健康与健身类实验结果
表4 娱乐类实验结果
本文先分析介绍了Android系统的权限机制以及Android权限的特点,在去除冗余权限信息的过程中选取了Android权限作为特征,然后利用朴素贝叶斯算法进行了分类,最终形成了一个初步的Android恶意软件判断方法。此方案在恶意软件检测的应用过程中简单易施行,且检测效果良好,速度快,适合于对恶意软件的恶意倾向进行初步检测,再结合已有的动态分析方法还可进一步提高其对恶意软件检测的准确率。在将来工作中将完善Android手机安全机制,可以利用工具Monkey Runner来实现对软件动态行为的获取,通过动态检测和静态检测相结合来进行分析,再使用其他机器学习技术来评估组合特征集,以此来有效提高检测的准确率。
参考文献:
[1]Song Jie,Party Li Cheng,Guo Chao,Zhao Meng.Security Mechanisms Analysis and Appliction Research of Android Mobile Platform[J].Computer Technology and Development,2010,20(6):152-155.
[2]Liao Ming-Hua,Zheng Liming.Android Security Analysis and Solutions Study[J].Science Technology and Engineering,2011,11(26):6350-6355.
[3]Ya-jin Zhou,Xu-xian Jiang.Dissecting Android Malware:Characterization and Evolution.North Carolina State University.Security and Privacy(SP)[J].2012IEEE.
[4]A.p.Felt,E.Chin,S.Hanna,D.Song,D.Wagner.Android Permissions Demystified.Proc.18th ACM conference on Computer and Communications security,ACM,2011,pp.627-638.
[5]V.Moonsamy,J.Rong,S.Liu.Mining Permission Patterns for Contrasting Clean and Malicious Android Applications.Future Generation Computer Systems,2013.
[6]Blasing Thomas,BatyukLeonid,SchmidtAubrey-Derrick,CamtepeSeyit Ahmet,Albayrak Sahin.An Android Application Sandbox System for Suspicious.Software Detection[C].IEEE Conference Publications,2010:55-62.
[7]Andrew W|alenstein,Luke Deshotels,Anm Lakhotia.Program Structure.Based Feature Selection for Android Malware Analysis.In Security and Privacy in Mobile Information and Communical[ion Systems2012.Springer.P51-52.
[8]Borja Sanz,Igor Santos,Carlos Laorden,eta1.Puma:Permission usage to Detect Mal ware in Android[C].Intemational Joint Conference CISIS'1 2.ICEUTE 1 2.SOCO'1 2 Special Sessions.Springer,2013:289-298.
[9]文伟平,梅瑞,宁戈,等.恶意软件检测技术分析和应用研究[J].通信学报,2014(8):78-86
[10]Chiang H-S,TsaurW.Mobile Malw are Behavioral Analysis and Preventive Strategy Using Ontology[C].Proceedings of the Social Computing(SocialCom),2010 IEEE Second International Conference on,2010:1080-1085.
[11]Enck W,Ongtang M,McDaniel P.On Lightweight Mobile Phone Application Certification[C].Proceedings of the Proceedings of the 16th ACM Conference on Computer and Communications Security,2009:235-245.
[12]HARRY ZHANG.The Optimality of Naive Bayes[EB/OL].University of New Brunswick.http://www.aaai.org/Papers/FLAIRS/2004/Flairs04-097.pdf.