一种针对ROP攻击的检测方法技术

技术编号:14420911 阅读:329 留言:0更新日期:2017-01-12 23:13
本发明专利技术公开了一种针对ROP攻击的检测方法。该检测方法包括获得动态链接库的新基址=动态链接库的原基址+偏移量,所述偏移量为分配粒度的随机非零整数倍,且所述偏移量的绝对值大于动态链接库的长度;修改动态链接库的基址字段,令所述基址字段指向所述动态链接库的新基址;在动态链接库中增加代码段,所述代码段用于在动态链接库的原基址对应的加载位置填充警告指令;所述代码段的尾部具有跳转指令,所述跳转指令的跳转距离为跳转指令与入口函数的相对距离;将动态链接库的入口地址设置为所述代码段的地址。本发明专利技术可以应用于所有Windows系统,不会对系统造成额外负担,能够检测除JIT‑ROP以外的所有ROP攻击。

【技术实现步骤摘要】

本专利技术属于系统安全
,更具体地,涉及一种针对ROP攻击的检测方法
技术介绍
随着信息技术的高速发展和网络的快速普及,计算机软件系统在社会生活中扮演着越来越重要的角色,与此同时,各种程序漏洞仍然很普遍,在遗留的软件系统中尤为突出,通过这些漏洞,攻击者可以劫持软件系统程序的控制流并将其转向自己预设的控制流,令系统执行非用户意愿的行为。一种普遍的攻击方式就是Return-OrientedProgramming(简称ROP)攻击,这种攻击方式通过搜索内存中以跳转指令(如RET指令)结尾的代码片段,并将这些代码片段进行组合形成一个用于完成攻击目的的指令序列,利用内存漏洞替换掉原有的程序流程。ROP攻击者最常用的就是在Windows的动态链接库中搜索代码片段。现有的针对ROP攻击的实际运用的检测方法是控制流完整性检测方法(ControlFlowIntegrity,CFI):由加州大学和微软公司于2005年提出,其检测策略是检查程序控制流的完整性,不允许非法转移程序的控制流,这就切断了ROP的攻击途径。承袭此思想,Abadi提出了基于控制流程图(Controlflowgraph,CFG)的CFI检测机制,程序按照控制流程在每一个跳转指令进行地址跳转时,通过检查目的地址的有效性,从而保证程序所执行的命令在预先设定的CFG范围内。这种检测机制不仅能够检测静态ROP攻击还能够检测即时搜索代码的JIT-ROP攻击(Just-In-TimeCodeReuse)。但是由于CFI针对程序每一步都要进行过滤,所以会产生巨大的性能负担;同样由于该方案是需要对系统的内核程序进行修改,在Windows8之前的系统都不能应用这种检测方法。基于地址空间随机化(AddressSpaceLayoutRandomization,ASLR)能够防御非JIT-ROP类型的ROP攻击,在WindowsVista版本及以后的Windows系统中均实现了此技术,但在之前的Windows版本并不兼容此方法。目前还没有一种方法能够在在这些系统中实现检测ROP攻击。根据零点指标数据2015年3月9日公布的网络调查结果显示,目前WindowsXP在国内电脑操作系统市场占据半壁江山的份额,尽管微软停止技术支持,但是仍有近八成用户不愿放弃使用XP。因此针对适用于所有系统的ROP检测研究还是很有必要的。
技术实现思路
针对现有技术的以上缺陷或改进需求,本专利技术提出了一种针对ROP攻击的检测方法,其目的在于转移ROP所攻击的动态链接库的加载位置,,并在原加载位置填充警告指令,由此满足ROP攻击的防御需求。为实现上述目的,按照本专利技术的一个方面,提出了一种针对ROP攻击的检测方法,包括:修改动态链接库的基址字段,令所述基址字段指向的基址由动态链接库的初始基址改变为动态链接库的新基址,且所述动态链接库的新基址=偏移量+动态链接库的初始基址;在动态链接库中增加代码段,所述代码段用于在动态链接库的初始基址对应的加载位置填充警告指令;所述代码段的尾部具有跳转指令,所述跳转指令的跳转距离为跳转指令与动态链接库的原入口函数的相对距离;将动态链接库的入口地址由原入口函数的起始地址修改为所述代码段的起始地址。优选地,动态链接库的新基址=偏移量+动态链接库的初始基址,所述偏移量为分配粒度的随机非零整数倍,且所述偏移量的绝对值大于动态链接库的长度。优选地,所述在动态链接库中增加代码段的方法具体为:在动态链接库的所有段之后增加代码段,令新的动态链接库的段数=初始的动态链接库的段数+1;令动态链接库的新长度=动态链接库的初始长度+增加的代码段的长度;将增加的代码段的属性保存于动态链接库的段表中。优选地,所述检测方法还包括计算并修改所述动态链接库的校验和。优选地,所述检测方法用于Windows系统。总体而言,通过本专利技术所构思的以上技术方案与现有技术相比,由于对动态链接库的基址进行修改,从而改变动态链接库的加载位置,能够取得下列有益效果:1、本专利技术的方法不需要对系统的内核程序进行修改,仅仅通过修改动态链接库的加载位置实现ROP攻击的检测,能应用于所有Windows系统;2、本专利技术无需针对程序的每一步过滤,对系统的性能不会产生额外负担,同时能够检测除JIT-ROP以外的所有ROP攻击。附图说明图1本专利技术检测ROP攻击过程的示意图;图2原始动态链接库结构和修改后的动态链接库结构;图3在动态链接库中增加新段需要修改的位置;图4加载阶段,动态链接库修改前后内存的情况;图5a为修改动态链接库之前,ROP攻击过程;图5b为修改动态链接库以后,ROP攻击过程。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。此外,下面所描述的本专利技术各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。本专利技术公开了一种针对ROP攻击的检测方法,在该检测方法中,我们解决了以下技术问题:1、在未应用ASLR的系统中实现检测并防御ROP攻击;2.提出的解决方案具有普适性,即适用于所有Windows系统。由于系统在加载动态链接库时都是按照基址字段,将动态链接库加载至对应的加载位置。通常而言,动态链接库的基址与动态链接库中的基址字段相同,都是固定的。ROP攻击者在攻击之前就已会准备好这些代码,然后按照该固定的基址去访问,所以在进行攻击之前都会确保内存中已经加载了代码段所属的动态链接库,以便成功部署攻击。本专利技术的思路就是要转移这些动态链接库的加载位置(以基址为起始位置,长度为动态链接库的长度的内存空间),将加载位置在内存中偏移一段距离,然后在动态链接库的初始基址对应的加载位置填充警告指令,那么ROP攻击者按照原基址进行访问时,访问的就是警告指令,使得系统检测到ROP攻击。这种检测方式不会影响到动态链接库的正常使用,且不会需要更改系统的内核。针对技术问题,对动态链接库进行重定位,使其偏移原来的加载位置,并在原来的加载位置填充警告指令,使得ROP攻击者执行警告指令,导致系统捕获异常,检测出ROP攻击。其过程如图1所示。将本专利技术的技术方案应用到系统的动态链接库后,能够确保利用这些动态链接库进行普通ROP攻击(即非JIT-ROP攻击)的攻击行为将无法成功实施。具体而言,本专利技术针对ROP攻击的检测方法包括:修改动态链接库的加载位置,在动态链接库中增加代码段,计算并修改动态链接库的校验和;其中,修改动态链接库的加载位置具体包括:修改动态链接库的基址字段,令所述基址字段指向的基址由动态链接库的初始基址改变为动态链接库的新基址,且所述动态链接库的新基址=偏移量+动态链接库的初始基址,所述偏移量为分配粒度(一般为64K)的随机非零整数倍,且所述偏移量的绝对值大于动态链接库的长度;所述在动态链接库中增加代码段具体包括:在动态链接库中增加代码段,所述代码段用于在动态链接库的初始基址对应的加载位置填充警告指令;所述代码段的尾部具有跳转指令,所述跳转指令的跳转距离为跳转指令的起始地址与动态链接库的原入口函数的起始地址的相对距离;将动态链接库的入口地址设置为所述代码段的起始地址。其中,所述在动态链接库中增加代码本文档来自技高网
...
一种针对ROP攻击的检测方法

【技术保护点】
一种针对ROP攻击的检测方法,其特征在于,包括:修改动态链接库的基址字段,令所述基址字段指向的基址由动态链接库的初始基址改变为动态链接库的新基址;在动态链接库中增加代码段,所述代码段用于在动态链接库的初始基址对应的加载位置填充警告指令;所述代码段的尾部具有跳转指令,所述跳转指令的跳转距离为跳转指令与动态链接库的原入口函数的相对距离;将动态链接库的入口地址由原入口函数的起始地址修改为所述代码段的起始地址。

【技术特征摘要】
1.一种针对ROP攻击的检测方法,其特征在于,包括:修改动态链接库的基址字段,令所述基址字段指向的基址由动态链接库的初始基址改变为动态链接库的新基址;在动态链接库中增加代码段,所述代码段用于在动态链接库的初始基址对应的加载位置填充警告指令;所述代码段的尾部具有跳转指令,所述跳转指令的跳转距离为跳转指令与动态链接库的原入口函数的相对距离;将动态链接库的入口地址由原入口函数的起始地址修改为所述代码段的起始地址。2.如权利要求1所述的检测方法,其特征在于,动态链接库的新基址=偏移量+动态链接库的初始基址,所述偏移量为分配粒...

【专利技术属性】
技术研发人员:李伟明孔华锋贺玄
申请(专利权)人:华中科技大学公安部第三研究所
类型:发明
国别省市:湖北;42

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

1