文档介绍:RESEARCH OF VULNERABILITY ATTACK DETECTION ON BINARY CODE
A Doctor Dissertation Submitted to
University of Electronic Science and Technology of China
Major: Computer Software and Theory Author: Liu Zhi
Advisor: Professor Wu Yue
School : School puter Science and Engineering
独创性声明
本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果, 也不包含为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。
签名: 日期: 年 月 日
关于论文使用授权的说明
本学位论文作者完全了解电子科技大学有关保留、使用学位论文的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。
(保密的学位论文在解密后应遵守此规定)
签名: 导师签名:
日期: 年 月 日
摘要
摘 要
网络攻击自从上世纪八十年代 Morris 蠕虫出现以来,一直给互联网和用户带来严重威胁。造成各种攻击的根源是软件漏洞。虽然工业界和学术界提出各种技术保护软件及操作系统安全,但攻击数量仍有增无减;而漏洞攻击技术也不断发展,从缓冲区溢出到最近的 Return-Oriented-Programming(ROP)攻击。漏洞攻击检测是信息安全领域的研究热点,特别是如何在二进制代码级检测攻击更是业界关注的焦点,但 x86 指令的复杂性和 WYSINWYX(What You See Is Not What You Execute)给检测带来诸多挑战。
在二进制代码级检测攻击不仅可用于攻击防御,而且能为漏洞分析和 zero- day 漏洞挖掘提供帮助,同时有助于设计更有效的编译器和操作系统级防御机制。然而当前漏洞攻击检测技术存在若干问题:首先,相当部分的防御检测手段都需要源码,但商业软件不提供源码;其次,大部分防御技术都是纯粹的静态或动态分析,牺牲了准确性或效率,没有将两者结合起来,特别是对于最新的 ROP 攻击, 目前还未找到一种合适的检测方法。总的来说,当前漏洞攻击的发展给攻击检测提出了新的要求,而以 Stack canary、NX、特征码匹配为代表的经典防御技术已不能满足对于目前攻击的检测需求。
本文对动态污点分析、控制流安全以及复杂 shellcode 三个方面进行了深入细致的研究,取得了四方面成果:
,能够准确检测一种重要类型的攻击
--内存溢出攻击,并提高了系统效率。首先,设计和实现了一种高效 shadow memory,能够在较低时间复杂度和空间复杂度存储查询 shadow bit。提出了 x86 指令层次化结构分析,有效克服了 x86 指令的复杂性,通过它制定准确污点传播策略。传统污点分析只在指令级传播污点,缺乏过程级传播,为此提出了两种技术加强过程级污点传播的准确性与效率,分别是函数局部变量残留污点清除与函数摘要。基于动态插桩工具实现了原型系统 MANGO,并对真实攻击进行了测试, 实验结果表明 MANGO 能有效检测内存溢出攻击,并且系统效率得到提升。
ROP 攻击检测方法。当前检测技术依赖 ROP 某些特征检测攻击,但无法准确区分正常指令执行与 ROP 攻击,因此误报率较高。本文通过分析实际 ROP 代码,确定了 ROP 的表现特征与功能特征,并依赖它们作为检测
I
摘要
依据。同时,纯粹的动态分析对程序性能影响较大,并且无法在 gadget 执行前阻
止攻击,本文提出了黑盒模拟 gadget 思想加强检测效率与效果。原型系统通过动态插桩工具实现,通过自动化工具对真实 shellcode 生成 ROP 攻击样本,并对其进行测试,实验结果表明我们提出的方法在检测准确性和效率都优于当前 ROP 攻击检测方法。
FPGuard,其思想是判断间接跳转指令的目标地址是否位于合法函数范围。FPGuard 与 CFI 的最大区别是前者的检查代码位于程序外部,能有效分析间接跳转指令。除了传统注入攻击,攻击者