论文部分内容阅读
移动互联网与人们的日常生活越来越紧密,移动智能终端已演变成为不可或缺的一部分。其中,Android智能终端的市场占比达70%以上,深受用户喜爱。然而Android操作系统存在各种漏洞,其中Android内核层的漏洞超过40%,利用这些漏洞攻击的内核级恶意软件越来越多。为应对日益增多的内核级攻击,通过对内核进行度量的方式已成为Android内核防护技术的研究热点。本课题研究的Android动态度量技术可以在Android系统运行期间对影响内核安全的因素进行验证,度量判断是否存在攻击行为。传统的度量存在度量面单一、度量性能低等问题。针对这些问题,本文对Android操作系统内核动态度量技术进行了深入研究,主要研究内容和创新点如下:1.提出了一种基于ARM硬件虚拟化的Android内核动态度量架构(A Dynamic Measurement of Android in Hypervisor,HDMDroid)。架构将Android内核置于管理模式下,度量层置于虚拟化模式下,与被度量的Android内核分隔开。设计了能够体现Android内核运行时安全的三种度量对象:内核重要数据结构、内核系统调用期间的页面级控制流和Binder通信事务,并在度量层设计了三个度量单元分别进行度量。建立基于硬件的信任链启动保护和基于内存隔离的运行时保护来保证度量层自身安全,有效地减少了度量层的攻击面。2.针对现阶段的度量对象的选择大都从静态角度出发或动态度量面单一的问题,提出了一种基于内核数据不变量的Android内核度量方法(A Measurement of Android Kernel Based on Kernel Data Invariants in Hypervisor,HIMDroid)。通过分析在Android系统运行时影响内核完整性的数据结构,进一步得到这些数据结构动态变化时需满足的不变量约束,将这些约束分为固定取值约束、子集约束、边界约束、固定长度约束四种类型。设计了语义重构算法根据内核结构知识和底层的二进制信息在度量层进行度量对象的重构。根据度量对象须满足的约束类型对其进行分析来判断Android内核是否受到攻击。实验结果表明:HIMDroid一定程度上解决了现有对Android内核度量所选取的数据结构不够全面的问题。3.针对现有的控制流完整性(Control Flow Integrity,CFI)度量方法大都在指令与分支级给系统带来严重开销的问题,提出了面向Android系统调用的页面级CFI度量方法(Page-level Control-flow Integrity Checking of the Android Kernel System Call,P-CFIDroid)。设计了hook目标系统调用与拦截技术,配合二级地址转换在页面级别透明地追踪Android系统调用期间的执行情况,筛选系统调用控制流序列。为了表示页面级控制流基准信息,设计了页面控制流程图(Page-Control-Flow Graph,P-CFG),构建基于P-CFG的控制流基准库并用其对内核进行度量。实验结果表明:P-CFIDroid一定程度上解决了ARM架构中实施控制流完整性度量的性能问题。4.针对现有的Binder机制安全防护大都从应用角度出发,不能度量框架层Binder恶意程序与攻击Binder事务的内核层Rootkit的问题,提出了一种基于hypervsior对Android系统中Binder的度量方法(A Measurement of Android Binder in Hypervisor,HMBinder)。通过分析框架层Binder恶意软件,得到影响系统安全的三类恶意IPC事务;设计了框架层Binder恶意软件度量算法,算法根据恶意IPC事务对解组的Parcel对象进行度量。针对对Binder事务攻击的内核级Rootkit,设计IPC事务表介入Binder事务的四个步骤对Rootkit实施度量。此外,对于已成功实施Binder攻击的情况,为了溯源攻击者,构建了IPC图实施入侵诊断增强攻击的可见性。实验结果表明:HMBinder能够度量框架层恶意程序与针对Binder攻击的内核层Rootkit,提高了Binder机制的安全性。