摘 要


Android的流行使其已成为众多恶意软件的***目标,针对Android的***、恶意软件和应用层特权提升***等安全威胁不断出现。同时,Android源代码开放的特性也吸引了研究人员的广泛关注,提出和实现了很多Android安全增强工作。介绍Android本身的安全机制及安全缺陷,并分析常见恶意软件的***权限管理和Root后的风险对已有Android***的原理进行描述和分析,并指出了将来可能的研究方向.因此,特针对Android平台的安全的研究历史和现状进行分析,以了解该领域的研究热点,把握今后Android安全性研究的发展方向,为下一步的工作指明道路。


关键词:恶意软件安全机制  权限管理  Root后的风险






Abstract



The popularity of the Android the numerous malicious software has become a target of attack, in view of the Android of Trojan horse, malicious software and application layer privilege promotion attack security threats appear constantly. At the same time, the Android source code and open character also has attracted extensive attention of the researchers, put forward and realized a lot of Android safety enhancement work. Introduce Android itself security mechanism and security defects, and analyzes common malware attacks, rights management and Root after the risk on the existing Android attack principle of description and analysis, and points out the future research direction. Therefore, especially for the safety of the Android platform of the research history and the present situation to carry on the analysis, in order to understand the research focus in the field of, and grasp the future Android safety study the development direction, for the next step work specified path.




KeywordsMalicious software security mechanism rights management  Root of the risk





0 引言


安卓手机平台已经占据了全球59%的市场份额,预计到2016年都将一直保持其最流行的移动操作系统的地位。由此,安卓的用户们也继续被认作是有利可图的目标。这些在手机平台上的新的恶意软件大部分被确认来自中国,并会对中国及其周边市场发起***。这也侧面表明了作为拥有超过100万移动互联网用户的中国,已经成为全球第一大智能机市场。这也迫切的对Android的安全防范方面提出了更高的要求。本文针对于Android本身平台的安全平台进行分析结合常见的恶意Android***结合用户随意Root现象严重,对Android平台的安全防范工作提出了更大的要求。



1  Android平台安全


1.1 内部安全机制

(1)安全机制

 在 Android 安全机制(如图-1)中,既有传统的 Linux 安全机制, 也有 Dalvik 虚拟机的相关安全机制。同时,Google 还设计了 Android特有的安全机制。



                         

图-1 Android 安全机制

1)POSIX(Portable Operating System Interface of Unix) User。每一个应用程序(.apk)安装时,Android 会赋予该应 用程序唯一的 ID。因此,不同的应用程序不可能运行于同一 进程。这样,系统为每一个程序建立一个沙箱,不管应用程序是被激发或是调用,它始终运行在属于自己的进程中,拥 有固定的权限。如联系人程序打开短信息编辑器,编辑器仍 然只能编辑和发送短信息以及访问短信息编辑器拥有的文件,与联系人程序的权限无关。

2)文件访问控制。Android中的文件访问控制来源于 Linux权限控制机制。每一文件访问权限都与其拥有者、所属 组号和读写执行三个向量组共同控制。文件在创建时将被赋 予不同应用程序 ID,从而不能被其它应用程序访问,除非它 们拥有相同 ID 或文件被设置为全局可读写。另一个增强安全 的设计——将系统镜像挂载为只读。所有重要的可执行程序 和 3)配置文件位于固件(Firmware),只有在系统初始化中加载。 所有的用户和程序数据都存储在数据分区。数据分区有别于 系统分区,是在系统运行中有效的存储和加载用户数据。而且, 当Android 系统处于“安全模式”时,数据分区的数据不会加载, 从而可以对系统进行有效的恢复管理。

4)内存管理单元。一个现代操作系统的必要条件,是内 存管理单元——对进程分配不同的虚拟内存空间的硬件设备进程只能访问自身分配的内存空间,而不能访问其它进程所占 用的内存空间。因此,进程的权限提升的可能性受到限制,因 为其不能运行在系统特权级内存空间。

5)强制类型安全。类型安全是编程语言的一个特性,它 强制变量在赋值时必须符合其声明的类型,从而阻止变量被 错误或不恰当地使用。缓冲区溢出***通常是由类型转化错 误或缺少边界检查而造成。Android使用强类型Java语言, Java 语言依靠三种机制达到类型安全:编译期间的类型检查、 自动的存储管理、数组的边界检查。

