CN110647748A - 一种基于硬件特性的代码复用攻击检测系统及方法 - Google Patents

一种基于硬件特性的代码复用攻击检测系统及方法 Download PDF

Info

Publication number
CN110647748A
CN110647748A CN201910850422.0A CN201910850422A CN110647748A CN 110647748 A CN110647748 A CN 110647748A CN 201910850422 A CN201910850422 A CN 201910850422A CN 110647748 A CN110647748 A CN 110647748A
Authority
CN
China
Prior art keywords
function
breakpoint
program
module
hardware
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
CN201910850422.0A
Other languages
English (en)
Other versions
CN110647748B (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.)
Beijing University of Technology
Beijing Institute of Technology BIT
Original Assignee
Beijing University of Technology
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 Beijing University of Technology filed Critical Beijing University of Technology
Priority to CN201910850422.0A priority Critical patent/CN110647748B/zh
Publication of CN110647748A publication Critical patent/CN110647748A/zh
Application granted granted Critical
Publication of CN110647748B publication Critical patent/CN110647748B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明属于计算机软件技术领域,公开了一种基于硬件特性的代码复用攻击检测系统及方法;包括内核模块、插桩模块、路径分析模块、断点选择器模块。内核模块具有系统调用拦截器、断点设置功能、断点拦截器的功能,插桩模块用于辅助拦截库函数调用功能,路径分析模块具有路径分析与验证的功能,断点选择器模块通过插装工具的二进制程序动态分析功能来实现。传统动态检测的方法性能开销较大、能够被新型的代码复用攻击所绕过。本发明结合程序分析技术和相关硬件特性提出一种新的高效检测程序控制流异常的方法,不需要修改目标程序源代码(或二进制代码),能够有效检测较为复杂的代码复用攻击,其性能开销较小,易于在实际环境中部署。

Description

