基于Android的移动智能终端安全的分析与研究
2018-03-07杨德芳范晓雨
◆杨德芳 范晓雨
基于Android的移动智能终端安全的分析与研究
◆杨德芳 范晓雨
(潍坊学院计算机工程学院 山东 261041)
随着科技的发展,智能终端的使用越来越普及,交流的信息量越来越大,而智能终端的安全性问题变得也变得越来越重要,本文通过对基于Android平台的智能终端系统的各个层次安全性进行分析,其中包括Linux的内核的安全性,系统运行库的安全性,应用程序框架层的安全性和应用程序的安全性进行分析和探讨,提供移动终端安全的解决方案。
Android系统;Linux内核;系统运行库;程序框架层
0 引言
随着移动通信技术和移动互联网的快速发展,移动智能终端在硬件、软件以及带宽方面都得到了显著的提高,同时也带来了安全隐患。用户通过移动智能终端使用移动业务,并且将大量的用户的个人信息存储在移动设备中,因此,保证移动业务的安全,实现移动网络和移动智能终端之间的通信安全,同时保证用户的信息安全变得至关重要。目前主流的操作系统:Android,IOS,windows phone,本文主要针对在Android基础上的移动终端的安全性进行分析和探讨。
1 移动智能终端的安全风险
智能终端存在很多的安全漏洞,一方面存在系统的漏洞,像Android平台的签名漏洞、挂马漏洞、短信欺骗漏洞和后台发送信息的漏洞、后台拨打电话的漏洞等,这些漏洞都会成为恶意软件攻击的目标;另一方面存在很多的智能终端恶意软件,这些软件和传统计算机的恶意软件一样,具有传染性和破坏性,会导致智能终端死机、关机、资料被删除,向外发送邮件,拨打电话窃取隐私等。恶意的行为有恶意扣费、隐私窃取、远程控制、恶意传播、资费耗尽、系统破坏、诱骗欺诈和流氓行为等。
2 Android系统的架构分析
Android系统的系统架构采用的层次化的结构,其软件的层次结构包括操作系统、中间件和应用程序,根据Android的软件的框图,其结构层次共有四个层次。自底向上分为Linux内核层、系统的运行库层和Android运行环境、应用程序的架构层和应用程序层。
Android以Linux2.6为操作系统。Linux2.6是一种标准的技术,Android对操作系统的使用包括核心和驱动程序两部分,驱动程序包括显示驱动,FLASH内存驱动,照相机驱动,音频驱动,WIFI驱动,键盘驱动,蓝牙驱动,BinderIPC驱动,电源管理驱动。
库有C库,多媒体架构,SGL,SSL,OpenGLES1.0,界面管理工具,SQLite,WebKit,FreeType。
Android的各种库是以系统的中间件的形式提供,它和移动平台的应用密切相关。
Android的运行环境主要是指虚拟机技术-Dalvik。
应用程序的框架为应用程序层的开发者提供APIs,它实际是一个应用程序的框架。由于上层的应用程序是JAVA构建的,本层为JAVA提供包含了UI程序中所需要的各种控件,其中包括Activity(活动),Broadcast intent Receiver(广播意图接收者),Service(服务),Content Provider(内容提供者)。
Android的应用程序主要是用户界面方面的,以JAVA程序来编写。其中包括各种资源文件放置在res目录中,JAVA程序以及相关的资源经过编译生成一个APK包,Android提供主屏(Home)。
3 Android的安全机制
Android扩展了Linux内核的安全模型的用户和权限机制,其安全机制是由进程沙箱、权限模型和Android设备的分区和应用程序签名组成的。在Android中安装应用程序时分配一个UID,应用程序在设备的存续期间UID是保持不变的。应用程序运行于自己独立的进程空间,与UID不同的应用程序自然形成了资源隔离,称为应用程序“沙箱”。
权限模型要求用户在使用API时进行申请,称为Permission,这样对一个敏感API的使用在安装的时候可以给用户风险提示,由用户确定是否安装。Permission通过Protectional分为四个等级:normal,dangerous,signature,signatureorsystem。 normal只要申请就可以使用,danggerous需要用户安装的确定才能使用,signnature不弹出确认提示,signorsystem的权限需要开发者应用和系统使用同一个证书。
Android设备的分区包括系统分区、数据分区和SD卡分区等。系统分区加载为只读分区,包含操作系统内核,系统的函数库,应用程序架构系统应用程序,由厂商植入。/system/lib目录存放系统库文件,/system/framework目录存放Android系统的应用程序的框架.jar文件。
数据分区存放用户数据和用户程序。一般对数据分区设定分区容量,避免黑客向数据分区非法写入数据或者建立非法文件对数据分区进行破坏,/data/data存放APK程序数据,、data/system存放packages.xml,packages.list和appwidgets.xml等文件,/data/misc目录保存Wi-Fi账号和VPN设置等。SD分区是外置设备,可以从其他的计算机系统上进行而不受Android系统的控制。
Android的签名机制是自签名机制,APK安装时的验证过程:计算CERT.sf的散列值;用公钥验证CERT.rsa文件,得到的结果和上面的散列值比较。如果相同则表明文件是被篡改的;由于CERT.sf包含了APK中MANIFEST.MF文件的散列值,而MANIFEST.MF包含了APK中的其他的文件的散列值,因此CERT.rf文件可以得到其他文件的正确散列值,最后验证MANITEST.MF中列出的APK包中的其他的文件与其对应的散列值是不是同一个值而保证APK的完整性。
4 系统的安全分析
Linux内核决定了Android系统的性能,为Android系统提供核心的服务,像进程管理、内存管理、安全性以及协议等,Android是在标准的Linux 基础上进行的扩展,增加了Ashmen机制、LowMemoryKiller机制等,大大地提高了系统的安全性。Linux内核需要关注驱动程序和厂商提供的软件驱动,驱动程序工作在内核控件,具备最高的优先级,其中任何的漏洞被利用都会被黑客获得Root权限而直接构成系统的威胁。Linux内核驱动时是模块化的,主要的功能是在模块内完成。万一被入侵,直接卸载驱动程序也是保证Linux内核安全的一种方式。
Android包含者多个系统库,例如Surface、多媒体库、SQLite、OpenG1|ES、WebKit等。提供了一些原生进程使用的原生库,用C/C++编写,不属于类型安全,比Java代码更容易出错。
Android的Dalvik虚拟机是Java程序运动的基础,虚拟机的安全对系统起着关键性的作用,直接影响了所有的应用程序。Dalvik中的.dex文件是一个潜在的攻击点,它有可能被恶意的篡改,在安装应用程序以及加载.dex文件内存的时候,都会随.dex进行错误检查。当错误检查失败的时候,可以使用“断言”语句记录信息,“断言”语句是为了开发和测试使用,无法阻止恶意改动文件的行为。由于Dalvik的字节码没有执行Java的安全类型,为代码攻击者提供了编译不安全代码的机会,替换了原有的代码转化为.dex字节码,从而执行文献的字节码,导致应用程序崩溃或者执行任意的代码。
5 Android应用安全分析
用户在下载软件的时候很可能下载不安全的软件,恶意软件会在用户毫无察觉的情况下,盗取或者访问私有信息。应用程序权限机制虽然为用户和系统提供了安全保障,但是还是存在滥用权限机制的问题。共享用户ID存在着安全隐患,一旦应用程序声明了一个共享用户ID,在运行后每个共享这个ID的应用程序就会被授予一组相同的权限,它们之间可以相互访问资源,攻击者就可以利用共享用户ID进行恶意的攻击。如果一个应用程序具备访问Internet的功能,另一个应用程序实现访问联系人名单的功能,这两个应用程序共享ID,运行一个进程,它们都具备了读取联系人信息和通过Internet传输数据的两种功能,那么攻击者就会利用这两个应用程序通过Internet 获得联系人的个人的信息。
Android的应用程序以.APK文件的形式进行安装。软件包管理器为安装进程提供服务,检查.apk的正确性,检查的方式是验证用户签名,共享用户ID的合法性,权限要求以及.dex文件,由于Android采用字签名的方式,没有经过权威者的认证机构的签订,无法对开发者进行验证,也就无法证明.apk的完整性。
Android安装设备也会影响到应用程序的安全性。.apk文件有三种安装方式,其中的一种安装方式通过Android的adb调试安装,安装方式有软件包管理器,没有与任何用户交互。自动授予应用程序正常的级别和危险级别的权限,由于缺乏用户的交互,这种安装方式具有较高的安全风险。
Android采用嵌入式数据库SQLite,该数据库不同于其他的大项数据库,没有用户管理和访问控制和授权控制,凡是操作系统合法的用户只要具备对文件的读写权限,就可以直接访问数据库。不提供加密机制,Android在使用过程中可能遭受到SQL注入的攻击。
6 结束语
以上几个方面就是针对基于Android各个层次进行安全分析。在移动智能终端使用移动业务时,应该找出安全漏洞,进行安全防护,避免终端用户遭受非法用户的攻击。
[1]中国网络空间研究院.网络安全技术基础[M].北京:人民邮电出版社,2016.
[2]恒盛杰资讯.黑客攻防从入门到精通[M].北京:机械工业出版社,2013.
[3]崔孝晨.Python绝技运用Python成为顶级黑客[M].北京:电子工业出版社,2016.
[4]杜晔.网络功放技术教程[M].武汉:武汉大学出版社, 2015.
[5]青岛东合信息技术有限公司.Android程序设计[M].北京:电子工业出版社,2012.
[6]文全刚.嵌入式Linux 操作系统远离与应用[M].北京:北京航天航空大学出版社,2015.
[7]石华耀.黑客攻防技术宝典[M].北京:人民邮电出版社, 2012.
[8]谢希仁.计算机网络[M].北京:电子工业出版社,2015.