【Android安全研究笔记】-Android 应用程序框架安全机制研究及改进

本文针对Android应用程序框架的安全机制进行了深入研究,并提出了多项改进方案。包括基于安全距离的权限机制扩展,协同攻击及其防御策略,以及基于上下文的运行时检测方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

论文:Android应用程序框架安全机制研究及改进

作者:汤伟宁波大学 硕士

出处:计算机应用技术 硕士学位论文 2011 导师 金光

下载地址:http://download.youkuaiyun.com/detail/zhangliangaws/6853061

这是知网的文章,需要一个CAJViewer之类的阅读器

我整理的文章框架图:http://download.youkuaiyun.com/detail/zhangliangaws/6853065


主要思想

(1)在深入研究 Android权限机制的基础上,指出了 Android 权限机制的不足,并给出了基于安全距离的权限机制(威胁分级)扩展方案,为描述应用程序的安全性提供了一个量化方案。

安全距离是两个安全权限构成的组合对于系统安全威胁程度的量化表示。

一般威胁级别和严重威胁级别区别在于权限组合的使用者。仅有恶意程序会使用的安全权限组合是严重威胁级别的组合,而恶意程序会使用,正常程序为了正常功能也有可能使用的组合是一般威胁级别的组合。更复杂的情况是多个权限请求之间的安全距离。为安全距离增加封闭性属性的方法来体现这种情况。一个封闭的安全距离意味着这对安全权限组合的安全威胁不会受到其他组合的影响。而在计算程序安全级别时,当相关的不封闭的安全距离同时出现时,需要用其安全距离的乘积来体现这种安全威胁的增加程度。

安全距离方案 Android Security Enforcement with A SecurityDistance(ASESD)的具体实现方式。


Kirin 方案作为最早的基于权限机制的安全方案对于本方案有着较大的指导作用。从某种意义上来说,可以把本方案看作是 Kirin 方案的改进。

(2)仔细研究了 Android组件式程序结构,发现了其中存在着无法限制不安全的数据传递的问题。根据这一缺陷,设计了一种新的针对 Android 平台的攻击方案——协同攻击方案。协同攻击是提权攻击的一种。


(3)使用协同攻击深入分析了 Android 组件式程序结构的缺陷,通过分析和研究,要想弥补 Android 信任模型的问题,就需要加强对于数据的保护改变现在这种数据能够随意使用,随意传递的状况。而加强数据保护需要两方面的工作:

<a>加强对数据的控制。首先要做的就是对数据访问操作的控制。使用代理模式加强对于数据的控制。使用代理模式后,系统只提供隐私数据的代理类访问接口。代理类访问接口返回的对象也是数据代理对象,而不是原始数据本身。应用程序得不到原始的隐私数据,也就不能够对数据进行随意处理,而所有对数据的处理都是由系统代理完成的。但是,代理模式不能解决代理数据对象在应用程序之间随意传递的问题,非可信组件变相提升权限的问题也还是没有得到控制。


<b>加强对跨程序边界数据传递的控制。对跨程序边界传递数据进行过滤(而不是加密),识别出其中的隐私数据并根据数据量的大小对数据传递的合法性及可能造成的危害进行判断,从而阻止恶意的数据传递的方法来控制跨程序边界的数据传递。使用基于Bloom Filter的数据保护方案来防御协同攻击。Bloom Filter 是由 B. H. Bloom 在 1970 年提出的一种概率型过滤结构,主用作用是检索一个元素是否在集合中。检索的时间复杂度与链表长度 N 成正比,对于树,检索的时间复杂度也和 logN成正比。要想得到常数时间复杂度的检索,就需要使用哈希表(Hashtable)。哈希表面临的问题就是有可能产生冲突,常见的方法是使用良好的哈希函数在很大的地址范围内做映射, 但是这样空间效率非常低,只适合用来做验证,而不适合做测试。为此使用多个地址范围较小的哈希函数,使用它们对每一个元素进行测试,如果测试的结果有一个哈希函数说元素不在集合中,那就可以肯定元素不在集合中。k 是哈希函数的个数,m 是 k 个哈希函数使用的位数组的总长度。所以 m/k 就是单个哈希函数使用的位数组的长度。


通过设置一定的阈值,本方案把程序分为两类,传递的隐私数据超过阈值的程序就是隐含危险的程序,而低于阈值的程序可以认为是安全的。设置合适的 m 值和 k 值,可以把误命中率控制在较小的范围内,这样误命中的隐私数据只可能落在低于阈值的区间内,就不会对方案的可用性产生影响。攻击者可以调整攻击策略,每次启动客户端程序 A

, 只传递总数据中的一小部分 , 通过多次传递少量数据的办法避开数据保护! 对同一数据的不断访问就会被重复计算 , 从而导致超过阈值范围 , 出现错误的判断方案的检查。

BloomFilter 只能够对元素在集合中的存在性做判断,而不能够判断元素出现覆盖率,即集合的所有元素中有多少比例的元素出现过。在 Bloom Filter 之后再使用一个 Hash 计数器进行覆盖率的测试,实现对低数据量多次传递方式攻击的防御。



