摘要 | 第4-6页 |
Abstract | 第6-8页 |
1 引言 | 第16-20页 |
1.1 选题背景 | 第16-18页 |
1.2 本文贡献 | 第18-19页 |
1.3 论文结构 | 第19-20页 |
2 背景知识与相关研究 | 第20-30页 |
2.1 背景知识 | 第20-24页 |
2.1.1 代码复用攻击原理 | 第20-22页 |
2.1.2 即时编译原理与滥用 | 第22-23页 |
2.1.3 图灵完备功能 | 第23-24页 |
2.2 相关工作 | 第24-30页 |
2.2.1 代码复用攻击 | 第24-25页 |
2.2.2 代码复用攻击之防御技术 | 第25-27页 |
2.2.3 即时编译机制滥用与防范 | 第27-28页 |
2.2.4 图灵完备Gadget与ROP构造工具 | 第28-29页 |
2.2.5 小结 | 第29-30页 |
3 ROP图灵完备功能的普遍可构造性 | 第30-54页 |
3.1 概述 | 第30-33页 |
3.2 If-gadget工作原理 | 第33-39页 |
3.2.1 传统的Shacham方法 | 第33-34页 |
3.2.2 条件判断机器指令执行上下文 | 第34-36页 |
3.2.3 If-gadget原理与定义 | 第36-39页 |
3.3 图灵基本功能的构造 | 第39-44页 |
3.3.1 图灵基本功能的构造 | 第39-40页 |
3.3.2 Gadget类型与定义 | 第40页 |
3.3.3 Gadget的查找 | 第40-41页 |
3.3.4 Payload的布局 | 第41-43页 |
3.3.5 Gadget的调度 | 第43-44页 |
3.4 实现 | 第44-46页 |
3.4.1 约束条件 | 第44-45页 |
3.4.2 技术细节 | 第45-46页 |
3.5 实验评估 | 第46-53页 |
3.5.1 实验用例与参数设置 | 第46页 |
3.5.2 If-gadget在日常软件中的存在性 | 第46-48页 |
3.5.3 If-gadget的存在性与平台的相关性 | 第48-49页 |
3.5.4 If-gadget的数量与代码量的关系 | 第49-50页 |
3.5.5 图灵基本功能的可构造性 | 第50-51页 |
3.5.6 实验结论 | 第51-53页 |
3.6 小结 | 第53-54页 |
4 藏在Javascript脚本背后的恶意代码 | 第54-74页 |
4.1 概述 | 第54-56页 |
4.2 威胁模型 | 第56-58页 |
4.2.1 防御技术 | 第56-57页 |
4.2.2 威胁模型 | 第57-58页 |
4.3 面向脚本代码块的Gadget注入 | 第58-62页 |
4.3.1 注入原理 | 第58页 |
4.3.2 获取动态代码块 | 第58-60页 |
4.3.3 在动态代码块中查找Gadget | 第60-61页 |
4.3.4 图灵完备的ROP代码构造方案 | 第61-62页 |
4.4 分析系统的实现 | 第62-66页 |
4.4.1 SpiderMoneky架构分析与插装 | 第62-63页 |
4.4.2 GoogleV8架构分析与插装 | 第63-64页 |
4.4.3 动态代码块的存储 | 第64-65页 |
4.4.4 Gadget的查找 | 第65-66页 |
4.5 实验评估 | 第66-71页 |
4.5.1 实验用例与参数设置 | 第66-67页 |
4.5.2 动态代码块统计信息 | 第67页 |
4.5.3 Gadget的统计信息 | 第67-70页 |
4.5.4 面向脚本代码块的Gadgets注入实例 | 第70-71页 |
4.6 讨论 | 第71-73页 |
4.6.1 获取更丰富的Gadget类型 | 第71-72页 |
4.6.2 脚本代码块的填充粒度 | 第72页 |
4.6.3 可能的防御方案 | 第72-73页 |
4.7 小结 | 第73-74页 |
5 硬件辅助的代码复用攻击检测 | 第74-90页 |
5.1 概述 | 第74-76页 |
5.2 CFIGuard设计 | 第76-82页 |
5.2.1 总体设计 | 第76-77页 |
5.2.2 硬件辅助的控制流监控 | 第77-79页 |
5.2.3 识别代码复用攻击 | 第79-80页 |
5.2.4 攻击检测触发 | 第80页 |
5.2.5 安全性分析 | 第80-82页 |
5.3 实现 | 第82-85页 |
5.3.1 LBR+PMU | 第82页 |
5.3.2 控制流图的生成 | 第82-83页 |
5.3.3 CFG数据结构 | 第83-84页 |
5.3.4 攻击检测 | 第84页 |
5.3.5 内核模块 | 第84-85页 |
5.3.6 启动CFIGuard系统 | 第85页 |
5.4 实验评估 | 第85-87页 |
5.4.1 有效性评估 | 第85-86页 |
5.4.2 性能评估 | 第86-87页 |
5.5 讨论 | 第87-89页 |
5.5.1 可能引入的内核脆弱性 | 第87页 |
5.5.2 局限性 | 第87-89页 |
5.6 小结 | 第89-90页 |
6 总结 | 第90-92页 |
6.1 本文工作总结 | 第90-91页 |
6.2 下一步工作展望 | 第91-92页 |
致谢 | 第92-94页 |
参考文献 | 第94-104页 |
简历与科研成果 | 第104-105页 |