论文部分内容阅读
计算机产业的迅速发展对人类的工作、生活、学习产生了深远的影响,推动了社会的飞速发展。与此同时,依附于计算机之上的软件安全问题也变得日益突出和严重。ROP(Return Oriented Programming)是当前软件漏洞攻击的常用技术,其通过拼接程序中已有的短的指令片段来实现控制流的劫持,从而使程序沿着攻击者意图执行。针对ROP攻击,研究者提出各种各样的保护方法,CFI(Control Flow Integrity)是当前最有效的一种防护技术。它能够非常高效的应对ROP攻击,但是其存在运行时间开销大、实现复杂、易被绕过的缺点。针对这些缺点,本文提出了一种基于API(Application Programming Interface)调用行为特征的ROP检测机制,该机制通过对敏感API函数地调用过程进行合法性检测,从而避免传统的针对大量间接分支的检测,有效地降低运行时开销;通过对攻击者可用的Gadgets进行提取、检测,从而避免CFG构建,降低实现复杂度;通过对API调用特征信息和API调用上下文信息检测,保证程序的安全性。本文的主要研究工作包括:1)介绍了 ROP攻击技术和已有的针对ROP的防护技术。前者主要介绍ROP攻击的发展历程,并详细阐释其攻击原理;后者对当前防护技术的优缺点进行介绍,并引出本文的基于API调用行为特征的ROP检测机制。2)为了有效的应对ROP,本文提出了一种新型的ROP检测机制。该机制主要包含两个方面,分别是基于API调用行为特征的ROP检测和基于API调用上下文信息的ROP检测。前者利用API调用行为特征,通过监控判断API函数在调用之前是否存在调用Gadget实现参数加载的行为,从而判断程序是否受到ROP攻击;后者是对前者的补充,因为在某些特殊情况下攻击者可能不需要调用Gadget加载参数也可以成功的实现API函数的调用。3)本文设计并实现了一个简单的自动化ROP检测系统,并通过一系列的实验对软件的保护效果进行分析。最后的实验表明,本方法在增强ROP检测强度的同时可以有效地降低程序运行时的开销。