摘要 | 第12-14页 |
ABSTRACT | 第14-15页 |
1 绪论 | 第16-30页 |
1.1 课题背景与研究意义 | 第16-18页 |
1.1.1 国内外信息安全形势严峻 | 第16页 |
1.1.2 信息系统安全问题突出 | 第16-17页 |
1.1.3 代码重用技术是内存漏洞利用的关键技术 | 第17-18页 |
1.2 代码重用技术的研究现状 | 第18-25页 |
1.2.1 代码重用进展 | 第19-21页 |
1.2.2 代码重用攻击的防护与检测的发展趋势 | 第21-25页 |
1.2.3 本文研究的必要性 | 第25页 |
1.3 本文主要工作与贡献 | 第25-28页 |
1.3.1 本文主要工作 | 第25-27页 |
1.3.2 本文主要贡献 | 第27-28页 |
1.4 论文结构 | 第28-30页 |
2 代码重用基础 | 第30-40页 |
2.1 代码重用的基本思想 | 第30-32页 |
2.1.1 基本思想 | 第30页 |
2.1.2 演变历程 | 第30-32页 |
2.1.3 Gadget特征 | 第32页 |
2.2 代码重用的图灵完备性 | 第32-35页 |
2.2.1 内存读/写 | 第32-33页 |
2.2.2 数据处理 | 第33页 |
2.2.3 控制流转移 | 第33-34页 |
2.2.4 函数调用、系统调用 | 第34页 |
2.2.5 Stack Pivot | 第34-35页 |
2.3 代码重用自动化 | 第35-38页 |
2.3.1 Gadget搜索 | 第35-36页 |
2.3.2 Gadget-chain自动化生成 | 第36-38页 |
2.4 本章小结 | 第38-40页 |
3 基于栈异常的代码重用攻击检测 | 第40-56页 |
3.1 引言 | 第40-41页 |
3.2 代码重用攻击与线程栈 | 第41-43页 |
3.3 代码重用攻击场景下的栈异常定义 | 第43-45页 |
3.3.1 EBP异常 | 第43-44页 |
3.3.2 ret异常 | 第44页 |
3.3.3 数栈帧长度异常 | 第44-45页 |
3.4 检测工具S-Tracker的设计与实现 | 第45-49页 |
3.4.1 基本思想 | 第45页 |
3.4.2 敏感行为监控 | 第45-46页 |
3.4.3 栈帧异常检测算法 | 第46-48页 |
3.4.4 漏洞模糊定位 | 第48-49页 |
3.5 实验评估 | 第49-53页 |
3.5.1 系统性能评估与分析 | 第49页 |
3.5.2 针对代码重用攻击的检测效果 | 第49-52页 |
3.5.3 与EMET的比较 | 第52-53页 |
3.6 讨论与小结 | 第53-56页 |
4 基于ARM指令特性的栈帧布局随机化方法 | 第56-76页 |
4.1 引言 | 第56-58页 |
4.2 ARM指令基础 | 第58页 |
4.3 威胁模型 | 第58-59页 |
4.4 基于ARM指令重写的栈布局随机化方法 | 第59-62页 |
4.4.1 随机化方法的设计 | 第59-61页 |
4.4.2 应用场景 | 第61-62页 |
4.5 系统实现 | 第62-69页 |
4.5.1 静态分析 | 第62-66页 |
4.5.2 基于随机化的指令重写 | 第66-69页 |
4.6 实验结果与分析 | 第69-74页 |
4.6.1 随机化能力 | 第69-71页 |
4.6.2 评估防御和缓解漏洞攻击的能力 | 第71-73页 |
4.6.3 局限性 | 第73-74页 |
4.7 小结 | 第74-76页 |
5 Android ART下的代码重用研究 | 第76-92页 |
5.1 引言 | 第76页 |
5.2 Android ART基础 | 第76-82页 |
5.2.1 AOT编译过程 | 第76-77页 |
5.2.2 oat文件格式 | 第77-79页 |
5.2.3 分析AOT生成的代码 | 第79-81页 |
5.2.4 Android ART下的应用程序地址空间布局 | 第81-82页 |
5.3 Android ART下的代码重用攻击威胁的分析 | 第82-83页 |
5.4 基于指令随机化的Android代码重用攻击缓解方法 | 第83-91页 |
5.4.1 基本思想 | 第83-85页 |
5.4.2 设计与实现 | 第85-87页 |
5.4.3 实验评估 | 第87-91页 |
5.5 讨论与小结 | 第91-92页 |
6 面向不可信共享库的Android应用隔离方法研究 | 第92-122页 |
6.1 引言 | 第92-95页 |
6.2 Android系统基础 | 第95-97页 |
6.2.1 Android安全机制介绍 | 第95-96页 |
6.2.2 运行时环境与JNI | 第96-97页 |
6.3 构建面向不可信共享库的Android代码隔离环境 | 第97-101页 |
6.3.1 基本思路 | 第97-98页 |
6.3.2 Android应用程序权限使用分析 | 第98-101页 |
6.4 系统设计与实现 | 第101-114页 |
6.4.1 系统总体 | 第101页 |
6.4.2 应用程序隔离 | 第101-106页 |
6.4.3 隔离应用程序间的运行时交互模型 | 第106-107页 |
6.4.4 不可信共享库的远程加载 | 第107-109页 |
6.4.5 Native方法调用 | 第109-113页 |
6.4.6 JNI函数调用及访问控制 | 第113-114页 |
6.5 实验结果 | 第114-119页 |
6.5.1 功能性验证 | 第115-116页 |
6.5.2 典型攻击的防护 | 第116-118页 |
6.5.3 性能分析 | 第118-119页 |
6.6 讨论与小结 | 第119-122页 |
7 结束语 | 第122-126页 |
7.1 本文工作总结 | 第122-124页 |
7.2 下一步工作展望 | 第124-126页 |
参考文献 | 第126-136页 |
攻博期间发表的科研成果目录 | 第136-138页 |
致谢 | 第138页 |