论文研究-基于权限管理的Android应用行为检测 .pdf

所需积分/C币:6 2019-08-22 15:07:47 385KB .PDF
收藏 收藏
举报

基于权限管理的Android应用行为检测,刘智伟,孙其博,随着Android系统所占据市场份额的增加,越来越多的安全问题成为了困扰Android系统进一步发展的羁绊。当前市场大部分安全软件不能够实�
和国科论文在线 http:/www.papcr.cdu.cn uid也是可能发生改变的。 gid:对于普通应用而言,gid与uid是一致的,使得不用应用的gid不同,从而很好的 保护了应用的私有数据。 gids:在应用程序安装的时候,根据应用申请的权限,系统为应用分配 group,并被保 85存在相应的结构中。 Android系统中每一个应用程序都是独立的运行在白己的进程中(一个沙箱中),由于 它们彼此之间拥有不同的uid以及gid,从而完美的实现了对应用进程之间的隔离,使得它 们的数据和代杩彼此不被影响。在内核层次实现了对权限的分离管琲。 1.2 Permission机制 Permission机制是 Android系统在 Linux的权限管理基础上扩展的一种安仝保护机制, 它主要的任务是用米对应川可以执行的某些具体操作进行权限细分和访问控制,位于 Android系统的框架层,主要是为了限制应用开发者对系统资源或者用户信息的滥用 Android应用程序的权限主要包括两个方面:方面,应用利用系统提供的API及其他服务, 这些API和服务受权限保护,需要在 Manifest中注册相应的权限,此时应用成为权限的需 95求方;另…方面,如果一个应用提供了其他应用需要访问的功能,为了安全的日的,需要在 代倡中指定访问这些功能所需要的权限,此时该应用成为授权方 Android系统将系统提供的AP以及数据进行细化,封装了145个 permissIon,每一个 permission对应一种资源。默认缺省情况下,应用无权执行可能对其他应用、系统或者用户 造成影响的任何操作,这些操作可能包括读写用)私人数据(短信或者通话记录等)、访 I00网络、获取地珅位置信息以及录音拍照等。如果要使用系统提供的这些功能,则需通过 user-permission>标签在 Manifest文件中中请对应的权限。例如: xml version="1.0"encoding="utf-8?> manifestxmins:android="http://schemas.androidcom/apk/res/android permIssion. testl 105 android version Code"5 android versionName=1.0.0"> <uses-sdk android: minSdkversion=7"/> uses-permission android name=android. permission. INTERNET"> ≤useS- permission 110 android: name="android. permission. WRITE EXTERNAL STORAGE Kuses-permission android: name="android. permission. READ CONTACTS" </manifest 上述这段代码注册了三个权限分别是:访问网终、写内存卡以及读取联系人信息,注册 115权限之后,应用程序在执行访问网络、写内存卡或者读取联系信息操作的时候才能正常完成 个权限主要包含三个方面的信息:权限名、权限组以及保护级别。权限名用米标识 个权限,权限组是指将相同功能的权限划分为一个组以方便管理,权限级别则相对复杂。 Android系统对权限进行了四级划分: normal、 dangerous、 Signature、 signatureorsystem。前 两个级别对第三方的应用开发者而言是最常用的,其屮, normal级别的权限申请了就可以 120使用, dangerous级別的权限需要在安装的吋候用)确认才行。后两个级别主要针对系统预 装的应用,要求应用的数字证书必须与系统一致才 和国科论文在线 http:/www.papcr.cdu.cn Android系统还支持应川程序定义自己的权限,来限制其他应用对其组件或数据的访问 其方法是通过< permission>标签在 Manifest文件屮定义应用的 permission,然后在 Activity Service、 BroadcastReceivery以及 Content Provider四大组件的申明中添加权限要求。其他的 125应用希望利用到该应用的资源时也需要像申请系统权限一样在 Manifest文件屮申请。 应用在申请了相关 permission之后就可以操作相应的系统资源,因比默认没有任何权限 的应用程序是不能够对系统或者其他应用造成危害的。这也说明中请 permission所对应的系 统API调用或者数据访问是关键的应用行为。所以本文从此入手,将应用的关键行为通过 1 permission进行抽象,将 permission关联到应用的行为元素。 表1权限&行为对应关系 权限 行为 android. permission. INTERNET 访问网终 android. permission. INTERNET 发送短信 android. permission. READ SMS 读取短位 android. permission WRITE EXTERNAL STORAGE 写内存卡 android. permission. CLEAR APP CACHE 清楚缓存 android. permission ACCESS FINE LOCATION 获取位置信总 android. permission. CALL PRIVILEGED 拨打电话 android. permission CHANGE NETWORK STATE 改变刚终状态 注:大部分权限通过字面的意思就能明确它所对应的应用行为,这里没能将全部对应关系在义中 列出 通过对 Android系统中所有的 permission的抽象,确定了应用行为的集合。虽然这个集 合没能包括全部的应用行为,仅仪包含了应用与系统交互的行为,但是包含了可能对用户造 135成隐私信息或财产安全损害的所有关键行为。因为默认情况下不申请任何权限的应用是不会 对系统或用户造成任何威胁的,它没有权限去操作任何系统资源或用户信息,只有申请了相 应的权限有可能对系统或用户造成财产和隐私的损害,例如上表中发短信的行为、访问网络 的行为、获取地理位置等等,获取这些权限之后都是可能会给用户带来财产或信息损尖的行 为。这样对应川行为进行分析时面临的数据量要小很多,而且更加有针对性,比较淸晰简洁。 1402 Android动态权限检测机制 应用行为与 permission的关联使得对应用动态行为的检测间题转变成为 Android系统对 应川权限的动态检测。应用权限的动态检测机制是 Permission机制中最重要的组成部分,通 过静态的注册以及动态的检测实现了对系统资源的保护。 Android系统不允许应用程序动态注册权限,必须在安装应用之前申请所需要的权限。 145运行时,在应用调用系统受限的API或访问系统受限的数据时,会触发权限的检测,如果 应川没有注册相应的权限就会抛出 SecurityException异常,并终止应用的执行:如果应用注 册了相应的权限,才能通过系统的检测,并完成相应的操作。基于此,可以通过对 Android 系统权限检测模块的定义来实现对应用行为的监控 Android系统的 Permission框架如图1所示: 和国科论文在线 http:/www.papcr.cdu.cn 安装前应用中请 permission 应用安装系 查询应用请 Framework层 解析 permIssion 限列表 用户确认叹阼 系统受限资源访 系统调井/服务 安装应用成功 闩检鱼 统数拈 图1 Permission框架2 针对以上 Permission框架,需要重点关注的两个问题是:其一,在应用安装的过程中 系统是如何解析应用申请的权限并保存;其二,应用访问受限系统资源的时候是怎么触发系 统的权限检测模块以及如何判断应用是否拥有了对应的权限。 1552.1应用权限的授权 Android应用的安装方式主要有四种:系统应用安装、网络下载安装、 SDcard安装以及 ADB命令安装。四种安装方式虽然不一样,但是安装过程中对权限的的处理流程是一样的。 Android权限在安装过程中的流程如图2所刁 应用的AP文 用卖 钢压维AP包捉取 AndroidMa nifest xm文科 Package Manager Serv cE f 析 Android manifest xm文什 析 PermIs510并保存 过!p 疋g 根据ud和gid启动 用程丿 框层 t∈进程 置ud和ec 系统层 160 图2应用权限的实现流程 这里需要重点注意的是第3、4步的处理,在第三步的处理过程屮会根据权限的级别对 应不同的处理流程,尤其是对于 dangerous级別的权限,在解析之后会提示给用户,让用户 和国科论文在线 http:/www.papcr.cdu.cn 米授权安装。第四步会检测 AndroidManifest. xml中的权限是否对应存在于系统定义的 16 platform.xm文件屮(对于大部分权限而言,在 platform.xml文件中是没有定义的,主要是 针对系统部分设备), platform. xml存储」 group gid和权限字符串的对应关系,系统会根据 对应的关系将所安装的应该用添加到对应的 group中。 platform.xml屮存储的格式如下 permission name="android. permission. BLUETOOTH ADMIN group gl d="net bt admin"/> /permission> 70 <permission name"android. permission. BLUETOOTH"> <group gid-="net bt"/ </permission> <permission name="android. permission. INTERNET"> <group gid="in 175 </permission> 对于不在 platform.xml文件屮定义的权限,在处理的过程屮会被保存在 PackageParser, Package的 requestPermissions的数据结构中,最后连同应川注册的组件信息 起保存在/ data/system/packages.xml文件屮,以便于系统能够更快的启动并且启动应用的时候 不川再次的对应用进行解析 1802.2权限检测 应用程序获得相应权限之后,它就能通过调用系统提供的API米完成相应的功能,但 是在调用之前需要进行权限的检测,这样就将应用的权限范围限定在它所申请的权限范围 内。由于安装的时候对权限进行了不同的处理,所以对于权限的动态检测也存在两种机制。 1)对系统设备直接访问的权限检测 这种类型的权限检测机制主要是针对类似网络访问或者读写内存卜的权限等,在实现的 过程中直接利用了 Linux的用户权限管理机制。当应用程序申请了 android. permission. INTERNET权限,在应用安装的过程中通过查询 platform.xml文件为应用 程序分配相应的 group。在应用启动的时侯系统将设置进程的ud、gid以及gids,其屮gds 就是系统为应用分配的goup信息 190 应用程序运行时通过系统提供的接口访问对应的网络设备,在访问之前,系统会进行权 限的认证。这个认证过程与 Linux下对文件的访问权限控制致,通过检查应川程序所拥有 的gids与设备所对应的 group是否一致,来决定是否允许完成这次访间。这种控制机制是由 Linux内核米实现管理的。针对这类的权限,可以通过在应用层开发个针对特定行为的 应用程序来进行监控。这个应用程序主要是对网络访问以及读写内存卡的情况进行监控,其 195他的一些权限对应川行为的判断影响很小,这里暂时没有考虑 2)对系统设备或系统服务间接访问的权限检测 Android系统对亍大部分权限对应的功能都提供了对应的系统服务进程,应用通过进程 间的调用来获取相应的功能服务,这种跨进程访问是通过 Android的 Binder机制来实现。具 体应用对丁某个系统服务API的调用要经历三个步骤:第一,应用中请了相应权限之后调 200用系统封装标准库的AP;第二,这些标准库的AP会去调用API代理接口( RPCstub); 第三, RPCstub把请求通过 Android系统的 Binder机制通知系统服务进程,功能最后是由系 统服务进程实现的。而权限的检测发生在系统服务进程中,通过调用 Context类中的 check* Permission(O)方法来判断。 和国科论文在线 http:/www.papcr.cdu.cn 下边通过发短信权限的系统检测代码说明该种权限检测的方式。 205 public void sendData(String destAddr, String scAddr, int destPort byte data, PendingIntent sentIntent, PendingIntent deliveryIntent)i mPhone getContext(). enforce Calling Permission android. permission. SEND SMS", "Sending SMS message") if (log. isLoggable("SMS", Log VERBOSE)), log("sendData: destAddr="+ destAddr+scAddr-+ scAddr +l destport-m+ dest port t' data Hex Dump. toHex String( data)+ sentIntent-+ sentIntent +"deliveryIntent"+ deliveryIntent) 215 mDispatcher. sendData(destAddr, scAddr, destPort, data, sentlntent deliveryIntent 在代码中是通过调用 Context的 enforceCallingPermission方法来进行检测的, Context 类是一个拙象类,具体的权限检测的实现都是在其子类 Contextlmpl. java中实现的,其中主 220要由以下这些函数实现对应用的权限检测: Context. check CallingOrSelfPermission( String Context. check CallingOrSelfUriPermission( Uri, int) Context check Calling Permission(Permission) Context. check CallingUriPermission (Uri, int) Context. checkPermission( String, int, int) Context. check UriPermission(Uri, int, int, int) Context. check UriPermission( Uri, String, String,int, int, int) Context. enforce Calling Or SelfPermission(String, String) 230 Context. enforce Calling Or SelfUriPermission(Uri, int, String) Context. enforce Calling Permission( String, String Context. enforce Calling UriPermission(String, String) Context. enforcePermission(String, int, int, String) Context. enforceUriPermission(Uri, int, int, int, String) 235 Context. enforceUriPermission(Uri, String String, int, int, int, String) 具体函数的含义请参考官方文档,其屮需要说明的一点是,这些函数的最后都要调用 PackageManager Service中的 checkUidPermission方法米判断应用是否申明了对应的权限(应 用在初始安装时会将其所有的 Permission信息保存,检测的时候就是判断应用对应的 permission序列中是否包含当前检测的 permIssion),从而最终实现对应用权限的动态检测。 2403应用运行行为检测 通过前一小节深入饼究 Android权限的检测机制,为实现对应用的行为检测提供了方 法。山于 Android动态权限检测分为两种情况,所以通过两种方式米实现对应用行为的检测: 其一是在系统 Framework层对现有源码的修改和扩展;其二是利用 Android系统提供的AP 实现·个系统应用对特定几个权限对应的行为进行检测 245 基于 Android源码护展的应用行为检测架构图3如下所示: 7 和国科论文在线 http:/www.papcr.cdu.cn 待检溟应用程序 内亻卡网的 问监控应厍 Application层 PackageManagerse 的检测模块检测权 限是满足 应用行为 调用系统 监,模块 日志钔模块 受限资源 系统受限资源访向檢 查进入 Context f检测 系统调开服务 逻辑 系统效据 LinU的月户权限 检河」 图3系统架构图 该系统的架构基亍原 Android系统对权限动态检测的机制,添加了对应用行为的监控模 块以及内存卡和网终访问行为的监控应用。 250 1)对于系统 Framework层的修改和护展主要是集屮在 PackageManager Service类的 checkUidPermission方法中4S,在权限检测成功的分支上调川自定义的个方法,启动应 用行为监控模块,调用日志输出模块输岀应用行为,实现应用行为监控。 2)利用系统提供的API来实现对特定权限对应行为的监控,主要是包括两个权限, 分别是网路访问以及内存卡读写权限,通过实现一个 Android上的应用来实现对这两个权限 255的监控,也釆用相同的日志输岀模块进行处理,这样就可以将两种检测模式下检洲到的行为 信息整合到一块有利于以后的分析。其屮对于网络访问情况的监控利用系统提供的 Traffic Stats类米实现。Goge在 Android2.3之后对流量监控进行了很好的封装,基于系统 提供的接口可以对系统所有应用的网络访问情况进行很好的监控。 Trafficstats提供了多种接 口实现对网络流量的监控,包括发送和接收的流量以及Wii情况下以及 Mobile情况下的流 260量等等,清晰的监控到应用访问网络的行为。 对于内存卡的读写监控是基于系统提供的 FileObverser类实现。它是利用Linuκ系统的 Notify机制完成的,可以实现对内存卡中文件或者文件夹的打廾、创建、移动和删除等操作 实时的监控。同时该应用边还包含对日志输岀模玦的交互操作,来实现对日志模块的控制 3)日志输出模块负责把应用行为信息存储到本地,在完成了对应用测试将日忐上传到 265服务端。日志模块的主要功能包括:识別uid,通过为日志输出模块设定uid过滤不属丁该 uid应用的行为信息;发送日志到服务端,应用测试完成之后通知日志输出模块将日志信息 发送到服务端:日志内容主要包括:uid、 permissionName、tme三个字段,其中uid用于确 定应用, permission name是要检测权限的字符串表示,time用米记录行为发生的时间,然后 通过 Permission与应用行为的对照表完成对行为的解释 通过在框架层和应用层全面的对应用动态行为的检测,并且实现了应用行为信息的合并 以及过滤,保证了应用行为信息的完整性,为后来对应用行为的分析提供了良好的保证。 和国科论文在线 http:/www.papcr.cdu.cn 4结束语 本文从 Android系统的权限管理机制出发,深λ硏究系统在运行时对权限的动态检测, 将应用行为的检测转变为权限的动态检测,同时将应用行为与 permission相关联,完成了对 275应用行为的动态检测。从理论上能够很好地完成预定的目标:实时监控应用的行为。下一步 将完善应用运行的行为集合,将应用自定义的 permission考虑进来,尽可能全面的实现对应 用行为的监控。 「参考文献( References) 1]张中文,雷灵光,王跃武. Android permission机制的实现与安全分析J.信息网络安全,2012, 2803-6 [2]鲍叮进,彭钊.一利扩展的 Android应用权限管理椟型[J计算机T程,2012,38(18):57-60 [3]邓凡平.深入理解 Android卷1[]北京:机械工程出版社,2011 14]萸景全,陈铁民,孔德智,李佇. Android权限模型的研究和改进[J!电了产品可靠性与环境试验,2013, 31(3):37-40 285[5]戴威,郑滔.基于^ droid权限机御的动态隐私保护模型[计算杌应用硏究,2012,29(9):3479-3482 9

...展开详情
试读 9P 论文研究-基于权限管理的Android应用行为检测 .pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    抢沙发
    一个资源只可评论一次,评论内容不能少于5个字
    img

    关注 私信 TA的资源

    上传资源赚积分,得勋章
    最新推荐
    论文研究-基于权限管理的Android应用行为检测 .pdf 6积分/C币 立即下载
    1/9
    论文研究-基于权限管理的Android应用行为检测 .pdf第1页
    论文研究-基于权限管理的Android应用行为检测 .pdf第2页
    论文研究-基于权限管理的Android应用行为检测 .pdf第3页

    试读已结束,剩余6页未读...

    6积分/C币 立即下载 >