CN105488397A - 一种基于情境的rop攻击检测系统及方法 - Google Patents

一种基于情境的rop攻击检测系统及方法 Download PDF

Info

Publication number
CN105488397A
CN105488397A CN201510874221.6A CN201510874221A CN105488397A CN 105488397 A CN105488397 A CN 105488397A CN 201510874221 A CN201510874221 A CN 201510874221A CN 105488397 A CN105488397 A CN 105488397A
Authority
CN
China
Prior art keywords
rop
module
instruction
function
application
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
CN201510874221.6A
Other languages
English (en)
Other versions
CN105488397B (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.)
State Grid Corp of China SGCC
Wuhan University WHU
State Grid Hebei Electric Power Co Ltd
Smart Grid Research Institute of SGCC
Original Assignee
State Grid Corp of China SGCC
Wuhan University WHU
State Grid Hebei Electric Power Co Ltd
Smart Grid Research Institute of SGCC
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 State Grid Corp of China SGCC, Wuhan University WHU, State Grid Hebei Electric Power Co Ltd, Smart Grid Research Institute of SGCC filed Critical State Grid Corp of China SGCC
Priority to CN201510874221.6A priority Critical patent/CN105488397B/zh
Publication of CN105488397A publication Critical patent/CN105488397A/zh
Application granted granted Critical
Publication of CN105488397B publication Critical patent/CN105488397B/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/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • 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/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Landscapes

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

Abstract

本发明公开了一种基于情境的ROP攻击检测系统及方法,系统包括用户交互模块、注入器模块、监控模块、情境收集模块、ROP攻击检测模块与记录模块;方法包括注入系统关键进程、收集被检应用情境信息及ROP攻击检测三部分内容。本发明实现了对Android系统中ROP攻击的有效检测,防止攻击者使用ROP技术执行恶意代码或绕过安全机制,避免用户遭受ROP攻击的危害,提升系统的安全性。

Description

