处理代码片段副作用的返回导向代码自动生成方法及装置制造方法及图纸

技术编号:35855123 阅读:15 留言:0更新日期:2022-12-07 10:41
本发明专利技术公开一种处理代码片段副作用的返回导向代码自动生成方法及装置,涉及漏洞自动利用生成技术,本发明专利技术考虑到了代码片段的副作用,并设置了相应的处理策略;使用分割代码片段的方法,将多功能的代码片段分割成单功能的子代码片段来描述;使用符号执行来实现自动ROP生成框架,通过设计代码片段的功能描述,对代码片段中的副作用进行识别和针对性的处理,从而实现对含有副作用代码片段的使用,增加了在二进制文件中生成返回导向利用代码的成功率。率。率。

【技术实现步骤摘要】
处理代码片段副作用的返回导向代码自动生成方法及装置


[0001]本专利技术涉及漏洞自动利用生成技术,具体是针对返回导向编程(Return

Oriented Programming,ROP)的自动生成方法及装置。

技术介绍

[0002]内存破坏类漏洞作为一种高危漏洞,其能够允许攻击者通过破坏内存来劫持程序的预期控制流,转而执行攻击者所期望的行为。其破坏行为可以是注入一段shellcode来控制目标系统程序、安装恶意软件、或者泄露程序存储的敏感信息。现代操作系统为了防御内存破坏类漏洞所导致的攻击(如代码注入攻击),均启用了W

X保护。攻击者转而利用已经在内存空间中的可执行代码来执行攻击。比如Glibc是GNU系统中的核心运行库,它提供了很多可用的函数,例如execve和system。一旦发现溢出漏洞,攻击者可以构造函数的调用参数,并将返回地址指针重定向到这些Glibc函数的起始地址,就可以在当前程序的权限下启动攻击者希望执行的进程。2007年,Shachamet等人提出了返回导向的编程(ROP)技术。其核心思想如下:程序中通常都包含大量的返回指令(ret),它们通常位于函数的结尾,或是函数中间需要返回的地方。而从任意指令开始到ret指令之间的这一段指令序列称为代码片段,它使读写内存、算术逻辑操作、控制流跳转、函数调用等操作有可能结合成一个整体。于是,将内存空间中各个代码片段以某种顺序执行,就能达到进行任意操作的目的。而为了使各个代码片段“拼接”起来,需要攻击者构造一个特殊的序列来达到其想要的效果。但是不同漏洞导致的控制环境也有区别。例如,栈溢出能让攻击者直接控制返回地址和后续执行序列。而面对堆相关的漏洞,攻击者需要通过堆风水等方式去劫持程序的控制流,并且根据不同的情况,导致的ROP起点受控寄存器不同,这要求攻击者根据具体情况去进行栈迁移。因为ROP允许攻击者使用任何未随机化的代码来进行攻击。ROP技术被广泛用于构建漏洞,特别是在现代的操作系统中,未随机化的代码可能不直接包含对攻击者有用的功能。而之前的研究也表明,在开源和商业项目,例如Glibc、windows内核等中找到图灵完备的代码片段集合是完全有可能的。
[0003]评估漏洞不仅能够为软件提供充分的安全风险评估信息,也可以用来为入侵检测系统保护规则的制定增加依据。生成漏洞利用是评估漏洞威胁的重要手段,传统的人工漏洞利用编写方法费时费力,而且对编写者的能力要求很高,不利于评估工作快速、有效地展开。因此,研究自动化漏洞利用生成技术(Automatic Exploit Generation,AEG)是提升漏洞评估能力、提高软件安全性评估能力的重要方法和途径。其中,如何自动生成ROP一直是一个热门的研究课题。现有的ROP生成工作主要基于软件内可被利用的代码片段的功能,预先定义可被利用的代码片段的代码功能信息,然后在程序中找到具有相应功能特征的代码片段。通常,传统ROP生成方法使用的代码片段只包含一个特定的功能(称为单功能代码片段)。然而,单功能代码片段只是程序中可用代码片段的一小部分。在传统架构(如x86、x64等架构)中,由于代码片段数量充足,可以很容易在这些代码片段之中,挑选可用的单功能代码片段来构建ROP。然而,随着嵌入式软件的蓬勃发展,在嵌入式架构下(如,MIPS、
PowerPC等架构),软件中的代码片段的数量相对较少,单功能代码片段的可选范围也变得更小。这就严重制约了ROP技术在嵌入式软件漏洞利用中的应用和扩展。在传统x86架构中,采用了变长指令集,不要求进行内存对齐,如果攻击者控制ip寄存器跳到某些指令的中间,就会产生非预期的指令。而x86的指令集很大,其编码也很密集,因此,即使在相对较小的程序中也有各种指令可供使用,丰富了代码片段的数量。而在嵌入式系统通常采用ARM,PowerPC等架构,其采用了定长指令集的设计,并且在指令读取时强制对齐,导致其可用的代码片段数量少于x86。随着物联网和其他嵌入式设备的普及率越来越高,如ARM、MIPS被广泛用于小型路由器、智能设备和其他系统,而PowerPC被广泛用于网络设备和工业控制系统,这些系统上的安全问题也越来越受到攻击者和黑客的关注。而现有ROP生成技术中的代码片段功能描述策略已经不足以在上述架构的软件上找到可用的代码片段代码片段。
[0004]综合所述,现有ROP自动生成技术的适用度不高,成功率较低,该问题有待解决。

