《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > Android安全性分析
Android安全性分析
来源:微型机与应用2013年第20期
初建朝, 郑力明
(暨南大学 信息科学技术学院 电子工程系, 广东 广州 510632)
摘要: 从Android系统的系统框架入手,全面深入地分析了Android系统的安全机制与组成部分,进而得出Android面临的安全隐患与攻击行为。为增强Android的安全性,针对应用程序级攻击与内核级攻击行为,研究了XManDroid框架与基于logcat模式的内核行为分析框架,检测并阻止针对Android的恶意攻击行为,有效地保护了Android系统的安全。
Abstract:
Key words :

摘  要: 从Android系统的系统框架入手,全面深入地分析了Android系统的安全机制与组成部分,进而得出Android面临的安全隐患与攻击行为。为增强Android的安全性,针对应用程序级攻击与内核级攻击行为,研究了XManDroid框架与基于logcat模式的内核行为分析框架,检测并阻止针对Android的恶意攻击行为,有效地保护了Android系统的安全。
关键词:  Android OS; 安全机制; 特权提升攻击; logcat

    Android是一种源码开放的操作系统,为应用开发者提供了更多的功能接口,任何人都可以书写并发布自己的应用程序,因此,这为恶意应用程序提供了便利,增加了安全隐患。
    鉴于目前Android系统的巨大发展潜力,为提高其安全可用性,针对Android的安全机制与安全缺陷进行研究,具有重要意义。
1 Android系统架构与组件模型
1.1 Android系统架构

     Android平台从架构看,采用了分层的体系结构,自上到下依次是应用程序层、应用程序框架层、系统运行库层和Linux内核层,如图1所示。

    (1)应用程序层。Android的应用程序层主要是用户界面,包括系统捆绑的各种资源文件,如联系人、电话、浏览器和第三方应用程序等。
    (2)应用程序框架层。该层实际上是一个应用程序的框架,为开发者提供API实现自己的程序。
    (3)本地库和Android运行环境。本地库是以系统中间件的形式提供的,包含C/C++库,供系统不同的组件调用,并为上层提供服务;Android运行环境包括Android运行时的核心组件Dalvik虚拟机和基础的Java类库。
    (4)Linux内核层。Android使用Linux2.6作为操作系统,Linux kernel提供包括存储器管理、程序管理、驱动程序模型、能源管理等服务。
1.2 Android组件模型
    Android应用程序由Java编写,运行在Dalvik虚拟机,使用单一的文件安装,其文件扩展名为.apk。所有的Android应用程序在其APK中都需要包含一个程序配置文件AndroidManifest.xml,告诉系统如何处理应用程序中的顶层组件,包括Activities、Services、Content Providers、Broadcast Receivers。Activities是指独立的、以用户为中心的任务代码,通常为用户展示可视化界面;Service是运行在后台的功能模块,没有可视化用户界面;Content Provider是Android平台应用程序间数据共享的一种标准接口,将一些特定的应用程序数据交给其他应用程序使用;Broadcast Receiver是一个专注于接收广播通知信息并做出对应处理的组件。 各组件之间的关系如图2所示。

2 Android安全机制
    Android安全机制中既有传统的Linux安全机制,又有Dalvik虚拟机的安全机制。同时,Google还设计了Android特有的安全机制。
    (1)沙箱:Android系统是一个权限分离的操作系统,每一个应用程序都运行在属于自己的进程中。一个应用程序可以访问它自己的文件或者明确地标注为可读/可写/可执行的其他应用程序文件。这为每一个应用程序提供一个沙箱,把它与其他应用程序和系统隔离,从而有效地阻止了应用程序对其他应用程序或者系统其他部分施加恶意影响。
    (2)应用程序签名:每个应用程序都必须由它的开发者使用一个合适的私人密钥作为数字证书。数字证书是用来区分应用程序作者的,不需要由数字证书权威机构来发布。该证书包含在其APK文件中,在安装时由开发商验证签名。
    (3)权限机制:Android应用程序的安全核心机制是权限机制,通过权限机制额外提供的细粒度安全功能,强制限制一个特定的进程可以执行的具体操作,每个URI权限授予访问特定的数据块。要与其他应用程序共享资源和数据时,应用程序必须声明它所需要的基本的沙箱所没有提供的权限,应用程序要求的权限都必须在AndroidManifest.xml文件中声明。权限的申请只能在安装时得到批准或拒绝,在运行过程中不能申请其他权限。
    (4)组件的可访问性:应用程序组件可以被分为公共的和私有的,一个公共的组件可以被其他的应用程序访问,然而它仍然要求检查访问的应用程序是否具有要求的权限,才可以被应用程序访问。另一方面,一个私有的组件只能被包含它的应用程序访问[1]。
