论文部分内容阅读
缓冲区溢出是一种危害巨大,极为普遍的的漏洞攻击方法,攻击者利用缓冲区溢出可以远程植入木马,执行非授权指令,获取机密信息等操作,由此引发了大量的安全事件。因此,防御缓冲区溢出漏洞已刻不容缓。研究缓冲区溢出漏洞防御方法与技术,对于主机安全具有重要意义。针对目前缓冲区漏洞防御方法的不足,本文提出基于缓冲区溢出攻击代码检测和随机化内存布局的协同防御方法。首先,研究缓冲区溢出漏洞的成因、机理,由此设计了防御缓冲区溢出漏洞的方法与方式,构建了缓冲区防御模型。缓冲区溢出漏洞攻击时,通过网络传播而使大量相同的主机遭受攻击是危害严重的根源,而攻击代码成功运行是成功的关键。因此,防御缓冲区溢出漏洞的关键在于防止攻击代码成功运行。第二,攻击代码检测可通过函数返回地址法和代码特征法检测。返回地址的方法,只能检测栈缓冲区溢出攻击。本文在传统特征匹配的基础上,分析了不定长度数据分片技术,以及Bloom Filter的特征数据提取算法,提出了基于位置信息的Bloom Filter算法改进。攻击代码检测是不可判定的,检测不可能完全消除缓冲区溢出攻击。第三,多样化的计算机运行环境是防御缓冲区溢出攻击的有效方式。实现多样化之后,相同的软件,在每一次运行时或者在不同的计算机上运行时,呈现出不同的运行环境特性。因而,攻击代码即使在某一台计算机上成功,也不能在其它计算机上成功。从而可有效地防止缓冲区溢出攻击。本文从Windows内核角度出发,研究了随机化内存分布多样化的进程创建、内核内存管理等关键技术。第四,通过Windows操作系统的HOOK技术,挂钩系统调用,截获程序数据,在应用层实现攻击代码检测;在内核层,挂钩系统内核函数调用,修改内存分配算法,采用平衡二叉树的内存管理算法,重新管理内存,实现了Windows平台下的内存分布多样化。最后,本文利用漏洞测试工具对缓冲区溢出漏洞防御系统进行了各项测试。实验结果表明,应用层未能成功检测的缓冲区溢出攻击行为,在内核层被多样化机制自动防御。本文实现的攻击代码检测和随机化内存分布的漏洞防御系统能够有效抵御已知和0day缓冲区溢出漏洞攻击。