[置顶] 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上关于图片异步加载的开源项目,就 ...
随机推荐
- 如何在苹果官网下载旧版本的Xcode 方法
1 在百度里输入“苹果开发者中心“,进入以下页面.点击页面中的“Member Center" 2 出现登录界面.这是需要苹果开发者帐号的,没有帐号的可以选择“Create Apple ...
- iOS-OC-基础-NSObject常用方法
Person *person1 = [[Person alloc]init]; Person *person2 = [[Person alloc]init]; // 可以调用类中的私有方法,但是会有一 ...
- js回网页顶部
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- JavaWeb学习笔记之JSP(一)
1. JSP: 1.1. 为什么需要 JSP ? 如果使用Servlet程序来输出只有局部内容需要动态改变的网页,但是其中的静态网页内容也需要程序员使用Java语言来进行输出,这就造成了大量代码的冗余 ...
- 关于C++的变量和类的声明和定义
什么是变量?变量或者叫对象,是一个有具名的.可以供程序操作的存储空间.这里具名是指变量是有名字的,可供操作是指能进行加减乘除或者输入输出等操作,存储空间则是指有一块属于它的内存空间. 为了便于说明,标 ...
- 论 Java 中获取一组不重复的随机数之性能问题
今天在做一个Java项目, 用到了使用一组不重复的随机数问题, 不管怎么做随机数里面总有几个是重复的. 于是上网去找资料, 在网上找到的资料中大部分都是一个思路: 网上的思路一:(性能不理想) 先生成 ...
- XDubg的配置与应用
XDUG调试器配置与应用 1.什么是xbug xbug是一个开发源代码的php程序员调试器,可以用来跟踪,调试和分析Php程序的运行状况. Xbug(free) ZendDebugger(need m ...
- Python中的正斜杠与反斜杠
首先,"/"左倾斜是正斜杠,"\"右倾斜是反斜杠,可以记为:除号是正斜杠一般来说对于目录分隔符,Unix和Web用正斜杠/,Windows用反斜杠,但是现在Wi ...
- AtomicInteger小小的理解
这里仅仅是验证多线程环境下,AtomicInteger的安全性. 通过源码不难发现两点: 1.value属性是volatile修饰 2.使用了unsafe的CAS操作 通过上述两点,实现非阻塞同步(乐 ...
- IE中对于stylesheet的个数限制
对于IE6-9: 1.样式规则最多只能有4095个,多于这个数目的会被忽略: 2.样式表(通过@import, <link> 或 <style>)最多可以有31个(总和),多于 ...