一种动态监控恶意APK应用的移动操作系统

2014-01-22 12:46王怀军房鼎益刘志伟
关键词:污点应用程序短信

王怀军,王 琳,房鼎益,刘志伟

(西北大学信息科学与技术学院/爱迪德物联网信息安全联合实验室,陕西西安 710127))

据美国市场研究机构 comScore调查[1],至2013年底Android移动平台在美国智能手机市场的占有率已经达到52%,已成为全球第一大智能移动操作系统。由于Android平台的APK应用可从第三方应用市场、网站论坛等下载并直接安装到手机,易被恶意软件制造者利用,他们通过篡改流行APK应用传播恶意软件。且在传统PC客户端,用户通常会安装安全防护类软件来查杀木马病毒,而在Android平台,这类安全防护类应用不具有root权限,和其他普通应用处于同一级别,没有管理和操作其他应用的特权。因此,只能在未获取root的情况下静态检测恶意应用(通过对包名等特征进行匹配)、应用加锁、短信加密、手机防盗等功能,不能有效防止恶意软件对用户隐私数据的非法监听[2]。

本文对原生Android系统进行扩展,增强Android系统监控恶意软件的能力。

1 APK恶意软件威胁与检测防范技术

1.1 Android平台的恶意软件威胁

目前,Android平台恶意软件威胁主要有以下方面:①手机账单欺诈。恶意软件可在后台拨打声讯台电话、恶意订购运营商SP业务等,给用户造成大额通信费用。②窃取用户隐私。窃取用户通讯录、短信特定数据文件等隐私信息。③破坏手机系统。④恶意控制后门。在系统留下“后门”,提供恶意操作接口,实现恶意操作。⑤危害移动网络环境。大量恶意软件分布在不同用户的移动设备,构成了分布式的攻击网络。此外,诱骗用户点击或强制性在后台访问广告、下载推广应用程序,影响用户的体验,给用户造成额外的流量费用。可见,恶意APK应用给用户带来严峻的安全威胁。

1.2 检测防范技术

众多APK应用数量和混乱的APK应用市场管理,使得检测验证恶意应用的工作非常困难。当前APK恶意软件的检测和防范主要通过2个方面的技术:静态检测和动态检测。

静态检测技术通常基于逆向工程的方法对APK文件进行静态分析,利用语义分析以及特征码判别是否恶意。语义分析通常不易自动化,耗费大量时间和精力,且检测效率取决于分析者水平,检测结果不稳定。特征码识别[3-4]减少人工参与,可实现自动化检测。它利用被检测软件特征与特征指标的匹配程度判定恶意行为[5]。对于具有新特征的恶意应用,采用特征码识别有一定延迟性,且移动设备自身的计算和存储资源有限,不适合大量的匹配计算。因此,静态检测方案仅可作为恶意检测的辅助手段。

动态监控技术是在恶意软件执行过程中阻拦恶意行为[6],Android系统中现有的安全防护类软件大多使用了动态监控技术。Android提供了一系列系统广播通知应用系统状态的变化,应用程序通过注册广播接收器(Broadcast Receiver)获得相应事件的感知能力。联网开关是利用iptables防火墙来实现的[7]。此外,在动态检测技术中也会应用特征匹配技术,选择联网、短信发送等应用程序行为[8]作为特征指标。

动态行为检测技术是通过对指令执行序列或API调用序列确定程序行为,不受到混淆、加密等规避检测技术的影响,执行效率也较高。因此,本文主要从对敏感数据跟踪和敏感行为监控两方面,研究Android平台恶意软件的动态监控方法,并设计基于Android的智能移动操作系统SecuD-roid。

2 SecuDroid的基本思想

SecuDroid是在Android系统的基础上进行一系列扩展,以阻断APK应用的恶意行为,保护用户隐私数据。旨在弥补Android系统在软件运行过程中权限管理的缺陷,全方位保护用户隐私数据、保障系统安全的智能移动操作系统。