技术实现思路

[0005]为了解决代码片段的功能描述不准确和不全面的问题,本专利技术在Q的代码片段功能描述的基础上,提出了一种处理代码片段副作用的返回导向代码自动生成方法及装置。本专利技术考虑到了代码片段的副作用,并设置了相应的处理策略;使用分割代码片段的方法,将多功能的代码片段分割成单功能的子代码片段来描述;使用符号执行来实现自动ROP生成框架,通过设计代码片段的功能描述,对代码片段中的副作用进行识别和针对性的处理,从而实现对含有副作用代码片段的使用,增加了在二进制文件中生成返回导向利用代码的成功率。
[0006]为实现上述目的,本专利技术采用以下技术方案:
[0007]一种处理代码片段副作用的返回导向代码自动生成方法,包括以下步骤:
[0008]对于输入的二进制文件,从中收集代码片段;
[0009]对代码片段进行筛选,去除无用的代码片段;
[0010]对筛选过的代码片段进行语义分析,获取每个代码片段的功能信息,并将多功能的代码片段拆分为多个单一功能的子代码片段,构建代码片段集合;
[0011]获取用户输入的利用约束信息,并将该利用约束信息拆分成功能信息;
[0012]根据拆分的功能信息从代码片段集合中寻找最符合功能需求的代码片段,并从中提取出符合利用约束信息的约束条件和其余的副作用;
[0013]对代码片段中的副作用进行处理,将其转化为约束条件,与符合利用约束信息的约束条件进行联立,并进行求解,如果求解失败,则从其余的代码片段中寻找并进行相同处理,如果求解成功,则获得符合利用约束信息的代码片段;
[0014]将符合利用约束信息的代码片段进行联立,形成ROP链即返回导向代码。
[0015]进一步地,利用ropper和ropgadget工具从输入的二进制文件中收集代码片段。
[0016]进一步地,按照以下4个规则对代码片段进行筛选:筛除存在非法的内存访问的代码片段,筛除不在程序运行的特权级范围内的指令的代码片段,筛除无法控制跳转地址的代码片段,以及筛除堆栈内存偏移过大的代码片段。
[0017]进一步地,代码片段能否控制跳转地址是通过判断能否控制对应的寄存器来确定,如果能够控制对应的寄存器,则判断为代码片段能控制跳转地址,否则判断为代码片段
无法控制跳转地址。
[0018]进一步地,对筛选过的代码片段进行语义分析的方法为:将筛选过的代码片段传递给代码片段功能分析器,该代码片段功能分析器首先进行符号执行的状态初始化,并定义angr的事件断点对预先定义的功能信息集本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种处理代码片段副作用的返回导向代码自动生成方法,其特征在于,包括以下步骤:对于输入的二进制文件,从中收集代码片段;对代码片段进行筛选,去除无用的代码片段;对筛选过的代码片段进行语义分析,获取每个代码片段的功能信息,并将多功能的代码片段拆分为多个单一功能的子代码片段,构建代码片段集合;获取用户输入的利用约束信息,并将该利用约束信息拆分成功能信息;根据拆分的功能信息从代码片段集合中寻找最符合功能需求的代码片段,并从中提取出符合利用约束信息的约束条件和其余的副作用;对代码片段中的副作用进行处理,将其转化为约束条件,与符合利用约束信息的约束条件进行联立,并进行求解,如果求解失败,则从其余的代码片段中寻找并进行相同处理,如果求解成功,则获得符合利用约束信息的代码片段;将符合利用约束信息的代码片段进行联立,形成ROP链即返回导向代码。2.如权利要求1所述的方法,其特征在于,利用ropper和ropgadget工具从输入的二进制文件中收集代码片段。3.如权利要求1所述的方法,其特征在于,按照以下4个规则对代码片段进行筛选:筛除存在非法的内存访问的代码片段,筛除不在程序运行的特权级范围内的指令的代码片段,筛除无法控制跳转地址的代码片段,以及筛除堆栈内存偏移过大的代码片段。4.如权利要求3所述的方法,其特征在于,代码片段能否控制跳转地址是通过判断能否控制对应的寄存器来确定,如果能够控制对应的寄存器,则判断为代码片段能控制跳转地址,否则判断为代码片段无法控制跳转地址。5.如权利要求1所述的方法,其特征在于,对筛选过的代码片段进行语义分析的方法为:将筛选过的代码片段传递给代码片段功能分析器,该代码片段功能分析器首先进行符号执行的状态初始化,并定义angr的事件断点对预先定义的功能信息集合中对应事件进行监听,然后对每个代码片段进行符号执行,当angr在触发特定事件时停止符号执行,记录事件断点并分析代码片段的功能信息。6.如权利要求5所述的方法,其特征在于,所述功能信息集合除了包括代码片段的常...

【专利技术属性】
技术研发人员:鲜槟丞钟楠宇李孟豪邹燕燕霍玮
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:

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

1