冀健
摘要:Android 手机安全问题主要来自于个人隐私泄露和各种恶意的扣费软件。这些包含病毒的流氓软件偷偷地在系统后台运行,导致 Android 手机成为病毒传播的载体。为了解决目前 Android 手机信息安全问题,在不破坏现有安全架构的基础上,实现对应用软件的权限管理,使用户能在不同的情景模式下,根据自己的需求对 Android 系统中所安装应用的权限进行分配。
关键词: 权限管理;角色管理;程序开发;信息安全
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)11-2527-03
Abstract: Android mobile security issues mainly regards disclosure of personal privacy and a variety of malicious chargeback software. These rogue software that contains a virus secretly running in the background, leading to Android phones become virus carriers. In order to solve the problem of information security Android phone, does not destroy the basis of the existing security architecture based on the realization of rights management application software, allowing users in different scenarios, according to their demand for Android application installed on your system permissions assigned.
Key words: Rights Management; Role Management; Program Development; Information Security
随着 Android 操作系统占到移动端份额越来越多,市场上已经有不少应用软件开始关注 Android 操作系统安全问题。目前 Android 手机市场上的安全产品主要是从特征匹配或者实时监控两种方式进行处理。若采用特征匹配的方法,就是对已知的恶意代码进行比较,如果匹配则对该应用程序进行查杀。若采用实时监控的方法,就是开启后台程序监控各种手机操作来发现可疑行为,例如上传用户相片,获取用户通讯录,开启手机 GPS 功能等等。当检测到可疑行为时就提醒用户,让用户根据软件作用来定义黑名单和白名单,达到动态监控手机软件的方式。Android 系统的数据是共享的,这极大的方便了开发者,能够更快更方便开发出软件,但这种数据共享的方式,会导致短信、通迅录、相片等一些个人隐私的信息,能轻易地被所有应用程序获取,这就使用户的个人信息处于极度不安全的状态。首先从手机信息安全的定义入手,并对常见的手机病毒攻击方式进行了归类,进而对手机信息安全有更加深刻的认识。然后对 Android 操作系统组织结构、APK文件结构以及现行的安全机制进行了全面的分析。最后探讨了一下现在手机病毒是如何利用 Android 操作系统的漏洞来威胁用户的信息安全。
1 Android 手机可能受到的入侵方式
根据目前Android手机已经受到各种入侵方式加上对其安全漏洞的分析,我们从Android手机的硬件到软件,内核层到应用层可能受到攻击方式进行分析,将其归纳为以下几种方式:针对硬件的入侵,针对内核层的入侵,针对系统库和运行环境的入侵,以及针对应用程序的入侵。
1.1 针对硬件的入侵
Android系统是针对移动端开发的操作系统,所以它的存在依赖于硬件设备。由于硬件设备生产体系比较成熟,硬件的漏洞出现的可能性相对较小。但是硬件设备对整个手机来说是具有最高权限的,一旦发生入侵,造成的危害不可设想。通过调研发现,针对硬件入侵一般发生在产品升级过程中,而Android手机升级是相当频繁,所以针对硬件漏洞入侵的手段也逐渐引起各个设备厂商的重视。因为针对硬件的入侵方式更加隐秘,造成的损失也更大。
1.2 针对内核层的入侵
虽然Linux系统中几乎没有听说过被病毒攻击,但这并不是说Linux内核的安全性能很强。事实上CVE(Common Vulnerabilities & Exposures)每年都会收录Linux系统上百个漏洞。由于Linux系统的开源性,黑客可以很轻松地利用内核层的漏洞,对Android系统进行入侵。事实上Android手机应用市场里获取Root权限的软件就是利用内核层的漏洞来实现的。再加上为了节省硬件资源,降低内存的占用率,会对Linux进行裁剪,禁用一些选项,这其中就可能关闭了一些安全机制。
1.3 针对系统库和运行环境的入侵
Android系统中系统库主要是指系统的本地库函数,而 Android运行环境是指Dalvik Java虚拟机和Java的类库函数。Android操作系统中的本地库函数是用C/C++语言编写的,主要负责基本数学运算和底层调用,其目的是提高系统的效率。而Android操作系统的上层代码是用Java语言编写的。这里就有C/C++函数与Java函数相互调用的问题,Android操作系统使用了JNI机制来进行处理。当Dalvik进程通过JNI方法调用系统库函数时,万一报错就会导致整个Dalvik进程死掉,这样系统中的内存空间就会泄漏,导致整个手机系统奔溃。由于Android系统代码是对外开源的,所以现在Android智能手机上的病毒大多数是针对系统库和运行环境进行入侵的。endprint
2 Android 手机权限管理模型设计
2.1 模型设计整体思路
如今移动端支付和手机购物已经兴起,Android手机用户喜欢刷机和下载各种软件应用,已给不法分子各种可乘之机。所以解决Android系统现有安全机制问题是必要的。这里我们根据用户的习惯,采用情景模式方法对Android系统敏感的权限进行控制。让用户来具体是否授予该应用相关的权限,而不是让各种应用悄悄地获取各种应用权限。 如果某项权限被禁止了,而应用程序申请了该权限,则该应用被禁止运行。 目前市面的Android手机安全软件都是通过Java层对权限进行控制,这样不能有效地控制一些后台程序,特别是一些嵌入在ROM包的系统程序,这些程序很可能绕开Java层,直接调用kernel层接口,获取隐私信息。所以本模型直接从kernel层对用户的权限进行控制,根据现有的模型结构进行扩充,不破坏现有的架构,并提供良好的用户界面,注重用户的体验。
2.2 模型整体架构
该模型主要是在kernel层通过代码来实现对各种权限的控制,在Java层设计与用户进行交互的界面。然后通过JNI技术奖kernel层代码和Java层代码串联起来。这样在kernel层实现对这五种权限的管理。用户通过对情景模式的选择来启动相关Java调用类,这样上层应用都必须通过用户的允许才能获取某项权限。2.2 通信权限底层控制实现
作为一般手机,通信功能一般是采用处理器和Modem驱动的架构来实现的。而Android操作系统的通讯功能为了实现更加个性化的功能,将手机的通信系统分为:Modem驱动、RIL(Radio Interface Layer)、Android电话标准接口、各种电话相关应用四层结构。 通信功能中的Modem驱动与硬件采用串口方式进行数据交互,然后Modem模块通过与通信网络进行语音和数据的交互,从而完成通话和短信等相关功能。目前硬件的接口比较简单,相对比较成熟,对外也有比较一致接口模块,所以一般情况下Modem模块插上SIM卡后,就可以直接进行初始化和网络注册等工作,然后就可以打电话和发短信。但Android智能手机为了满足用户更加个性化的体验,其体系结构相对复杂一些。我们需要从kernel层代码进行修改来对Android通信权限进行控制。前面对Android系统的通信部分的源码进行了详细的分析,我们必须在Modem驱动层对代码进行一系列的处理。 我们通过ADB工具获取手机上的调试信息,然后打开手机的通信功能再关闭该功能,通过对比我们可以定位出控制通信功能的关键函数。这里我们模拟了Modem驱动与CPU交互的过程。如果用户需要通信权限,代码就按正常流程对硬件进行驱动,如果该用户禁止通信权限,则直接返回一个错误值,这样就没有对硬件进行驱动,手机无法获取信号。
2.3 WIFI 权限底层控制实现
上面的代码是WIFI驱动的关键代码,这里我们只是做了一点简单处理。通过default_wifi_value来标识上层用户的操作。如果用户要求关闭WIFI权限时,我们就会给上层用户一个错误码,这样就可以让上层处理进入到异常流程,这样就可以让上层的应用程序可以申请WIFI权限,但无法使用WIFI功能。
2.4 GPS 权限底层代码的实现
GPS底层框架是由硬件设备和软件驱动模块组成。GPS硬件设备在手机通电后就会直接提供NMEA数据。这些NMEA数据还只是一些裸卫星的数据,当软件驱动模块获得这些数据后,还需要主控方对这些数据进行处理,才能获得最后的NMEA的数据。 根据前面对源代码的分析,再通过打开GPS功能和屏蔽该功能后导出的sd卡文件debug信息对比来寻找控制该功能的文件和函数。我们通过对该函数的重写来对GPS权限进行控制。这里同样根据用户的需求对权限进行控制。通过default_gps_value的值来判断权限是否开启,再来判断是否进行连接卫星的操作。开启则进入正常处理流程,若关闭则返回错误码让上层处理流程进入异常处理过程,使所有的应用无法开启GPS的功能。
3 结论
本文提出基于Android操作系统应用程序权限控制,从手机信息安全开始强调了重视手机信息安全的必要性,并分析了现有Android系统的权限管理机制和可能受到攻击方式,指出了现有Android系统安全架构存在的缺陷。提出了自己的Android应用程序的权限控制模式,从Android系统的内核层控制应用程序的权限。 参考文献:
[1] 杨丰盛.Android 应用开发解密[M].北京:机械工业出版社,2010,32-34.
[2] Davi L, Dmitrienko A,Sadeghi A R,et al.Privilege escalation attacks on android[J].Information Security,2011:346-360.
[3] 杨怡君,黄大庆.Android 手机自动化性能测试工具的研究与开发[J].计算机应用,2012,32(2):554-556.
[4] Zhou Y,Jiang X.Dissecting android malware:Characterization and evolution[C].Security and Privacy(SP),2012,IEEE Symposium on.IEEE,2012:95-109.endprint
2 Android 手机权限管理模型设计
2.1 模型设计整体思路
如今移动端支付和手机购物已经兴起,Android手机用户喜欢刷机和下载各种软件应用,已给不法分子各种可乘之机。所以解决Android系统现有安全机制问题是必要的。这里我们根据用户的习惯,采用情景模式方法对Android系统敏感的权限进行控制。让用户来具体是否授予该应用相关的权限,而不是让各种应用悄悄地获取各种应用权限。 如果某项权限被禁止了,而应用程序申请了该权限,则该应用被禁止运行。 目前市面的Android手机安全软件都是通过Java层对权限进行控制,这样不能有效地控制一些后台程序,特别是一些嵌入在ROM包的系统程序,这些程序很可能绕开Java层,直接调用kernel层接口,获取隐私信息。所以本模型直接从kernel层对用户的权限进行控制,根据现有的模型结构进行扩充,不破坏现有的架构,并提供良好的用户界面,注重用户的体验。
2.2 模型整体架构
该模型主要是在kernel层通过代码来实现对各种权限的控制,在Java层设计与用户进行交互的界面。然后通过JNI技术奖kernel层代码和Java层代码串联起来。这样在kernel层实现对这五种权限的管理。用户通过对情景模式的选择来启动相关Java调用类,这样上层应用都必须通过用户的允许才能获取某项权限。2.2 通信权限底层控制实现
作为一般手机,通信功能一般是采用处理器和Modem驱动的架构来实现的。而Android操作系统的通讯功能为了实现更加个性化的功能,将手机的通信系统分为:Modem驱动、RIL(Radio Interface Layer)、Android电话标准接口、各种电话相关应用四层结构。 通信功能中的Modem驱动与硬件采用串口方式进行数据交互,然后Modem模块通过与通信网络进行语音和数据的交互,从而完成通话和短信等相关功能。目前硬件的接口比较简单,相对比较成熟,对外也有比较一致接口模块,所以一般情况下Modem模块插上SIM卡后,就可以直接进行初始化和网络注册等工作,然后就可以打电话和发短信。但Android智能手机为了满足用户更加个性化的体验,其体系结构相对复杂一些。我们需要从kernel层代码进行修改来对Android通信权限进行控制。前面对Android系统的通信部分的源码进行了详细的分析,我们必须在Modem驱动层对代码进行一系列的处理。 我们通过ADB工具获取手机上的调试信息,然后打开手机的通信功能再关闭该功能,通过对比我们可以定位出控制通信功能的关键函数。这里我们模拟了Modem驱动与CPU交互的过程。如果用户需要通信权限,代码就按正常流程对硬件进行驱动,如果该用户禁止通信权限,则直接返回一个错误值,这样就没有对硬件进行驱动,手机无法获取信号。
2.3 WIFI 权限底层控制实现
上面的代码是WIFI驱动的关键代码,这里我们只是做了一点简单处理。通过default_wifi_value来标识上层用户的操作。如果用户要求关闭WIFI权限时,我们就会给上层用户一个错误码,这样就可以让上层处理进入到异常流程,这样就可以让上层的应用程序可以申请WIFI权限,但无法使用WIFI功能。
2.4 GPS 权限底层代码的实现
GPS底层框架是由硬件设备和软件驱动模块组成。GPS硬件设备在手机通电后就会直接提供NMEA数据。这些NMEA数据还只是一些裸卫星的数据,当软件驱动模块获得这些数据后,还需要主控方对这些数据进行处理,才能获得最后的NMEA的数据。 根据前面对源代码的分析,再通过打开GPS功能和屏蔽该功能后导出的sd卡文件debug信息对比来寻找控制该功能的文件和函数。我们通过对该函数的重写来对GPS权限进行控制。这里同样根据用户的需求对权限进行控制。通过default_gps_value的值来判断权限是否开启,再来判断是否进行连接卫星的操作。开启则进入正常处理流程,若关闭则返回错误码让上层处理流程进入异常处理过程,使所有的应用无法开启GPS的功能。
3 结论
本文提出基于Android操作系统应用程序权限控制,从手机信息安全开始强调了重视手机信息安全的必要性,并分析了现有Android系统的权限管理机制和可能受到攻击方式,指出了现有Android系统安全架构存在的缺陷。提出了自己的Android应用程序的权限控制模式,从Android系统的内核层控制应用程序的权限。 参考文献:
[1] 杨丰盛.Android 应用开发解密[M].北京:机械工业出版社,2010,32-34.
[2] Davi L, Dmitrienko A,Sadeghi A R,et al.Privilege escalation attacks on android[J].Information Security,2011:346-360.
[3] 杨怡君,黄大庆.Android 手机自动化性能测试工具的研究与开发[J].计算机应用,2012,32(2):554-556.
[4] Zhou Y,Jiang X.Dissecting android malware:Characterization and evolution[C].Security and Privacy(SP),2012,IEEE Symposium on.IEEE,2012:95-109.endprint
2 Android 手机权限管理模型设计
2.1 模型设计整体思路
如今移动端支付和手机购物已经兴起,Android手机用户喜欢刷机和下载各种软件应用,已给不法分子各种可乘之机。所以解决Android系统现有安全机制问题是必要的。这里我们根据用户的习惯,采用情景模式方法对Android系统敏感的权限进行控制。让用户来具体是否授予该应用相关的权限,而不是让各种应用悄悄地获取各种应用权限。 如果某项权限被禁止了,而应用程序申请了该权限,则该应用被禁止运行。 目前市面的Android手机安全软件都是通过Java层对权限进行控制,这样不能有效地控制一些后台程序,特别是一些嵌入在ROM包的系统程序,这些程序很可能绕开Java层,直接调用kernel层接口,获取隐私信息。所以本模型直接从kernel层对用户的权限进行控制,根据现有的模型结构进行扩充,不破坏现有的架构,并提供良好的用户界面,注重用户的体验。
2.2 模型整体架构
该模型主要是在kernel层通过代码来实现对各种权限的控制,在Java层设计与用户进行交互的界面。然后通过JNI技术奖kernel层代码和Java层代码串联起来。这样在kernel层实现对这五种权限的管理。用户通过对情景模式的选择来启动相关Java调用类,这样上层应用都必须通过用户的允许才能获取某项权限。2.2 通信权限底层控制实现
作为一般手机,通信功能一般是采用处理器和Modem驱动的架构来实现的。而Android操作系统的通讯功能为了实现更加个性化的功能,将手机的通信系统分为:Modem驱动、RIL(Radio Interface Layer)、Android电话标准接口、各种电话相关应用四层结构。 通信功能中的Modem驱动与硬件采用串口方式进行数据交互,然后Modem模块通过与通信网络进行语音和数据的交互,从而完成通话和短信等相关功能。目前硬件的接口比较简单,相对比较成熟,对外也有比较一致接口模块,所以一般情况下Modem模块插上SIM卡后,就可以直接进行初始化和网络注册等工作,然后就可以打电话和发短信。但Android智能手机为了满足用户更加个性化的体验,其体系结构相对复杂一些。我们需要从kernel层代码进行修改来对Android通信权限进行控制。前面对Android系统的通信部分的源码进行了详细的分析,我们必须在Modem驱动层对代码进行一系列的处理。 我们通过ADB工具获取手机上的调试信息,然后打开手机的通信功能再关闭该功能,通过对比我们可以定位出控制通信功能的关键函数。这里我们模拟了Modem驱动与CPU交互的过程。如果用户需要通信权限,代码就按正常流程对硬件进行驱动,如果该用户禁止通信权限,则直接返回一个错误值,这样就没有对硬件进行驱动,手机无法获取信号。
2.3 WIFI 权限底层控制实现
上面的代码是WIFI驱动的关键代码,这里我们只是做了一点简单处理。通过default_wifi_value来标识上层用户的操作。如果用户要求关闭WIFI权限时,我们就会给上层用户一个错误码,这样就可以让上层处理进入到异常流程,这样就可以让上层的应用程序可以申请WIFI权限,但无法使用WIFI功能。
2.4 GPS 权限底层代码的实现
GPS底层框架是由硬件设备和软件驱动模块组成。GPS硬件设备在手机通电后就会直接提供NMEA数据。这些NMEA数据还只是一些裸卫星的数据,当软件驱动模块获得这些数据后,还需要主控方对这些数据进行处理,才能获得最后的NMEA的数据。 根据前面对源代码的分析,再通过打开GPS功能和屏蔽该功能后导出的sd卡文件debug信息对比来寻找控制该功能的文件和函数。我们通过对该函数的重写来对GPS权限进行控制。这里同样根据用户的需求对权限进行控制。通过default_gps_value的值来判断权限是否开启,再来判断是否进行连接卫星的操作。开启则进入正常处理流程,若关闭则返回错误码让上层处理流程进入异常处理过程,使所有的应用无法开启GPS的功能。
3 结论
本文提出基于Android操作系统应用程序权限控制,从手机信息安全开始强调了重视手机信息安全的必要性,并分析了现有Android系统的权限管理机制和可能受到攻击方式,指出了现有Android系统安全架构存在的缺陷。提出了自己的Android应用程序的权限控制模式,从Android系统的内核层控制应用程序的权限。 参考文献:
[1] 杨丰盛.Android 应用开发解密[M].北京:机械工业出版社,2010,32-34.
[2] Davi L, Dmitrienko A,Sadeghi A R,et al.Privilege escalation attacks on android[J].Information Security,2011:346-360.
[3] 杨怡君,黄大庆.Android 手机自动化性能测试工具的研究与开发[J].计算机应用,2012,32(2):554-556.
[4] Zhou Y,Jiang X.Dissecting android malware:Characterization and evolution[C].Security and Privacy(SP),2012,IEEE Symposium on.IEEE,2012:95-109.endprint