SecuDroid主要遵循以下原则:① 保护效果行之有效。通过定义的隐私数据源,捕获隐私数据传播过程,拦截关键行为,确保隐私数据安全。另一方面,对于可能危及用户隐私或系统安全的行为,准确报警并阻断。②避免过度使用设备资源。移动设备的计算、存储资源有限,无法承受过重负荷的检测防范系统。③不影响应用或系统正常行为。在保护隐私数据过程中不破坏数据,对关键行为拦截不影响系统或应用正常行为。④用户的可配置性。即可由用户指定需要保护的隐私敏感数据和敏感操作行为。

SecuDroid对已安装应用软件的行为实时监控,从数据使用角度考虑,采用污点传播分析技术来分析用户隐私数据使用是否得当;从应用程序行为角度考虑,对关键系统函数进行监控,一旦检测到数据滥用恶意行为即向用户报警。可见,SecuDroid动态监控主要包含两个模块:污点数据传播分析和敏感行为监控。

污点数据传播分析模块将污点数据分析技术引入隐私数据保护[9],从数据使用角度出发,对数据使用过程进行跟踪,检测数据是否被滥用,该模块基于Android隐私数据保护项目 Taint-Droid[10]实现,TaintDroid 将污点数据分析技术引入隐私数据保护,实现全面隐私数据监测,包括进程间消息、变量级、函数级和文件级的监测。敏感行为监控模块是监控可能危及用户隐私和系统安全的关键操作,对高危操作进行记录或报警。由于APK应用的恶意行为通过多种途径实现,SecuDroid从应用层、系统层和内核层等多层次进行敏感行为监控。

下面分别对污点数据传播分析和敏感行为监控进行介绍。

3 隐私数据及行为监控

3.1 基于污点数据传播监控隐私数据

根据对TaintDroid的深入分析,利用污点数据传播分析对隐私数据进行监测。如图1所示,通过对隐私数据添加污点标记作为污点数据源(要跟踪检测的隐私数据),污点标记跟踪污点数据源的传播过程,最后利用检测节点检测数据,通过污点标记判断隐私类型,根据传播途径分析是否有隐私泄漏行为。通过分析,监控流程主要包含3个步骤:污点数据标记,污点数据跟踪和污点数据检测。

图1 基于污点数据传播的监控流程Fig.1 Flow ofmonitoring based on tainted data disseminate

3.1.1 污点数据标记 在Android系统中污点数据被定义为隐私数据,如短信数据、联系人数据、位置信息[11]等。在SecuDroid中定义一系列隐私数据标记,如Secu-Location表示位置信息数据标记,Secu-Contact表示联系人信息数据标记,Secu-Mic表示麦克风输入信息数据标记等。隐私数据在数据源处被附加污点标记,这些标记以一个32位整型数的形式附于被标记数据。

3.1.2 污点传播原理 在Dalvik虚拟机解释器中污点标记在变量间传播,当应用程序调用下层本地方法时,变量和污点标记一起被传入或返回,进程间的数据和污点标记使用Binder方式传播。

污点数据主要在变量间、方法间及进程间进行传播。变量间传播是指污点标记在变量间传播,如变量PhoneNSecu-Number被附加读取手机号的污点标记,若 Pm=Zone+PhoneNSecu-Number,则 Pm也被附加该污点标记;方法间传播是指在函数的调用过程中,污点标记通过函数的参数或返回值进行传播。如FuncA调用FuncB,则FunB中的污点数据也会传播给FunA;进程间传播是指在进程通信过程中,污点标记随着传播的消息传递给其他进程。

3.1.3 污点数据检测 检测节点通过检查被发送出的数据是否带有预定义的污点标记,判断是否有隐私泄露行为。主要通过在数据的关键接口处进行污点数据标记检测,如果发现流出设备的数据中包含污点标记,则将污点数据的使用信息打印在log信息中。对恶意行为进行控制,为用户提供信息,由用户决定是否放行,提高动态监控的准确度和实用性。

3.2 敏感行为监控

基于恶意行为的实现方法,监控涉及敏感操作的关键行为。SecuDroid系统在应用级通过ContentProvider监听,拦截“利用读取隐私数据库泄漏隐私”的行为;在系统级监控关键函数,拦截“利用相关Service泄漏隐私”的行为;在内核级监控Linux系统调用,拦截“通过调用本地方法泄漏隐私”的行为。

