当前位置: 首页 > 专利查询>湖南大学专利>正文

一种基于动态二进制翻译框架的代码复用攻击检测系统技术方案

技术编号:7759005 阅读:214 留言:0更新日期:2012-09-14 00:49
本发明专利技术属于计算机安全领域,公开了一种基于动态二进制翻译框架的代码复用攻击检测系统。检测系统包括翻译器、探测器、Cache、跳台四个模块。翻译器以基本块为单位逐条解码程序的二进制数据;探测器处理解码后的指令,常规探测是基础,保证正常运行,攻击检测为核心,获取和检测指令的行为;Cache建立基本块的源和翻译地址之间的映射关系,并缓存翻译后生成的基本块目标代码;跳台管理程序的控制流,保证程序的翻译和执行有序进行,并为同类型指令提供检测和优化机制。本发明专利技术能处理非开源的程序,为程序的安全执行提供保障。

【技术实现步骤摘要】

本专利技术属于计算机安全领域,具体是一种基于动态二进制翻译框架的代码复用攻击检测系统
技术介绍
软件规模的不断扩展使得漏洞数量日益增多,互联网的普及使得基于软件漏洞的攻击呈现范围广、方式多、蔓延快等特点,对用户的安全造成严重威胁。早期针对缓冲区溢出漏洞的主要攻击方式是代码注入,攻击者本地或者远程向进程地址空间注入可执行的二进制代码,改变程序的控制流使进程执行这段代码,目前存在大量针对代码注入攻击的防御机制。代码复用攻击(Code Reuse Attack)是当前较为常见的攻击方式,是代码注入攻 击的演化,无需攻击者注入恶意代码,利用动态库或者程序中的合法函数和指令发动有效攻击。基于 R0P(Return OrientedProgramming)以及 JOp (Jump-Oriented Programming)技术的代码复用攻击,分别利用以RET和JMP指令结束的指令序列,可实现任意目的的攻击。目前,黑客们已成功在各种平台、设备、软件中实施代码复用攻击,代码复用攻击自动化构造技术的出现使得代码复用攻击已成为威胁最大的一种攻击方式。二进制翻译技术能够将一种平台的二进制可执行文件翻译为同平台或者其他平台中可执行的二进制代码,使可执行程序能突破平台的限制,增强了软件和处理器之间的适应性。动态二进制翻译指在程序的执行过程中对源程序进行实时翻译,实时监控整个翻译和执行过程,是追踪程序控制流常采用的一种技术。动态二进制探测(Instrumentatation)技术利用动态二进制翻译技术,在程序中加入额外代码收集程序行为信息或者改变程序行为。探测技术可运用在程序各阶段,作用在二进制代码的级别,不需要源代码的支持,覆盖所有被执行的客户代码并对代码进行分析,很容易地区分程序的数据和代码,主要应用于程序行为分析、程序漏洞的检测和防御,程序安全性保证等方面。现有防御机制或者检测系统存在这样那样的不足,如需源代码支持,性能开销大等缺点。本专利技术结合动态二进制翻译框架,设计了一种代码复用攻击的检测系统,解决了目如检测系统中存在的不足。
技术实现思路
本专利技术提出了一种基于动态二进制翻译框架的代码复用攻击检测系统,该系统能保证非恶意程序的正常执行,检测和终止恶意攻击的运行。它包括翻译器、探测器、Cache以及跳台四个模块。翻译器负责程序的翻译工作,以基本块为单位,截获程序的指令流逐条对程序的二进制指令解码翻译。采用同平台翻译技术和“翻译-执行”模式,每翻译完一个基本块,执行该基本块。探测器通过执行C代码或者添加汇编代码到目标代码中,提供指令的正常执行、安全性检测以及指令的优化,分为常规探测和攻击检测。常规探测为基础部分,保证程序正常运行;攻击检测为核心,主要处理程序中存在控制流转移的潜在危险指令。Cache 一方面分配内存空间缓存翻译过后的目标代码,降低重复翻译引入的开销;一方面建立并维护Cache中的映射表,映射表保存着基本块源地址和翻译地址之间的映射关系。跳台(Trampoline)实质上是由嵌入内存中的汇编指令序列构成,通过调用跳台首地址执行嵌入的汇编指令序列,主要用于实现函数调用、其他跳台调用、指令的优化等,保证程序的翻译和执行工作有序进行。与已有的漏洞检测技术或者攻击检测系统相比,本专利技术具有如下特点a)无需程序源代码支持。很多传统检测方法或系统需要程序提源代码,而目前操 作系统中的大部分程序不提供源代码,大大限制了检测机制的适用范围。本专利技术基于动态二进制翻译技术,截获程序的二进制指令并翻译为同平台的可执行目标代码,为非开源程序提供安全性检测。b)运行的高效性。程序通过检测系统翻译和检测后再运行,必将导致性能开销急剧增长,本专利技术提出Cache缓存翻译后的目标代码,设置局部Cache和跳转目标预测机制优化目标代码的执行性能,保证程序的运行效率。附图说明图I为本专利技术系统结构示意图;图2为本专利技术中翻译器组件工作流程图;图3为本专利技术中Cache机制的结构示意图;图4为本专利技术提出的核心组件攻击检测器的结构示意图;图5为本专利技术提出的影子栈内存布局;具体实施例方式下面结合附图以及实例对本专利技术的具体实施方式作进一步的详细说明。如图I所示,从体系结构的层次上看,本专利技术所应用的计算机系统主要由应用程序,检测系统,内核空间组成。应用程序交由检测系统翻译和检测后,由内核空间执行程序。检测系统包括翻译器、探测器、Cache、跳台四个模块。本专利技术检测系统的工作流程如下(I)应用程序被加载到本专利技术的检测系统,检测系统完全接管应用程序的控制权,完成系统初始化工作,如Cache内存空间分配,跳台的创建及初始化等。(2)翻译器截取程序的二进制指令流,以基本块为单位,采用“翻译-执行”模式,每翻译完一个基本块,执行该基本块。基本块指以控制流分支指令结束的指令序列。(3)探测器中的探测函数接受翻译器传递过来基本块相关信息,依据系统对指令的不同处理要求,添加模拟执行、安全检测、性能优化等机制到目标代码。(4)探测函数处理结束后控制权转交翻译器继续剩余指令的翻译。为保证程序的正常运转,一个基本块翻译快结束时,将创建一个基本块跳台,包含下个基本块的信息和可执行代码,用于调用其他跳台有序启动基本块的翻译和执行。(5)基本块翻译结束后,将基本块的源地址SRC和目标地址DST传递给Cache管理,并将控制流转移到目标代码执行,目标代码执行完毕继续翻译新的基本块。下面结合图2详细说明翻译器的执行流程。以处理某个基本块为例,翻译器将首先通过Cache查询该基本块是否已翻译,如果已翻译过,则直接跳转到目标代码中执行,否则逐条开始翻译基本块中的指令。指令流的翻译通过枚举翻译表实现,指令解码后通过预设的探测函数添加目标代码,如此反复直至该基本块的翻译结束。目前大多数处理器支持变长指令,为保证解码的正确性,本专利技术在翻译器初次匹配成功后,将继续读取二进制指令数据,看是否还存在匹配情况。本专利技术的二进制翻译为同平台的翻译,只处理存在控制流转移的指令,故本专利技术探测器中设计的探测函数分为两类,一类简单处理解码后的汇编指令,如复制指令、忽略指 令等操作;一类是为该指令添加大量的额外目标代码,用于模拟指令执行,获取指令的行为,指令安全检测以及性能优化等。Cache负责建立和维护基本块源地址SRC和翻译地址DST之间的映射关系,图3描述了 Cache的布局。基本块的翻译启动前,Cache接收到翻译器的查找请求,通过映射表查找函数匹配SRC,如果SRC存在,跳转到DST地址处执行目标代码;否则将Cache空闲块首地址DST返回翻译器,并在映射表中建立SRC和DST之间的映射关系。内存地址分布的特殊性使得映射表的建立和维护可通过Hash机制实现快速查找和插入。但Hash表的冲突或者碰撞现象是无法避免的,为解决Hash表的碰撞冲突,本专利技术Cache模块采用线性探查法,遇到碰撞时继续匹配下一个单元,如果映射表全部无法匹配到SRC,则SRC不在映射表中。为保证程序翻译和执行工作的有序进行,本专利技术在基本块翻译快结束时创建包含下个基本块所有信息和可执行代码的跳台,用于调用其他跳台实现新基本块的翻译和执行。由于程序首个基本块无法通过调用跳台执行目标代码,本专利技术采用的方法是,在翻译函数结束时修改函数的返回地址为本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:刘超孙建华陈浩
申请(专利权)人:湖南大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1