一种基于情境的ROP攻击检测系统及方法
技术领域
本发明属于信息安全技术领域,涉及一种基于情境的ROP攻击检测系统及方法,具体涉及一种基于情境的检测Android系统ROP攻击的装置及方法。
背景技术
随着移动互联网的高速发展,智能手机已经成为人们日常生活中必不可少的一部分,然而智能手机中往往存在比其他传统终端更多的隐私信息,如短信、通讯录、通话记录、银行密码等,因此智能手机的安全显得尤为重要。Android操作系统作为移动平台的主流操作系统,由于其平台应用的开放性以及系统的分层混合结构,近年来针对Android系统应用程序的攻击层出不穷,为Android系统用户带来巨大的安全风险。
面向返回编程攻击,即ROP攻击是一种功能强大较为复杂的非注入代码型攻击,利用了代码复用技术,自2007年被提出以来,发展迅速。ROP攻击复用程序代码片段(即Gadget)的编程方法具有图灵完备性,理论上可以构造任意恶意代码。它利用程序自身进程地址空间的代码片断而不依赖外部注入代码,因此能有效绕过现有的诸多防御机制,例如DEP和W⊕X。
2008年Kornau等人给出了ROP攻击在ARM指令集下的实现,自此ROP攻击开始转向系统底层基于ARM指令集的Android系统。攻击者进行针对Android系统的ROP攻击,可以绕过多种防御机制,与其他攻击方式相结合,使得已经被成功防御的攻击方法再度有效,无疑造成了巨大的安全威胁。如今,ROP攻击已经越来越多地被使用来针对Android系统:CVE-2013-2597的栈溢出漏洞、CVE-2014-7911的Android本地提权漏洞以及流传甚广的HackingTeamAndroidBrowserExploit都是ROP攻击在Android系统中的实际应用。由此观之,如何在Android系统中有效的检测ROP攻击已经变成了一个至关重要的问题。
Android系统面临ROP攻击的威胁,但目前Android的主流产品中,并没有较为完善系统的ROP检测方法装置的实现。另一方面,对于PC端,软件行为监控和敏感行为拦截已经是较为成熟的恶意软件对抗技术,有着十分广泛的应用。但在Android系统中,还未有主流产品将这一技术应用于对ROP攻击的检测中。情境的概念虽然很早就被提出,但是也未有主流产品从这一角度考虑与ROP攻击检测相结合的方法。
发明内容
为了解决上述技术问题,提高Android平台的安全性,本发明提出了一种基于情境的ROP攻击检测系统及方法,在对Android系统本身不做任何修改的情况下,有效检测Android系统中发生的ROP攻击,并以敏感行为监控与拦截技术避免用户遭受ROP攻击的危害。
本发明的装置所采用的技术方案是:一种基于情境的ROP攻击检测系统,其特征在于:包括用户交互模块、注入器模块、监控模块、情境收集模块、ROP攻击检测模块与记录模块;
所述用户交互模块提供检测系统与用户交互的接口,在进行ROP攻击检测之前可以通过用户交互模块指定应用检测范围,当检测到ROP攻击时,用户根据交互模块查验检测结果与相关情境信息,根据结果维护应用白名单所述注入器模块用于将监控模块注入系统关键进程,初始监控模块,监控应用的初始启动过程;
所述监控模块用于监控应用的敏感行为,当ROP攻击发生时,对其敏感行为进行拦截;
所述情境收集模块用于收集被检应用的情境信息,当触发关键点时,调用ROP攻击检测模块判断是否发生ROP攻击,当发生ROP攻击时,继续收集问题应用的情境信息;反馈监控模块,对问题应用的敏感行为进行拦截;调用记录模块,对情境信息进行记录;
所述ROP攻击检测模块用于分析情境收集模块获得的情境信息,根据预先配置的ROP攻击检测策略判断是否发生ROP攻击,当检测到应用进程受到ROP攻击时,调用记录模块,对ROP攻击发生的相关情境信息进行记录;检测到ROP攻击时反馈情境收集模块,进一步收集相关情境信息;
所述记录模块用于记录ROP攻击检测结果和相关的情境信息,形成ROP攻击检测记录;
用户通过用户交互模块同步数据库查验检测记录,维护生成Android系统应用的白名单,ROP攻击检测记录和应用白名单被统一保存在数据库当中。
作为优选,所述检测系统还包括性能监视单元,对硬件事件的值进行读取,用于检测ROP攻击;所述性能监视单元包括事件选择模块、性能计数器模块和中断模块;事件选择模块决定需要记录的性能事件;性能计数器模块对相应性能事件的值进行记录,每当有相应的事件发生则对应的性能计数器的值将加一;中断模块主要负责何时读取性能计数器的值。
本发明的方法所采用的技术方案是:一种基于情境的ROP攻击检测方法,其特征在于,包括以下步骤:
步骤1:注入系统关键进程,其具体实现包括以下子步骤:
步骤1.1:注入器模块查找系统中与敏感行为相关的关键系统进程的PID号;所述关键系统进程具体是指:与Android系统各种服务相关的system_server,与通话、短信等业务相关的com.android.phone,与录制视频、语音相关的/system/bin/media_server;
步骤1.2:注入器模块通过ptrace()函数attach以上四个关键系统进程,加载监控模块到其进程空间,调用mprotect()函数改变监控模块所在进程空间的可执行属性,最终由dlopen()函数执行库函数_init()运行监控模块;
步骤1.3:监控模块被注入关键系统进程中运行之后,以修改当前进程全局对象列表的方式,对libbinder.so库中的ioctl()函数进行HOOK,实现对Android系统范围内应用行为的监控与拦截,至此完成对监控模块的初始化;
步骤2:收集被检应用情境信息,其具体实现包括以下子步骤:
步骤2.1:获取系统实时信息,包括:
①获取应用执行的ARM指令,当前寄存器的值,栈空间布局;若当前ARM指令为ROP攻击的关键指令,包括movlr,pc指令,跳转指令b,以及切换指令集的跳转指令bx,保存返回地址的跳转指令bl以及切换数据集并保存返回地址的跳转指令blx时,调用ROP检测模块,判断是否发生ROP攻击;
②获取应用程序执行时硬件事件的值,并实时检测硬件事件的值是否存在异常;
③在ROP攻击发生时,获取问题应用已加载的模块、加载模块的名称、内存基址、长度、以及导出函数表,使用函数调用返回地址偏移进行遍历和匹配,定位到产生漏洞的模块名、函数名和相对于函数首址的偏移;
④在ROP攻击发生后,监控、拦截与记录应用的敏感行为;
步骤2.2:获取用户预定义,即指用户维护的白名单:对于白名单应用,对其敏感行为不进行拦截,也不收集其情境信息;
步骤3:ROP攻击检测,分析情境收集模块中获得的ARM指令及相关的情境信息,进而分析应用程序的控制流和数据流,检测ROP攻击的发生;其具体实现包括以下子步骤:
步骤3.1:跳转异常检查;
通过当前跳转指令所在的地址与其跳转的目的地址之间的差值是否大于给定阈值来检测ROP攻击,如果是,则认为发生了ROP攻击;
步骤3.2:函数调用异常检查,其具体实现包括以下子步骤:
步骤3.2.1:获取函数调用跳转指令的目标地址开始的基本块;
步骤3.2.2:在基本块的起始部分,提取两条反汇编指令,检查第一条指令是否为push,操作数中最后一个寄存器是不是lr;对于第二条指令,检查是否为mov指令,且最后一个操作数为sp;如果全部满足,则是正常的函数调用,退出检测;如果不满足,则认为是ROP攻击;
步骤3.3:函数返回异常检查,其具体实现包括以下子步骤:
步骤3.3.1:在对应用进行情境收集过程中,情境收集模块创建维护一个影子栈ShadowStack,当执行函数调用指令时,用于存放函数返回地址;
步骤3.3.2:当检测到应用程序当前执行函数调用指令bl或blx时,将函数返回地址压入影子栈ShadowStack中;
步骤3.3.3:当检测到当前指令为函数返回的bxlr指令时,分析影子栈顶返回地址与函数返回控制流跳转目的地址是否一致,如果不一致,则报告为ROP攻击;
当检测到ROP攻击时,将ROP攻击检测结果、问题应用的相关情境信息与敏感行为的监控、拦截情况形成检测记录,呈现给用户。
本发明的主要优点:
1.防止攻击者使用ROP技术执行恶意代码或绕过安全机制,避免用户遭受ROP攻击的危害,提升了系统的安全性;
2.检测装置未对系统本身进行修改,方便配置在任意Android系统上,可检测系统范围内针对任意应用的ROP攻击;
3.基于应用的情境信息,从跳转异常检查、函数调用异常检查、函数返回异常检查与硬件事件检测四个方面有效检测ROP攻击。ROP攻击检测过程的检测粒度达到指令级别,是一种较细粒度的检测,有较低的漏报率和误报率;
4.在检测ROP攻击的同时,同时记录问题应用ROP攻击相关的情境信息,可以辅助用户对ROP攻击发生过程进行复盘与分析。用户对于Android系统应用白名单的维护,可以进一步提升检测结果的准确度,改善装置的检测效率。
附图说明
图1:本发明实施例的装置构架原理图;
图2:本发明实施例装置的性能监视单元构架原理图;
图3:本发明实施例方法的注入系统关键进程流程图;
图4:本发明实施例方法的ROP攻击检测流程图.
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
请见图1和图2,本发明提供的一种基于情境的ROP攻击检测系统,包括用户交互模块、注入器模块、监控模块、情境收集模块、ROP攻击检测模块、记录模块和性能监视单元;
(1)用户交互模块提供了检测系统与用户交互的接口。用户可以通过交互模块指定应用检测范围,查验检测结果与相关情境信息,还包括根据结果维护应用白名单。
(2)注入器模块完成将监控模块注入系统关键进程等注入过程,还包括初始监控模块,以监控应用的敏感行为等初始启动过程。
(3)监控模块用于监控应用的敏感行为,当ROP攻击发生时,对其敏感行为进行拦截。
(4)情境收集模块用于收集被检应用的情境信息,当触发关键点时,调用核心模块ROP攻击检测模块,判断是否发生ROP攻击。当发生ROP攻击时,继续收集问题应用的情境信息,还包括反馈监控模块,对问题应用的敏感行为进行拦截;调用记录模块,对情境信息进行记录。
(5)ROP攻击检测模块,为检测系统的核心模块。该模块分析情境收集模块获得的ARM指令等情境信息,根据预先配置的ROP攻击检测策略判断是否发生ROP攻击。还包括当检测到应用进程受到ROP攻击时,调用记录模块,对ROP攻击发生的问题模块、问题函数等相关情境信息进行记录,还包括检测到ROP攻击时反馈情境收集模块,进一步收集相关情境信息。
(6)记录模块用于记录ROP攻击检测结果和相关的情境信息,如发生ROP攻击后的问题应用Package名、问题模块、问题函数等,还包括问题应用的敏感行为监控与拦截情况,并将以上信息形成ROP攻击检测记录。用户可以通过用户交互模块,同步数据库查验检测记录,维护生成Android系统应用的白名单。ROP攻击检测记录和应用白名单被统一保存在数据库当中。
ROP攻击会导致程序的执行流发生变化,最终会体现在一些硬件事件上。ARM提供的性能监视单元(PerformanceMonitorUnits,PMU)可以对硬件事件的值进行读取,用于检测ROP攻击。
如图2所示,ARM架构的性能监视单元主要通过APB接口或者CP15接口获得性能监视计数器的值。性能监视单元包括事件选择模块、性能计数器模块和中断模块。事件选择模块决定需要记录的性能事件,性能计数器模块对相应性能事件的值进行记录,每当有相应的事件发生则对应的性能计数器的值将加一。中断模块主要负责何时读取性能计数器的值,本专利中每隔16000条指令读取一次。
本专利选取了与ROP攻击最相关的4个性能事件,如表1所示.
表1:用于检测ROP的性能事件
事件 事件说明
RET 执行的return指令的数目
STORE 执行的store指令的数目
MISP_BR 分支预测失败的数目
MIS_ITLB 指令页表没有命中的次数
具体实现步骤如下:
①数据处理,鉴于性能和有效性的考量,每隔16000条指令读取一次性能监视计数器的值,然后利用指数转换对收集到的数据进行处理;
②建立分类器,利用非监督式学习方法对收集到的数据进行机器学习;
③通过步骤②建立的分类器识别是否存在ROP攻击。
本发明提供的一种基于情境的ROP攻击检测方法,包括注入系统关键进程、收集被检应用情境信息及ROP攻击检测三部分内容。
一、注入系统关键进程;
该部分主要完成将监控模块,注入Android系统关键进程,并初始监控模块的过程。运行后的监控模块完成对系统内运行应用敏感行为的捕获与拦截,是对Android系统Native层Hook技术的扩展,如图3,具体步骤:
1.注入器模块查找系统中与敏感行为相关的关键系统进程的PID号。关键系统进程具体是指:与Android系统各种服务相关的system_server,与通话、短信等业务相关的com.android.phone,与录制视频、语音相关的/system/bin/media_server。
2.鉴于Android系统基于linux内核,注入器模块通过ptrace()函数attach以上四个关键系统进程,加载监控模块到其进程空间,调用mprotect()函数改变监控模块所在进程空间的可执行属性,最终由dlopen()函数执行库函数_init()运行监控模块。
3.监控模块被注入关键系统进程中运行之后,以修改当前进程全局对象列表(GlobalObjectTable,以下简称GOT)的方式,对libbinder.so库中的ioctl()函数进行HOOK,实现对Android系统范围内应用行为的监控与拦截,至此完成对监控模块的初始化。
二、收集被检应用情境信息;
该部分为情境收集模块完成对应用情境信息的收集过程。在相关研究工作中,情境是指可以用来描述实体状态的任何信息。在本装置中,包括系统实时信息与用户预定义两个方面,具体步骤:
1.获取系统实时信息,包括:
①获取应用执行的ARM指令,当前寄存器的值,栈空间布局。若当前ARM指令为ROP攻击的关键指令,包括movlr,pc指令,跳转指令b,以及切换指令集的跳转指令bx,保存返回地址的跳转指令bl以及切换数据集并保存返回地址的跳转指令blx时,调用ROP检测模块,判断是否发生ROP攻击。
②获取应用程序执行时硬件事件的值,并实时检测硬件事件的值是否存在异常。
③在ROP攻击发生时,获取问题应用已加载的模块、加载模块的名称、内存基址、长度、以及导出函数表(如果存在的话),使用函数调用返回地址偏移进行遍历和匹配,就可以定位到产生漏洞的模块名、函数名和相对于函数首址的偏移。
④在ROP攻击发生后,监控、拦截与记录应用的敏感行为。
2.获取用户预定义,即指用户维护的白名单:
①对于白名单应用,对其敏感行为不进行拦截,也不收集其情境信息。
三、ROP攻击检测;
该部分为发明装置的核心模块,分析情境收集模块中获得的ARM指令及相关的情境信息,进而分析应用程序的控制流和数据流,检测ROP攻击的发生,如图4,具体步骤:
1.跳转异常检查;
通过当前跳转指令所在的地址与其跳转的目的地址之间的差值是否大于给定阈值来检测ROP攻击。为提高检测效率,降低误报率,只有当两个连续的跳转指令出现且中间没有出现函数调用指令时,才对跳转指令进行异常检测,并且直接跳转指令因为不能被ROP攻击利用,所以只关注间接跳转指令。
具体涉及movlr,pc指令,跳转指令b,以及切换指令集的跳转指令bx。如果它的操作数是立即数,则代表其是直接跳转,返回继续执行;如果跳转指令的操作数不是立即数,本发明就认为它是间接跳转。即movlr,pc指令为间接跳转指令,其余跳转指令的操作数不为立即数时为间接跳转指令,为检测中关注的指令。
这个限制对于正常程序而言并没有任何影响,只对可能出现在gadget中的跳转指令进行异常检测。
对于满足条件的跳转指令,即当两个连续的跳转指令出现且中间没有出现函数调用指令的间接跳转指令,取出此条指令所在的地址,记作jumpSourceAddress;取出跳转指令操作数的值,即间接跳转的目的地址,记为jumpSinkAddress;计算|jumpSourceAddress-jumpSinkAddress|是否大于给定阈值,如果是,则认为发生了ROP攻击。
2.函数调用异常检查;
检查函数调用异常要分析函数调用指令,具体涉及保存返回地址的跳转指令bl以及切换数据集并保存返回地址的跳转指令blx。
正常函数中函数调用跳转指令的目的地址应该是被调函数的入口地址,如果不是,那么本发明怀疑它可能是ROP攻击。即如果bl指令或blx指令跳转的目的指令序列为“push{r7,lr};movr7,sp”(其中“r7”可变,其余固定),则本发明认为它是正常的函数调用;如果不是,则本发明认为其是ROP攻击。
具体实现步骤如下:
①获取函数调用跳转指令的目标地址开始的基本块。
②在基本块的起始部分,提取两条反汇编指令,检查第一条指令是否为push,操作数中最后一个寄存器是不是lr;对于第二条指令,检查是否为mov指令,且最后一个操作数为sp。如果全部满足,则是正常的函数调用,退出检测;如果不满足,则认为是ROP攻击。
3.函数返回异常检查;
为了检查返回异常,建立一个影子栈ShadowStack。当执行到函数调用的bl指令或blx指令时,将函数返回地址压入ShadowStack;当执行到函数返回的bxlr指令时,取出ShadowStack栈顶的地址,并比较这个地址与返回控制流跳转目的地是否一致。如果这两个地址不一致,则认为是ROP攻击。也就是说,每当执行新的函数调用过程时,本发明更新ShadowStack。函数返回异常检查能够发现没有对应函数调用返回的,利用函数片段构造的ROP攻击。
具体实现步骤如下:
①在对应用进行情境收集过程中,情境收集模块创建维护一个影子栈ShadowStack,当执行函数调用指令时,用于存放函数返回地址;
②当检测到应用程序当前执行函数调用指令bl或blx时,将函数返回地址压入影子栈ShadowStack中;
③当检测到当前指令为函数返回的bxlr指令时,分析影子栈顶返回地址与函数返回控制流跳转目的地址是否一致,如果不一致,则报告为ROP攻击。
ROP检测方法除以上三点外,当检测到ROP时,将ROP攻击检测结果、问题应用的相关情境信息与敏感行为的监控、拦截情况形成检测记录,呈现给用户。用户分析查验检测结果维护一个Android系统应用的白名单来提升检测的效率,并降低误报率。
以下结合具体实例对上述方案做进一步说明。
实例基于Android系统ROP攻击检测装置的实现。
以运行在Android系统的Package名为com.example.helloworld的应用为例进行说明。在Android系统运行时,首先由注入器模块查找到系统关键进程的PID:system_server为739,com.android.phone为149,/system/bin/media_server为152,将监控模块monitor.so注入到每个关键进程的进程空间,初始化监控模块完成对ioctl()函数的HOOK。情境收集模块从数据库加载用户维护的应用白名单,如果应用com.example.helloworld不在白名单上,查找其PID号,得到其PID号为11432;否则继续正常运行应用。情境收集模块通过ptrace()获取应用com.example.helloworld的情境信息,包括获取应用执行的ARM指令,当前寄存器的值,栈空间布局。解析当前ARM指令,当前ARM指令为函数调用的bl指令或blx指令时,建立影子栈ShadowStack保存函数的返回地址;为movlr,pc指令,跳转指令b,以及切换指令集的跳转指令bx,保存返回地址的跳转指令bl以及切换数据集并保存返回地址的跳转指令blx时,调用ROP检测模块。ROP检测模块分析传入的应用情境信息,按照ROP检测策略,进行跳转异常检查、函数调用异常检查与函数返回异常检查。
若ROP模块判断未发生ROP攻击,则继续执行程序;若判断ROP攻击已经发生,情境收集模块获取应用已加载的模块、加载模块的名称、内存基址、长度、以及导出函数表(如果存在的话),使用函数调用返回bx值进行遍历和匹配,就可以定位到产生漏洞的模块名、函数名和相对于函数首址的偏移。将发生ROP攻击的应用Package名com.exaple.helloworld、问题模块名、问题函数名以及相对首地址的偏移存入数据库。
ROP攻击发生后,监控模块开始监控拦截问题应用的敏感行为,生成记录存入数据库。
用户交互模块同步更新数据库中的检测记录,由用户对检测结果进行查验,考虑是否更新应用白名单。
本发明实现了对Android系统中ROP攻击的有效检测,防止攻击者使用ROP技术执行恶意代码或绕过安全机制,避免用户遭受ROP攻击的危害,提升系统的安全性。
应当理解的是,本说明书未详细阐述的部分均属于现有技术。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。

