一种静态Android程序恶意性检测方法

2014-01-01 03:10刘晓东何加铭史智慧
无线电通信技术 2014年2期
关键词:静态应用程序程序

刘晓东,何加铭,冯 波,史智慧

(1.宁波大学通信技术研究所,浙江宁波315211;2.中国移动通信集团浙江有限公司,浙江宁波315042;3.宁波新然电子信息科技发展有限公司,浙江宁波315211)

0 引言

近几年,智能手机的普及使得移动设备恶意程序数目迅速增加,尤其是Android平台。根据NQ Mobile发布的安全报告显示,2012年新发现的移动设备恶意软件总数为65 227个,比2011年增长163%,并且 98.4%的恶意程序针对 Android平台[1]。市场占有率高是Android恶意程序泛滥的一个很重要原因,另外,除了Google的官方Android应用市场外,还有许多第三方Android应用市场,这些应用市场对于应用程序宽松的审查也是Android恶意程序增长迅速的一个很重要的原因,国内外研究学者提出许多Android恶意程序的检测方法。

文献[2]利用数据挖掘算法Apriori给出的关联规则来检测程序对于敏感权限的访问。Kirin方案[3]是一种轻量的基于权限的认证方法,在该方法中如果应用程序所申请的权限中包含预先设定的具有风险的权限组合,则认为该程序具有潜在的恶意性,该方案将会阻止该程序的安装。该方案作为一个服务运行在Android系统上,是对Android安全机制的扩展,但手机有限的资源和计算能力使Kirin方案具有一定的局限性。本文的检测方法在Kirin方案的基础上进行了改进。

1 Android恶意程序行为特征总结

对现有的Android恶意程序行为特征进行总结,对于Android程序的恶意性分析有重要意义,从Android恶意程序的权限申请、入侵方式和恶意代码加载方式3个方面进行总结。

1.1 权限申请

在Android应用程序中,要实现网络连接或者系统资源的访问,都需要在配置文件中申请相应的权限,比如网络连接需要申请INTERNET权限,发送短信需要申请SEND_SMS权限等[4],对972个恶意程序与972个非恶意程序权限申请的统计结果如表1所示。

表1 恶意程序与非恶意程序权限申请对比

恶意程序通常比非恶意程序申请更多的权限,而且恶意程序往往更多的申请与短信相关的权限,比如SEND_SMS和READ_SMS等。某些权限在恶意程序和非恶意程序中都被申请比较普遍,比如INTERNET和READ_PHONE_STATE等,因此并不能简单的根据权限的申请情况来判断该程序是否具有恶意性,但是不同权限的组合为分析程序的恶意性提供重要信息。

1.2 入侵方式

主要入侵方式有:

①重新打包法是Android恶意程序最常用的入侵手段[5]。黑客将普通应用程序反编译,在原程序中嵌入恶意代码,将其重新包装成一个新的Android应用,并将此含有恶意代码的应用上传到Android应用市场,供用户下载。DroidDream等恶意应用采用这种方式入侵用户终端;

②重新打包法使用的比较普遍,但是这种方式有个缺点就是被感染的程序安装文件包含全部的恶意代码,容易被终端上的杀毒软件检测出来。远程更新法虽然也要对应用程序重新打包[6],但并没有在被感染的应用中嵌入恶意代码,只嵌入能够访问远程服务器的代码,这样就能避免杀毒软件的检测,成功入侵。安装成功后,被感染的恶意程序会通知用户更新版本,这时恶意代码将会被下载到终端并嵌入到应用程序中。BaseBridge等恶意程序采取这种方式入侵[5];

③引诱法是一种比较传统的入侵手段,黑客通常在网页或其他Android程序中植入一些比较诱惑的图片或文字信息,引诱用户点击下载。这种手段目前应用的也比较广泛,GGTracker等恶意程序采用这种入侵方式。

1.3 恶意代码加载方式

Android恶意程序往往通过注册系统事件,由系统事件触发恶意代码加载。在众多的系统事件中,BOOT_COMPLETED是被恶意程序使用频率最高的[7]。当系统启动完毕时是恶意程序最佳的启动时机。SMS_RECEIVED也同样广泛的被恶意程序采用,因为许多恶意程序对于手机收到短信这一事件很感兴趣。另外,恶意程序往往过量的注册系统事件,有些系统事件程序本身根本用不到。