首先,待判断的元素通过Bloom Filter 的检查。如果检查结果元素不在集合中,则流程结束,对下一个元素进行判断。如果检查的结果元素在集合中,则根据程序 id 找到对应的 Hash 位数组。如果元素在位数组中映射的位置值为 0,则表示这个元素之前没有出现过,把相应的位置置为1 并给计数器加一。如果元素所在的位置值为 1,则表示这个元素之前已经出现过就不需要增加计数器的值,流程结束。

(4)在现存的 Android 安全机制中,大多数都是安装时机制。一旦恶意程序躲过安装时检查,在恶意程序运行时 Android 安全机制不能及时做出反应。提出了基于上下文的运行时检测方案入侵检测。虽然 Android 的安全机制可以保证所有对于隐私数据的访问都是经过授权的,但是却不能保证程序没有滥用授权。基于程序的数据保护策略是最先提出的 Android 安全策略。这类策略的核心思想是通过减少恶意程序来保证数据的安全。

在 Kirin 之后,出现了许多 Android 安全机制的改进方案。虽然这些方案都有各自的特点,但是它们共同的目标都是通过各种途径找出恶意程序的特征从而可以对其进行防御。但是这类方案的缺点也十分的明显: 基于恶意程序识别的机制本身没有可靠的判断依据;缺乏运行时的数据保护机制。
Porscha方案是新型数据保护方案的代表。与之前基于程序的数据保护策略不同,以 Porscha 为首的这类方案并不以应用程序作为方案的保护对象,而是直接在数据访问接口层次上部署安全策略来保证隐私数据的安全。Porscha 方案把 DRM 技术引入 Android 系统安全机制,它是一种通过给数据加密来保护数据安全的方法(造成有效性降低)。
此外,基于数据访问接口的方案容易遭受中间人攻击。把数据访问发生时整个系统的状态看作是数据安全机制的上下文。

工作:1)定义上下文,2)根据不同的上下文制定安全策略。静态上下文是指与运行无关的应用程序状态,这些状态在运行时是不变的。在本文中主要考察两种静态上下文,程序分类信息(相同分类的程序认为是功能接近的,因而程序也上下文应该是接近的)和程序权限信息(程序层次上的目的是为控制数据访问的策略提供上下文)。静态上下文由于缺少运行时的分析,它所能表现的也就仅仅是应用程序的功能轮廓。本文把动态上下文也分为两部分:程序内部的运行状态(约束程序本身行为的权限)和与其他程序交互的状态(约束程序与其他组件交互行为的权限)。针对第一类的运行时状态,因为只涉及程序内部所能得到的信息比较有限。主要有相关 API 调用的时间,调用的次数等。而针对第二类的运行时状态,能获得的信息就丰富的多。

想要判断一个程序是否是恶意程序,就要知道恶意程序的行为特征。首先,以Geinimi为例除了利用系统资源构建僵尸网络,攻击者更简单的方法是直接利用系统资源获得利益。其次Android 恶意程序经常以木马程序的形式出现。这种形式的恶意程序的特点是同时包含两类完全不同的程序行为,一类是被感染程序本身的程序行为,另一类是木马的行为。最后,Android 恶意程序在收集系统数据时具有无目的性和无差别性。根据前文对威胁级别组的分类,一个仅包含一般威胁级别组合的程序也有可能是恶意程序。所以,需要对不同程序的动态上下文根据程序的分类进行调整。
贝叶斯推断用来估计统计量的某种性质。

P(A|B)=P(A)*P(B|A)/P(B)

P(B|A)/P(B)称为"可能性函数",这是一个调整因子,使得预估概率更接近真实概率。也就有后验概率  正比于 先验概率*可能性函数。如果"可能性函数"P(B|A)/P(B)>1,意味着"先验概率"被增强,事件A 的发生的可能性变大;如果"可能性函数"=1,意味着 B 事件无助于判断事件 A的可能性;如果"可能性函数"<1,意味着"先验概率"被削弱,事件 A 的可能性变小。


基于贝叶斯推断的上下文入侵检测方案CIDBI(Context-based Intrusion Detection with Bayesian Inference)
推断处理模块是整个框架的核心部分,为每一种上下文状态定义一个它在正常软件中出现的概率和在恶意软件中出现的概率。根据先验概率和从上下文提取模块实时状态计算贝叶斯概率, 使用多组的上下文状态计算联合概率能够提高准确性,需要一个门槛值,只有当计算出的概率大于门槛值时(暂定0.9),这个程序才被认定为恶意程序。

一般应用程序使用联合概率公式计算得到的可能为恶意程序的概率都不超过 0.7。而我们实现准备好的恶意程序计算的结果超过了 0.9。

----------------------------------------------------------------

备注:

1.相关性的封闭属性 //一个封闭的安全距离意味着这对安全权限组合的安全威胁不会受到其他组合的影响,而一个
不封闭的安全距离则代表了这对组合的安全威胁会因为相关组合的出现而增加。

2.第二次命中率的问题 //关于误命中率,可能偶尔会将普通数据判断为隐私数据,而正常的程序间数据通信可能也会含有少量隐私数据。所以判断的关键在于传递的数据量(因而一定的误命中是可以容忍的),可以采取设定阈值。但是这样又可能会被攻击者利用,转而采取多次传递少量数据的办法避开数据保护方案的检查。解决方法是:把同一个程序 id 的所有数据传递累积起来,增加一个计数器覆盖率测试。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值