6)移动设备安全。作为一个广泛应用于移动设备的系统, Android 安全机制中引用 AAA 原则——认证(Authentication)、 授权(Authorization)和审计(Accounting)。Android 借鉴智能 手机中典型安全特性,认证和授权过程由SIM卡及其协议完 成,SIM 卡中通常保存使用者的密钥。

7)应用程序权限控制。Android应用程序安全的核心机 制是权限控制。应用程序必须在系统给予的权限中运行,不 得访问未被赋予权限的其它任何内容。程序安装时由包管理器 赋予权限,运行时由应用程序框架层执行权限控制。Android 内置大约有一百多种行为或服务的权限控制,包括打电话、发 短信息、访问互联网等。应用程序在安装时必须申明其运行 时需获得的权限,Android 通过检查签名和与用户的交互赋予 相应权限。权限的申请只能在安装时得到批准或拒绝,在运 行过程中不得再申请任何权限。

8)组件封装。通过组件封装,应用程序的内容能被其 它程序访问。除此之外,Android 组件内容不允许被其它程 序访问。这种功能主要通过组件中定义读取(exported)操作。 如果设置为否,则组件只能被程序本身或拥有同一ID的程 序访问。反之,则可以被其它应用程序调用或访问。

9)签名机制。Android中每一个程序都被打包成 apk格式 以方便安装。apk文件与Java 标准 jar文件相似,apk文件包括 所有非代码资源文件,如图片、声音等。Android 要求所有应 用程序都经过数字签名认证。签名文件通常是 Android 确认不 同应用程序是否来自同源开发者的依据。


(2) 隔离机制

Android是基于Linux内核的,因此每个应用程序运行在自

己的Linux进程中.通常每个应用程序被分配唯一的Linux用

户ID ,因此Linux的自主访问控制机制保证应用程序的文件对

于其它应用程序是不可见的. 特别的,Android应用程序运行在Dalvik

虚拟机中,因此与其它应用程序的代码是隔离.


1.2 Android平台安全架构

Android旨在通过重新利用传统操作系统的安全控制,成为移动平台最安全的和最实用

的操作系统。传统操作系统的安全控制包括:

1.保护用户数据

2.保护系统资源(包括网络)

3.提供给应用程序的隔离

为了实现这些目标, Android提供了一些关键的安全特性:

1.通过Linux内核提供OS层面强健的安全。

2.强制所有应用程序使用沙盒

3.安全的进程间通信

4.应用程序签名

应用程序定义权限和用户授权机制

以下部分描述这些和Android平台其他的安全特性。图-2总结了安全组件,考虑

Android软件栈的各个层级。每一个组件假设该组件下面的部分是完全安全的。除

了一小块AndroidOS代码作为Root运行,所有Linux内核之上的代码都受到应用

程序沙盒限制。


-2 Android 系统架构



2 应用软件安全和现状分析


2.1常用杀毒软件形同虚设


随着安卓在全球市场份额的不断增长,针对安卓平台的恶意软件数量也急剧上升,McAfee的第三季度报告就指出,仅在第三季度,安卓平台的恶意软件数量就增长了37%。也许数字并不是最直观的,用户的亲身经历才最能说明一切。或许,很多Android用户已经略有感觉,智能手机上总会出现一些奇怪的情况,但是我们在没有确凿证据的情况下很难对整个的Android系统安全有个确切的了解。

AV-Test测试了一些常见的免费Android平台上的反恶意软件应用。测试方法:使用一台最新的Android设备,下载一些恶意软件样本。这些软件都是真实的恶意软件。这里共测试了7个目前比较热门的免费Android平台杀毒软件。不幸的是,这些免费杀软大多都比较愚钝,样本程序包中有90%以上的恶意软件都很难被发现。数据统计如图 2-1

                                   图2-1常用杀毒软件杀毒能力

结果非常清楚了,如果你使用的是一款免费的防病毒程序,那么你从应用市场中下载10个应用,其中9个软件还是可能会有威胁的。因此……间接的答案是去下载付费的Android杀毒软件?与此同时AV-Test也测试了2款付费的反恶意软件应用,但是结果并没有好到哪里去,花了钱的杀软也仅仅能查杀50%的恶意软件。留下了数量庞大的恶意软件包未能检测出来。


