一种防御缓冲区溢出攻击方法和装置的制作方法

文档序号:6460969阅读:101来源:国知局
专利名称:一种防御缓冲区溢出攻击方法和装置的制作方法
技术领域
本发明涉及网络安全领域,尤其涉及一种防御緩沖区溢出攻击方法和 装置。
背景技术
因特网访问的日益增长给恶意代码的远程攻击带来了可乘之机,网络 中的攻击行为也在成倍的增长。基于緩冲区溢出的攻击已经成为网络攻击 中最常见也是最具威胁的攻击方式之一。缓冲区溢出是指,计算机程序在 緩冲区输入的数据位数超过了緩冲区的边界而造成的溢出。緩沖区溢出攻
击包括多种类型,包括基于堆的溢出攻击,基于栈的溢出攻击等。由于 溢出的数据可能覆盖缓冲区相邻内存中的合法数据,破坏数据完整性,溢 出的数据也可能覆盖函数指针或堆栈中的函数返回地址,破坏程序的执行 流程,使得程序执行一些非安全代码,从而出现了緩冲区溢出漏洞。攻击 者利用溢出漏洞,利用程序在緩冲区输入超过其边界长度的代码,造成溢 出,使溢出的数据覆盖返回地址后,在返回地址处写上可以改变程序流程 的地址,即跳转地址,使该地址指向自己的恶意代码,从而达到攻击、破 坏系统的目的。
现有的相关防范緩冲区';益出攻击技术之一通过发现緩冲区溢出,结束 该緩冲区溢出线程来防范緩冲区溢出攻击。相关的技术方案包括调用挂钩
系统关4建API(Application Programming Interface,应用程序编程接口 )函凄t, 检查函数的返回地址,根据该返回地址是否在堆栈范围内以及返回地址的 属性是否可写,进一步来判断是否发生緩冲区溢出,当发现緩冲区溢出时, 将引起该緩冲区溢出的线程结束。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题 由于检查函数的返回地址前,存在返回地址或者页面属性被恶意修改的情况,该恶意修改可以有效的绕过上述方案仍然能达到恶意攻击的目 的,通过上述的相关技术很难有效防御缓冲区溢出攻击。

