[置顶] 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上关于图片异步加载的开源项目,就 ...
随机推荐
- AngularJs学习html转义
MainApp.directive('ngHtml', function () { function watch(scope, el, watchExp){ scope.$watch(watchExp ...
- Ajax跨域请求中的Cookie问题(默认不带cookie等凭证)
1.原生Ajax请求方式,设置跨域请求附带详细参数 var xhr = new XMLHttpRequest(); xhr.open("POST", "http://xx ...
- 关于服务器防火墙和discuz论坛的问题
今天做了一个b2b商城,其中的论坛用的是discuz论坛 .net版本,主页要取出其中三个板块的最新帖子数据,安装好后,帖子数据在dnt_posts1数据表里,其中的tid为外链表dnt_forums ...
- 关于android:configChanges小结
有段时间没更新博客了,做个音乐播放器遇到了坑,暂放来学习一个开源小项目
- ajax+ashx 完美实现input file上传文件
1.input file 样式不能满足需求 <input type="file" value="浏览" /> IE8效果图: Firefox效 ...
- Linux samba服务器设置简单匿名共享
linux下面的samba非常的好用,很多人拿它来作共享文件服务器, 缺省配置下,samba必须提供用户名密码来访问,如果是所有人都可以访问的内容,那么是比较麻烦的,其实通过一个设置,即可实现不用输入 ...
- The account '' has no team with ID ''
Xcode 升级到7.2 版本,真机测试的时候报错:The account '' has no team with ID '' 解决办法1:http://stackoverflow.com/quest ...
- "float: left;" div 不换行显示
<div id='p'> <div id='c1'> </div> <div id='c2'> </div> <div id='c3' ...
- 搭建Struts2开发环境
搭建Struts2环境时,我们一般需要做以下几个步骤的工作: 1.创建javaweb工程 2.找到开发Struts2应用需要使用到的jar文件 3.创建jsp文件 4.创建action文件 5.编写S ...
- 你好,C++(28)用空间换时间 5.2 内联函数 5.3 重载函数
5.2 内联函数 通过5.1节的学习我们知道,系统为了实现函数调用会做很多额外的幕后工作:保存现场.对参数进行赋值.恢复现场等等.如果函数在程序内被多次调用,且其本身比较短小,可以很快执行完毕,那么 ...