一种基于硬件特性的代码复用攻击检测系统及方法
技术领域
本发明属于计算机软件技术领域,尤其涉及一种基于硬件特性的代码复用攻击检测系统及方法。
背景技术
目前,业内常用的现有技术是这样的:随着软件和网络的发展,控制流劫持攻击已经越来越受到攻击者们的重视。控制流劫持攻击的本质是现代计算机没有明确区分代码和数据,但是现在明显不可能再重新设计一套计算机架构,只能在现有的基础上设计防护手段。随着系统的更新优化,现代操作系统本身的漏洞已经减少了,但是即使操作系统能够尽可能的保证自身是暂时安全的,也无法保证安装在其上的软件是安全的。所以需要一些技术,即使漏洞存在,也使攻击者无法利用。近代操作系统在此思路上进行了大量的研究,实现并应用了很多保护方案,其中最著名的便是微软的DEP+ASLR保护。当年此保护方式在很长一段时间给黑客们带来了很多困扰,功绩赫然。但是攻防之间的对抗是永远不会停息的,为了突破微软的DEP+ASLR保护,一些新型的控制流劫持攻击技术被应用,代码复用攻击就是当前非常流行的一种。与传统的代码注入攻击不同,代码复用攻击不需要引入新的外部代码,仅利用程序自身或者动态链接库中已有代码进行攻击来执行各种恶意操作。近年来随着代码复用攻击技术的越来越成熟,DEP+ASLR的保护已经不能再满足安全的要求,急需一种新型的安全机制来保护计算机的安全。微软在windows10上采用了新型的CFG技术,是一种编译器和操作系统相结合的防护手段,目的在于防止不可信的间接调用,但是由于其本身仍有一些局限性,很快便被黑客们找到了利用方法,而微软也在不断的更新和完善CFG保护。其实早在十年前,便有人提出了控制流完整性(简称CFI)保护机制,其被认为是最有前途的技术之一,但是这些传统CFI动态检测方法,要么性能开销较大,要么可能被新型代码复用攻击所绕过。
综上所述,现有技术存在的问题是:传统CFI动态检测方法,要么性能开销较大(例如需要对每一个分支跳转进行检查),未检测程序路径信息,能够被新型代码复用攻击(比如COOP攻击)所绕过安全检测。
发明内容
针对现有技术存在的问题,本发明提供了一种基于硬件特性的代码复用攻击检测系统及方法。
本发明是这样实现的,一种基于硬件特性的代码复用攻击检测系统,所述基于硬件特性的代码复用攻击检测系统包括:
内核模块,用于敏感函数调用拦截器、分支记录功能、断点设置功能、断点拦截器;
插桩模块,用于辅助内核模块拦截库函数调用;
路径分析模块,用于路径分析与验证;
断点选择器模块,通过与内核模块通信设置硬件断点。
进一步,所述内核模块还包括:断点断拦截单元、敏感库函数拦截单元、系统函数调用拦截单元、缓存单元、路径监控单元、断点设置单元;
所述插桩模块还包括:动态插桩组件;
所述路径分析模块还包括:路径分析器;
所述断点选择器模块还包括:断点选择器。
进一步,所述基于硬件特性的代码复用攻击检测系统包括:
离线分析模块,用于离线静态分析和离线动态分析;
在线保护模块,用于监控目标程序的行为;当敏感库函数(或者系统函数)被调用时,监控模块将检测目标程序的执行路径信息(LBR中记录的分支信息与CFG信息进行比较)以判断该函数调用是否合法。
本发明的另一目的在于提供一种实现所述基于硬件特性的代码复用攻击检测系统的基于硬件特性的代码复用攻击检测方法,所述基于硬件特性的代码复用攻击检测方法包括以下步骤:
步骤一,从目标程序的二进制代码中提取基本的控制流图CFG(ControlFlowGraph),然后基于该CFG构建针对间接转移指令的目标地址集合;
步骤二,利用二进制插桩工具(比如Dyninst)在目标程序的每一个基本块前插入回调函数以记录基本块之间的控制流转换操作,分析出易于被攻击的长执行路径,从而确定断点候选集;
步骤三,当离线信息获取以后,系统进入在线保护阶段,负责监控目标程序的行为,当敏感函数(或者系统调用)被调用时,监控模块将检测程序上下文执行环境以判断该函数调用是否合法。
进一步,所述基于硬件特性的代码复用攻击检测系统的基本工作流程包括:
1)离线分析,包括:离线静态分析和离线动态分析;离线静态分析从目标程序的二进制代码中提取基本的CFG,然后基于该CFG构建针对间接转移指令的目标地址集合;对于间接调用指令,限定目标地址为函数的入口地址,对函数的类型和返回值进行静态分析;对于间接跳转指令,限定目标地址为函数入口地址或函数内部的某一条指令;对于返回指令,限定其目标地址为调用指令的下一条指令的地址;如果目标函数是通过直接调用指令调用的,则返回地址应该限定为直接调用指令的下一条指令的地址;
离线动态分析从程序的执行路径中寻找合适的断点,利用二进制插桩工具在目标程序的每一个基本块前插入回调函数以记录基本块之间的控制流转换操作,分析出易于被攻击的长执行路径,从而确定断点候选集;
2)在线保护,利用内核模块对程序动态运行时的轨迹和离线分析的控制流信息进行比较,当敏感API函数(或系统调用函数)被调用时或硬件断点被触发时,内核中的监控模块将分析程序的执行路径信息以判断该函数调用是否合法;
利用插桩的方法对敏感库函数调用进行拦截,利用内核HOOK技术对系统函数调用进行拦截。
监控程序被调用的时机:
1、敏感函数(系统调用函数)被调用;2、硬件断点被触发;
主程序调用库函数时、进行系统调用或触发硬件断点时将产生中断或异常从而被内核空间中的监控模块所截获,内核中的监控模块将利用离线信息和LBR硬件特性判断该函数调用的合法性。
进一步,LBR寄存器中记录程序最近执行的间接转移指令的源地址和目的地址,通过比较LBR寄存器中信息与离线分析所获得的路径信息,判断该函数的调用是否符合预期;利用硬件断点机制动态增加监控模块检测目标程序执行路径的时机,在调用敏感库函数(和系统调用)之前的执行路径上随机插入硬件断点,使监控模块能够尽可能多地检测敏感库函数调用(和系统调用)前的控制流转换操作;
监控模块检测到LBR中控制流间接转换操作与由离线分析推导出来的控制流图中的操作不一致时,将产生报警信息,对于敏感库函数(或系统函数)的非预期调用,监控模块将中止目标程序的执行。
本发明的另一目的在于提供一种实现所述基于硬件特性的代码复用攻击检测方法的计算机程序。
本发明的另一目的在于提供一种实现所述基于硬件特性的代码复用攻击检测方法的信息数据处理终端。
本发明的另一目的在于提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行所述的基于硬件特性的代码复用攻击检测方法。
综上所述,本发明的优点及积极效果为:
1、利用LBR和硬件断点机制提高了代码复用攻击检测的效率和安全性;
2、与现有软硬件系统兼容,能够有效检测较为复杂的代码复用攻击,其性能开销较小,易于在实际环境中部署。
本发明通过利用硬件的分支记录功能,解决了传统控制流完整性效率低下的问题;通过插桩技术,时刻掌控LBR的开启与关闭,有效的解决了LBR中寄存器数量有限的问题,并且通过硬件断点技术,增加执行路径验证的频率,进一步减少被攻击者篡改目标程序控制流的可能性。
附图说明
图1是本发明实施例提供的基于硬件特性的代码复用攻击检测系统结构示意图;
图2是本发明实施例提供的硬件断点触发后的流程图;
图3是本发明实施例提供的基于硬件特性的代码复用攻击检测系统原理示意图;
图中:1、内核模块;2、插桩模块;3、路径分析模块;4、断点选择器模块。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
下面结合附图对本发明的应用原理做详细描述。
如图1所示,本发明实施例提供的基于硬件特性的代码复用攻击检测系统包括内核模块1、插桩模块2、路径分析模块3、断点选择器模块4。
内核模块1,用于系统调用拦截器、分支记录功能、断点设置功能、断点拦截器。
插桩模块2通过插桩使得内核模块能够拦截敏感API函数的调用,在执行库函数之前关闭硬件LBR机制和在库函数执行完后打开LBR机制,以监控目标程序内部执行路径,从而跳过对库函数内部的监控。
路径分析模块3,用于路径分析与验证。
断点选择器模块4,通过与内核模块通信设置硬件断点。
内核模块1还包括:访问点断拦截单元、系统调用拦截单元、缓存单元、路径监控单元、断电设置单元。
插桩模块2还包括:动态插桩组件(对二进制程序进行插桩)。
路径分析模块3还包括:路径分析器。
断点选择器模块4还包括:断点选择器。
如图2所示,本发明实施例提供的基于硬件特性的代码复用攻击检测方法包括以下步骤:
S201:从目标程序的二进制代码中提取基本的CFG(Control Flow Graph控制流图),然后基于该CFG构建针对间接转移指令的目标地址集合;
S202:利用二进制插桩工具(比如Dyninst)在目标程序的每一个基本块前插入回调函数以记录基本块之间的控制流转换操作,通过动态运行程序分析出易于被攻击的长执行路径,从而确定硬件断点候选集;
S203:当离线信息获取以后,系统进入在线保护阶段,负责监控目标程序的行为,当敏感API函数(或系统调用函数)被调用或硬件断点被触发时,监控模块将检测程序的控制流以判断该函数调用是否合法。
如图3所示,本发明实施例提供的基于硬件特性的代码复用攻击检测系统的基本工作流程分为两步:1)离线分析和2)在线保护(主要利用内核模块和LBR硬件机制比较程序动态运行时的轨迹是否和离线分析的控制流信息是否一致)。第一步包括两个子步骤:离线静态分析和离线动态分析。离线静态分析主要是从目标程序的二进制代码中提取基本的CFG(Control Flow Graph控制流图),然后基于该CFG构建针对间接转移指令的目标地址集合。需要考虑三类间接转换指令的目标地址:1)间接调用指令、2)间接跳转指令和3)返回指令。对于间接调用指令,本发明限定其目标地址为函数的入口地址。为了精确识别间接调用的目标值,需要对函数的类型和返回值进行静态分析。对于间接跳转指令,限定其目标地址为函数入口地址或函数内部的某一条指令。对于返回指令,本发明限定其目标地址为调用指令的下一条指令的地址。如果目标函数是通过直接调用指令调用的,则返回地址应该限定为直接调用指令的下一条指令的地址。
离线动态分析的目的是从程序的执行路径中寻找合适的断点。为此,本发明可以利用二进制插桩工具(比如Dyninst)在目标程序的每一个基本块前插入回调函数以记录基本块之间的控制流转换操作。通过分析程序基本块级的执行轨迹,本发明可以构建动态的CFG。
由于动态分析的局限性,动态构建的CFG仅是静态构建的CFG中很小的一部分。不过,动态CFG能够精确描述程序的执行路径。基于动态CFG,本发明可以从中选择断点,并保证其在程序运行时被命中。为了增加动态分析对程序代码执行的覆盖率,本发明应用动态符号执行技术提取更完整的动态CFG。
当离线信息获取以后,系统进入在线保护阶段。该阶段主要负责监控目标程序的行为。当敏感库函数(或者系统函数)被调用时,监控模块将检测程序执行路径以判断该函数调用是否合法。
利用插桩的方法对敏感库函数调用进行拦截,利用内核HOOK的方法对系统函数调用进行拦截,利用内核模块设置硬件断点。
监控程序被调用的时机:
1、敏感函数被调用;2、系统函数被调用3、硬件断点被触发。
LBR机制是Intel提供的一组用于记录和追踪程序最近的若干次跳转信息的循环寄存器组,这些寄存器的数量与Intel处理器的微架构相关,在早几年的Haswell架构中有16个这样的寄存器,也就是说可以记录程序最近的16条跳转指令的信息(包括从哪跳转过来的,将要跳转到哪去),而在最新的Skylake架构中有32个。
为了使监控模块能拦截目标程序对敏感库函数的调用,采用动态插桩的方法使其自陷到内核中。此时,监控模块将利用离线信息和LBR硬件特性判断该函数调用的合法性。具体而言,LBR寄存器中记录了程序最近执行的间接转移指令的源地址和目的地址。通过比较LBR寄存器中信息与离线分析所获得的路径信息,可以判断该函数的调用是否符合预期。
由于LBR寄存器数目的局限性,LBR机制无法记录目标程序中所有的控制流间接转移操作,从而无法完整地验证目标程序的执行路径。针对这一问题,本发明利用硬件断点机制动态增加监控模块检测目标程序执行路径的时机。其基本思路是在调用敏感函数(和系统函数)之前的执行路径上随机插入硬件断点,从而使监控模块能够尽可能多地检测敏感函数(和系统函数)调用前的控制流转换操作。
如果监控模块检测到LBR中控制流间接转换操作与由离线分析推导出来的控制流图中的操作不一致时,将产生报警信息。对于敏感函数(和系统函数)的非预期调用,监控模块将中止目标程序的执行。
下面结合实施例对本发明的应用原理做进一步描述。
在本发明的优选实施例中:内核模块的信息处理过程包括:
(1)调用拦截器,对函数调用进行hook,当一个监控程序执行有潜在危险的系统调用(例如:mprotect函数,mmap函数和execve函数)时,首先进入的是hook后的程序,程序将发送LBR数据给用户空间的分析器。如果分析器返回为真,证明验证成功,内核模块存储会将这个路径的hash进行缓存,然后按程序的原始流程执行系统调用。如果再次执行相同路径,内核将直接进行路径的hash验证,如果匹配失败,才会将信息发送给静态分析器,该缓存方式从很大程度上的降低了性能开销。如果静态分析返回一个错误的结果,即验证失败,内核将终止程序并报告控制流异常的确切位置。
(2)分支记录,内核模块提供一个分支记录功能,对外提供一个接口,用于开启和关闭LBR分支记录功能,记录程序间接跳转信息。(3)硬件断点设置,通过注册一个虚拟驱动设备,提供一个与用户程序交互的接口;通过该接口可直接对硬件断点寄存器进行赋值,从而对目标程序设置硬件断点。
(4)硬件断点拦截器,被监控的应用程序在触发断点后,触发异常处理流程,调用中断向量号为1的中断处理程序;内核模块对中断向量1号处理函数地址进行hook。当硬件断点触发,程序进入内核,首先进入hook后的函数,函数根据程序是否是监控的程序,是否是一个持续硬件断点,提供不同的功能。当然,如果是监控的应用程序,调用验证功能,通过hash缓存或者利用分析器分析LBR记录的控制流信息,判断程序在断点命中之前的执行路径是否正常。
在本发明的优选实施例中:插桩模块的信息处理过程包括:
(1)加载器,在开始执行目标程序之前,利用操作系统的预先加载机制,插入目标代码与内核模块进行交互,从而能根据情况开启和关闭LBR机制。
(2)重写,动态插桩模块利用Dyninst插桩工具来重新改写目标程序调用库函数操作,具体通过插入自陷代码保证库函数运行前向内核模块发送LBR关闭请求,在库函数调用返回后发送LBR启用请求,从而使内核模块开启LBR机制,以记录程序执行路径。
在本发明的优选实施例中:路径分析模块的信息处理过程包括:
(3)路径分析与验证,内核会传递给路径分析器一个需要验证的路径,路径信息记录在LBR寄存器中,包含相应的间接调用、间接跳转和返回操作;为了验证它是否正常,分析器执行一个深度优先搜索算法在程序控制流图上进行路径匹配。如果匹配成功,则证明程序控制流正常;否则,说明程序控制流异常。
在本发明的优选实施例中:断点选择器模块,通过Dyninst工具的二进制程序分析功能来实现。在此前的步骤中,虽然在敏感函数调用后暂时关闭了LBR记录功能,减少了LBR中记录的非法执行路径被覆盖的可能性,但是对于一些较长的执行路径仍然存在被覆盖的可能性。针对这一问题,本发明引入了硬件断点机制。通过利用Dyninst插装工具对可执行文件进行动态分析,在程序的主模块中寻找较长执行路径,并从对应的断点候选集中选取控制流转移指令,将其地址传递给内核模块的断点设置器以设置相应硬件断点。通过这种方式能增加对程序长路径的检查频率,从而能有效增强对代码复用攻击的检测能力。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘SolidState Disk(SSD))等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种基于硬件特性的代码复用攻击检测系统,其特征在于,所述基于硬件特性的代码复用攻击检测系统包括:
内核模块,用于系统调用拦截器、开启和关闭分支记录功能、断点设置功能、断点拦截器;
插桩模块,用于在目标函数中插入探针、使得目标函数在执行库函数之前关闭硬件LBR机制和在库函数执行完时打开硬件LBR机制;
路径分析模块,用于路径分析与验证;
断点选择器模块,通过与内核模块通信设置硬件断点。
2.如权利要求1所述的基于硬件特性的代码复用攻击检测系统,其特征在于,所述内核模块还包括:断点拦截单元、系统调用拦截单元、缓存单元、路径监控单元、断点设置单元;
所述插桩模块还包括:动态插桩组件;
所述路径分析模块还包括:路径分析器;
所述断点选择器模块还包括:断点选择器。
3.如权利要求1所述的基于硬件特性的代码复用攻击检测系统,其特征在于,所述基于硬件特性的代码复用攻击检测系统包括:
离线分析模块,用于离线静态分析和离线动态分析;
在线保护模块,用于监控目标程序的行为;当敏感库函数或系统函数被调用时或者硬件断点触发时,监控模块将检测程序上下文执行环境和离线信息以判断该函数调用是否合法;触发路径检测的事件有3种:敏感库函数调用、敏感系统函数调用;程序执行某一条指令导致硬件断点触发。
4.一种实现权利要求1所述基于硬件特性的代码复用攻击检测系统的基于硬件特性的代码复用攻击检测方法,其特征在于,所述基于硬件特性的代码复用攻击检测方法包括以下步骤:
步骤一,从目标程序的二进制代码中提取基本的控制流图CFG,然后基于该CFG构建针对间接转移指令的目标地址集合;
步骤二,利用二进制插桩工具在目标程序的每一个基本块前插入回调函数以记录基本块之间的控制流转换操作以确定断点设置的候选集;
步骤三,当离线信息获取以后,系统进入在线保护阶段,负责监控目标程序的行为,当敏感库函数、系统函数被调用时或者断点触发时候,监控模块将检测程序上下文执行环境以判断该函数调用是否合法。
5.如权利要求4所述的基于硬件特性的代码复用攻击检测方法,其特征在于,所述基于硬件特性的代码复用攻击检测系统的基本工作流程包括:
1)离线分析包括:离线静态分析和离线动态分析;离线静态分析从目标程序的二进制代码中提取基本的CFG,然后基于该CFG构建针对间接转移指令的目标地址集合;对于间接调用指令,限定目标地址为函数的入口地址,对函数的类型和返回值进行静态分析;对于间接跳转指令,限定目标地址为函数入口地址或函数内部的某一条指令;对于返回指令,限定其目标地址为调用指令的下一条指令的地址;如果目标函数是通过直接调用指令调用的,则返回地址应该限定为直接调用指令的下一条指令的地址;
离线动态分析的从程序的执行路径中寻找合适的断点,利用二进制插桩工具在目标程序的每一个基本块前插入回调函数以记录基本块之间的控制流转换操作,通过动态分析程序的控制流转换操作筛选易于被攻击的较长执行路径,确定可设置的断点候选集;
2)在线保护,利用内核模块比较程序动态运行时的轨迹是否和离线分析的控制流信息是否一致,当敏感函数或者系统函数被调用时,内核中的监控模块将分析程序上下文执行环境,判断LBR中记录的分支跳转信息是否在CFG中,以判断该函数调用是否合法;
利用插桩的方法对敏感库函数调用进行拦截;
监控程序被调用的时机:敏感函数被调用、硬件断点被触发;敏感函数包括库函数和系统调用函数;
主程序对库函数的调用、系统函数调用或断点命中时将被内核空间中的监控模块所截获,内核中的监控模块将利用离线信息和LBR硬件特性判断该函数调用的合法性。
6.如权利要求5所述的基于硬件特性的代码复用攻击检测方法,其特征在于,LBR寄存器中记录程序最近执行的间接转移指令的源地址和目的地址,通过比较LBR寄存器中信息与离线分析所获得的路径信息,判断该函数的调用是否符合预期,路径信息是否在CFG中;利用硬件断点机制动态增加监控模块检测目标程序执行路径的时机,在调用敏感库函数和系统调用函数之前的执行路径上随机插入硬件断点,使监控模块检测库函数调用和系统调用前的控制流转换操作;
监控模块检测到LBR中控制流间接转换操作与由离线分析推导出来的控制流图中的操作不一致时,将产生报警信息,对于敏感库函数和敏感系统调用的非预期调用,监控模块将中止目标程序的执行。
7.一种实现权利要求4~6任意一项所述基于硬件特性的代码复用攻击检测方法的计算机程序。
8.一种实现权利要求4~6任意一项所述基于硬件特性的代码复用攻击检测方法的信息数据处理终端。
9.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求4~6任意一项所述的基于硬件特性的代码复用攻击检测方法。
CN201910850422.0A 2019-09-10 2019-09-10 一种基于硬件特性的代码复用攻击检测系统及方法 Active CN110647748B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910850422.0A CN110647748B (zh) 2019-09-10 2019-09-10 一种基于硬件特性的代码复用攻击检测系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910850422.0A CN110647748B (zh) 2019-09-10 2019-09-10 一种基于硬件特性的代码复用攻击检测系统及方法

