前言
本文研究实现了一个可用于Android操作系统的安全加固方案,它能很好地拦截威胁事件,用户可自行编程扩展安全保护方案,具有很好的性能。
研究背景和意义
1.研究背景
与PC操作系统相不同,Android操作系统呈现出巨大的碎片化现象。目前Android操作系统在移动智能终端市场上的占有率已超过85%,其品牌种类繁多,制造、发布和更新是由国内外各品牌手机运营厂商定制完成。这种情况大大超出Android鼻祖Google公司的掌控,因此Google之后发布的安全补丁在全球各种品牌的Android手机上都迟迟得不到有效地使用。此外,由于Android操作系统具有开源架构的特性,所以它成了大量恶意攻击软件攻击的目标,而复杂不规范的Android应用市场又促使Android智能终端使用者通过各种途径下载可能含有后门的应用软件。这些情况使得Android操作系统的安全性面临着更多复杂的挑战,进而增加了用户隐私信息泄露的风险。
因此,Android操作系统在大型公司和政府部门中被禁止使用。在国外,著名Android手机厂商黑莓公司的安全研发部门正着手开发一种商务友好型的Android智能终端操作系统,它极大地减少了用户隐私信息泄露的风险。在国内,作为Android智能终端的中流砥柱,华为、小米等公司也有义务扛起大旗,保障Android使用者的隐私信息安全。
2.研究意义
从目前的安全威胁情况可以得知,网络安全的战线已从传统的电脑平台转向移动智能终端,未来的网络攻防安全必将围绕各种类型的移动智能终端展开,而攻击形式也将由传统电脑平台上的病毒变为短信诈骗、话费窃取、捆绑后门植入等多种方式。在这种情况下,很多传统电脑的安全防护手段并不能完美地应用到Android智能终端设备上,因此,引入全新的、行之有效的安全方案是非常有必要的。Android智能终端设备有一个缺点,即它的权限机制是粗粒度、高开放性的,这极易泄露使用者的隐私信息。基于此,提出一个扩展性强的Android智能终端安全加固方案,它具有广阔的前景和深远的意义。
研究内容
1.Android安全加固技术研究
研究得知目前针对Android智能终端操作系统的安全加固技术大致分为三种,分别是基于软件框架层的安全增强、基于内核层的安全加固和基于虚拟化的安全增强技术,详细如下。
1.1.基于软件框架层的安全增强
基于软件框架层的安全增强工作目前的研究成果最多。Android操作系统中Package Manager Service可以管控应用程序的安装、升级、卸载和维护;Activity Manager Service可以管控应用活动的生命周期等等。在应用软件框架层做安全工作可保障对系统资源的访问控制功能的安全性。
基于软件框架层的安全增强项目进展如下。Kirin对应用初始安装的权限进行限制,Saint、XManDroid、Trust-Droid和FlaskDroid主要保证应用通信的安全,IPC Inspection和Quire通过监控intent来抵抗提权攻击,TaintDroid和AppFence监控并保护应用中存储的隐私数据,APEX和CRePE提供细粒度的权限分配方案,TISSA、MockDroid和AppFence都提供了默认返回值以解决随时发生的程序崩溃问题。这些项目方案中都有很多类似的钩子函数调用行为。
1.2.基于内核层的安全加固
Android操作系统的底层是采用Linux内核作为核心的,其很多安全加固方案也可以在底层来部署实施。例如,可以在Linux Security Modules 的基础上,在很多关键的敏感执行路径中放置钩子函数,通过实施对应的安全策略来保证系统的安全性。
SELinux 是基于内核层的一个安全加固应用,已被融入到 Android Open Source Project 中。 SELinux 基于域类型,实现了按角色访问的机制。在系统运行中,通过安全语义的管理方式对获取系统或设备资源的用户进程增加访问控制策略,保证其安全性。这是一种强制访问控制策略,对于端口、文件等资源的访问是非常明确彻底的,这也对提升权限的攻击起到了有效的防护效果。但是,普通用户拥有少量权限,这样应用的扩展性就会受到限制;而且SELinux 的权限有100多个,功能错综复杂,配置难度很大。
1.3.基于虚拟化的安全增强
虚拟化技术曾用于解决研发硬件过程的成本高、难度大等问题,但因为其能对资源进行分级分类的控制,从而在Android智能终端加固方面发挥应用。L4Android是虚拟化技术的一个产物,它在L4Linux技术的基础上将Android智能终端的资源分为公私两部分,从而实现了同时运行多个应用活动的功能。但是,它在增加存储量的同时,影响了Android智能终端的性能,降低了Android系统的运行效率。
2.Android安全加固系统的研究与设计
主要研究内容是研发一种基于软件框架层和内核层的Android系统的安全加固方案,通过它能够实时保障Android智能终端隐私信息的安全。主要工作是下载并编译Android+ASM源码,安装Android监控模块,从内核层面加强安全性;开发安全过滤功能,从而能够对监控到的应用事件进行判断和处理,并提示用户恶意应用的信息,帮助使用者了解恶意应用的详细情况。
Android安全加固系统能对Android移动终端进行多方位的安全加固。根据对手机安全事件的调查分析,团队发现摄像头、剪贴板、联系人和Service这四部分引发的安全问题较多,因此针对这些问题提出了安全加固的研究与设计方案。
2.1.摄像头安全加固模块的研究与设计
近几年在黑客大会上常有Android智能终端摄像头的非法开启技术。摄像头可以最直接地显示使用者的当前状态,最有效地让攻击者获取到真实的信息,如果这些信息被泄露,会侵犯用户的肖像权,使得用户经常受垃圾信息的困扰,甚至会造成生命威胁。因此,如何有效地对摄像头进行安全加固是一个亟待解决的问题。
本节提出了一个Android智能终端上的摄像头安全加固模块。它首先通过使用Android监控模块来实时监控拥有开启摄像头的测试应用的行为活动信息,然后通过安全过滤机制检测并处理这些行为活动信息。此安全过滤机制通过应用的唯一标识符Uid确定了安全白名单,并增加提示信息和处理方式,通过它来判断测试应用的合法性,做出合理的安全加固决策。
摄像头安全加固模块的详细执行流程如图2-1所示。第一步是安装Android第三方监控模块,通过它来做后续的监控工作。第二步是设计实现一个具备处理监控行为信息功能的ASM应用程序,并申请android.permission.GLOBAL_ASM、android.permission.GLOBAL_ASM_DATA_MOD和android.permission.RECEIVE _BOOT_COMPLETED权限,这些权限可以保证监控功能的正常调用。最后在其MainActivity.xml的显示界面中点击【Start】按钮,此时会注册摄像头的钩子Hook.HOOK_CAMERA。
上述工作完成后,摄像头安全加固系统进入等待状态。此时运行拥有开启摄像头功能的测试应用。开启摄像头后,钩子Hook.HOOK_CAMERA会将此应用的行为事件发送至回调处理函数camera(int uid, String packageName)中,在这里设置安全过滤机制。经判断,如果测试应用的Uid(应用的唯一标识)在白名单中出现,则允许其继续运行,否则出现外部应用开启摄像头的提示信息,并强制停止测试应用运行。
2.2.剪贴板安全加固模块的研究与设计
用户设置的各种账户密码都比较复杂,在登录账户时,常通过复制粘贴的方式输入密码,这在Android手机登录账户中尤为常见。这样会使得密码短时间存储在了剪贴板中,如果剪贴板的信息被获取,等于直接告诉别人账户密码;且用户往往会在多个地方使用同一个密码,会进一步恶化情况。解决这些问题的关键方法就是杜绝剪贴板的信息被泄露,只要能保证剪贴板的信息不被恶意应用获取到安全性会得到有效的提升。基于此,本节设计了一个剪贴板安全加固模块。
此剪贴板安全加固模块通过Android监控模块监控拥有获取剪贴板内容功能的测试应用的行为活动信息,并通过设计的安全过滤机制判断测试应用的合规性,做出合理的安全加固决策。
安全加固模块的设计流程如图2-2所示。首先安装Android监控模块。再开发一个拥有监控事件处理功能的ASM应用程序,并申请android.permission.GLOBAL_ASM、android.permission.GLOBAL_ASMDATA MOD和android.permission.RECEIVE_BOOT_COMPLETED权限,并在MainActivity.xml中的显示界面点击【Start】按钮,此时会注册剪贴板的钩子Hook.HOOK_WRITE_CLIPBOARD和Hook.HOOK_READ_CLIPBOARD。
上述工作完成后,剪贴板安全加固系统进入等待状态。此时运行测试应用,它会读取或修改剪贴板的信息,钩子Hook.HOOK_WRITE_CLIPBOARD和Hook.HOOK_READ_CLIPBOARD会将此应用事件发送至回调处理函数writeClipboard(int uid, String packageName)和readClipboard(int uid, String packageName)中,在这里设置了黑白名单的安全过滤机制。如果测试应用的Uid在白名单中,则允许继续运行,否则提示安全信息并强制停止测试应用运行。
代码及相关工具和包链接:https://github.com/HYWZ36/ASM_Android_Security_Model