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

一种基于攻击树的ROP防护方法技术

技术编号:13491148 阅读:51 留言:0更新日期:2016-08-07 01:42
本发明专利技术公开了一种基于攻击树的ROP防护方法,属于计算机软件安全领域,所述发明专利技术包括提取待保护程序和系统库文件中的gadgets指令片段,确定提取出的每一个gadgets指令片段的类型,选取多个敏感系统函数,利用提取出来的gadgets指令片段以构造攻击树的方法进行攻击建模,对所有攻击方法进行分析,得到关键的gadgets,最后对这些关键的gadgets进行保护。本发明专利技术通过使用攻击建模的方式对程序进行保护,加强了攻击者劫持控制流的难度,提高了保护效率,最终使得程序控制流更加的安全。

【技术实现步骤摘要】

本专利技术属于计算机软件安全领域,涉及应对控制流劫持中的Return-OrientedProgram(ROP)攻击技术,尤其涉及一种基于攻击树的ROP防护方法
技术介绍
当今软件已经深入到生活的方方面面,在人们的饮食、出行、交通等领域均扮演着越来越重要的角色。控制流劫持攻击是软件安全面临的一个重要威胁,如何增强软件的防护能力已经成为重要的工作。在现有技术中,为了应对控制流劫持攻击通常采用了DEP,ASLR。DEP通过对程序内存页属性设置,避免内存页即可写又可执行,从而使得利用可写页进行攻击的方法失败。ASLR目的是对程序地址空间进行随机化,使得攻击者静态分析时获取的地址空间和真正运行时不符,从而使得攻击失败。但是这些保护方法都有自己的缺点。DEP和ASLR已经被当前的研究证明是可以被绕过的。CFI是当前学术研究的主要方向。CFI通过对程序间接分支跳转指令的地址进行校验,从而避免被攻击者劫持。但是CFI具有两个问题:第一:开销大,不适于实际使用。(因为CFI要求对每个间接分支转移指令进行检查)。第二:当前CFI采用上下文不敏感的方法,仍然可以被攻击者绕过。
技术实现思路
针对上述现有技术中存在的问题,本专利技术的目的在于,提供一种基于攻击树的ROP防护方法。为了实现上述目的,本专利技术采用如下技术方案:一种基于攻击树的ROP防护方法,具体包括:步骤1,选取待保护程序和系统库文件;>步骤2,提取待保护程序和系统库文件中的gadgets指令片段;步骤3,确定提取出的每一个gadgets指令片段的类型;步骤4,选取多个敏感系统函数;步骤5,利用步骤2提取出来的gadgets指令片段以构造攻击树的方法进行攻击建模,即以提取出来的gadgets指令片段为攻击对象,以实现多个敏感系统函数的调用为攻击目的,以实现每个敏感系统函数的调用分别所采用的多种方法为攻击方法进行攻击树的构造;步骤6,针对每个敏感函数,对实现该敏感函数调用的多种方法中使用到的gadgets指令片段进行分析总结,得到每个敏感函数对应的关键的gadgets指令片段;步骤7,对步骤6得到的所有关键的gadgets指令片段进行保护。具体地,所述步骤4中的敏感系统函数为:mprotect函数簇,mmap函数簇,exec函数簇或I/O系统调用函数簇。具体地,所述步骤6的具体实现方法包括:针对一个敏感函数,实现该敏感函数调用的方法包含多种,分析每种方法所使用的gadgets指令片段的类型,确定所有方法中使用次数最多的gadgets指令片段的类型,则该类型的gadget指令片段为该敏感函数对应的关键的gadget指令片段;针对所有敏感函数,均采用所述方法确定所有敏感函数对应的关键的gadget指令片段。具体地,所述步骤3中确定提取出的每一个gadgets指令片段的类型,所采用的方法为基于语义的分析方法或者模式匹配的方法。具体地,所述步骤7中对步骤6得到的所有关键的gadgets指令片段进行保护,对于来自于系统库文件中的关键的gadgets指令片段,采用黑名单机制;对于来自于待保护程序中的关键的gadgets指令片段,采用指令替换的方式或者粗粒度控制流完整性的方式。与现有技术相比,本专利技术具有以下技术效果:1、本专利技术提出的基于攻击建模的ROP保护方法,从攻击者的角度对程序进行分析,寻找到攻击者实现攻击的关键的gadgets指令片段,然后对它们进行保护,使得程序更加具有抵抗性,最终提高程序的保护效果。2、本专利技术只针对某一类或两类关键的gadgets指令片段进行保护,造成的开销相对较小,可以大大提高保护效率。附图说明图1是本专利技术的方法流程图;图2是实现mprotect()函数调用的方法示意图;图3是构造攻击树的流程图;图4是gadgets指令片段进行分析的示意图;图5是Kernel32.dll中gadgets指令片段的分类情况;下面结合附图和具体实施方式对本专利技术的方法做进一步详细地解释和说明。具体实施方式本专利技术的基于攻击树的ROP防护方法,参见图1,具体包括以下几个步骤:步骤1,选取待保护程序和系统库文件在这里特别提到将系统库文件也作为输入,原因在于,系统库文件是操作系统自带的,其中也存在gadgets指令片段。如果攻击者在系统库文件中找到gadgets指令片段并劫持控制流,这样即使攻击者在不知道源代码的情况下依然可以实施控制流劫持攻击,一些远程攻击就是以系统库文件作为攻击目标。步骤2,提取待保护程序和系统库文件中的gadgets指令片段提取待保护程序和库文件中的gadgets指令片段,可以采用已有的工具,比如:mona插件。此处选择mona插件是因为它是由著名的corelanteam出品的,它是很多漏洞分析人员或者攻击者使用的工具。通过mona插件可以快速提取待保护程序和系统库文件中的gadgets指令片段。比如:下边代码就是通过mona插件提取出来的gadgets指令片段。步骤3,确定提取出的每一个gadgets指令片段的类型Gadgets指令片段的类型主要可分为以下几类:第一类:加载寄存器类型;比如:popeax;XXX;retn;第二类:内存读写类型;比如:mov[esi],eax;xoreax,eax;XXX;retn;第三类:算术运算类型;比如:ADDAL,5D;retn;第四类:空操作类型,不产生任何影响的指令片段。第五类:分支跳转类型:比如:addesp,1ah;XXX;retn;第六类:间接函数调用类型:比如:calleax,XXX;retn;使用基于语义的分析方法来判断gadgtes指令片段的类型,也可以采用模式匹配的方法来确定。假如指令片段中存在calleax/esi/…,通过模式匹配,发现是call指令且后边跟着一个寄存器,这就可以确定它属于间接函数调用类型的gadgets指令片段。基于语义的分析较为复杂,但是分类效果会更好。图5中展示了Kernel32.dll中gadgets指令片段的分类情况。步骤4,选取多个敏感系统函数为了简化分析,同时为了尽可能的降低开销,只针对一些敏感系统函数进行分析。敏感系统函数主要选取以下几种:mprotect函数簇,mmap函数簇,exec函数簇或I/O系统调用函数簇。步骤5,利用步骤2提取出来的gadgets指令片段以构造攻击树的方法进行攻击建模,即以提取出来本文档来自技高网...

