[置顶] Android访问控制系统测试与评估
5.1实验方案
通过以上章节,本文阐述了目前Android平台上的恶意软件以“隐私窃取”和“恶意扣费”类为主,本研究课题访问控制的目标也正是阻止恶意软件“隐私窃取”和“恶意扣费”的行为,因此,本实验方案选取良性软件和恶意软件,分别针对拨打电话、发送短信、联网、访问sd卡、访问通讯录、查看短信行为进行测试和分析。测试用例选取百度通讯录、360通讯录、酷狗音乐、DroidDream,实验环境为Ubuntu10.04和Android4.0模拟器以及相应的goldfish内核。
5.2实验过程
1. 测试360通讯录
360通讯录既可以打电话也可以发短信,因此为360通讯录分配“game”角色,由于“game”角色不能打电话、发短信,因此,当打开360通讯录时,如果这些功能都不能使用则符合预期结果。测试效果图如下所示:
图5.1360通讯录测试效果图1-不能查看短信和通讯录
2. 测试百度通讯录
百度通讯录功能和360通讯录相似,在此,为百度通讯录分配“contact”角色,那么如果它能够打电话和发短信,则符合预期效果。测试效果图如下所示:
3. 测试酷狗音乐
酷狗音乐是可以读取sd卡音乐文件进行播放,为此,给酷狗音乐分配“mediaplayer”角色,但不把它设置读写sd卡角色,那么如果它不能播放sd卡音乐文件则符合预期效果。测试效果图如下:
4. 测试DroidDream—Advanced File Manager和Super Ringtone Maker
DroidDream[18]是一款著名的Android平台上的恶意软件,它的最大特征之一是后台联网,泄露用户隐私。Advanced File Manager和SuperRingtone Marker是DroidDream系列的两款款恶意软件,前者它用于文件管理,可以访问sd卡,后者用于铃声制作,可以访问Internet。新建角色“Malware”,并只给该角色一个访问摄像头的权限,将“Malware”角色分配给AdvancedFile Manager和Super Ringtone Maker。测试效果图如下:
5.3实验分析
1. 360通讯录测试分析
由于为360通讯录分配了“game”角色,而此角色关联的smack规则已经禁止担任“game”角色的App拨打电话、发送短信、访问通讯录等行为,因此无法用360通讯录查看通讯录、短信等内容。下图为使用“adb shell”查看/smack/load里内容:
图5.8Android模拟器启动后smack/load中的smack规则
360通讯录的uid为10034,从上图可以看出smack规则“10034 1001 -”已经禁止它与radio进程通信,因此360通讯录不能发送短信。若使用360通讯录发送短信,360通讯录会提示“发送失败”的信息,查看Android的logcat会有如下的信息:
从上图可以看出,smack标签是“10034”的360通讯录进程无法在BinderDriver中与radio通信,那么360通讯录进程就无法实现发短信。
当用户在键盘上输入不是通讯录里号码时,出现拨号结束的画面,这是因为本课题已经对radio进行访问控制,拨打或发送不是通讯录中号码的打电话和发短信的行为都被阻止。当拨打电话时,出现了拨号界面,这是因为尽管“10034 1001 -”被写入/smack/load文件,但此时拨号的Activity是运行在1001进程,如果使用smackload工具在/smack/load写下smack规则“1001 _ -”,那么拨号界面的读秒行为终止,电话无法拨打。这是因为本课题在IPC中加了访问控制,而打电话是radio和rild进程在binder中通信,而rild(radiointerface layer daemon)进程的安全标签是“_”,因此如果有“1001 _ -”这样的规则,radio和rild无法通信,那么拨号过程终止。如果用户不给“game”拨打电话的权限,那么360仍然无法拨号,这是由于框架层的RBAC机制起了作用,它会在开启拨号的Activity之前对此Activity按照uid和申请的权限进行权限检查,如果此组件没有拨打电话权限,那么拨号的Activity不会出现。
2. 百度通讯录测试分析
百度通讯录的uid为10037,通讯录进程的uid为10000,因为/smack/load有规则“10037 10000 rwxa”,所以在百度通讯录中用户可以看到通讯录。由于181不是通讯录里的号码,所以用百度通讯录向这个号码发送短信会失败,号码666是通讯录里的号码,所以用百度通讯录向这个号码发送短信会成功。
3. 酷狗音乐测试分析
由于sd卡里文件都被打上了“sdcard”安全标签,而酷狗音乐没有被分配读写sd卡角色,因此,酷狗音乐无法打开sd卡里的音乐。
4. DroidDream测试分析
由于“Malware”角色只有一个访问摄像头的权限,因此担任“Malware”角色的App除了能够使用摄像头,不能使用其它权限。从测试结果可以看出:使用File Manager查看sd卡里文件长度都是0B,这说明了File Manager不能访问sd卡。同样,Super Ringtone Maker软件有一个功能是搜索互联网,而这个功能也不能用了,框架层的RBAC已经把相应的权限拒绝了,以下为“adb logcat”里内容:
系统评估
1. 功能评估
通过以上实验验证,本系统不仅能够通过定制角色限制权限,而且使用smack规则对内核的进程实施了强制访问控制,因此本系统能够保护用户隐私数据和阻止“恶意扣费”等行为,下表将国外典型的Android安全加固技术成果与本系统进行了功能对比:
表5.1 国外典型技术成果与本系统功能对比
|
安全策略可定制 |
限制权限 |
内核加固 |
上下文支持 |
阻止提权攻击 |
CRePE |
是 |
是 |
否 |
是 |
否 |
Apex |
是 |
是 |
否 |
是 |
否 |
SEAndroid |
是 |
是 |
是 |
否 |
是 |
本系统 |
是 |
是 |
是 |
否 |
否 |
CRePE和Apex的安全机制共同特点是基于Android权限检查机制,因此,它们的安全机制都可以被恶意软件利用Android系统漏洞或者使用Linux系统调用而直接绕过,本课题不仅在Android权限基础上实现了RBAC,而且使用了Smack模块实现了对Linux进程的控制,因此,本系统比CRePE和Apex具备更高的安全性。SEAndroid是一个“重量级”的Android安全增强系统,它要求智能手机配置较高,不太适合普通Android手机用户,而本系统采用的轻量级访问控制模块Smack作为Android内核访问控制机制,由于Smack对Android系统性能损耗很小,因此,本系统比SEAndroid在性能上有优势,虽然本系统有着以上优点,但本系统也有一些缺陷:
第一,本系统的一部分访问控制是基于Zygote模块,但Zygote不会重复“fork”相同uid的进程,因此,当用户在定制安全策略时,本系统的强制访问控制未必及时生效,比如当某个App被启动后,它的进程一直会存在,而不会被Zygote重复“fork”,因此这个App的smack规则不会被更新,只有让模拟器重启,Zygote进程重新装载smack安全策略;
第二,本系统没有考虑到上下文环境,用户在制定安全策略时,会出现“要么容许,要么拒绝”这种情况,因此,本系统下一步工作就是将上下文考虑进来;
第三,本系统的访问控制对特权进程失效。由于Smack安全模块不能阻止Linux超级用户或进程一切行为,因此,当Android手机被“root”后,本系统的访问控制将失效;
第四,本系统没有考虑审计。审计是保障计算机系统安全的重要手段,Smack内核本身就提供了审计功能,如果本系统在此基础上设计入侵检测模块,那么Android系统的安全性将进一步增强。
[置顶] Android访问控制系统测试与评估的更多相关文章
- [置顶] Android开发笔记(成长轨迹)
分类: 开发学习笔记2013-06-21 09:44 26043人阅读 评论(5) 收藏 Android开发笔记 1.控制台输出:called unimplemented OpenGL ES API ...
- [置顶] Android的IPC访问控制设计与实现
3.3.1 IPC钩子函数设计与实现 IPC Binder是Android最重要的进程间通信机制,因此,必须在此实施强制访问控制. 1. 修改secuirty.h 打开终端shell,输入指令“cd ...
- [置顶] Android系统访问控制之Smack安全策略设计与实现
1. 制定smack规则 “Zygote”进程由init进程创建,它负责创建系统服务进程“systemserver”.“radio”进程和APP进程.其中“radio”进程的uid是1001,它能够实 ...
- [置顶] 强制访问控制内核模块Smack
Smack(Simplified Mandatory Access Control Kernel)是Casey Schaufler[15]于2007年在LSM基础上实现的Linux强制访问控制安全模块 ...
- [置顶] Android AlarmManager实现不间断轮询服务
在消息的获取上是选择轮询还是推送得根据实际的业务需要来技术选型,例如对消息实时性比较高的需求,比如微博新通知或新闻等那就最好是用推送了.但如果只是一般的消息检测比如更新检查,可能是半个小时或一个小时一 ...
- [置顶] [Android源码分析]inquiry result引起的上层变化分析
在上一篇文章中,我们详细分析了android是如何解析蓝牙反馈上来的搜索到的设备信息,本文将会继续分析这些信息到了上层之后是如何处理. 8.inquiry result引起的上层变化 我们知道inqu ...
- [置顶] Android安全机制分析
Android系统是基于Linux内核开发的,因此,Android系统不仅保留和继承了Linux操作系统的安全机制,而且其系统架构的各个层次都有独特的安全特性[2] . 1. Linux内核层安全机制 ...
- [置顶] Android四大组件之BroadcastReceiver
Android四大组件之BroadcastReceiver Broadcast Receiver 广播接收器,是一种负责接收广播消息并对消息做出响应的组件,和Service一样并不提供与用户交互的UI ...
- [置顶] Android图片异步加载之Android-Universal-Image-Loader
将近一个月没有更新博客了,由于这段时间以来准备毕业论文等各种事务缠身,一直没有时间和精力沉下来继续学习和整理一些东西.最近刚刚恢复到正轨,正好这两天看了下Android上关于图片异步加载的开源项目,就 ...
随机推荐
- Android Studio 实用快捷键
ctrl + alt + 方向键 跳转到上次或下次编辑位置 ctrl + alt +n 查找文件 shift + f6 重构之重命名 ctrl + f12 导航到类方法 ...
- 解决Cacti监控图像断断续续问题
最近cacti的图像全都是断断续续.新加的设备,图像也是这样,查看cacti 的log发现大量下面类似的错误信息:04/12/2011 03:54:37 PM - SPINE: Poller[0] H ...
- ORACLE调度之基于时间的调度(一)【weber出品】
一.调度的概述 这里我看到一篇对调度的概述觉得描述的比我好,但仅限于概述部分,其他部分我觉得我讲的比他好,于是发生以下事情: ************************华丽的转载******** ...
- PHP Libxml
PHP Libxml 函数 PHP:指示支持该函数的最早的 PHP 版本. 函数 描述 PHP libxml_clear_errors() 清空 Libxml 错误缓冲. 5 libxml_get_e ...
- Php ORM 对象关系映射
ORM的全称是Object Relational Mapping,即对象关系映射.它的实质就是将关系数据(库)中的业务数据用对象的形式表示出来,并通过面向对象(Object-Oriented)的方式将 ...
- java事件处理
1.ActionEven事件 文本框,按钮,菜单项,密码框,单选按钮都可以出发ActionEvent事件 使用 addActionListener(ActionListener listen1) 来注 ...
- C++拾遗(七)函数相关(2)
内联函数 内联函数与常规函数的区别在于: 1.常规函数:在执行调用指令时,先存储该指令的内存地址,将函数参数复制到堆栈,然后跳转到被调用函数起点的内存单元,执行函数,将返回值放 入寄存器,最后跳回到一 ...
- 《Linux内核分析》 week2作业-时间片轮转
一.基于时间片轮转调度代码的解读 代码结构主要由三个文件组成: 1.mypcb.h 2.myinterrupt.c 3.mymain.c 1.进程控制块(mypcb.h) /* CPU-specifi ...
- Java集合类笔试题
介绍Collection框架的结构 Collection接口是单值存放的最大父接口,可以向其中保存多个单值的数据(所谓单值就是指集合中的每个元素都是一个对象).其子接口主要有:List.Set.Que ...
- Postman 安装及使用入门教程(转)
安装 本文只是基于 Chrome 浏览器的扩展插件来进行的安装,并非单独应用程序. 首先,你要台电脑,其次,安装有 Chrome 浏览器,那你接着往下看吧. 1. 官网安装(别看) 打开官网,http ...