android安全机制的初级探究总结

目前市场上提到了很多关于android安全的问题,那么提到android的安全,我决定从以下几个方面初级探究一下:

(本文在撰写的过程中调研了多篇论文和博客,感谢作者们的辛勤劳动,感谢他们在互联网时代的自由和共享精神)

(1)android的安全性分析:

android本身有自己的一套安全机制:下面我们将对图中的知识进行解释


      沙箱:每个程序有自己的一个uid,这样在unix内核的基础上,加上每个文件都是自己的uid。而且在内存的访问过程中,也是不能够访问到别的应用程序的。

     java语言:这是由于java语言的语言特性,编译期的类型检查(C++中float型赋值int型是可以的,但是在java中这样是不行的,java中这种类型检查在编译时更加彻底),自动的存储管理(也就是java虚拟机会给你分配内存),数组的越界检查(这样缓冲区溢出就无法使用)

    3A原则:验证程序是否可以获得这种访问权限,授权程序是否可以使用哪些权限,记录程序用了哪些网络服务

    权限控制:permission机制。

    签名机制:验证签名,但是只能验证程序自身的完整性

   

 但是针对权限控制着一块,还有与生俱来的粗粒度问题:


对同一文件的访问:就是说android系统要是指定别的用户不能访问一个文件,那么这个文件就不能被任何用户访问,无法说某一个特定用户可以使用。

一个软件的安装:安装过程中,如果某一步不同意,则整个软件无法被使用。

获得权限的粒度粗:比如你获得了internet权限,那么你访问网络,使用各种协议,访问任何端口都可以了,这种权限的粒度本身就不够细致。



(2)android的安全问题:


让我们来具体的从攻击的层面上来分析一下:

基于硬件攻击:turbosim 这种sim卡实现中间人攻击

基于内核的攻击:基于内核的这种攻击和原本在linux下的rootkit攻击形式的一种一样,如果通过动态加载模块的方式,可以劫持系统的函数执行,但是在android系统上,由于模块是不支持动态加载的,而且即使可以动态加载(在编译android内核时编译成可加载的模式),但是也需要获取root权限。

基于核心程序攻击:对android核心库,例如dalvik库,sqlight等等,这些库本身会有缓冲区溢出的漏洞也会造成安全问题

应用程序攻击:这种基于android逆向的攻击,或者恶意程序的攻击,或者基于jni那套反射机制(私有成员函数和变量都可以获得)尤其最为严重。


攻击的具体技术上来分析如下(攻击的具体技术可以用于不同的攻击层面上):



android逆向:通过加入一些恶意程序片段,重新打包这种方式,或者截取其中加密解密的算法。

绕过权限机制:如下图,A不可以访问C,B和B导出的模块D可以访问C,A可以访问D,那么A就可以间接的访问C,这种机制的不安全性是由于D这样的导出模块对谁可以访问他没有特定的限制



反射机制:反射机制可以将原本java中私有的函数和变量拿到。



(3)android的安全对抗:这部分看雪论坛非虫大神的书中都有提到



由于时间问题,今天就先写到这儿。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值