论文部分内容阅读
指令集随机化技术是一种通过随机变换程序指令编码来抵御代码注入攻击的新型防御技术,改变了传统安全防御易攻难守的被动局面,实现了对已知和未知代码注入型漏洞攻击的主动可控防御。为了摆脱现有指令集随机化技术存在的编码难、安全性差和性能损耗大等问题,本文对低开销、高安全、实用性强的新型指令随机化技术开展研究,提出一种基于编译置换的指令随机化技术。 本文首先研究注入代码(ShellCode)的构造原理,提取出ShellCode执行的三种模式,选取ShellCode必要指令作为随机化对象,在不降低防御效果的同时减少了随机化指令的数量;设计随机化指令映射规则生成器,在编译过程中实现关键指令的随机置换,提高了指令随机化编码的精确度;最后基于动态二进制分析平台实现了一个运行环境,支撑随机化程序的动态解码与执行,可以实现对攻击的感知与动态决策,为该环境添加内存保护策略,防御针对动态二进制分析平台的攻击。 本文设计并实现了一套基于编译置换的指令随机化原型系统CIRE(Compiled Instruction Randomization Emulation),其关键技术包括:给出一种基于ShellCode执行模式的随机化指令选择方法,设计指令随机化规则生成算法;设计指令随机化分析框架,完成编译阶段指令的置换工作;研究函数单元指令定位技术,通过内嵌反汇编器得到指令在函数单元内的偏移;研究编译阶段指令随机置换技术,在编译过程中实现部分指令的随机置换;研究并实现了基于DynamoRIO的随机化程序动态执行技术,对随机化指令进行还原使程序正常执行;实现了动态二进制分析平台的内存保护技术,阻止攻击者利用动态二进制分析平台漏洞对程序进行攻击;实现了攻击感知技术,可以智能感知恶意代码的攻击,并对被随机化的ShellCode指令进行流向分析。测试时利用Metasploit攻击CIRE保护的软件,同时计算ShellCode指令随机化率和时间开销,结果表明,CIRE完全防御了Metasploit中的200个ShellCode的攻击,且平均性能损耗<15%。 本文提出一种基于编译置换的新型指令随机化技术,在功能延展性、运行时间开销和系统安全性三个方面与现有指令集随机化技术对比,所提技术有更好的扩展性和安全性,且可以在较低时间开销下防御代码注入型攻击。