CN105260659A - 一种基于qemu的内核级代码重用型攻击检测方法 - Google Patents

一种基于qemu的内核级代码重用型攻击检测方法 Download PDF

Info

Publication number
CN105260659A
CN105260659A CN201510574168.8A CN201510574168A CN105260659A CN 105260659 A CN105260659 A CN 105260659A CN 201510574168 A CN201510574168 A CN 201510574168A CN 105260659 A CN105260659 A CN 105260659A
Authority
CN
China
Prior art keywords
file
instruction
addr
ret
qemu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510574168.8A
Other languages
English (en)
Other versions
CN105260659B (zh
Inventor
李金库
程坤
孙聪
卢笛
姚青松
马建峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN201510574168.8A priority Critical patent/CN105260659B/zh
Publication of CN105260659A publication Critical patent/CN105260659A/zh
Application granted granted Critical
Publication of CN105260659B publication Critical patent/CN105260659B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于QEMU的内核级代码重用型攻击检测方法,主要解决现有技术依赖硬件或需要修改内核源代码的问题。它通过对QEMU虚拟机管理器的功能模块进行扩展,遍历检测运行在其上的操作***内核中的每一条指令,从中识别出与控制流程相关的跳转指令,包括ret和间接call指令,通过记录它们的跳转目标地址,然后将这些目标地址与***正常执行流程中的合法目标地址进行对比来检测***是否正常执行;同时,它对中断发生时压入栈中的中断返回地址和中断实际返回时使用的返回地址进行对比验证,以判断是否发生了攻击。本发明针对代码重用型攻击均需要改变***原有执行流程的特点,通过对改变内核执行流程的指令(和地点)进行监测,能有效发现攻击,可用于保护操作***的安全。

Description

一种基于QEMU的内核级代码重用型攻击检测方法
技术领域
本发明属于计算机科学与技术领域,涉及恶意软件的防护,具体是一种基于QEMU的内核级代码重用型攻击检测方法。
背景技术
作为一种当代新型的攻击方法,内核级代码重用型攻击不需要注入任何新的代码,仅仅利用(或重用)内核中已有的(合法)代码就能构造完整攻击并从根本上颠覆整个操作***,它能够逃过内核代码完整性保护机制的防护,给用户计算机***安全带来了巨大威胁。
代码重用型攻击需要两步来完成:(1)攻击者精心选择可用的指令片段,并将它们通过特定的指令(比如ret)串接起来;(2)改变***原有的执行流程(通过篡改内核执行中的某个控制数据,比如函数指针或函数返回地址),跳转到攻击者选择的首个指令片段,实施攻击。
最早的代码重用型攻击是ROP(return-orientedprogramming)攻击。由于它精心选择的指令片段都以ret指令结尾,其构造的工具集会包含许多ret指令,这在正常的***中是不合理的。由此,Chen等人[ICISS2009]提出了一种通过检测***指令执行流程中ret指令调用的频繁程度,从而发现ROP攻击的技术方法。北卡州立大学的Li等人[ACMEuroSys2010]通过修改编译器,去除内核中所有的ret指令操作码字节,使攻击者无法找到可用的指令片段构造攻击。而最新的代码重用型攻击变种已经不再依赖于ret指令,而是改为利用类似的跳转指令(比如间接jmp或“pop+jmp”指令)来串接指令片段,更加难以对付。为此,北卡州立大学的Li等人[IEEETIFS2011]提出了一种基于编译器的方法,通过修改内核相关指令(比如间接call和ret指令)保护内核中的控制数据(包括函数指针和函数返回地址)来防止代码重用型攻击。EPFL的Kuznetsov等人[OSDI2014]同样提出了一种基于编译器方法,他们对程序中所有的code-pointer进行保护,从而抵御代码重用型攻击。
应该说,当前的研究成果对代码重用型攻击的检测已经有一定的效果。但是,已有检测方法大都有技术限制。它们要么需要额外的硬件支持,要么需要修改内核源代码。前者会增加硬件成本且可扩展性较差,而后者对于非开源操作***内核(比如Windows)则不适用。
本发明提出的检测方法是基于QEMU虚拟机管理器完成的。QEMU是一款快速、便捷的动态二进制翻译器,它可以启动虚拟机并支持多种不同的CPU架构。由于QEMU以二进制指令翻译的形式执行,它能够对虚拟机内核执行的每一条指令进行干涉(或介入)。而代码重用型攻击均需要改变***原有的执行流程(第二步),本发明通过对改变内核执行流程的指令(和地点)进行监测,就可以有效检测和发现攻击。并且,现有检测方法中都没有提供对内核中断流程的检测,而攻击者同样能够通过改变内核中断处理中的流程实施攻击。本发明提供了对于内核中断流程的检测和验证。
发明内容
为了弥补现有技术的不足,本发明提出了一种基于QEMU的内核级代码重用型攻击检测方法,该方法用以检测各种内核级代码重用型攻击(及其变种)的行为,保护操作***的安全。
为了实现上述目的,本发明所采用的技术方案包括以下步骤:
1)预处理
1.1)创建一个空的临时文件temp_file,并将操作***内核镜像文件中的内容输出到临时文件temp_file中;
1.2)创建一个记录内核中函数入口地址的文件func_addr_file,从temp_file文件中依次取得内核所有函数的入口地址,并将这些地址写入func_addr_file文件中;
1.3)创建一个记录内核中函数返回地址的文件ret_addr_file,从temp_file文件中依次取得***中所有有效的函数返回地址,并将这些地址写入ret_addr_file文件中;
2)基于QEMU的跳转指令目标地址的记录和中断流程验证
3)跳转指令目标地址验证
在指令翻译的同时,对QEMU记录的跳转指令的目标地址进行验证,检测是否发生了攻击。
本发明进一步的改进在于:
所述步骤2)中,基于QEMU的跳转指令目标地址的记录和中断流程验证的具体方法如下:
2.1)使用QEMU启动虚拟机内核;
2.2)在QEMU的从客户机指令到主机指令的翻译阶段,取得内核指令中的一条指令I;
2.3)在对指令I进行翻译之前,首先判断是否发生了中断事件,如果发生了中断,则跳转到步骤2.7);
2.4)判断指令I的类型:如果I是间接call指令,则跳转到步骤2.5);如果I是ret指令,则跳转到步骤2.6);否则跳转到步骤2.8);
2.5)对间接call指令I进行如下操作:
2.5a)若文件call_addr.out不存在,则创建记录间接call指令目标地址的文件call_addr.out;
2.5b)在翻译间接call指令I时,对其标志call_flag赋值为1;
2.5c)若此时发生中断,进入中断处理函数时判断call_flag是否为1,若是,则记录中断处理时压栈的返回地址到call_addr.out文件中,然后将call_flag赋值为0,跳转到步骤2.5e);
2.5d)QEMU跳转到间接call指令的目标地址进行翻译,在翻译之前判断标志call_flag是否为1,若是,则记录翻译块首地址到call_addr.out文件中,即为间接call指令的目标地址,然后将call_flag赋值为0;
2.5e)跳转到步骤2.8);
2.6)对ret指令I进行如下操作:
2.6a)若文件ret_addr.out不存在,则创建记录ret指令的目标地址的文件ret_addr.out;
2.6b)在翻译ret指令I时,对其标志ret_flag赋值为1;
2.6c)若此时发生中断,进入中断处理函数时判断ret_flag是否为1,若是,则记录中断处理时压栈的返回地址到ret_addr.out文件中,然后将ret_flag赋值为0,跳转到步骤2.6e);
2.6d)QEMU跳转到ret指令的目标地址进行翻译,在翻译之前判断ret_flag是否为1,若是,则记录翻译块首地址到ret_addr.out文件中,即为ret指令的目标地址,然后将ret_flag赋值为0;
2.6e)跳转到步骤2.8);
2.7)对中断进行如下操作:
2.7a)若int_addr.out文件不存在,则创建记录中断信息的文件int_addr.out;
2.7b)若无自定义栈,则初始化栈int_addr,栈顶指针指向第一个位置;
2.7c)在QEMU处理中断的函数中将***压栈的返回地址同时压入自定义栈int_addr中;
2.7d)当QEMU执行中断程序完毕后,调用中断返回指令时,将自定义栈int_addr中的返回地址出栈,与中断返回指令的返回地址相比较,如果二者不同,则报告发生了攻击,并将对比结果不同的返回地址记录到int_addr.out文件中;
2.7e)跳转到步骤2.4);
2.8)如果操作***内核还有未处理的指令,返回步骤2.2),开始下一条指令的处理;否则结束。
所述步骤2.4)中,指令I的类型是QEMU通过识别二进制指令的操作码进行判断的。
所述步骤3)中,跳转指令目标地址验证步骤具体如下:
3.1)读取call_addr.out中的每个新增的目标地址,验证其是否是func_addr_file文件中的函数入口地址,如果不是,则报告发生了攻击;
3.2)读取ret_addr.out中的每个新增的目标地址,验证其是否是ret_addr_file文件中的有效函数返回地址,如果不是,则报告发生了攻击;
3.3)返回到3.1)。
本发明与现有的技术相比,具有以下有益效果:
1)本发明基于QEMU虚拟机管理器实施,不需要扩展硬件,也不用修改操作***内核源代码就可以识别、定位和记录所需要检测的跳转指令的目标地址。这种机制相对于已有方法成本低,可扩展性强,且可支持多种操作***类型(比如非开源操作***)。通过将记录的目标地址与***合法的跳转地址进行比较,就能检测出内核级代码重用型攻击,保护操作***的安全。
2)本发明仅在需要翻译跳转指令时增加一次存储操作,即将目的地址记录到文件的操作。它具有性能高效的优点,基于UnixBench的性能测试结果表明,本发明所带来的性能损失约为4%。
3)本发明提供了对操作***内核中绝大部分跳转指令的检测,同时,它提出了当***发生中断时,对中断处理过程中的返回地址进行检测和验证的方法。QEMU实际上监督了整个操作***控制流程的跳转过程,所以它能够检测出内核级代码重用型攻击,为操作***安全提供强有力的保障。
附图说明
图1是本发明的流程图。
具体实施方式
下面结合附图和实施例对本发明做进一步详细的说明:
参照图1,本发明包括预处理与基于QEMU的跳转指令目标地址的记录和中断流程验证,以及跳转指令目标地址的合法性验证。其中,与控制流程相关的跳转指令包括间接call指令、ret指令,通过记录它们的跳转目标地址,然后将这些目标地址和正常***执行流程当中的目标地址对比来检测***是否正常执行,是否被攻击。
本发明是基于这样一种观测而提出的:无论哪种类型的代码重用型攻击,它们要想实施攻击,必须改变***原有的执行流程(或控制流程),跳转到攻击者所挑选的首个指令片段才能进行。如果能够对可能改变***执行流程的地方进行检测(或验证),就可以检测(或阻止)攻击。为此,必须对***中改变***控制流程的间接call指令、ret指令和中断流程进行保护。
本发明的核心思想是以QEMU虚拟机管理器为平台,使用QEMU虚拟机管理器运行操作***内核进行检测或验证。由于QEMU基于二进制指令翻译技术实现,***内核的每一条指令都会在QEMU虚拟机管理器中翻译运行,QEMU能够对虚拟机内核执行的每一条指令进行干涉(或介入)。通过对QEMU虚拟机管理器的功能模块进行修改,遍历检测操作***内核中每一条指令,从中识别ret指令、间接call指令和中断的翻译方式,然后记录这些指令的跳转目标地址,通过将记录信息与合法信息进行对比,就可以实现对代码重用型攻击的检测。操作***运行在QEMU启动的虚拟机上,而攻击发生在操作***上,攻击者不会妨碍QEMU的运行;在QEMU中进行检测不用修改***内核代码,也就是对任意操作***,都不需要重新编译就能进行检测。同时,QEMU是一款开源代码的软件,不需要进行大量的代码改动,只需要对QEMU当中关键的地方加入处理代码就能完成对代码重用型攻击的检测。
针对跳转目标地址,因为目标地址的值是在***运行时动态生成并且是变化的,在QEMU进行动态翻译的时候可以进行记录。具体来说,遵照***中函数调用的流程,当执行间接call指令调用一个函数时,会跳转到下一个QEMU翻译块继续执行,此时翻译块的首地址即是跳转指令的目的地址,从而就能记录间接call指令调用的函数的首地址。同理,ret指令在执行之后也会跳转到下一个翻译块执行指令执行流程,用同样的方式可以记录ret指令的返回地址。
将跳转指令的目标地址综合考虑,本发明需要对***中的间接call指令、ret指令的跳转目标地址进行记录,以便后续进行合法性判断;并对中断发生时压入栈中的中断返回地址和中断实际返回时使用的返回地址进行对比验证,以判断是否发生了攻击。
对照图1,本发明详细的操作步骤如下:
预处理步骤
a)创建临时文件temp_file,使用***自带的代码反汇编命令(比如objdump),将操作***内核镜像文件中的内容输出到temp_file文件中;
b)创建文件func_addr_file,将temp_file文件中所有的函数入口地址记录到文件func_addr_file中;
c)创建文件ret_addr_file,将temp_file文件中所有有效的函数返回地址记录在文件ret_addr_file中(每个有效的返回地址都指向紧挨着某个call指令后面的那条指令)。
基于QEMU的跳转指令目标地址的记录和中断流程验证步骤
d)使用QEMU启动虚拟机内核,读取内核指令进行翻译执行;
在QEMU翻译指令的阶段,QEMU并非以单条指令为单位进行翻译,翻译过程分为两步,第一步先将整个***指令流程以跳转指令为界限进行划分,将整个指令流程划分为不同的指令块,叫做翻译块。这样,每个翻译块都是以一个跳转指令作为结尾,这样的特性使得对地址的获取有了一定的特性。指令流程被分割为翻译块后,QEMU以翻译块作为翻译单元;第二步就是对翻译块中的每一条指令进行翻译。
e)在QEMU的从客户机指令到主机指令的翻译阶段,取得内核指令中的一条指令I,在翻译之前,首先判断是否发生了中断,如果发生了中断,则执行步骤i);
f)通过读取指令的操作码,判断指令I的类型:如果I是间接call指令则执行步骤g),如果I是ret指令则执行步骤h),否则执行步骤j);
g)对间接call指令I进行如下操作:
g1)若call_addr.out文件不存在,则创建记录间接call指令的目标地址的文件call_addr.out;
g2)在翻译间接call指令I时,将call_flag赋值为1;
步骤g2)中为每个间接call指令在翻译时添加标志以表示间接call指令正在被翻译,每次翻译间接call指令时call_flag都被赋值为1;
g3)在翻译块继续执行下一块翻译块之前,判断是否发生中断,如果发生中断,则跳转到中断处理函数中判断call_flag是否为1,如果是,则将中断处理时压栈的返回地址记录在文件call_addr.out中(此时中断压栈返回地址即为间接call指令的跳转目的地址),然后将call_flag赋值为0,跳转到步骤g5);
步骤g3)中之所以需要判断中断的发生,是因为QEMU在进行动态二进制翻译时,并不是随时都能进行中断,由于翻译需要使用的翻译块分块会非常小,所以QEMU在判断中断时会在每一个翻译块开始翻译时进行中断发生的判断,所以在这里进行跳转指令目标地址的判断需要考虑中断发生的可能性;
g4)在QEMU翻译下一个翻译块之前,判断call_flag是否为1,如果为1,则将翻译块首地址记录在文件call_addr.out中,然后将call_flag赋值为0;
g5)跳转到步骤j);
h)对ret指令I进行如下操作:
h1)若ret_addr.out文件不存在,则创建记录ret指令的目标地址的文件ret_addr.out;
h2)在翻译ret指令I时,将ret_flag赋值为1;
步骤h2)中为每个ret指令在翻译时添加标志以表示ret指令正在被翻译,每次翻译ret指令时ret_flag都被赋值为1;
h3)在翻译块继续执行下一块翻译块之前,判断是否发生中断,如果发生中断,则跳转到中断处理函数中判断ret_flag是否为1,如果是,则将中断处理时压栈的返回地址记录在文件ret_addr.out中(此时中断压栈返回地址即ret指令的跳转目标地址),然后将ret_flag赋值为0,跳转到步骤h5);
这里进行中断发生的判断的原因和间接call指令一样。
h4)在QEMU翻译下一个翻译块之前,判断ret_flag是否为1,如果是,则将翻译块首地址记录在文件ret_addr.out中,然后将ret_flag赋值为0;
h5)跳转到步骤j);
i)对中断进行如下操作:
i1)若int_addr.out文件不存在,则创建文件int_addr.out;
i2)若没有自定义栈,则初始化栈int_addr,并将栈的空间设置为50,栈顶指针指向第一个位置;
i3)在执行中断函数之前需要将寄存器的值和上下文压栈,其中包括中断返回地址,首先进行判断自定义栈int_addr空间是否已满,如果未满,则将中断返回地址压入自定义栈int_addr,而后栈顶指针自加1;否则(int_addr空间已满)***报错;
i4)当中断函数执行完毕之后,***调用中断返回函数来返回发生中断的地方继续执行,将调用中断处理函数时栈顶记录的中断返回地址弹出,同时将记录在自定义栈int_addr中的中断返回地址取出,判断中断返回函数使用的返回地址和自定义栈int_addr中记录的返回地址是否一致;如果两者不一致,则可知中断流程中的返回地址被篡改,报告发生了攻击,并将两个不同的返回地址输出到文件int_addr.out中;
i5)跳转到步骤f);
j)如果操作***指令集中还有未处理的指令,返回步骤e),开始下一条指令的处理;否则指令翻译阶段结束。
跳转指令目标地址验证步骤
k)在指令翻译的同时,对QEMU记录的跳转指令的目标地址进行验证,检测是否发生了攻击:
k1)对间接call指令目标地址的验证:读取call_addr.out中的每一个新增的跳转目标地址,验证其是否是func_addr_file文件中的函数入口地址,如果不是,则报告发生了攻击;
k2)对ret指令目标地址的验证:读取ret_addr.out中的每一个新增的返回目标地址,验证其是否是ret_addr_file文件中的有效函数返回地址,如果不是,则报告发生了攻击。
本发明的性能效果可以通过以下实验进一步说明:
实验条件:
将本发明实现到QEMU虚拟机管理器中。本发明利用QEMU1.5.0版本对Linux3.11.1版本的内核进行代码重用型攻击的检测,通过修改QEMU的源代码实现该功能。
实验内容:
选用性能测试工具UnixBench,分别对原始QEMU启动***内核和添加了本发明功能的QEMU启动***内核进行性能测试,以得出本发明所带来的性能损失。各测试三次,求平均值。
结果分析:
基于UnixBench的性能测试结果表明,本所带来的性能损失约为4%。总体上,本发明具有性能高效的优点。
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。