2.2 恶意软件的***泛滥


安全问题一直是限制Android生态进一步提升的瓶颈,不仅用户对此百般诟病,就连谷歌也头疼不已。虽然GooglePlay的品牌逐渐统一,但是实际的应用安全性并没有因此而有所改善,反而随着时间的变化越来越严重。最新的统计数据显示,Android应用生态恶意软件2012年同比增长580%。更具体的来说,在Android应用500强热门榜单中,高风险应用的下载次数高达1.75亿次.

2-2 恶意软件增长情况


不同版本系统的受***分布情况如图2-3所示:

根据卡巴斯基实验室的报告,有28%恶意软件***尝试来自2.3.6,9%来自2.3.4版本,另外20%来自其他版本的2.3系统。所以,总共来自Android 2.3姜饼系统的恶意软件***尝试高达57%。而4.0.3和4.0.4 ICS的***高达38%。说明采用Android 4.0以上系统的设备正不断增加。Android 2.2.1和2.2.2加起来占总数的4%,这意味着恶意软件相当与时俱进。虽然Android 2.3姜饼早已是昨日甜点,但根据谷歌近期的报告,50%的安卓手机仍采用Android 2.3系统。


                              图 2-3不同版本系统的受***分布情况




2.3恶意软件的常见***方式


(1)静音拍照与被拍

病毒可以偷偷打开你的前置摄像头,然后拍照,然后发送到网上,Android系统中要想拍照,必须提供一个窗口才行,也就是说,不存在在后台拍照的情况(起码没有Root权限是不可以的),所以不明的窗口弹出也是传达了一个危险的信号。

(2)钓鱼应用

比如你在手机上浏览淘宝,你想登陆看看你的账户信息,然后自然会跳转到登陆页面。注意:病毒会在这个时候打开一个假的登陆页面,但是看上去和真的一模一样。当用户输入完用户名和密码账户,这个页面会消失,露出真正的登陆页面,同时显示类似于“密码输入错误,请重试”的字样,用户自然无法察觉。

(3)SP业务黑色产业链

最常见的手机病毒是利用运营商的SP业务进行吸费的病毒,这种类型的病×××、传播、分成“一条龙”的产业链已悄然成熟,在***恶意敛财的过程中,不少论坛、SP公司、应用商店平台都在暗中分一杯羹。具体的传毒流程是:***通过技术手段,将非法SP提供的扣费号段植入到应用中诱骗用户下载;而用户感染后,***则会利用非法SP公司的短信计费和服务定制通道来产生费用,随后按照不等的分成比例来合取暴利。

随着手机智能化程度越来越高,手机病毒的技术和等级也是“突飞猛进”,新型的手机病毒应用的吸费呈现愈来愈隐蔽甚至无声无息的趋势,例如,手机病毒发送的扣费短信指令、端口号、发送时间等均能根据用户所在地区、SIM卡所属运营商进行精准的扣费配置,并可以随时更改。更“高级”的是,现在的病毒技术还能轻易删除用户手机相关的扣费回执记录,包括运营商发送给用户的扣费短信、WAP上网记录等,移动、联通等电信运营商的二次确认短信也会被拦截,并在后台进行自动回复确认。

而且,为了避免用户起疑,目前的手机病毒大多采取了比较谨慎的做法,每次进行的支付都是小额的,基本上很少产生高额账单,这样受感染用户也不会轻易发现。

(4)***银行支付

新型的Android病毒“短信僵尸病毒”的原理更为复杂,该病毒可针对网银、支付、汇款等高度机密信息进行欺诈,导致用户的网银财产损失。

“短信僵尸病毒”对于网银的***方式不是直接***网银系统,而是间接***,当病毒拦截到含有“转、卡号、姓名、行、元、汇、款”等内容的短信时,就会删除这条短信,并把原短信中的收款人帐号改成病毒作者的,再将伪造过的短信发到中毒手机。短信僵尸病毒还具有后门程序的功能,可通过更新指令篡改短信内容,从而使病毒的危险性倍增。

                                   图2-4***银行支付

由于中国许多手机用户都通过手机短信来进行手机支付,而且很多银行都会将账单信息发送到用户的手机当中,所以当用户的手机受该病毒感染之后,银行卡和账户信息很容易就会被该病毒截取并进行小额支付。









3  权限管理和Root