Publications (2)

Publication Number Publication Date
CN110647748A true CN110647748A (zh) 2020-01-03
CN110647748B CN110647748B (zh) 2021-04-20

Family

ID=68991794

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910850422.0A Active CN110647748B (zh) 2019-09-10 2019-09-10 一种基于硬件特性的代码复用攻击检测系统及方法

Country Status (1)

Country Link
CN (1) CN110647748B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112966258A (zh) * 2021-03-22 2021-06-15 西安电子科技大学 控制流完整性保护方法、系统、装置及可读存储介质
CN113778838A (zh) * 2020-06-09 2021-12-10 中国电信股份有限公司 二进制程序动态污点分析方法及装置
CN113779578A (zh) * 2021-09-13 2021-12-10 支付宝(杭州)信息技术有限公司 移动端应用的智能混淆方法和系统
CN114201359A (zh) * 2021-11-22 2022-03-18 南京邮电大学 一种基于普通函数和内核函数混合调用控制流图的智能主动软件防护方法
CN118211218A (zh) * 2024-03-25 2024-06-18 中国人民解放军61660部队 一种基于动态插桩的低开销后门行为监测方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105408911A (zh) * 2013-08-28 2016-03-16 英特尔公司 硬件和软件执行概况分析
CN107590385A (zh) * 2017-09-15 2018-01-16 湖南大学 一种硬件辅助抗代码复用攻击防御系统及方法
US20180349603A1 (en) * 2017-05-31 2018-12-06 Koichi Yamada System, Apparatus And Method For Instruction Level Behavioral Analysis Without Binary Instrumentation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105408911A (zh) * 2013-08-28 2016-03-16 英特尔公司 硬件和软件执行概况分析
US20180349603A1 (en) * 2017-05-31 2018-12-06 Koichi Yamada System, Apparatus And Method For Instruction Level Behavioral Analysis Without Binary Instrumentation
CN107590385A (zh) * 2017-09-15 2018-01-16 湖南大学 一种硬件辅助抗代码复用攻击防御系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
VICTOR VAN DER VEEN,ET AL: "Practical Context-Sensitive CFI", 《PROCEEDINGS OF THE 22ND ACM SIGSAC CONFERENCE ON COMPUTER AND COMMUNICATIONS SECURITY》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113778838A (zh) * 2020-06-09 2021-12-10 中国电信股份有限公司 二进制程序动态污点分析方法及装置
CN113778838B (zh) * 2020-06-09 2024-01-26 中国电信股份有限公司 二进制程序动态污点分析方法及装置
CN112966258A (zh) * 2021-03-22 2021-06-15 西安电子科技大学 控制流完整性保护方法、系统、装置及可读存储介质
CN112966258B (zh) * 2021-03-22 2022-12-30 西安电子科技大学 控制流完整性保护方法、系统、装置及可读存储介质
CN113779578A (zh) * 2021-09-13 2021-12-10 支付宝(杭州)信息技术有限公司 移动端应用的智能混淆方法和系统
CN113779578B (zh) * 2021-09-13 2024-01-19 支付宝(杭州)信息技术有限公司 移动端应用的智能混淆方法和系统
CN114201359A (zh) * 2021-11-22 2022-03-18 南京邮电大学 一种基于普通函数和内核函数混合调用控制流图的智能主动软件防护方法
CN118211218A (zh) * 2024-03-25 2024-06-18 中国人民解放军61660部队 一种基于动态插桩的低开销后门行为监测方法
CN118211218B (zh) * 2024-03-25 2024-09-27 中国人民解放军61660部队 一种基于动态插桩的低开销后门行为监测方法