Claims (4)

1.一种基于QEMU的内核级代码重用型攻击检测方法,其特征在于,包括以下步骤:
1)预处理
1.1)创建一个空的临时文件temp_file,并将操作***内核镜像文件中的内容输出到临时文件temp_file中;
1.2)创建一个记录内核中函数入口地址的文件func_addr_file,从temp_file文件中依次取得内核所有函数的入口地址,并将这些地址写入func_addr_file文件中;
1.3)创建一个记录内核中函数返回地址的文件ret_addr_file,从temp_file文件中依次取得***中所有有效的函数返回地址,并将这些地址写入ret_addr_file文件中;
2)基于QEMU的跳转指令目标地址的记录和中断流程验证
3)跳转指令目标地址验证
在指令翻译的同时,对QEMU记录的跳转指令的目标地址进行验证,检测是否发生了攻击。
2.根据权利要求1所述的基于QEMU的内核级代码重用型攻击检测方法,其特征在于,所述步骤2)中,基于QEMU的跳转指令目标地址的记录和中断流程验证的具体方法如下:
2.1)使用QEMU启动虚拟机内核;
2.2)在QEMU的从客户机指令到主机指令的翻译阶段,取得内核指令中的一条指令I;
2.3)在对指令I进行翻译之前,首先判断是否发生了中断事件,如果发生了中断,则跳转到步骤2.7);
2.4)判断指令I的类型:如果I是间接call指令,则跳转到步骤2.5);如果I是ret指令,则跳转到步骤2.6);否则跳转到步骤2.8);
2.5)对间接call指令I进行如下操作:
2.5a)若文件call_addr.out不存在,则创建记录间接call指令目标地址的文件call_addr.out;
2.5b)在翻译间接call指令I时,对其标志call_flag赋值为1;
2.5c)若此时发生中断,进入中断处理函数时判断call_flag是否为1,若是,则记录中断处理时压栈的返回地址到call_addr.out文件中,然后将call_flag赋值为0,跳转到步骤2.5e);
2.5d)QEMU跳转到间接call指令的目标地址进行翻译,在翻译之前判断标志call_flag是否为1,若是,则记录翻译块首地址到call_addr.out文件中,即为间接call指令的目标地址,然后将call_flag赋值为0;
2.5e)跳转到步骤2.8);
2.6)对ret指令I进行如下操作:
2.6a)若文件ret_addr.out不存在,则创建记录ret指令的目标地址的文件ret_addr.out;
2.6b)在翻译ret指令I时,对其标志ret_flag赋值为1;
2.6c)若此时发生中断,进入中断处理函数时判断ret_flag是否为1,若是,则记录中断处理时压栈的返回地址到ret_addr.out文件中,然后将ret_flag赋值为0,跳转到步骤2.6e);
2.6d)QEMU跳转到ret指令的目标地址进行翻译,在翻译之前判断ret_flag是否为1,若是,则记录翻译块首地址到ret_addr.out文件中,即为ret指令的目标地址,然后将ret_flag赋值为0;
2.6e)跳转到步骤2.8);
2.7)对中断进行如下操作:
2.7a)若int_addr.out文件不存在,则创建记录中断信息的文件int_addr.out;
2.7b)若无自定义栈,则初始化栈int_addr,栈顶指针指向第一个位置;
2.7c)在QEMU处理中断的函数中将***压栈的返回地址同时压入自定义栈int_addr中;
2.7d)当QEMU执行中断程序完毕后,调用中断返回指令时,将自定义栈int_addr中的返回地址出栈,与中断返回指令的返回地址相比较,如果二者不同,则报告发生了攻击,并将对比结果不同的返回地址记录到int_addr.out文件中;
2.7e)跳转到步骤2.4);
2.8)如果操作***内核还有未处理的指令,返回步骤2.2),开始下一条指令的处理;否则结束。
3.根据权利要求2所述的基于QEMU的内核级代码重用型攻击检测方法,其特征在于,所述步骤2.4)中,指令I的类型是QEMU通过识别二进制指令的操作码进行判断的。
4.根据权利要求1或2或3所述的基于QEMU的内核级代码重用型攻击检测方法,其特征在于,所述步骤3)中,跳转指令目标地址验证步骤具体如下:
3.1)读取call_addr.out中的每个新增的目标地址,验证其是否是func_addr_file文件中的函数入口地址,如果不是,则报告发生了攻击;
3.2)读取ret_addr.out中的每个新增的目标地址,验证其是否是ret_addr_file文件中的有效函数返回地址,如果不是,则报告发生了攻击;
3.3)返回到3.1)。
CN201510574168.8A 2015-09-10 2015-09-10 一种基于qemu的内核级代码重用型攻击检测方法 Active CN105260659B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510574168.8A CN105260659B (zh) 2015-09-10 2015-09-10 一种基于qemu的内核级代码重用型攻击检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510574168.8A CN105260659B (zh) 2015-09-10 2015-09-10 一种基于qemu的内核级代码重用型攻击检测方法