Claims (3)

1.一种基于情境的ROP攻击检测系统,其特征在于:包括用户交互模块、注入器模块、监控模块、情境收集模块、ROP攻击检测模块与记录模块;
所述用户交互模块提供检测系统与用户交互的接口,在进行ROP攻击检测之前可以通过用户交互模块指定应用检测范围,当检测到ROP攻击时,用户根据交互模块查验检测结果与相关情境信息,根据结果维护应用白名单;
所述注入器模块用于将监控模块注入系统关键进程,初始监控模块,监控应用的初始启动过程;
所述监控模块用于监控应用的敏感行为,当ROP攻击发生时,对其敏感行为进行拦截;
所述情境收集模块用于收集被检应用的情境信息,当触发关键点时,调用ROP攻击检测模块判断是否发生ROP攻击,当发生ROP攻击时,继续收集问题应用的情境信息;反馈监控模块,对问题应用的敏感行为进行拦截;调用记录模块,对情境信息进行记录;
所述ROP攻击检测模块用于分析情境收集模块获得的情境信息,根据预先配置的ROP攻击检测策略判断是否发生ROP攻击,当检测到应用进程受到ROP攻击时,调用记录模块,对ROP攻击发生的相关情境信息进行记录;检测到ROP攻击时反馈情境收集模块,进一步收集相关情境信息;
所述记录模块用于记录ROP攻击检测结果和相关的情境信息,形成ROP攻击检测记录;
用户通过用户交互模块同步数据库查验检测记录,维护生成Android系统应用的白名单,ROP攻击检测记录和应用白名单被统一保存在数据库当中。
2.根据权利要求1所述的基于情境的ROP攻击检测系统,其特征在于:还包括性能监视单元,对硬件事件的值进行读取,用于检测ROP攻击;
所述性能监视单元包括事件选择模块、性能计数器模块和中断模块;事件选择模块决定需要记录的性能事件;性能计数器模块对相应性能事件的值进行记录,每当有相应的事件发生则对应的性能计数器的值将加一;中断模块主要负责何时读取性能计数器的值。
3.一种基于情境的ROP攻击检测方法,其特征在于,包括以下步骤:
步骤1:注入系统关键进程,其具体实现包括以下子步骤:
步骤1.1:注入器模块查找系统中与敏感行为相关的关键系统进程的PID号;所述关键系统进程具体是指:与Android系统各种服务相关的system_server,与通话、短信等业务相关的com.android.phone,与录制视频、语音相关的/system/bin/media_server;
步骤1.2:注入器模块通过ptrace()函数attach以上四个关键系统进程,加载监控模块到其进程空间,调用mprotect()函数改变监控模块所在进程空间的可执行属性,最终由dlopen()函数执行库函数_init()运行监控模块;
步骤1.3:监控模块被注入关键系统进程中运行之后,以修改当前进程全局对象列表的方式,对libbinder.so库中的ioctl()函数进行HOOK,实现对Android系统范围内应用行为的监控与拦截,至此完成对监控模块的初始化;
步骤2:收集被检应用情境信息,其具体实现包括以下子步骤:
步骤2.1:获取系统实时信息,包括:
①获取应用执行的ARM指令,当前寄存器的值,栈空间布局;若当前ARM指令为ROP攻击的关键指令,包括movlr,pc指令,跳转指令b,以及切换指令集的跳转指令bx,保存返回地址的跳转指令bl以及切换数据集并保存返回地址的跳转指令blx时,调用ROP检测模块,判断是否发生ROP攻击;
②获取应用程序执行时硬件事件的值,并实时检测硬件事件的值是否存在异常;
③在ROP攻击发生时,获取问题应用已加载的模块、加载模块的名称、内存基址、长度、以及导出函数表,使用函数调用返回地址偏移进行遍历和匹配,定位到产生漏洞的模块名、函数名和相对于函数首址的偏移;
④在ROP攻击发生后,监控、拦截与记录应用的敏感行为;
步骤2.2:获取用户预定义,即指用户维护的白名单:对于白名单应用,对其敏感行为不进行拦截,也不收集其情境信息;
步骤3:ROP攻击检测,分析情境收集模块中获得的ARM指令及相关的情境信息,进而分析应用程序的控制流和数据流,检测ROP攻击的发生;其具体实现包括以下子步骤:
步骤3.1:跳转异常检查;
通过当前跳转指令所在的地址与其跳转的目的地址之间的差值是否大于给定阈值来检测ROP攻击,如果是,则认为发生了ROP攻击;
步骤3.2:函数调用异常检查,其具体实现包括以下子步骤:
步骤3.2.1:获取函数调用跳转指令的目标地址开始的基本块;
步骤3.2.2:在基本块的起始部分,提取两条反汇编指令,检查第一条指令是否为push,操作数中最后一个寄存器是不是lr;对于第二条指令,检查是否为mov指令,且最后一个操作数为sp;如果全部满足,则是正常的函数调用,退出检测;如果不满足,则认为是ROP攻击;
步骤3.3:函数返回异常检查,其具体实现包括以下子步骤:
步骤3.3.1:在对应用进行情境收集过程中,情境收集模块创建维护一个影子栈ShadowStack,当执行函数调用指令时,用于存放函数返回地址;
步骤3.3.2:当检测到应用程序当前执行函数调用指令bl或blx时,将函数返回地址压入影子栈ShadowStack中;
步骤3.3.3:当检测到当前指令为函数返回的bxlr指令时,分析影子栈顶返回地址与函数返回控制流跳转目的地址是否一致,如果不一致,则报告为ROP攻击;
当检测到ROP攻击时,将ROP攻击检测结果、问题应用的相关情境信息与敏感行为的监控、拦截情况形成检测记录,呈现给用户。
CN201510874221.6A 2015-12-02 2015-12-02 一种基于情境的rop攻击检测系统及方法 Active CN105488397B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510874221.6A CN105488397B (zh) 2015-12-02 2015-12-02 一种基于情境的rop攻击检测系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510874221.6A CN105488397B (zh) 2015-12-02 2015-12-02 一种基于情境的rop攻击检测系统及方法