3 安全缺陷与威胁
    Android系统的安全机制实现了系统的安全,但由于Android平台的开源特性和本身存在的安全漏洞,针对Android系统的攻击越来越多, 其面临的安全问题主要包括恶意软件、网络攻击和其他攻击行为。
3.1 恶意软件
    针对Android平台的恶意软件主要包括病毒和木马程序。Android平台开源的特性和具有的安全漏洞使恶意软件开发者通过植入恶意代码等方式将目前市场上比较流行的App进行重新封装,发布在第三方应用市场,骗取用户授予下载安装时所需的权限,一旦成功便通过这些权限执行一些特定行为[2],为攻击者升级特权,给用户造成危害与损失。
3.2 网络攻击
    这类攻击主要是推出受攻击的合法网站或者恶意网站。攻击者首先入侵合法网站,然后在其中植入恶意代码,从而生成指向恶意软件服务器的链接,当用户访问该网站时,浏览器就会在加载合法代码的同时自动下载恶意软件,或者对用户的隐私及敏感信息进行泄露,从而对用户造成损失[3]。
3.3 其他攻击行为
    目前,Android系统没有提供内置、默认的加密功能,而是依赖隔离与权限模式来确保数据安全。因此,盗取手机SD卡就可能导致大量敏感数据丢失,或者是破坏和修改设备上的数据而不经过所有者的许可,给用户造成损失。
4 对Android安全问题的研究现状
    目前,对Android平台的安全性要求越来越高,安全研究人员对其安全增强性的工作展开了多方面的研究,并已有很多实现成果。下面针对应用程序级攻击与内核级攻击行为,提出安全解决方案。
4.1 针对特权提升攻击解决方案
    近几年,针对Android的一些安全框架已经提出,Android应用程序按所需的权限访问系统资源或与其他应用程序进行通信,如果没有正确的权限,应用程序是不能访问特权资源的。在参考文献[4]中提出了一个针对恶意应用程序的Android平台特权提升攻击的解决方案XManDroid的设计与实施,扩展了Android的监控机制。通过XManDroid维护系统状态,包含安装的应用程序及它们之间的通信链路,默认的Android参考监视器授予一个ICC调用时,XManDroid被调用,并验证是否要求的ICC调用可能会被利用为提升攻击,其体系结构如图3所示。

 

 

    XManDroid的结构扩展了Android应用程序框架,同时加强了内核级模块,并由运行监控、安装申请、系统策略安装3个模块组成。运行监控提供了XManDroid的核心功能,涉及组件的参考监视器、DecisionEngine、系统视图、系统策略与决定。安装申请提高Android应用程序的安装标准,它涉及标准的Android组件PackageManager和新的SystemView组件。安装之后,改变系统状态,扩展到PackageManager组件与SystemView的沟通。系统策略安装提供了一种机制来更新到Android中间件以及涉及的PolicyInstaller、SystemPolicy和SystemView组件。此框架架构与组件相互作用:IPC呼叫处理(步骤1-11),应用程序安装与否(步骤a-b),文件/套接口创建(步骤),文件/套接口读/写访问(步骤i-iv),策略安装(步骤I-III)。在测试中,利用恶意软件通过传递的权限方法执行对用户隐私的攻击,或获得未经授权的访问受保护的系统接口,特意选取了近期出现的特权提升攻击,所有的测试均在Nexus One开发平台上测试运行,经测试,所有的攻击均被XManDroid侦破和阻止。