发明内容
本发明实施例提供一种防御緩冲区溢出攻击的方法和装置,以提高系 统的安全性。
根据本发明的一方面,提供一种防御緩冲区溢出攻击方法,包括 创建新进程或线程时,获取进程或线程环境块的基地址; 随机化进程或线程环境块基地址。
根据本发明的另一方面,提供一种防御緩冲区溢出装置,包括 获取单元,用于创建新进程或线程时,获取进程或线程环境块的基地
址;
随机单元,用于随机化进程或线程环境块基地址。 本发明实施例还提供一种环境块创建装置,包括 获取基地址单元,用于创建新进程或线程时,获取进程或线程环境块 的基地址;
随机化单元,用于随机化所述进程或线程环境块的基地址; 创建单元,用于基于随机化后的基地址创建环境块数据。 緩冲区溢出发生时,改变进程或线程流程的跳转地址在进程或线程环 境块中,或者恶意代码也在进程或线程环境块中。本发明实施例通过随机 化进程或线程基地址指针使进程或线程环境块数据发生改变,因此其中的 跳转地址也变为无效数据,进而线程或进程无法发生跳转,达到防止恶意 攻击的目的,进而提高系统的安全性。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对 实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地, 下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员 来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的防御缓冲区溢出攻击方法实施例一的流程示意
图2为本发明提供的防御缓冲区溢出攻击方法实施例二的流程示意
图3为本发明提供的防御緩冲区溢出攻击装置实施例一的结构示意
图4为本发明提供的环境块创建装置实施例一的结构示意图。
具体实施例方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进 行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例, 而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没 有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的 范围。
緩冲区溢出是指当计算机程序向缓冲区内填充的数据位数超过了緩 冲区本身的容量,溢出的数据覆盖在合法数据上。理想情况是,程序检查 数据长度并且不允许输入超过緩冲区长度的字符串。但是绝大多数程序都 会假设数据长度总是与所分配的存储空间相匹配,这就为緩冲区溢出攻击 带来可能性。
如图1所示,本发明实施例提供的一种防御缓冲区溢出攻击方法,包 括以下步骤
1、创建新进程或线程时,获取进程或线程环境块的基地址; 进程是程序在计算机上的一次执行活动。当运行一个程序,就启动了 一个进程。相对地,程序是静态的,进程是动态的。进程可以分为系统进 程和用户进程。凡是用于完成操作系统的各种功能的进程就是系统进程, 它们就是处于运行状态下的操作系统本身;用户进程就是由用户启动的进 程。进程是操作系统进行资源分配的单位。进程又被细化为线程,也就是 一个进程下有多个能独立运行的更小的单位。每个进程或线程都有一个与它相关的环境块,环境块是进程的地址空 间中分配的一个内存块,表现形式为数据结构,这个数据结构中存放着一
些有关进程的重要信息;如果是用户进程,其中可能包含有当前进程所有 与系统相连的用户模式的参数;
进程或线程环境块作为 一个内存块,就会有基地址表示该内存块的起 始地址;
2、随机化进程或线程环境块基地址。
所述随机化进程或线程环境块基地址具体是指基地址不是预先设定 的地址值,而是随机产生的地址值。
緩沖区溢出发生时,改变进程或线程流程的跳转地址在进程或线程环 境块中,或者恶意代码也在进程或线程环境块中。而攻击者设置跳转地址 或恶意代码时,是以原先设定的进程或线程基地址为基础。本发明实施例 通过随机化进程或线程基地址使进程或线程基地址发生改变,不再是预先 设定的基地址,进而使进程或线程环境块数椐发生改变,因此原先攻击者 设定的跳转地址也变为无效数据,进而线程或进程无法发生跳转,达到防 止恶意攻击的目的,进而提高系统的安全性。
如图2所示,下面以—进程环j克i丸(Process Environment Block, PEB )
为例,对本发明实施例进行详细描述。
201、 创建新进程时,获取PHB创建函数的地址空间;
所述PEB创建函数是指在内核模式创建PEB数据结构的函数,在 WINDOWS操作系统中PEB创建函数具体可以为MmCreatePeb函数;
202、 通过随机化函数生成随机值,并创建随机值指针指向所述随机
值;
本实施例中可以釆用以下技术来生成随机值,首先随机化函数利用系 统时间产生一个随机数种子,随后根据系统时间通过所述随积4t种子生成 一个随机数;将产生的所述随机数变换为符合PEB基地址规律的随机值,
peb基地址规律满足pr:B基地址的随机范围,包括空闲内存空间中系统
分配的PEB空间地址范围;
203、 在所述创建函数的地址空间中搜索PEB基地址指针;所述PEB基地址指针具体可为MmHighestUserAddress指针,指向PEB 基地址;
204、 将PEB基地址指针替换为随机值指针;
通过将PEB基地址指针替换为步骤202产生的随机值指针,从而保 证PEB基地址的随机性,使其不会在系统对PEB分配空间的过程中发生 基地址的重复;
205、 创建函数创建PEB。
系统再在新的随机化的PEB内存空间里创建PEB数据。 其中步骤202和203没有先后顺序的限定,两个步骤可以同时进行, 也可以先后进行。
緩冲区溢出发生时,改变进程流程的跳转地址在进程的PEB中,或 者恶意代码也在进程的PEB中。本发明实施例在创建PEB前通过替换PEB 基地址指针使PEB的基地址也随机化,使PEB的基地址发生了改变,进 而使PEB数据内存空间发生改变,因此在PEB数据中的固定跳转地址也 变为无效数据,进而进程无法发生跳转,达到防止恶意攻击的目的。
下面以RealPlayer Plus为例,对本发明实施例进行详细说明
RealPlayer Plus是一个其有高级功能的媒体播放器,可以用它播放、 保存和编辑媒体信息,但是RealPlayer Plus浏览器辅助对象ActiveX控件 有一个安全漏洞,在用户浏览带有ActiveX控件的网页的时候,就有可能 被攻击者利用到这个安全漏洞。
PEB创建函数中包含了与PHB的相关数据,也包含了 PEB基地址指 针;PEB的地址范围是0x71'T,DH)00-0x7ITDFI'下JP的4KB大小范围,PEB 基地址指针指向0x7FFDF0()0;
通过随机化函数生成随机值,并创建随机值指针指向所述随机值;随 机数为0x35DFF453;
用户打开RealPlayer Plus,创建进程时修改PEB基地址指针,使修改 后的PEB基地址指针指向随机值,PEB基地址指针指向0x35DFF453,那 么0x35DFF453后面的4KB大小内存空间为PEB的内存空间,系统再在 这个内存空间上创建PEB数据。在ActiveX漏洞被触发时,攻击者需要在溢出恶意代码中找到一个能 改变程序执行流程的跳转地址。本发明实施例中被黑客利用的跳转地址位 于RealPlayer Plus播放软件进程的PEB中。本发明实施例通过随机化PEB 基地址,PEB基地址为0x35DFF453, PEB的内存空间发生了改变,这样 在黑客预想的内存空间中就没有跳转地址,使其攻击失效。
如图3所示,本发明实施例还包括一种防御緩冲区溢出攻击装置,包 括获取单元301和随机单元302,其中
获取单元301用于创建新进程或线程时,获取进程或线程环境块的基 地址,获取的可以是进程或线程环境块的基地址指针;
随机值指针,用随机值指针替换获取单元301获取的基地址指针。
緩冲区溢出发生时,改变进程或线程流程的跳转地址在进程或线程环 境块中,或者恶意代码也在进程或线程环境块中。本发明实施例通过随机 化进程或线程基地址指针使进程或线程环境块数据发生改变,因此其中的 跳转地址也变为无效数据,进而线程或进程无法发生跳转,达到防止恶意 攻击的目的。
如图4所示,本发明实施例还包括一种环境块创建装置,该装置可以 创建PEB或TEB,下面以创建PEB为例进行描述,环境块创建装置具体 包括获取基地址单元401 、随机化单元402和创建单元403,其中
获取基地址单元401用于创建新进程时,获取进程环境块的基地址, 获取的可以是PEB的基地址指针;
随机化单元402用于随机化PEB的基地址,具体用于产生随机值指 针,并用随机值指针替换获取基地址单元401获取的基地址指针;
创建单元403用于基于新的基地址创建PH3数据,如果是用户进程, 其中可能包含有当前进程所有与系统相连的用户模式的参数。
緩冲区溢出发生时,改变进程流程的跳转地址在进程的PEB中,或 者恶意代码也在进程的PEB中。本发明实施例在创建PEB前通过替换PEB 基地址指针使PEB的基地址也随机化,使PEB数据内存空间发生改变, 因此在PEB数据中的固定跳转地址也变为无效数据,进而进程无法发生跳转,达到防止恶意攻击的目的。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分 流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存 储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法 的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆
体(Read-Only Memory, ROM)或随才几存4诸记忆体(Random Access Memory, RAM)等。
综上所述,利用本发明的緩冲区溢出防治方法,不但可以高效、准确 的拦截恶意程序的緩冲区溢出攻击,而且避免了现有技术中安全防护软件 对新漏洞特征码获取的滞后性,也比同类产品中让恶意代码先执行再检测 的方法安全、高效4艮多。并且对于未知的緩冲区漏洞溢出攻击,也可以准 确、及时的拦截,并且在其未对系统造成危害的时候阻止其执行。
权利要求
1、一种防御缓冲区溢出攻击方法,其特征在于,包括创建新进程或线程时,获取进程或线程环境块的基地址;随机化进程或线程环境块基地址。
2、 如权利要求1所述的方法,其特征在于,所述获^f又进程或线程环 境块的基地址具体包括获取进程或线程环境块的基地址指针。
3、 如权利要求2所述的方法,其特征在于,所述随机化进程或线程 环境块基地址具体包括创建随机值指针,用所述随机值指针替换获取的基 地址指针。
4、 如权利要求3所述的方法,其特征在于,所述创建随机值指针具 体包括随机化函数利用系统时间产生一个随机数种子,根据系统时间通过所 述随机数种子生成一个随机数,产生的所述随机数变换为符合基地址规律 的随机值,创建一个指针指向所述随机值。
5、 一种防御缓冲区溢出攻击装置,其特征在于,包括 获取单元,用于创建新进程或线程时,获取进程或线程环境块的基地址;
6、 如权利要求5所述的装置,其特征在于,所述获取单元具体用于 创建新进程或线程时,获取进程或线程环境块的基地址指针。
7、 如权利要求6所述的装置,其特征在于,所述随;f几单元具体用于 创建随机值指针,用所述随机值指针替换获取的基地址指针。
8、 一种环境块创建装置,其特征在于,包括获取基地址单元,用于创建新进程或线程时,获取进程或线程环境块 的基地址;随机化单元,用于随机化所述进程或线程环境块的基地址; 创建单元,用于基于随机化后的基地址创建环境块数据。
9、 如权利要求8所述的装置,其特征在于,所述获取基地址单元具 体获取的是进程或线程环境块的基地址指针。
10、 如权利要求9所述的装置,其特征在于,所述随机化单元具体用 于创建随机值指针,用所述随机值指针替换获取的基地址指针。
全文摘要
本发明实施例提供一种防御缓冲区溢出攻击方法和装置,以及一种环境块创建装置,防御缓冲区溢出攻击方法包括创建新进程或线程时,获取进程或线程环境块的基地址;随机化进程或线程环境块基地址。本发明实施例通过随机化进程或线程基地址指针使进程或线程环境块数据发生改变,因此其中的跳转地址也变为无效数据,进而线程或进程无法发生跳转,达到防止恶意攻击的目的,进而提高系统的安全性。
文档编号G06F21/00GK101315655SQ200810068268
公开日2008年12月3日 申请日期2008年7月1日 优先权日2008年7月1日
发明者巍 崔, 白皓文 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1