论文部分内容阅读
随着计算机网络的发展和普及,漏洞攻击由于其普遍存在、影响广泛以及后果严重等特性已成为网络安全的主要问题之一。目前,相关安全研究人员已提出很多针对漏洞攻击的防御策略和检测机制,但网络安全形势仍然严峻,研究如何有效地检测网络流中的漏洞攻击依然是信息安全领域的核心问题之一。漏洞攻击检测可以从程序外部和内部来进行。从程序内部检测是指当攻击发生时监控程序的运行状态,检查程序控制流等敏感数据是否被篡改,从而判断程序是否遭受漏洞攻击;而从程序外部检测是指依据攻击代码(shellcode)本身的特征检测漏洞攻击,可以及时地发现输入流中的攻击代码并阻止攻击。Shellcode在某种特定硬件平台上的特征相对固定,不会随着攻击方式的改变而轻易改变,因此对shellcode进行检测是一种比较有效的漏洞攻击防御手段。目前,shellcode检测方法大体上分为静态和动态两类方法,其中静态方法具有检测速度上的优势,而动态方法具有检测准确性上的优势。然而很多现有检测机制是纯粹的静态或者动态方法,牺牲了检测的效率或准确性,没有把两者的优势融合起来;此外,多态、变形和ROP等新兴技术的运用给shellcode的检测带来了新的挑战。单纯的静态或者动态方法已经无法满足对于目前漏洞攻击的检测需求。本文从攻击者的角度切入研究,首先介绍了漏洞攻击的基础知识,分析对比了常用攻击手段的技术特点;然后通过对攻击载体——shellcode的实现原理及其检测技术进行深入研究,提出三类新的启发式规则;最后将静态分析和动态执行方法相结合,提出一种shellcode混合检测方法。综上所述,本文立足于从程序外部检测漏洞攻击,对shellcode实现原理及其检测技术进行深入研究,取得了两方面的成果:1.提出了三类新的启发式规则。针对现有检测方法对分段式shellcode的检测支持不足的问题提出了LEH、FDR、TIAT等三类新的启发式规则,有效地增强了现有方法对于分段式shellcode的检测效果。2.提出一种shellcode混合检测方法。不同于单纯的静态或动态方法,新方法将两者相结合,既保留了动态方法的准确性优势,又综合了静态方法在检测效率上的优势,找到了一种平衡准确性和效率的有效途径。实验结果表明,提出的新启发式规则能有效地识别出对应的分段式shellcode,同时新方法拥有良好的检测效率。