Also Published As

Publication number Publication date
CN110647748B (zh) 2021-04-20

Similar Documents

Publication Publication Date Title
CN110647748B (zh) 一种基于硬件特性的代码复用攻击检测系统及方法
KR102306568B1 (ko) 컴퓨터 시스템의 제어 흐름 무결성의 프로세서 트레이스 기반 집행
US7886148B2 (en) Secure execution of a computer program
US8117660B2 (en) Secure control flows by monitoring control transfers
US7603704B2 (en) Secure execution of a computer program using a code cache
Kruegel et al. Automating mimicry attacks using static binary analysis
CN106991324B (zh) 一种基于内存保护类型监控的恶意代码跟踪识别方法
EP3326100B1 (en) Systems and methods for tracking malicious behavior across multiple software entities
RU2531861C1 (ru) Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса
Chen et al. Pinpointing vulnerabilities
CN101373502A (zh) 基于Win32平台下病毒行为的自动化分析系统
Toffalini et al. {ScaRR}: Scalable Runtime Remote Attestation for Complex Systems
CN107330323B (zh) 一种基于Pin工具的ROP及其变种攻击的动态检测方法
US20220108007A1 (en) Firmware Protection
Lanzi et al. A smart fuzzer for x86 executables
Chen et al. Efficient detection of the return-oriented programming malicious code
US10885184B1 (en) Rearranging executables in memory to prevent rop attacks
Liu et al. Binary exploitation in industrial control systems: Past, present and future
Zeng et al. Heaptherapy+: Efficient handling of (almost) all heap vulnerabilities using targeted calling-context encoding
Xu et al. Memory Error Detection Based on Dynamic Binary Translation
Botacin et al. Malware MultiVerse: From Automatic Logic Bomb Identification to Automatic Patching and Tracing
Zhang et al. Hardware supported anomaly detection: down to the control flow level
US20240354404A1 (en) Migration of attacking software as a mitigation to an attack by a malicious actor
Zhang et al. Defending non-control-data attacks using influence domain monitoring
Wang et al. IRePf: An Instruction Reorganization Virtual Platform for Kernel Stack Overflow Detection

Legal Events

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