基于安卓权限管理的病毒防御研究
2016-12-06郑吉宏王鲁宁
郑吉宏 王鲁宁
(杭州电子科技大学,浙江 杭州 310000)
基于安卓权限管理的病毒防御研究
郑吉宏 王鲁宁
(杭州电子科技大学,浙江 杭州 310000)
如今,安卓操作系统已经成为市场占有率第一的移动设备操作系统。同时,安卓系统上各种恶意软件,病毒横行。给用户的安全造成了很大的威胁。随着智能手机成为人们日常生活的一部分。安卓系统的安全成为一个非常严重的问题。文章从安卓权限管理的角度谈一谈如何对安卓病毒进行有效的防御。
安卓;病毒;系统;网络安全
安卓操作系统是由谷歌公司开发的开源操作系统。安卓操作系统基于linux内核开发,广泛的应用于移动设备,比如平板电脑和智能手机中。截至2015年第四季,安卓系统在智能手机上的占有率已经高达80.7%。成为智能手机操作系统的霸主。
随着越来越多人选择使用安卓手机。安卓手机的安全问题也变得越来越重要。由于安卓操作系统开放,自由的生态环境,使得任何人可以轻易的获取并且修改操作系统代码。这样的开发环境固然能够吸引更多的开发者加入安卓的阵营,但是这也引发了许多安全问题。其中最为突出的莫过于安卓手机上各种病毒以及勒索软件的传播。这里就从安卓操作系统自身权限管理的角度,谈一谈安卓系统上病毒扩散传播的条件以及危害。
1 安卓的基本构架
安卓的基本构架很好的体现出linux操作系统所一直所提倡的分层思想。通过将操作系统各个层次隔离开来,减少层与层之间的依赖性。使得操作系统的各个部分开发可以独立开来。
图1 安卓系统结构
安卓操作系统主要由4个层次组成。其中包括linux内核,基础函数库,安卓运行时框架,以及最上层的应用层。4个层次之间相互隔离,通过公用的api进行相互的调用。
1.1 安卓内核层
安卓内核基于linux 内核开发而成。但是为了使安卓能在性能较低的移动设备上使用,谷歌对linux内核做了许多的裁剪。删除的许多无用的模块。这使得安卓内核更加的轻便。当然,由于是基于linux内核开发,所以许多linux内核的安全问题在安卓上同样存在。
1.2 安卓基础函数库
这一层主要是一些 C/C++运行库。它们通过安卓运行时框架为APP提供各种基础服务器。主要功能包括提供标准C库,多媒体支持库,浏览器内核,ssl连接支持库等等。它们给开发者们提供了完善的支持。同样,java运行所必须的Dalvik虚拟机也属于这一层。
当然由于各个基础组件都源自其他公共的开源项目。所以也给安卓系统的安全留下了很多不确定性。
1.3 安卓运行时框架
安卓运行时框架是开发人员最常接触的一层。开发安卓APP所需要各种 API,包括安卓的四大组件都属于这一层。安卓运行时框架封装了开发APP所需要的绝大部分功能。只需要简单的API调用。安卓APP就可以通过它来访问系统底层的资源。
1.4 安卓应用层
安卓应用层运行的就是常用的APP了。所有安卓应用都运行在应用层,运行在相对隔离的Dalvik虚拟机中,受到安卓权限机制的管理。
2 安卓对普通应用的权利管理
安卓的权限管理除了基于linux的权限管理机制之外,因为安卓的应用全部运行与Dalvik虚拟机中。所以安卓系统能够对应用的访问权限做更加细致的划分和管理。
2.1 安卓应用层的权限管理
在默认的情况下,运行在Dalvik虚拟机中的安卓应用是没有权限进行网络访问,修改本地文件,读取用户隐私信息等操作的。如果应用为了实现自己的功能需要某个权限,比如应用需要读取用户的短信信息,则必须要在程序开发的时候就写明应用需要哪些权限。在安装应用的时候,安卓的应用安装器会检查程序签名中所提及的权限,并且告知用户。只有经过用户的确认之后,安卓系统才会给予应用相应的权限。如果一个应用程序企图进行一些非授权的操作。会立即被安卓系统终止运行。
2.2 安卓内核的权限管理
安卓继承了linux的权限管理机制,但是与一般linux不同,安卓系统并不提供root权限用户给用户。普通用户和应用程序无法通过正常手段获取安卓系统的root权限。因此一般的应用很难修改内核或者是一样安卓的核心配置。安卓的root权限仅限安卓自己的核心组件才能使用,这加大了恶意软件对操作系统进行破坏和监听的难度。
3 安卓权利管理的疏漏
3.1 对用户提醒不足
安卓系统虽然默认禁止应用拥有高权限。但是应用可以在安装的时候声明自己需要什么权限。而是否给予应有权限的选择权是在用户手里的。由于各种各样的原因。许多的用户可能并不会对应用安装是申请的权限做太多关注直接同意。这就导致安卓应用安装器对应用权限的管理形同虚设。很多情况下,及时是一个请求了很多危险权限的恶意应用也会被轻易放行。
3.2 可获取权限太多太高
安卓虽然默认情况下权限较低,但是应用程序可以申请到的权限却非常高。比如安卓应用可以通过接受全局广播包的方式来拦截用户短信,或者是通过劫持Activity使得系统无法正常使用。这些都是因为程序可以获得的权限权限过高导致的。
而且只要声明了权限,安卓系统的底层文件系统是可以被访问到的。而且因为所有应用的用户,用户组,以及权限是一样的。所以一个安卓应用可以访问到其他应用程序的数据。而且安卓上存放数据默认的数据库是sqlite,这个轻量级数据库储存数据的方式就是存储在文件系统当中,而且是明文存储信息的。这就导致如果应用的开发者没有安全意识,草率的将用户的账户密码等敏感信息存储在 sqlite数据库中的话。这些数据很容易就会被恶意应用获取到。
而且安卓操作系统的 server组件,可以很轻易的让应用运行在系统的后台。这样使得病毒可以很轻易的常驻在移动设备上,获取个人的短信,通话记录,甚至位置等敏感信息。
3.3 第三方杀毒软件很难检查
虽然安卓基于沙箱的机制可以阻止病毒获得没有被授权的访问。但是这也使得三方杀毒软件很难对系统进行防护。因为安卓一般情况下无法取得root权限,而且每个应用运行在独立的沙箱中。由于各个沙箱之间相互隔离的特点。使得杀毒软件很难能够对系统进行全方位的保护。而且无法对其他应用的行为做检测。由于linux系统内核和其上的应用层完全隔离的特点,没有获得root的情况下杀毒软件也没有方法通过hook系统函数,
4 安卓root对系统安全的危害
虽然安卓系统默认不提供root权限。但是现在却有各种方法获取到安卓手机的root权限。虽然root之后可以给用户带来很多的便利,比如可以使用一些底层的功能。对于开发者来说,root之后的安卓系统可以更方便的进行开发和调试。但是root对于安卓系统的安全是不利的。
4.1 root的获取方式
现在对安装安卓系统的移动设备,获取root权限的方法主要由有两种。
4.1.1 使用第三方rom
由于安卓系统是一个开源的操作系统,任何人都可以更改其源代码。所以有许多个人或者是生产移动设备的公司会更改原生安卓系统的部分功能,以及添加新的功能。当然,也有一些rom提供者会将原本锁住的root权限向用户开放。所以用户可以选择这些第三方的rom包来安卓操作系统,从而获取root权限。
4.1.2 使用各种root软件
现在互联网上还有各种各样的root软件。他们获得系统root的权限的方法是通过一些本地提权的漏洞。通过安卓内核或者是一些以root运行的组件的漏洞,通过本地提权的方式获取系统的root权限。由于安卓生态系统的庞大和混乱。所以很多时候,一个致命系统漏洞的更新可能需要很长的时间才能到达用户的手中。对于很多第三方更改过的安卓系统,如果用户不主动更新。可能永远一个漏洞的更新补丁永远也不可能到达用户手中。这就导致对安卓系统上往往存在一个甚至多个可以直接获取到安卓root权限的高危漏洞。
4.2 root后手机缺少管控
由于安卓系统默认没有root,所以删除了一些对root的保护措施。例如普通的linux系统如果想要切换到root用户,必须使用root账户与密码。或者是由root用户通过sudo命令给予普通用户一些root的权限。但是由于安卓默认不给予用户root权限。所以相应的对root权限的保护与管理也都被一处了。这就导致重新获得的root权限不能很好的被管理。任何应有都可以很轻易的获得root的权限。而病毒一旦感染了已经root过的手机,就很容易获得root权限,从而进入安卓内核,更难以发现和清除。
4.3 本地提权漏洞引发的问题
由于一些原因,即使是国内的安卓操作系统无法收到来自谷歌官方的更新推送。这就导致许多高危漏洞无法及时的被修补。这就导致国内很多移动设备上运行的安卓系统还是不安全的。而且因为安卓在发布漏洞补丁一段时间之后,漏洞的详情和利用方式就会公开。所以对于老版本安卓的 root漏洞的利用方法其实是很容易就能在互联网上搜索到的。所以对于恶意软件或者病毒制作者来说,完全有能力在自己的病毒中内置本地提权漏洞的利用代码。从而将自己的权限提升到root。
一旦病毒能够提权到root等级,那么安卓系统的所有权限管理就会全部失效。病毒能够很轻易的监控用户的通话,短信等信息。甚至能够读取一些金融交易软件的机密数据。
5 通过权限管理对病毒进行防御
虽然安卓的权限管理存在一些问题,但是只要合理的配置。就可以杜绝大部分的隐患。通过各种权限的合理设置,以及一些权限管理的APP。就能够防止病毒的入侵。
5.1 安卓应用层面的权限管理
一般的安卓应用都是用java编写,然后运行在Dalvik虚拟机中。刚才提及过,Dalvik虚拟机对程序APP的敏感调用,比如读写磁盘文件,网络请求等都会做权限检查。所有需要的权限都需要在安装的时候赋予。所以在应用安装的时候就需要对应用需要的权限做严格的审查。比如收发短信,拨打电话等权限就不应该轻易的给予。
而且随着技术的发展,现在的安卓操作系统已经能够做到动态的检查程序的敏感操作并且告知用户了。在安卓4.3版本之后,google给安卓增加了动态权限管理的功能。以前的安卓系统,对于应用请求的权限要不全部同意,要不就不允许安装。但是在新版的安卓操作系统中,已经实现了在应用运行过程中试试的检查程序的权限使用情况。并且能够根据预先设定好的设置来觉得是放行,还是禁止应用的权限请求。或者是提示用户是否允许。
这就大大缓解了安卓应用安装时候的对高危权限的提醒不足的问题。而且可以让用户选择给予应用哪些权限。这在一定程度上缓解的安卓市场上一些恶意广告应用的推广和传播。
5.2 非root用户阻止病毒的危害
由于一些原因,原生的安卓系统没有办法得到及时的更新推送。不过好在安卓开放的政策。国内的手机厂商们都纷纷推出了自己的修改的安卓rom。这些系统在美化原生系统界面的同时,也承担起了对系统及时更新,修复漏洞的工作。用户可以选择可靠的第三方公司发布的安卓系统。可以在一定程度上阻止因为系统更新不及时而导致的安全问题。
5.3 对已root系统的root权限管理
由于很多原因,许多的用户最终选择的解开google对安卓系统root权限的锁定。正如前文所述,已经root的安卓系统有很多的安全隐患。所以对root权限需要进行更加严格的管理。
目前普遍的做法是直接对安卓的内核进行修改,在内核层面上阻止任何应用程序对系统关键目录,即系统根目录下的system目录进行修改。由于这个操作是在内核层面上完成的,在系统自举启动之后,system的可写权限就被锁死。
由于system被锁死,只有在安装安卓系统的时候就付带的一些应用才可能存在与system中,而且不能被修改。大多数提供root权限的rom的提供商都会在system目录中安装一些管理root权限的工具。系统的root权限都通过这些工具才能够取得,再加上linux内核对root权限的管理方案。通过这样的方法,让只有被用户认可的应用程序才能够获得系统的root权限。保证系统的安全性。
6 安卓权限管理利弊
安卓开源的操作系统,开放的生态环境使得越来越多的移动设备厂商使用了安卓系统。当然开放的环境也导致了更多的安全问题。安卓权限管理上有很多的不足之处,给予了普通应用程序过多权限是一把双刃剑。为了管理好这些敏感的权限。需要各种第三方安全软件的协助和设置。但是只要控制得当,就能够杜绝各种病毒,恶意软件的侵害。
[1] 郭霖.第一行代码—Android[M].北京:人民邮电出版社, 2014.
[2] 丰生强.Android软件安全与逆向分析[M].北京:人民邮电出版社,2013.
[3] 李刚.疯狂Android讲义[M].北京:电子工业出版社,2013.
Virus defense research based on Android rights management
Today, Android operating system has become the market share of the first mobile device operating system. At the same time, a variety of malicious software and virus are rampant on Android system. They are a big threat to the safety of the user. As smart phones becoming a part of daily life, the security of Android systems has become a very serious problem. This article from the perspective of Android rights management to talk about how to effectively defend the Android virus. It is divided into parts: the basic framework of the Android system, the general application of the authority management, the authority management negligence, the root hazard, through the authority management to the virus defense, rights management advantages and disadvantages of the six parts of the discussion. It will briefly explain the Android system architecture and authority management rules, as well as the resulting problems, and finally put forward some solutions and methods, designed to further enhance the safety of Android systems.
Android; virus; system; network security
TP309
A
1008-1151(2016)09-0020-03
2016-08-10
郑吉宏,男,杭州电子科技大学学生,研究方向为计算机病毒分析与防御;王鲁宁,男,杭州电子科技大学学生,研究方向为网络编程。