4.2 内核行为分析解决方案
    在参考文献[5]中,提出一个基于内核行为分析的Android恶意软件检测系统,系统包括Android设备上的日志收集器和PC上的日志分析器。日志收集器记录了应用程序内核层的活动,日志分析器匹配正则表达式描述的签名活动,以检测恶意活动。系统结构如图4所示,其中内核水平的日志由操作系统产生,收集了发生在操作系统上的所有活动数据。这些数据大部分与恶意活动无关,因此,本文只收集恶意软件攻击相关的感兴趣的系统调用日志数据。采取附加的方法,从收集的日志数据中移除不感兴趣的进程日志数据。为达到要求,首先要实现获取感兴趣进程的进程树,这里用Android日志系统提供的收集系统调试输出机制logcat来达到,产生的日志信息可以由命名为Android调试桥的调试支持工具通过logcat命令查看,找到感兴趣应用程序进程PID,同时使用辅助的关键字和有规则的表达式的方法产生签名来进行恶意检测,一个辅助的关键字是执行程序系统调用名或系统文件路径名。

    这种方法适用于系统通过执行目标应用程序检测威胁,通过系统收集运行应用程序时产生的系统调用事件并分析,生成感兴趣的标签来检测广泛种类的威胁。实验证明,基于内核行为分析可以应用于Android应用程序的安全检测。
4.3 其他解决方案
    在参考文献[6]中,Enck等提出一个安全框架TaintDroid,它可以检测未经授权的敏感数据的泄露。TaintDroid利用动态污点分析对污染数据跟踪审查,通过此系统传播并提醒用户。TaintDroid主要解决数据流,利用隐蔽通道检测泄露敏感信息的攻击。参考文献[7]介绍了细粒度的访问控制模型,允许应用程序保护自己不被滥用。它要求应用程序开发人员添加安全特性到其应用中并扩展基本的Android许可制度,通过允许系统执行基于签名、配置和上下文的安全决策扩展基本的Android许可制度,而安全决定无论是在安装时还是在运行时均执行。
    Android系统为移动设备提供了一个开源应用环境,随着Android系统的日益推广,越来越多的开发商开始关注其安全性能,对Android系统的安全性要求越来越高。在未来工作中,将通过具体案例分析和攻击分类,对Android的安全机制进行设计改进,加强Android的安全架构。相信随着时间的推移和技术的进步,针对Android的安全威胁会越来越少。
参考文献
[1] CHAN P P F,HUI L C K,YIU S M. A privilege escalation vulnerability checking system for Android applications[C].IEEE 13th International Conference on Commnication Technology,2011:681-684.
[2] 丁丽萍. Android操作系统的安全性分析[J].信息网络安全,2012,12(3):28-29.
[3] 美丽安卓设备遭网络攻击比例超普通PC[OL].[2012-12-05](2013-05-15).http://news.itxinwen.com/it_industry/business_software/2012/1205/463481.html
[4] BUGIEL S,DAVI L,DMITRIENKO A,et al.XManDroid: a new Android evolution to mitigate privilege escalation attacks[C]. Technische Universat Darmstadt Center for Advanced Security Research Darmstadt,2011:4-6.
[5] ISOHARA T,TAKEMORI K, KUBOTA A. Kernel-based behavior analysis for Android malware detection[C]. IEEE International Conference on Computational Intelligence and Security,2011:1012-1014.
[6] ENCK W,GILBERT P,CHUN B,et al. TaintD roid:An information-flow tracking system for realtime privacy monitoring on Smartphones[C]. Proceedings of the 9th USENIX Conference on Operating Systems Design and Implementation,2010:1-5.
[7] ONGTANG M,MCLAUGHLIN S,ENCK W,et al.Semantically rich application-centric security in Android[C].IEEE Annual Computer Security Applications Conference,2009:344-348.

此内容为AET网站原创,未经授权禁止转载。