基于模拟栈和线程注入的一种ROP攻击栈溢出防护方法技术

技术编号:16346399 阅读:52 留言:0更新日期:2017-10-03 22:29
本发明专利技术公开基于模拟栈和线程注入的一种ROP攻击栈溢出防护方法,涉及ROP攻击防护技术领域,解决了现有技术由于程序加载位置固定导致不具有指令的ROP恶意代码能够绕过栈溢出防护技术问题,以及解决了在利用模拟栈监控目标进程时所使用的远程线程注入造成目标进程中出现栈溢出的技术问题。本发明专利技术包括利用线程注入到目标进程(要保护的进程),开辟一个模拟栈空间,监控模拟目标进程的指令流程,通过获取ROP攻击的call和ret指令间的有效代码串连,在模拟栈上执行,再使用传统的溢出防护机制,从而达到检测ROP攻击的目的。

【技术实现步骤摘要】
基于模拟栈和线程注入的一种ROP攻击栈溢出防护方法
本专利技术涉及ROP攻击防护
,具体涉及基于模拟栈和线程注入的一种ROP攻击栈溢出防护方法。
技术介绍
ROP(Return-orientedprogramming)是一种基于代码复用技术的新型攻击,攻击者供已有的库或可执行文件中提取指令片段、构建恶意代码。SEH(StructuredExceptionHandling)SEH("StructuredExceptionHa-ndling"),即结构化异常处理是(windows)操作系统提供给程序设计者的强有力的处理程序错误或异常的武器。SEHOP(SEHOverwriteProtection)SEHOP的全称是StructuredExcept-ionHandlerOverwriteProtection(结构化异常处理覆盖保护),SEH攻击是指通过栈溢出或者其他漏洞,使用精心构造的数据覆盖结构化异常处理链表上面的某个节点或者多个节点,从而控制EIP(控制程序执行流程)。而SEHOP则是是微软针对这种攻击提出的一种安全防护方案。在操作系统和编译器的保护下,程序的栈是不可运行的、栈的位置是随机的,增大了栈溢出攻击的难度。但如果程序的加载位置是固定的或者程序中存在加载到固定位置的可执行代码,攻击者就可以利用这些固定位置上的代码来实施他的攻击,ROP恶意代码不包含任何指令,将自己的恶意代码隐藏在正常代码中。因而,它可以绕过传统的栈溢出防御技术。
技术实现思路
针对上述现有技术,本专利技术目的在于提供基于模拟栈和线程注入的一种ROP攻击栈溢出防护方法,解决了现有技术由于程序加载位置固定导致不具有指令的ROP恶意代码能够绕过栈溢出防护技术问题,以及解决了在利用模拟栈监控目标进程时所使用的远程线程注入造成目标进程中出现栈溢出的技术问题。为达到上述目的,本专利技术采用的技术方案如下:本方案主要利用线程注入到目标进程(所保护的进程),开辟一个模拟栈空间,监控模拟目标进程的指令流程,通过获取ROP攻击的call和ret指令间的有效代码串连,在模拟栈上执行,再使用传统的溢出防护机制(如Windows的缓冲区安全监测机制,GS)检测模拟栈上是否存在栈溢出,从而对ROP攻击栈溢出漏洞的防护。基于模拟栈和线程注入的一种ROP攻击栈溢出防护方法,包括以下步骤:步骤1、对目标进程注入远程线程,通过远程线程获得目标进程的指令流;步骤2、通过目标进程函数的调用特征提取算法将指令流与受信的特征数据库进行比对,获得存在异常调用的指令序列;步骤3、构建模拟栈并完成指令序列的拼接,然后在模拟栈中压入拼接的指令序列和金丝雀值,再利用函数进行模拟栈的指令调用,在函数进行返回前检测指令调用过程中金丝雀值,获得检测结果;步骤4、根据检测结果通过远程线程回调控制目标进程的启停,并由检测结果选择地输出模拟栈上ROP攻击代码和溢出点。上述方法中,所述的步骤1,还包括以下步骤:步骤1.1、获得目标进程的句柄,用远程进程根据句柄索引出目标进程;步骤1.2、在远程进程中开辟出一段内存并根据目标进程动态链接库名称长度确定内存区间,在该内存中写入动态链接库的名称;步骤1.3、使用库加载函数和远程线程创建函数根据动态链接库的名称创建出远程线程;步骤1.4、关闭目标进程的句柄,再通过远程线程获得目标进程的指令流。上述方法中,所述的步骤2,其中,对call指令和ret指令之间的指令流进行比对。上述方法中,所述的步骤1.3,注入远程线程时,结合远程线程创建函数参数使用/STACK开关指明已提交的堆栈大小值,重载向堆栈所提交地址空间的内存数量,实质并显著地避免了所使用的远程线程注入造成目标进程中出现栈溢出。上述方法中,所述的步骤1.3,注入远程线程时,将递归类函数去除递归特征并将局部对象改为静态局部对象,实质并显著地避免了所使用的远程线程注入造成目标进程中出现栈溢出。上述方法中,所述的步骤4,启停操作,已知目标进程名或进程ID的情况下,linux下可以直接通过调用system函数运行kill进程ID命令停止目标进程,windows下可使用powershell,原理类似;已知目标进程可执行文件位置的情况下,linux下可以直接通过system函数运行./file_position启动目标进程,windows下可使用powershell,原理类似。与现有技术相比,本专利技术的有益效果:利用线程注入到目标进程(要保护的进程),开辟一个模拟栈空间,监控模拟目标进程的指令流程,通过获取ROP攻击的call和ret指令间的有效代码串连,在模拟栈上执行,再使用传统的溢出防护机制,从而达到检测ROP攻击的目的,而本领域技术中,不同程序模块之间(特别是共享函数库的模块)数据的结构是相同的,在不破坏数据情况下不能对一个结构中的数据进行重新排布,缓冲后在一个结构中的任何数据是不可能使用金丝雀值检测的方法进行防护的,因此本专利技术通过模拟栈重新排布数据并加入金丝雀值,从而克服了现有技术由于数据结构限制而不能对结构中数据的栈溢出进行防护的技术壁垒;本专利技术不影响原程序的最终构成,以外部线程注入监控目标程序的运行,不用改变现有的栈溢出防护机制;本专利技术具有较好的准确性,模拟栈的设计可充分利用现有的多种栈溢出检测机制,从而提高准确性;本专利技术具有较大的适用性,程序的防护和程序的运行具有较大的独立性,因而可适用于多种类型的软件程序。附图说明图1为本专利技术的模块示意图;图2为寄存器指向堆栈示意图;图3为函数调用源码示意图;图4为堆栈结构示意图;图5为监控窗口示意图;图6为执行strcpy后的监控窗口示意图。具体实施方式本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。下面结合附图对本专利技术做进一步说明:栈溢出漏洞的原理1)关于栈,程序的堆栈是由处理器直接支持,在interx86的系统中,堆栈在内存中是从高地址向低地址扩展,如图2:与堆栈操作相关的两个寄存器是EBP和ESP,ESP总是指向堆栈栈顶,PUSH时,ESP-4,然后拷贝数据到ESP指向的地址,POP时先把ESP指向的数据拷贝到内存地址或寄存器,然后ESP+4,栈中存储了函数的参数,函数的局部变量,调用函数前寄存器的值,函数的返回地址以及用于结构化异常处理的数据,EBP寄存器用于访问堆栈中的数据,函数的参数地址比EBP的值高,函数局部变量的地址比EBP的值低,因而可通过EBP与偏移地址来访问,下面是一组函数调用和它的堆栈结构图;EBP寄存器的值总是指向先前的EBP,这样就形成了一个函数调用链,调试器正是利用这个跟踪函数堆栈调用顺序。2)栈溢出攻击实际情景中,攻击者可以使用待定的脚本语言,通过网络远程向对外提供业务的服务器进行攻击,利用对栈中数据的填充越界,也就是常说的shellcode,实现有效的漏洞攻击;下面以一个例子简要说明栈溢出攻击:a.漏洞源码:b.源码说明:在verify_password中,直接将字符串password复制到buffer中,而没有检测password的长度是否超过buffer的大小,因而数据越界可覆盖返回地址,造成栈溢出攻击;c.调试跟踪查看验证:strcpy执行前的返回地址为0本文档来自技高网...
基于模拟栈和线程注入的一种ROP攻击栈溢出防护方法