3.1 沙箱、进程和权限

Android 使用沙箱的概念来实现应用程序之间的分离和权限,以允许或拒绝一个应用程序访问设备的资源,比如说文件和目录、网络、传感器和 API。为此,Android 使用一些 Linux 实用工具(比如说进程级别的安全性、与应用程序相关的用户和组 ID,以及权限),来实现应用程序被允许执行的操作。

概念上讲,沙箱可以表示为3-1所示

                   图3-1 两个 Android 应用程序,各自在其自己的基本沙箱或进程上


Android 应用程序运行在它们自己的Linux 进程上,并被分配一个惟一的用户ID。默认情况下,运行在基本沙箱进程中的应用程序没有被分配权限,因而防止了此类应用程序访问系统或资源。但是 Android 应用程序可以通过应用程序的manifest文件请求权限。

通过做到以下两点,Android 应用程序可以允许其他应用程序访问它们的资源:

声明适当的 manifest 权限

与其他受信任的应用程序运行在同一进程中,从而共享对其数据和代码的访问



                           图3-2 Android应用程序,运行在同一进程上


不同的应用程序可以运行在相同的进程中。对于此方法,首先必须使用相同的私钥签署这些应用程序,然后必须使用 manifest 文件给它们分配相同的 Linux 用户 ID,这通过用相同的值/名定义 manifest 属性 android:sharedUserId 来做到。


3.2 随意Root潜在巨大风险


开源并不等于开放,开源的Android系统表面上看起来相当自由,在深入了解Android系统后还会有很多朋友觉得Android系统本身的开放程度还不够,想想也不无道理,每个程序相对独立,所以我们不能通过一个程序去控制另一个程序,相比开放的WindowsAndroid的开放程度在某种意义上做得还不够,所以很多Android用户在使用手机时选择了Root。获取了超级用户权限后,Android手机确实可以完成更多的事情。Root就是手机的神经中枢,它可以访问和修改你手机几乎所有的文件,这些东西可能是制作手机的公司不愿意你修改和触碰的东西,因为他们有可能影响到手机的稳定,还容易被一些******.

事实,绝大多数的用户根本不会在意ANDROID程序所要求的这些权限,他们会照安装不误虽然电子市场已经通知了用户软件所需的权限,但这远远不够。因为用户还是不知道这些权限和安全又什么关系。一旦你批准了这些软件所要求的权限。你就等于向这些软件敞开了你家的大门。譬如,程序可以随意的将你手机里联系人的信息发送到他们的服务器。又或者有些恶意软件,可以让别人远程清空你的手机,或者将你手机里的信息传送回指定服务器后再清空你的手机(也许已经有这样的软件了)。