Publications (2)

Publication Number Publication Date
CN105488397A true CN105488397A (zh) 2016-04-13
CN105488397B CN105488397B (zh) 2018-01-12

Family

ID=55675371

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510874221.6A Active CN105488397B (zh) 2015-12-02 2015-12-02 一种基于情境的rop攻击检测系统及方法

Country Status (1)

Country Link
CN (1) CN105488397B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106295258A (zh) * 2016-08-04 2017-01-04 南京大学 用于多线程后向控制流完整性保护的影子栈实现方法
CN106529224A (zh) * 2016-10-27 2017-03-22 南京大学 基于rop攻击特点的二进制混淆方法
CN107220537A (zh) * 2017-05-25 2017-09-29 南京大学 一种程序内存布局信息泄露行为的检测方法
CN107229862A (zh) * 2017-06-06 2017-10-03 电子科技大学 基于模拟栈和线程注入的一种rop攻击栈溢出防护方法
CN107545174A (zh) * 2017-08-22 2018-01-05 武汉大学 一种基于llvm的抵御控制流劫持的系统和方法
CN108334756A (zh) * 2017-01-20 2018-07-27 武汉斗鱼网络科技有限公司 一种对递归下降式分析器反编译的干扰方法及装置
CN110737888A (zh) * 2019-09-12 2020-01-31 北京理工大学 虚拟化平台操作系统内核数据攻击行为检测方法
CN111385302A (zh) * 2020-03-06 2020-07-07 北京计算机技术及应用研究所 一种载荷自动化生成系统
CN112199669A (zh) * 2020-09-25 2021-01-08 杭州安恒信息技术股份有限公司 一种检测rop攻击的方法和装置
CN113360902A (zh) * 2020-03-05 2021-09-07 奇安信科技集团股份有限公司 shellcode的检测方法、装置、计算机设备及计算机存储介质
CN113556336A (zh) * 2021-07-19 2021-10-26 北京丁牛科技有限公司 提权漏洞攻击的检测方法及装置、电子设备
CN114880665A (zh) * 2022-05-12 2022-08-09 电子科技大学 一种针对面向返回编程攻击的智能化检测方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102663312A (zh) * 2012-03-20 2012-09-12 中国科学院信息工程研究所 一种基于虚拟机的rop攻击检测方法及系统
CN104268471A (zh) * 2014-09-10 2015-01-07 珠海市君天电子科技有限公司 一种检测面向返程的编程攻击的方法及装置
US20150095628A1 (en) * 2013-05-23 2015-04-02 Koichi Yamada Techniques for detecting return-oriented programming
CN104685506A (zh) * 2012-10-31 2015-06-03 英特尔公司 对返回导向的编程攻击的检测

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102663312A (zh) * 2012-03-20 2012-09-12 中国科学院信息工程研究所 一种基于虚拟机的rop攻击检测方法及系统
CN104685506A (zh) * 2012-10-31 2015-06-03 英特尔公司 对返回导向的编程攻击的检测
US20150095628A1 (en) * 2013-05-23 2015-04-02 Koichi Yamada Techniques for detecting return-oriented programming
CN104268471A (zh) * 2014-09-10 2015-01-07 珠海市君天电子科技有限公司 一种检测面向返程的编程攻击的方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刘智等: "一种有效的Return-Oriented-Programming 攻击检测方法", 《小型微型计算机系统》 *
韩浩等: "针对ROP攻击的动态运行时检测系统", 《计算机工程》 *

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106295258A (zh) * 2016-08-04 2017-01-04 南京大学 用于多线程后向控制流完整性保护的影子栈实现方法
CN106295258B (zh) * 2016-08-04 2019-03-26 南京大学 用于多线程后向控制流完整性保护的影子栈实现方法
CN106529224A (zh) * 2016-10-27 2017-03-22 南京大学 基于rop攻击特点的二进制混淆方法
CN108334756B (zh) * 2017-01-20 2020-05-12 武汉斗鱼网络科技有限公司 一种对递归下降式分析器反编译的干扰方法及装置
CN108334756A (zh) * 2017-01-20 2018-07-27 武汉斗鱼网络科技有限公司 一种对递归下降式分析器反编译的干扰方法及装置
CN107220537A (zh) * 2017-05-25 2017-09-29 南京大学 一种程序内存布局信息泄露行为的检测方法
CN107220537B (zh) * 2017-05-25 2021-02-23 南京大学 一种程序内存布局信息泄露行为的检测方法
CN107229862A (zh) * 2017-06-06 2017-10-03 电子科技大学 基于模拟栈和线程注入的一种rop攻击栈溢出防护方法
CN107545174A (zh) * 2017-08-22 2018-01-05 武汉大学 一种基于llvm的抵御控制流劫持的系统和方法
CN107545174B (zh) * 2017-08-22 2020-03-10 武汉大学 一种基于llvm的抵御控制流劫持的系统和方法
CN110737888A (zh) * 2019-09-12 2020-01-31 北京理工大学 虚拟化平台操作系统内核数据攻击行为检测方法
CN110737888B (zh) * 2019-09-12 2022-09-20 北京理工大学 虚拟化平台操作系统内核数据攻击行为检测方法
CN113360902A (zh) * 2020-03-05 2021-09-07 奇安信科技集团股份有限公司 shellcode的检测方法、装置、计算机设备及计算机存储介质
CN113360902B (zh) * 2020-03-05 2024-02-20 奇安信科技集团股份有限公司 shellcode的检测方法、装置、计算机设备及计算机存储介质
CN111385302A (zh) * 2020-03-06 2020-07-07 北京计算机技术及应用研究所 一种载荷自动化生成系统
CN112199669A (zh) * 2020-09-25 2021-01-08 杭州安恒信息技术股份有限公司 一种检测rop攻击的方法和装置
CN112199669B (zh) * 2020-09-25 2022-05-17 杭州安恒信息技术股份有限公司 一种检测rop攻击的方法和装置
CN113556336A (zh) * 2021-07-19 2021-10-26 北京丁牛科技有限公司 提权漏洞攻击的检测方法及装置、电子设备
CN114880665A (zh) * 2022-05-12 2022-08-09 电子科技大学 一种针对面向返回编程攻击的智能化检测方法及装置