3.2.1 应用级监听 在Android系统中有很多涉及用户隐私或系统信息安全的公共数据库,如日程表、联系人、短信/彩信、通话记录等,这些信息以SQLite数据库的形式(.db文件)保存在相应文件目录中,并提供了ContentProvider接口供应用程序访问。如日程表信息保存路径为“/data/data/com.android.providers.calendar/databases/calendar.db”。

在SecuDroid中,利用ContentObserver观察者模式对数据库内容进行监视,观察和捕捉应用程序访问ContentProvider接口时引起的数据库变化,当其发生变化时(如写操作),触发回调函数进行处理。如监视发送短信行为,当有应用程序发送短信时,短信发件箱数据库的记录会增加,根据监视到短信数据库的变化,在其回调函数中通知用户——系统正在发送短信。

3.2.2 系统级监控 通过Android framework层,对触发敏感行为的API[12]进行监控。在Android源码中对拨打电话、发送短信、联网等敏感行为的API函数进行修改,在其执行关键操作之前插入用户决策代码,若用户同意操作,则继续执行原来API功能,否则,返回。SecuDroid重点监控涉及拨打电话、发送短信、联网等敏感行为API。如监控发送短信行为,可在Android源码中修改Sms-Manager类中的sendText方法。

3.2.3 内核级监视 Linux系统提供实现各种系统功能的子程序(过程)供用户空间的应用程序调用,当程序需要访问系统资源时,通过系统调用命令调用系统过程。Android系统基于Linux内核,也支持系统调用过程。在Android的Bionic系统库中,定义了多种系统调用过程。SecuDroid通过在Bionic系统库中涉及敏感操作的系统调用过程(如 open,execve,socket,sendto等)中添加监视代码,对系统调用过程进行监控。

综上所述,基于污点数据跟踪隐私数据,记录了隐私数据的详细传播过程,为用户分析APK应用的恶意性提供依据,为实时敏感行为的恶意性判断提供支持。从应用级、系统级、内核级监控检测应用程序的敏感行为,提高了监控的全面性。

4 SecuDroid系统测试及分析

4.1 有效性测试及分析

根据Android用户安装应用程序的获取来源,测试样本主要从以下来源选取:①Google Play官方应用市场;②第三方应用市场、网站或论坛;③自行编写的应用程序。

通过安装、运行样本应用软件,测试动态监控方案的有效性。运行安装后应用,尽可能完成各项主要操作。通过获取敏感行为及其使用的隐私数据,验证动态监控方案的有效性。最后,对样本进行逆向工程分析,并将SecuDroid系统的测试结果与人工分析结果进行对比,分析SecuDroid系统的检测效果。

通过执行软件样本得到有效性测试结果,如表1所示。

从表1可看出:

1)动态监控保护效果比较理想,可以发现和拦截大部分恶意行为,对于恶意扣费和窃取隐私类的恶意软件防范效果显著。但对于留有远程控制后门的恶意应用软件(小球之星 v1.0和NormalDemo v1.0),因为其触发条件非常隐蔽,在测试条件下未能触发部分恶意行为,因此未能成功检测。通过逆向分析,当触发后门条件恶意行为时,SecuDroid可以发现并阻止。

2)动态监控方案目前不能发现阻拦短信接收提示的恶意行为。

3)墨迹天气和公交查询发送短信和定位行为是应用自身需求,不能仅依据敏感行为作为判定恶意软件的标准,应进一步分析敏感行为操作是否合理。此外,若用户接受了应用的该行为,则该行为即为可信行为。

4.2 性能测试及分析

SecuDroid是对Android 2.3.4系统源码的修改和扩展,并重新编译Android系统内核,会对其应用的运行效率产生一定影响。选择以下常见应用行为测试性能影响:① 装载应用程序;②拨打电话;③ 新建联系人;④ 添加浏览器书签;⑤ 复制300kB的文件。

在原生Android系统和SecuDroid系统上分别测试以上行为的执行时间,记为 tandroid和tsecudriod,性能消耗增长率测试结果如表2所示。