以上所说的这些例子表明,即便是非ROOT权限的程序都有可能很危险(对新手来说),那么那些获得ROOT权限的程序呢?
程序只是告诉用户当程序需要申请超级用户权限会跳出窗口(如图3-3,但不会告诉我们程序需要用这权限来干嘛!!有多少次,大多用户会选择“一直允许”,却不知道知道这个程序到底要干嘛。

                                       图3-3
在很多但不是所有情况下,这些程序都是开源的,所以我们可以读它们的代码来评估风险但,这是一把双刃剑,别人也可以在代码中加入后门,冠以定制版的大名,堂而皇之进入用户的手机。
获得Root的恶意软件可以干几乎所有事情。例如:GMAIL换成所谓的“定制版”将输入法更换成有按键记录功能的输入法将手机里的程序或者数据删除下载并试图安装修改过的固件下载特定的程序,可以夜间在后台拨打收费电话号码侵入菜市场账户,并购买软件

如果一个软件,获得了一次Root权限,那么它可以作些什么呢?“静默安装”肯定是可以的当一个应用程序安装完毕之后,系统将会显示出该应用程序所要求的系统权限。用户在这个界面上可以一目了然的知道该应用都可以使用哪些系统资源。如果安装的是一个相对来说简单的应用程序,但是他包含了收发SMS短信权限,那么这个应用就非常危险了。它可以偷偷在夜深人静的时候发送你的信用卡账号信息.另一个重要的权限是谷歌的账户和联系人列表。如果应用程序要求访问这里,那么有可能收到许多垃圾邮件和钓鱼诈骗。访问联系人列表唯一正常的请求就是类似自动完成联系人姓名的合法操作。

另外现在许多应用都要求开启位置服务,虽然看上去这并没有什么稀奇,也不会对的钱包造成很大的潜在威胁。但是恶意的应用仍然可以记录下经常行进的路线,随着时间的推移慢慢收集这些信息,然后转售给其他机构。

也有许多的杀毒软件来根据每个程序所分配的权限来鉴定你的是否为病毒,如果你的权限太过于多,并且十分敏感那么杀毒软件就来进行对该软件进行跟踪和分析,一旦发现有可疑的行为就将其kill掉,但是这也有一个弊端,比如先给用户植入了一个框架式的软件,这个软件没有界面,他所申请的权限也就只有访问网络,这样一来我可以用框架软件从网上获取自己想要植入的软件,进行静默安装的,这样用户当然什么都不知道的,当下载安装好的程序也都是的申请部分权限,这样杀毒软件也当然不会检测到其风险性,因为每个程序的权限都是很小的,但是这些软件都是一套整体的,只要加上恶意指令使得他们之间相互通信,相互配合,那么他们的整体权限就大了,并且杀毒软件对单个的应用进行分析的时候他们的检测结果都是安全的。这里也仅仅给出一个思路,也希望相关的人士能对这些方面有所研究和分析,提高Android的安全性,加大对恶意软件的控制。




4 总结:

近年来Android平台的安全问题呈现出强劲的增长态势,表明该领域已经成为一个新兴的研究热点。有理由相信Android手机安全代表了信息安全研究的一大发展方向,将在未来的数年里吸引研究者的持续关注。

Android获取Root权限的需要而引起了大量研究人员的兴趣。另外,一些手机应用的新趋势并没能在统计结果中体现出来,例如恶意软件的协作以及Widget,由于出现时间短、使用还不广泛,目前尚未见到有关安全方面报导,但也应该在研究中给予足够的关注。


参考文献:


[1] 蒋绍林 王金双 张 涛 陈 融. Android 安全研究综述. 2012年10月 29卷 第十期.

[2] E2ECloud工作室. 深入浅出Google Android[M]. 第一版. 人民邮电出版社?2009.

[3] 邓凡平. 深入理解Android:卷I. 机械工业出版社, 2011.

[4] 柯元旦. Android内核剖析. 电子工业出版社, 2011.

[5] Android技术内幕:系统卷 杨丰盛 机械工业出版社 (2011-06出版)

[6] Android OS手机平台的安全机制分析和应用研究宋杰;党李成;郭振朝;赵萌计算机技术与发展;2010年06期

[7] Android安全机制分析与解决方案探析  长春师范学院 狄婧2012年7月

[8] 刘文清,卿斯汉,刘海峰;一个修改BLP安全模型的设计及在SecLinux上的应用[J];软件学报;2002年04期

[9]AndroidDevelopers.Theandroidmanifest.xmlfile.http://developer.android.com/guide/topics/manifest/manifest-intro.html.

[10] Aleksander Slominski. Xml pull parsing.http://www.xmlpull.org/.

[11] Anthony Desnos, Hanno Lemoine. Virtual machine for android reverse engineering.http://redmine.honeynet.org/projects/are/wiki.

[12]Android.ANewAndroidMarket for Phones[EB/OL].http://www.android.com,2010-11-03/2011-07-01.


更多相关文章

  1. 【移动生活】Google项目副总裁安迪·鲁宾谈Android
  2. 使用jQuery Mobile和Phone Gap开发Android应用程序
  3. [Android]基本概念
  4. Android(安卓)Studio(4)---开发人员工作流程基础
  5. Android应用程序进程启动过程的源代码分析
  6. Android应用程序注册广播接收器(registerReceiver)的过程分析
  7. Android下uid与多用户释疑(一)
  8. Android高级开发第三讲--应用程序基础
  9. Android应用程序进程启动过程的源代码分析

随机推荐

  1. SurfaceFlinger学习之路(一)View的绘制流程
  2. Android快速滚动
  3. androidmanifest.xml高级属性解析
  4. Intellij下的android实践
  5. android 创建文件夹失败
  6. Android平台上的JNI技术介绍
  7. Android通过startService播放背景音乐简
  8. Cordova+Vue整合到android studio上实现
  9. Android(安卓)Studio代码调试技巧篇
  10. android生命周期()