【技术保护点】
一种基于攻击树的ROP防护方法,其特征在于,具体包括:步骤1,选取待保护程序和系统库文件;步骤2,提取待保护程序和系统库文件中的gadgets指令片段;步骤3,确定提取出的每一个gadgets指令片段的类型;步骤4,选取多个敏感系统函数;步骤5,利用步骤2提取出来的gadgets指令片段以构造攻击树的方法进行攻击建模,即以提取出来的gadgets指令片段为攻击对象,以实现多个敏感系统函数的调用为攻击目的,以实现每个敏感系统函数的调用分别所采用的多种方法为攻击方法进行攻击树的构造;步骤6,针对每个敏感函数,对实现该敏感函数调用的多种方法中使用到的gadgets指令片段进行分析总结,得到每个敏感函数对应的关键的gadgets指令片段;步骤7,对步骤6得到的所有关键的gadgets指令片段进行保护。

【技术特征摘要】
1.一种基于攻击树的ROP防护方法,其特征在于,具体包括:
步骤1,选取待保护程序和系统库文件;
步骤2,提取待保护程序和系统库文件中的gadgets指令片段;
步骤3,确定提取出的每一个gadgets指令片段的类型;
步骤4,选取多个敏感系统函数;
步骤5,利用步骤2提取出来的gadgets指令片段以构造攻击树的方法进行
攻击建模,即以提取出来的gadgets指令片段为攻击对象,以实现多个敏感系
统函数的调用为攻击目的,以实现每个敏感系统函数的调用分别所采用的多种
方法为攻击方法进行攻击树的构造;
步骤6,针对每个敏感函数,对实现该敏感函数调用的多种方法中使用到的
gadgets指令片段进行分析总结,得到每个敏感函数对应的关键的gadgets指令
片段;
步骤7,对步骤6得到的所有关键的gadgets指令片段进行保护。
2.如权利要求1所述的基于攻击树的ROP防护方法,其特征在于,所
述步骤4中的敏感系统函数为:mprotect函数簇,mmap函数簇,exec函数簇或
I/O系统调用函数簇。
3.如权利...

【专利技术属性】
技术研发人员:汤战勇吕留东张恒李政桥房鼎益陈晓江周祥龚晓庆刘方圆陈锋
申请(专利权)人:西北大学
类型:发明
国别省市:陕西;61

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

1