Also Published As

Publication number Publication date
CN105488397B (zh) 2018-01-12

Similar Documents

Publication Publication Date Title
CN105488397A (zh) 一种基于情境的rop攻击检测系统及方法
KR102306568B1 (ko) 컴퓨터 시스템의 제어 흐름 무결성의 프로세서 트레이스 기반 집행
US8117660B2 (en) Secure control flows by monitoring control transfers
Yuan et al. Security breaches as PMU deviation: detecting and identifying security attacks using performance counters
CN102663312B (zh) 一种基于虚拟机的rop攻击检测方法及系统
CN103593617A (zh) 基于vmm的软件完整性校验系统及其方法
CN102651062A (zh) 基于虚拟机架构的恶意行为跟踪系统和方法
CN103345604A (zh) 基于轻量虚拟机监控器的沙盒系统及用其监控os的方法
CN101873318A (zh) 针对应用基础支撑平台上应用系统的应用与数据保全方法
CN111191243A (zh) 一种漏洞检测方法、装置和存储介质
CN103310152A (zh) 基于系统虚拟化技术的内核态Rootkit检测方法
CN107194246A (zh) 一种用于实现动态指令集随机化的cpu
CN110647748B (zh) 一种基于硬件特性的代码复用攻击检测系统及方法
Laurén et al. An interface diversified honeypot for malware analysis
CN107608758A (zh) 一种虚拟机文件完整性监控方法及系统
Al-Sharif et al. The Effects of Platforms and Languages on the Memory Footprint of the Executable Program: A Memory Forensic Approach.
CN106682493A (zh) 一种防止进程被恶意结束的方法、装置及电子设备
Fetzer et al. Switchblade: enforcing dynamic personalized system call models
Grimm et al. Automatic mitigation of kernel rootkits in cloud environments
KR101421630B1 (ko) 코드 인젝션된 악성코드 탐지 시스템 및 방법
Lim et al. Survey of Dynamic Anti-Analysis Schemes for Mobile Malware.
Suciu et al. Droidsentry: Efficient code integrity and control flow verification on trustzone devices
Choo et al. The behavior-based analysis techniques for HTML5 malicious features
CN107967426A (zh) 一种Linux内核数据攻击的检测方法、防御方法及系统
Szczepanik et al. Android hook detection based on machine learning and dynamic analysis

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