由表2可以看出,相比原生Android系统,SecuDroid系统的基本应用行为会增加一定的性能消耗,但增长率基本介于5% ~20%之间。

本节对SecuDroid系统进行有效性测试和性能影响测试及分析。针对SecuDroid系统的保护模块功能,选择了存在恶意扣费、窃取隐私等行为的多个Android恶意应用样本以及少量正常应用样本进行有效性测试,验证了SecuDroid系统监控方案的有效性。此外,通过原生Android系统和SecuDroid系统中常用应用行为的消耗时间对比,发现,未对基本应用行为的性能造成太大影响。

表1 动态监控有效性测试Tab.1 Effectiveness test of dynam ic monitoring

表2 性能测试Tab.2 Performance Test

5 结语

本文分析了APK恶意软件造成的安全威胁,介绍了检测和防范恶意APK应用的一般技术,提出了从动态监控方面进行恶意分析的必要性,实现了增强安全机制的Android系统—SecuDroid。其中,利用污点数据传播技术检测用户的隐私信息是否被泄露或滥用,结合关键API行为监控技术,在应用层、系统层以及内核层对敏感行为进行监视和拦截,实现对隐私数据的跟踪和恶意行为的监控。并通过实验验证SecuDroid系统的有效性和可行性。

下一步研究工作中,将完善对敏感数据和行为的全面监控。同时,进一步研究性能优化问题。

[1] MILLER C.Mobile attacks and defense[J].Security& Privacy,IEEE,2011,9(4):68-70.

[2] IDIKA N,MATHUR A P.A survey ofmalware detection techniques[R].USA:Department of Computer Science,Purdue University,2007.

[3] ZHOU Y,JIANG X.Dissecting android malware:Characterization and evolution[C]∥2012 IEEE Symposium on Security and Privacy(SP),San Francisco Bay Area,California:IEEE,2012:95-109.

[4] SCHMIDT A D,BYE R,SCHMIDT H G,et al.Static analysis of executables for collaborativemalware detection on android[C]//ICC'09.IEEE International Conference on Communications, Dresden:IEEE,2009:1-5.

[5] SHABTAI A.Malware Detection on Mobile Devices[C]//2010 Eleventh International Conference on Mobile Data Management(MDM),Taipei:IEEE,2010:289-290.

[6] SCHMIDT A D,SCHMIDTH G,CLAUSEN J,et al.Enhancing security of linux-based android devices[C]//Linux Kongress-15th International Linux System Technology Conference.Hamburg:University of Hamburg,2008.

[7] CHIANG H S,TSAURW J.Mobile Malware Behavioral Analysis and Preventive Strategy Using Ontology[C]//2010 IEEE Second International Conference on Social Computing(SocialCom),Minneapolis:IEEE,2010:1080-1085.

[8] ZHU D Y,JUNG J,SONG D,et al.TaintEraser:protecting sensitive data leaks using application-level taint tracking[J].ACM SIGOPS Operating Systems Review,2011,45(1):142-154.

[9] ENCK W,GILBERT P,CHUN B G,et al.Taint-Droid:an information-flow tracking system for realtime privacy monitoring on smartphones[C]//Proceedings of the 9th USENIX Conference on Operating Systems Design and Implementation,Vancouver:ACM,2010:1-6.

[10] SHAKYA N.Privacy Issues of Antivirus Apps for Smartphones[C]//The 12th Winona Computer Science Undergraduate Research Symposium,Winona:Winona State University,2012:17.

[11] FELT A P,CHIN E,HANNA S,et al.Android permissions demystified[C]//Proceedings of the 18th ACM Conference on Computer and Communications,Security:ACM,2011:627-638.

猜你喜欢
污点应用程序短信
基于代码重写的动态污点分析
删除Win10中自带的应用程序
污点
道歉短信
谷歌禁止加密货币应用程序
代发短信
使用Lightroom污点去除工具清理照片中的瑕疵
三星电子将开设应用程序下载商店
“八一”节日短信之一
微软软件商店开始接受应用程序