樊郁徽,徐 宁
(淮南师范学院计算机与信息工程系,安徽 淮南 232038)
Andriod智能手机在给人们生活带来便利的同时,也出现了许多安全方面的问题.国家互联网应急中心在2012年发现了162 981个移动互联网恶意样本程序,较2011年增长了25倍,其中有82.5﹪是针对Andriod平台的[1].这些恶意程序不仅影响到用户智能手机的正常使用,而且还存在恶意扣费、信息窃取及远程控制等安全威胁,给智能手机用户带来损失.据网秦科技2013年上半年的报告称,恶意扣费类恶意软件通过短信等途径订购SP业务进行恶意扣费,每天给中国手机用户造成450万元的话费损失;而远程控制类恶意软件通过接受服务器指令,联网下载软件并强行推送到用户手机,在一天时间内的获利额度可达780万元.因此,针对智能手机的恶意软件的检测与防范已成为网络运营商和网络安全部分急需解决的重要课题.
对于手机恶意软件的研究,国内外的一些专家和学者都开展过相关的研究工作,并取得了一定的成果,如在 M.Miettinen 和 P.Halonen[2]的文章中对移动智能设备中的恶意软件的检测进行了分析,并指出面临的问题和不足.Enck等人则关注恶意软件泄露个人隐私的问题,并提出了相应的检测方案[3].柏林工业大学(Technische University Berlin)的 Collin Mulliner和Aubrey-DerrickSchmidt等也在智能手机的恶意软件分析方面做出了很多研究工作[4-5].Abhijit Bose等人的论文提出使用SVM机器学习的方式进行智能手机的异常检测,并建立了相关检测模型[6].
目前,针对手机恶意软件的研究虽然已经取得了一些研究成果,但所采取的方法主要还是将原来计算机平台上的技术在手机平台上进行延伸.归纳起来,现有的手机平台恶意软件的研究可大致分为两个方面:一是研究手机恶意软件包括移动僵尸网络对手机用户、电信网络和互联网的攻击方式和安全威胁;二是对基于传统僵尸网络设计技术的移动僵尸网络设计的研究,研究内容包括移动僵尸网络架构、传播方式、命令与控制网络和通信算法等.
Andriod平台是Google公司在Linux 2.6平台上开发的,它由两部分组成:Linux和Java,并采用了分层式的架构设计,分别是Linux Kernel、Libraries和 Andriod Runtime、Application Framework、Applications,如图1 所示.
图1 Andriod系统结构图
Andriod应用程序主要通过Java语言开发,需要在Dalvik VM上运行,并由Andriod的运行环境提供核心Java核心函数库,每个Andriod应用程序都必须在Dalvik VM中运行.
每一个Andriod应用程序在运行时都会作为一个进程出现在系统中,每个进程之间相互隔离,每个Andriod应用程序中都存在一个AndriodManifest.xml文件,该文件中包含了该应用程序运行所需的权限.如果该应用程序需要使用AndriodManifest.xml文件中规定的其他权限的话,则会被系统阻止或终止运行,应用程序在安装时也会将所需的权限向用户提示.作为Andriod系统的安全防护措施,对应用程序超出限定的行为虽然可以进行控制,但并不能阻止应用程序利用已获得的权限发生恶意行为,对于绝大多数的用户来说,在安装应用程序时并不会去仔细核对应用程序申请的访问权限.
Andriod系统采取的另外一项安全措施是APK应用程序的文件签名.Andriod应用程序在发布时可以通过Debug Key工具进行编译并签名,通过签名机制可以保护应用程序的同源性.当一个被恶意修改过的应用程序再次在用户的Andriod系统中安装时,由于恶意修改过的应用程序无法匹配原签名,系统将不允许该应用程序的安装或升级.文件签名制度只能保护已安装的应用程序不会被恶意修改,对新安装的应用程序或者本身就包含恶意行为的原有的应用程序来说没有任何的防护作用.
Andriod应用程序在Google Play平台上发布时,需要开发者注册账号,并将发布的应用程序通过Google Play Developer Distribution Agreement(DDA)和Google Play Developer Program Policies(DPP)的检查,对违反协议和规定的应用程序会暂停发布,并通知相关开发者,对于恶意软件,Google Play Store可以通过远程方式卸载用户设备中的该软件.虽然Google Play采取了一些措施对Andriod应用程序进行检查,但 Google Play Store并不像Apple App Store和Windows Phone Marketplace那样对上架的应用程序进行严格的审核,只有通过审核的应用程序才能允许上架发布.在世界的各个地方还存在着大量的Andriod在线应用商店,同样在发布未经审核的应用程序,这也是导致Andriod恶意软件大量传播的重要原因.而“刷机包”、社交网络等也为恶意软件的传播提供了更多、更方便的途径.
现在,用于Andriod恶意软件的检测技术主要分为2类:静态行为检测方法和动态行为检测方法.
2.2.1 静态行为检测方法
静态行为检测方法主要通过对软件的指令代码进行分析、比较,检测其中是否包含有导致恶意行为的API函数调用,采用这种方式进行检测首先要获取到Andriod应用软件的Java源代码,然后通过分析其中是否包含对敏感函数的调用,并分析是否存在安全隐患,最终得出该软件是否为恶意软件的结果.静态行为检测方法需要通过逆向工程的方式对应用程序进行反编译,获得源代码,在分析过程中往往会受到软件加密及隐式函数(虚函数等)的影响,往往无法得出正确的结论.
2.2.2 动态行为检测方法
动态行为检测方法在程序运行的过程中执行,监控系统中的通信、短信息、网络接口及相关隐式信息的访问情况,并进行记录,从而获得应用程序的行为模式.动态行为检测方法可以很好解决应用程序代码因加密、混淆无法通过静态方式检测的问题.动态行为检测方法主要通过使用沙箱、虚拟机等形式来构建运行环境,并模拟应用程序的执行,从而获得应用程序的行为模式.这对检测的实时性要求较高.
在对Andriod恶意软件进行检测的时候,无论采用静态行为检测方法还是动态行为检测方法,都必须要先获取到Andriod应用程序的行为表现方式,包括正常应用程序和恶意软件,然后再对其进行机器学习,获得恶意软件的行为特征,从而区分恶意软件与正常的应用程序.
本文从Andriod应用程序的函数调用进行分析,对恶意软件的系统函数调用进行分析,获得恶意软件的典型文件特征,并作为检测的依据.
首先采集50个恶意软件样本,其中包括木马程序、间谍程序、蠕虫病毒等,对其进行反编译后,分析其APK源代码的系统函数调用.在反编译过程中,利用DEX2JAR将classes.dex文件转换成为Java代码,转换后的classex.dex文件中包含了该APK的实现代码.从中获得该程序的resources文件和class文件,再使用Java Decompiler将class文件转换成可读取的格式,而二进制的AndriodManifest.XML文件通过AXMLPrinter2 进行转换[7].
所有转换完成后,就可以对该软件代码进行分析,通过对AndriodManifest.XML文件进行分析,取得该程序所有的API调用,50个恶意软件的行为汇总见表1所示.
在表1中对恶意软件的行为进行了分析.在进行这些行为的同时,恶意软件还收集用户的隐私信息,见表2.
通过对恶意软件的行为进行分析,可以发现恶意软件的主要表现形式有以下5点:(1)恶意扣费;(2)远程控制;(3)隐私窃取;(4)资费消耗;(5)流氓行为.
以上5种恶意行为所调用的系统相关权限见表3.
表1 样本的恶意行为统计
上文中通过对样本程序进行分析,获得了Andriod恶意软件的主要表现形式,见表3所示.利用分析的结果可以为Andriod恶意软件的检测与防范提供相应依据.
虽然Andriod系统中对应用程序的权限有着较为严格的设定,对每一个应用程序都采用进程隔离的方式来运行,每一个应用程序如果需要访问该程序以外的数据和目录都必须要在安装时向系统提出申请,由用户进行批准.但大多数用户在安装应用程序时往往并不会认真了解该应用程序申请的权限是否合理,因此并不能确保恶意软件不会被正常安装.
由于Andriod系统底层使用的是Linux的内核,并且会将手机中每个文件建立相关的访问策略,保存在Linux内核的存储空间中.由此,可以根据文件的重要程度去设定相关权限[8].权限设定见表4所示.
表2 隐私信息收集分类统计
表3 恶意行为对应的主要权限
上述方法可以从一定程度上能够保护手机不会受到恶意软件的侵害,并能有效保护手机数据不会被非法使用.但这种方式存在着访问策略的制定过于粗放,往往在阻断恶意软件的访问时也会影响到正常软件的使用.
行为检测的方法是现在Andriod恶意软件检测中所采用的常见方式.无论是静态行为检测还是动态行为检测,都是通过分析恶意软件的特征行为,并在此基础上进行机器学习,从而建立相关规则,用以区分正常软件和恶意软件.由于Andriod应用软件的应用范围在不断扩大,应用形式也在不断更新,因此行为检测的方法要想始终保持检测的准确度,就必须不断更新,以适应新的环境.现在通常的做法是将行为检测与黑、白名单相结合,这样既降低检测的复杂程度,又提高了检测效率.
表4 文件权限设置
Andriod平台由于其开放性特点,给应用软件的开发与推广提供了便利条件,成为迅速占领市场的重要因素.也正是由于其开放性,使得Andriod恶意软件的泛滥程度远远大于其他平台.随着手机性能的不断提高,恶意行为所造成的危害也在不断提高,对Andriod恶意软件的检测与防治工作所面临的挑战也变得越来越大.Andriod平台自身的安全性问题和软件的审核机制如果不能在后续的发展中得到改善,Andriod平台安全问题也将会成为另外一个Windows.
[1]国家计算机网络应急技术处理协调中心.2012年中国互联网网络安全报告[R].北京:人民邮电出版社,2013.
[2]Miettinen M,Halonen P.Host-based intrusion detection for advanced mobile devices[J].Information Networking and Applications,2006,20(4):72-76.
[3]Enck W,Gilbert P,Chun B,et al.TaintDroid:An Information-flow Tracking System for Realtime Privacy Monitoring on Smartphones[C]//Proc.of OSDI'10.Vancouver,Canada,2010.
[4]Schmidt A D.Smartphone malware evolution revisited:Android next target? [C].In Proceedings of the 4th International Conference on Malicious and Unwanted Software(malware).Montreal,QC,2009:1-7.
[5]Schmidt A D.Detection of Smartphone Maiware[D].Universitatsbibliothek,2011.
[6]Bose A,Hu X,Shin K G,et al.Behavioral detection of malware on mobile handsets[C].Proceedings of the 6th international conference on Mobile systems,applications and services.ACM,2008:225-238.
[7]Sharma K,Dand T,Oh T,et al.Malware analysis for Android operating[C].The 8th Annual Symposium on Information Assurance(ASIA'13).2013:31.
[8]刘昌平,范明钰,王光卫,等.Android手机的轻量级访问控制[J].计算机应用研究,2010,27(7):2611-2613.