Publications (2)

Publication Number Publication Date
CN105260659A true CN105260659A (zh) 2016-01-20
CN105260659B CN105260659B (zh) 2018-03-30

Family

ID=55100343

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510574168.8A Active CN105260659B (zh) 2015-09-10 2015-09-10 一种基于qemu的内核级代码重用型攻击检测方法

Country Status (1)

Country Link
CN (1) CN105260659B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107506638A (zh) * 2017-08-09 2017-12-22 南京大学 一种基于硬件机制的内核控制流异常检测方法
CN109471668A (zh) * 2018-11-20 2019-03-15 南方电网科学研究院有限责任公司 跨平台显卡固件翻译执行方法、装置、设备及可读介质
CN109508536A (zh) * 2017-09-15 2019-03-22 华为技术有限公司 一种篡改程序流攻击的检测方法和装置
CN110457046A (zh) * 2019-08-22 2019-11-15 广州小鹏汽车科技有限公司 混合指令集程序的反汇编方法、装置、存储介质及终端
CN111552959A (zh) * 2020-06-18 2020-08-18 南方电网科学研究院有限责任公司 一种程序特征序列生成方法和装置
CN112100686A (zh) * 2020-08-28 2020-12-18 浙江大学 一种基于arm指针验证的内核代码指针完整性保护方法
CN112426714A (zh) * 2020-12-16 2021-03-02 广州繁星互娱信息科技有限公司 直播对战画面显示方法、装置、终端及存储介质
CN113076136A (zh) * 2021-04-23 2021-07-06 中国人民解放军国防科技大学 一种面向安全防护的分支指令执行方法和电子装置
CN113312088A (zh) * 2021-06-29 2021-08-27 北京熵核科技有限公司 一种程序指令的执行方法及装置
CN113641995A (zh) * 2021-07-08 2021-11-12 中国人民解放军战略支援部队信息工程大学 一种面向Cisco IOS的ROP攻击定位与代码捕获方法
CN115758164A (zh) * 2022-10-12 2023-03-07 清华大学 二进制代码相似度检测方法、模型训练方法及装置
CN116501387A (zh) * 2023-06-16 2023-07-28 龙芯中科技术股份有限公司 一种指令跳转方法、装置、电子设备及可读存储介质
CN117891624A (zh) * 2024-01-17 2024-04-16 北京火山引擎科技有限公司 基于虚拟化设备的应用间通信方法、装置及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102012987A (zh) * 2010-12-02 2011-04-13 李清宝 自动二进制恶意代码行为分析***
CN102662830A (zh) * 2012-03-20 2012-09-12 湖南大学 一种基于动态二进制翻译框架的代码复用攻击检测***

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102012987A (zh) * 2010-12-02 2011-04-13 李清宝 自动二进制恶意代码行为分析***
CN102662830A (zh) * 2012-03-20 2012-09-12 湖南大学 一种基于动态二进制翻译框架的代码复用攻击检测***

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
刘智 等: "一种有效的Return-Oriented-Programming攻击检测方法", 《小型微型计算机***》 *
刘超: "基于动态二进制翻译框架的代码复用攻击检测与防御", 《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》 *
陈林博 等: "利用返回地址保护机制防御代码复用类攻击", 《计算机科学》 *

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107506638A (zh) * 2017-08-09 2017-12-22 南京大学 一种基于硬件机制的内核控制流异常检测方法
CN109508536A (zh) * 2017-09-15 2019-03-22 华为技术有限公司 一种篡改程序流攻击的检测方法和装置
CN109471668A (zh) * 2018-11-20 2019-03-15 南方电网科学研究院有限责任公司 跨平台显卡固件翻译执行方法、装置、设备及可读介质
CN109471668B (zh) * 2018-11-20 2021-11-26 南方电网科学研究院有限责任公司 跨平台显卡固件翻译执行方法、装置、设备及可读介质
CN110457046B (zh) * 2019-08-22 2023-05-12 广州小鹏汽车科技有限公司 混合指令集程序的反汇编方法、装置、存储介质及终端
CN110457046A (zh) * 2019-08-22 2019-11-15 广州小鹏汽车科技有限公司 混合指令集程序的反汇编方法、装置、存储介质及终端
CN111552959A (zh) * 2020-06-18 2020-08-18 南方电网科学研究院有限责任公司 一种程序特征序列生成方法和装置
CN111552959B (zh) * 2020-06-18 2023-08-29 南方电网科学研究院有限责任公司 一种程序特征序列生成方法和装置
CN112100686A (zh) * 2020-08-28 2020-12-18 浙江大学 一种基于arm指针验证的内核代码指针完整性保护方法
CN112100686B (zh) * 2020-08-28 2022-04-08 浙江大学 一种基于arm指针验证的内核代码指针完整性保护方法
CN112426714A (zh) * 2020-12-16 2021-03-02 广州繁星互娱信息科技有限公司 直播对战画面显示方法、装置、终端及存储介质
CN113076136A (zh) * 2021-04-23 2021-07-06 中国人民解放军国防科技大学 一种面向安全防护的分支指令执行方法和电子装置
CN113312088A (zh) * 2021-06-29 2021-08-27 北京熵核科技有限公司 一种程序指令的执行方法及装置
CN113641995A (zh) * 2021-07-08 2021-11-12 中国人民解放军战略支援部队信息工程大学 一种面向Cisco IOS的ROP攻击定位与代码捕获方法
CN115758164A (zh) * 2022-10-12 2023-03-07 清华大学 二进制代码相似度检测方法、模型训练方法及装置
CN116501387A (zh) * 2023-06-16 2023-07-28 龙芯中科技术股份有限公司 一种指令跳转方法、装置、电子设备及可读存储介质
CN116501387B (zh) * 2023-06-16 2023-09-12 龙芯中科技术股份有限公司 一种指令跳转方法、装置、电子设备及可读存储介质
CN117891624A (zh) * 2024-01-17 2024-04-16 北京火山引擎科技有限公司 基于虚拟化设备的应用间通信方法、装置及电子设备