【技术保护点】
基于模拟栈和线程注入的一种ROP攻击栈溢出防护方法,其特征在于,包括以下步骤:步骤1、对目标进程注入远程线程,通过远程线程获得目标进程的指令流;步骤2、通过目标进程函数的调用特征提取算法将指令流与受信的特征数据库进行比对,获得存在异常调用的指令序列;步骤3、构建模拟栈并完成指令序列的拼接,然后在模拟栈中压入拼接的指令序列和金丝雀值,再利用函数进行模拟栈的指令调用,在函数进行返回前检测指令调用过程中金丝雀值,获得检测结果;步骤4、根据检测结果通过远程线程回调控制目标进程的启停,并由检测结果选择地输出模拟栈上ROP攻击代码和溢出点。

【技术特征摘要】
1.基于模拟栈和线程注入的一种ROP攻击栈溢出防护方法,其特征在于,包括以下步骤:步骤1、对目标进程注入远程线程,通过远程线程获得目标进程的指令流;步骤2、通过目标进程函数的调用特征提取算法将指令流与受信的特征数据库进行比对,获得存在异常调用的指令序列;步骤3、构建模拟栈并完成指令序列的拼接,然后在模拟栈中压入拼接的指令序列和金丝雀值,再利用函数进行模拟栈的指令调用,在函数进行返回前检测指令调用过程中金丝雀值,获得检测结果;步骤4、根据检测结果通过远程线程回调控制目标进程的启停,并由检测结果选择地输出模拟栈上ROP攻击代码和溢出点。2.根据权利要求1所述的基于模拟栈和线程注入的一种ROP攻击栈溢出防护方法,其特征在于,所述的步骤1,还包括以下步骤:步骤1.1、获得目标进程的句柄,用远程进程根据句柄索引出目标进程;步骤1.2、在远程进程中开辟出一段内存并根据目标进...

【专利技术属性】
技术研发人员:刘小垒张小松牛伟纳周旷户宇宙
申请(专利权)人:电子科技大学
类型:发明
国别省市:四川,51

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

1