拦截应用入口界面也是许多恶意程序常用的手段,当用户启动或点击桌面上的启动图标时,恶意软件将会收到ACTION_MAIN事件[8],这时恶意程序就会在用户启动好应用程序前迅速的启运的自己的服务,并将其他应用程序的入口换为自己的入口。

2 程序恶意性检测方案

Kirin方案预先定义了一些规则,比如程序中不能同时申请RECEIVE_SMS和WRITE_SMS 2个权限,否则认为该程序是不安全的,但是这样粗粒度的检测会增加误报率,将没有恶意行为的程序检测为具有恶意行为的程序。文章扩大了检测范围也细化了检测粒度,增加了对可能导致程序具有恶意性的API的检则,同时为了更加准确的描述程序的恶意程度,降低误报率,量化了不同静态行为特征的恶意性指数,恶意性指数越高说明具有恶意的可能性越大,通过计算程序的恶意性指数来判断程序的恶意程度。Google提供了针对Android程序安装文件中.dex文件的反编译器baksmali,baksmali可以将.dex文件反编译为smali文件,而smali语法完整的实现了.dex的所有功能,包括程序代码、注释和调试等大量信息,利用这个工具可以获取程序的API,在文中静态行为特征是指能够导致某一恶意行为的权限或API的组合。

2.1 检测方法流程

如图1所示,基于静态行为特征的Android程序恶意性检测方法主要分为4个模块,分别为预处理模块、反编译模块、检测模块和恶意性指数计算模块,另外还有一个静态行为特征库。静态行为特征库是检测方案的核心部分,直接影响整个系统的设计、实现与检测效果。预处理模块主要用来分析输入的样本文件是否为正常的Android安装包,另外,如果文件名中包含影响程序运行的特殊字符,将删除特殊字符,并对文件重命名等。反编译模块从检测样本中提取出AndroidManifest.xml配置文件与.dex文件,并分别对其进行反编译,得到检测样本的配置文件与smali文件。分析模块根据静态行为特征库中的内容分别对配置文件与smali文件中的内容进行检测,检测出程序中所包含的所有满足条件的静态行为特征,最后将根据检测结果计算样本的恶意性指数。

图1 检测方法流程图

2.2 恶意性指数计算

静态行为特征的选取具有2个方面的条件,首先所选取的特征可能导致程序具有某些恶意行为,比如程序申请的权限中同时出现具有访问网络的权限INTERNET和允许应用程序读取手机上存储的所有联系人的权限READ_CONTACTS,这2个权限的组合就可能导致手机用户的联系人信息泄露,所以这2个权限的组合可以作为一个判断程序是否有恶意性的静态行为特征。另外,还要求所选的特征在非恶意程序中的出现概率较低,比如SEND_SMS是允许程序发送短信的权限,RECEIVE_SMS是允许程序接收短信的权限,普通的应用程序很少同时申请这2个权限,但经常在一些恶意吸费程序中出现,比如恶意程序Zsone,Zsone入侵用户手机后首先向一个恶意号码发送短信订购业务,为了不让用户发现自己的恶意行为,Zsone拦截手机运营商发送业务订购通知消息,这样就能在用户毫无察觉的情况下恶意扣除用户话费。静态行为特征库还包含可能使程序具有恶意行为的API,比如,一些恶意程序使用Runtime;->exec调用来执行系统命令,还有一些恶意程序利用DexClassLoader;->loadClass来加载外部.apk或.jar文件来实现恶意行为,这些API都将作为静态行为特征来分析程序的恶意程度。

每个静态行为特征都是由多个权限或API组成的,其中的每个权限或API作为这个静态行为特征的一个元素,只有所有元素都具备时才认为所检测的程序具备这个行为特征。静态行为特征用下面的模版格式来表示:

{[元素数目],[元素代号1,元素代号2,…],[行为描述],[恶意性指数t]}。

元素数目代表这个静态行为特征中所包含的权限和API总数,模版的第2项列出的是每个元素的代号,例如“1”代表 INTERNET权限,“2”代表READ_CONTACTS权限等。行为描述是对这条静态行为特征的简短的描述,例如“泄露用户通讯录信息”。恶意性指数t用来表示这个静态行为特征的危险程度,假设这条静态行为特征中有n个元素,且相互独立,pmi(i=1,2,3,…,n)代表第 i个元素在恶意程序中出现的概率,则这个静态行为特征在恶意程序中出现的概率为:

pbi(i=1,2,3,…,n)代表第 i个元素在非恶意程序中出现的概率,则这条静态行为特征在非恶意程序中出现的概率为:

在方案中规定每个静态行为特征的恶意性指数为:

则所检测的程序样本的恶意性指数为:

式中,ti是该程序中所包含的静态行为特征的恶意性指数,程序样本的恶意性指数将作为判断程序恶意程度的依据。

3 实验结果及分析

从Android电子应用市场系统工具类、游戏类和网络通信类等6类应用程序中随机抽取112个程序,分别利用Kirin方案与本文方法对这112个样本进行检测,检测结果如图2所示。

图2 实验结果

所检测的程序的恶意性指数主要分布在0~50这个区间内,少数分布在50~75区间,只有少数的程序恶意性指数超过75。所以如果程序的恶意性指数超过50则认为该程序可能具有恶意行为,如果恶意性指数超过75则该程序极有可能具有恶意行为。而Kirin方案的检测结果相对简单,检测粒度比较粗略,误报率较高,112个样本中检测出42个具有风险的程序。而利用本文中的方法的检测结果,误报率明显降低,并且所检测出的可能具有风险的程序中多为可以发送短信的程序或可能泄露用户信息的程序。方案的检测粒度更细,所选取的检测内容能够准确地反映程序的行为活动。

4 结束语

提出的基于静态行为特征的Android程序恶意性检测方案,通过量化不同静态特征的恶意性指数来分析Android程序的恶意性。分别从Android程序的配置文件与反编译的smali文件中提取程序的静态特征,这些特征能够比较准确的描述程序的行为活动,从而能够可靠地分析出应用程序是否具有恶意的可能性。所选取研究的恶意程序数量较少,对于恶意程序覆盖不足,静态行为特征库还需要进一步完善。后续工作还需对更多的恶意程序分析研究,提取更多的静态行为特征。

[1] WANG Z,ZHOU Y,JIANG X,et al.Detecting Repackaged Smartphone Applications in Third-party Android Marketplaces[C]∥Proc.of the Second ACM Conference on Data and Application Security and Privacy.USA:ACM,2012:317 -326.

[2] CERBO D F,GIRARDELLO A,MICHAHELLES F,et al.Detection of Malicious Applications on Android OS[C]∥Computational forensics.Japan,2011:138 -149.

[3] ENCK W,ONGTANG M,MCDANIEL P.On Lightweight Mobile Phone Application Certification[C]∥Proc.of ACM Conference on Computer and Communications Security.USA:ACM,2009:235 -245.

[4] 宋杰,党李成,郭振朝,等.Android OS手机平台的安全机制分析和应用研究[J].计算机技术与发展,2010,20(6):152 -155.

[5] ZHOU Y,JIANG X.Dissecting Android Malware:Characterization and Evolution[C]∥ Proc.of the 33rd IEEE Symposium on Security and Privacy.USA,2012:95 -109.

[6] 乜聚虎,周学海,余艳玮等.Android安全加固技术[J].电信科学,2011,20(10) :74 -77.

[7] ZHOU Ya-jin,WANG Zhi,ZHOU Wu,et al.Hey,You,Get off of My Market:Detecting Malicious Apps in Official and Alternative Android Markets[C]∥Proc.of the 19th Annual Symposium on Network and Distributed System Security.USA,2012:168 -174.

[8] ALAZAB M,MONSAMY V,BATTEN L,et al.Analysis of Malicious and Benign Android Applications[C]∥ Proc.of the 32nd IEEE International Conference on Distributed Computing Systems Workshops.China,2012:608 -616.

[9] WILLIAM E,PETER G,BYUNG-GON C,et al.Taint Droid:An Information-Flow Tracking System for Realtime Privacy Monitoring on Smartphones[C]∥Pro.of the 9th USENIX Symposium on Operating Systems Design and Implementation(OSDI).Canada,2010:514 -520.

[10] BURGUERA I,ZURUTUZA U,NADJM-TEHRANI S.Crowdroid:Behavior-based malware detection system for android[C]∥ Proc of the ACM Conference on Computer and Communications Security.USA,2011:56 -74.

猜你喜欢
静态应用程序程序
最新进展!中老铁路开始静态验收
静态随机存储器在轨自检算法
删除Win10中自带的应用程序
试论我国未决羁押程序的立法完善
谷歌禁止加密货币应用程序
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
创卫暗访程序有待改进
油罐车静态侧倾稳定角的多体仿真计算
三星电子将开设应用程序下载商店