基于Android系统密钥漏洞的安全机制分析

时间:2022-09-28 10:23:49

基于Android系统密钥漏洞的安全机制分析

摘 要:目前android 系统占据智能手机操作系统最大市场份额,android 操作系统的安全性和可靠性非常重要。本文首先介绍android操作系统的安全机制原理,然后对android系统密钥漏洞进行充分说明,最后给出android系统密钥漏洞防范措施。

【关键词】Android安卓安全机制 密钥漏洞

据国外媒体报道,在今年第二季度,Android手机已经占据了全球智能手机市场80%的份额。根据ABI Research报告预计,在2013年智能手机应用程序将被下载560亿次,在大量下载的应用程序中,恶意与高风险的安卓应用数量在2013年当中或将达到120万个。那么android 安卓操作系统的安全性到底如何,我们该如何防范,我们先从android 操作系统的安全机制来了解。

1 android 安卓系统安全机制简介

Android是一种基于Linux的自由及开放源代码的操作系统,Android 系统基于Linux 内核,采用了分层的体系结构,自底向上分别是Linux内核、本地库和Android 运行时环境、应用框架、应用程序共四层结构。Android的安全机制由三部分组成,包括Linux 内核,Android 本地库和运行时环境和签名认证机制。Android 的安全机继承于传统的Linux 和 Dalvik 虚拟机的安全机制,同时还有Google 设计的Android 特有的安全机制。

1.1 Linux 系统安全机制

android 系统最底层是Linux 内核,所以android系统继承了Linux的安全机制,安装在Android 系统中的每个程序都会被分配一个属于自己的统一的Linux 用户ID,即UID,并明确相应的权限。UID在程序安装到系统的时候被分配,并且在这个设备中保持它的永久性。而文件访问控制来源于Linux 的权限控制机制,权限许可是Android 为保障安全而设定的安全标识,每一个文件访问权限都与其拥有者、所属组号和读写执行三个向量组共同控制。文件在创建时将被赋予不同应用程序ID,从而不能被其它应用程序访问,除非它们拥有相同ID 或文件被设置为全局可读写。

1.2 Android 本地库及运行时

Android 是一个多进程操作系统,每一个应用程序(和系统的组成部分)都运行在自己的进程中,进程运行在一个安全的“沙箱”中。并且通过内存管理单元,管理进程分配不同的虚拟内存空间,进程只能访问自身分配的内存空间,而不能访问其他进程所占用的内存空间。为了防止缓冲区溢出的情况出现,Android 使用强制类型Java 语言,Java 语言可以通过编译期间的类型检查,自动的存储管理,数组的边界检查三种机制阻止变量被错误或不恰当的使用。

1.3 Android应用框架

应用框架中有权限控制的机制,权限决定Android 系统中用户或者程序执行的操作是否会被允许,只有拥有相应的权限才能打开数据文件、发送信息和调用Android 组件等。

另外,所有的Android 应用程序必须通过一个证书的签名,此证书的私钥必须被开发者所掌握。这个证书的标识是应用程序的作者,这个证书不需要通过证书组织的签署,因为Android 完全允许使用自签署的证书。这个证书仅仅被用于与应用程序建立信任关系,而不是为了控制应用程序能否被安装。

2 android 系统密钥漏洞

国外安全研究公司BlueBox Security首先公布发现android系统密钥漏洞,研究人员已经发现,Android系统密钥漏洞允许黑客为已验证签名的APK添加恶意代码,而无需破坏其签名。

通过下面的实验,说明如何给一款应用程序添加恶意代码,并且不破坏签名的操作方法。

首先以一款免费的万年历软件(calendar.apk)为实验对象,然后使用的工具是APKTool ,它是一个反编译软件,对万年历软件进行反编译。反编译完成后,会在程序当前文件夹下出现一个calendar文件夹,该文件夹下面有两个文件夹和两个文件:smali、res文件夹和AndroidManifest.xml、apktool.yml文件。其中,smali相当于Android工程中的src文件夹,里面包含有针对各个java反编译出来的smali代码。

由于反编译后生成的是smali文件,我们可以用文本编辑器打开。接下来对这个smali文件进行修改,并添加恶意代码,恶意代码可以是在后台发送一条短信达到恶意扣费的作用,或者是安装木马程序控制手机等。

我们在smali文件中添加一段“恶意代码”,不过这个恶意代码只是让这个程序在运行开始时弹出一个Toast,提示它被修改过了。修改完成后保存。

然后再利用工具APKTool重新进行编译,编译完成后,可以在calendar目录下的dist目录中找到生成的calendar.apk安装文件。

最后,我们把这个apk程序进行签名。签名好了后,在模拟器或者android机器上安装签名后的apk程序,运行测试,发现程序运行开始就弹出一个Toast,提示这个apk程序被修改过了。至此,这个实验证明了Android系统的确存在密钥漏洞,允许黑客为已验证签名的apk程序添加恶意代码,而无需破坏其签名。

3 android系统漏洞防范措施

android系统密钥漏洞是基于系统签名机制的攻击。攻击的对象包括Android 系统自带和用户自行安装的应用程序。由于用户自行安装应用程序来源多样,无法验证其可靠性,使得针对应用程序的攻击是最容易的攻击手段。android系统密钥漏洞的出现,必将广泛在移动互联网中被攻击者所利用。由于地下灰色产业链的存在,也使得基于系统密钥漏洞的攻击更具有商业价值,如恶意扣费、流量访问等。

4 结论

本文首先分析了android系统安全的相关原理,结合实例介绍了android系统密钥漏洞并注入恶意代码的方法,最后给出了android系统密钥漏洞相应的防范措施。相信随着时间的推移,android平台的漏洞会越来越少,系统将会越来越安全可靠。

参考文献

[1]丁丽萍.Android操作系统的安全性分析[J].信息网络安全,2012(3).

[2]王鹏程.Android系统安全机制研究[J].电子制作,2013(2).

作者单位

武汉交通职业学院 电子与信息工程学院 湖北省武汉市 430065

上一篇:钨金属栅AlGaNGaN_高电子迁移率晶体管的性能研... 下一篇:刍议糊涂输入法对传承中国汉字文化的贡献