Also Published As

Publication number Publication date
CN105260659B (zh) 2018-03-30

Similar Documents

Publication Publication Date Title
CN105260659A (zh) 一种基于qemu的内核级代码重用型攻击检测方法
KR102306568B1 (ko) 컴퓨터 시스템의 제어 흐름 무결성의 프로세서 트레이스 기반 집행
KR100942795B1 (ko) 악성프로그램 탐지장치 및 그 방법
EP3779745B1 (en) Code pointer authentication for hardware flow control
CN102592082B (zh) 通过操作码随机化的安全
KR101691719B1 (ko) 프로시저로부터의 리턴-타겟 제한적 리턴 명령어들, 프로세서들, 방법들 및 시스템들
CN109918903B (zh) 一种基于llvm编译器的程序非控制数据攻击防护方法
US20090271867A1 (en) Virtual machine to detect malicious code
JP2012501028A (ja) コード解析の発見的方法
CN109858253B (zh) 基于lbr的栈缓冲区溢出攻击防御方法
CN107330323B (zh) 一种基于Pin工具的ROP及其变种攻击的动态检测方法
CN112805709B (zh) 数据处理装置和数据处理方法
CN107577925A (zh) 基于双重ARM指令虚拟的Android应用程序保护方法
CN107194246A (zh) 一种用于实现动态指令集随机化的cpu
CN110414218B (zh) 内核检测方法、装置、电子设备及存储介质
US10885184B1 (en) Rearranging executables in memory to prevent rop attacks
Park et al. Microarchitectural protection against stack-based buffer overflow attacks
KR102425474B1 (ko) BinTyper: C++ 프로그램 바이너리 대상의 타입 컨퓨전 버그 탐지
KR101421630B1 (ko) 코드 인젝션된 악성코드 탐지 시스템 및 방법
CN111898120A (zh) 控制流完整性保护方法及装置
Wang et al. IRePf: An Instruction Reorganization Virtual Platform for Kernel Stack Overflow Detection
CN110826066B (zh) 代码摘要的生成方法、装置和计算机存储介质
CN111177805B (zh) 一种提高处理器运行安全性的方法、装置及cpu芯片
CN116401668B (zh) 基于函数分组动态激活的代码重用攻击防御***及方法
CN113434247B (zh) 一种java卡虚拟机的安全防护方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant