一种基于情境的rop攻击检测系统及方法
【技术领域】
[0001] 本发明属于信息安全技术领域,设及一种基于情境的R0P攻击检测系统及方法,具 体设及一种基于情境的检测Amlroid系统R0P攻击的装置及方法。
【背景技术】
[0002] 随着移动互联网的高速发展,智能手机已经成为人们日常生活中必不可少的一部 分,然而智能手机中往往存在比其他传统终端更多的隐私信息,如短信、通讯录、通话记录、 银行密码等,因此智能手机的安全显得尤为重要。Amlroid操作系统作为移动平台的主流操 作系统,由于其平台应用的开放性W及系统的分层混合结构,近年来针对Android系统应用 程序的攻击层出不穷,为Amlroid系统用户带来巨大的安全风险。
[0003] 面向返回编程攻击,即R0P攻击是一种功能强大较为复杂的非注入代码型攻击,利 用了代码复用技术,自2007年被提出W来,发展迅速。R0P攻击复用程序代码片段(即 Gadget)的编程方法具有图灵完备性,理论上可W构造任意恶意代码。它利用程序自身进程 地址空间的代码片断而不依赖外部注入代码,因此能有效绕过现有的诸多防御机制,例如 DEP和W?X。
[0004] 2008年Kornau等人给出了 ROP攻击在ARM指令集下的实现,自此ROP攻击开始转向 系统底层基于ARM指令集的An化oid系统。攻击者进行针对An化oid系统的R0P攻击,可W绕 过多种防御机制,与其他攻击方式相结合,使得已经被成功防御的攻击方法再度有效,无疑 造成了巨大的安全威胁。如今,R0P攻击已经越来越多地被使用来针对An化0 id系统:CVE-2013-2597的找溢出漏桐、CVE-2014-7911的Amlroid本地提权漏桐W及流传甚广的Hacking Team An化oid Browser Exploit都是ROP攻击在An化oid系统中的实际应用。由此观之,如 何在Amlroid系统中有效的检测R0P攻击已经变成了一个至关重要的问题。
[0005] Amlroid系统面临R0P攻击的威胁,但目前Amlroid的主流产品中,并没有较为完善 系统的R0P检测方法装置的实现。另一方面,对于PC端,软件行为监控和敏感行为拦截已经 是较为成熟的恶意软件对抗技术,有着十分广泛的应用。但在Amlroid系统中,还未有主流 产品将运一技术应用于对R0P攻击的检测中。情境的概念虽然很早就被提出,但是也未有主 流产品从运一角度考虑与R0P攻击检测相结合的方法。
【发明内容】
[0006] 为了解决上述技术问题,提高Amlroid平台的安全性,本发明提出了一种基于情境 的R 0 P攻击检测系统及方法,在对A η d r 0 i d系统本身不做任何修改的情况下,有效检测 Android系统中发生的R0P攻击,并W敏感行为监控与拦截技术避免用户遭受R0P攻击的危 害。
[0007] 本发明的装置所采用的技术方案是:一种基于情境的R0P攻击检测系统,其特征在 于:包括用户交互模块、注入器模块、监控模块、情境收集模块、R0P攻击检测模块与记录模 块;
[0008] 所述用户交互模块提供检测系统与用户交互的接口,在进行ROP攻击检测之前可 W通过用户交互模块指定应用检测范围,当检测到R0P攻击时,用户根据交互模块查验检测 结果与相关情境信息,根据结果维护应用白名单所述注入器模块用于将监控模块注入系统 关键进程,初始监控模块,监控应用的初始启动过程;
[0009] 所述监控模块用于监控应用的敏感行为,当R0P攻击发生时,对其敏感行为进行拦 截;
[0010] 所述情境收集模块用于收集被检应用的情境信息,当触发关键点时,调用R0P攻击 检测模块判断是否发生R0P攻击,当发生R0P攻击时,继续收集问题应用的情境信息;反馈监 控模块,对问题应用的敏感行为进行拦截;调用记录模块,对情境信息进行记录;
[0011] 所述R0P攻击检测模块用于分析情境收集模块获得的情境信息,根据预先配置的 R0P攻击检测策略判断是否发生R0P攻击,当检测到应用进程受到R0P攻击时,调用记录模 块,对R0P攻击发生的相关情境信息进行记录;检测到R0P攻击时反馈情境收集模块,进一步 收集相关情境信息;
[0012] 所述记录模块用于记录R0P攻击检测结果和相关的情境信息,形成R0P攻击检测记 录;
[0013] 用户通过用户交互模块同步数据库查验检测记录,维护生成Amlroid系统应用的 白名单,R0P攻击检测记录和应用白名单被统一保存在数据库当中。
[0014] 作为优选,所述检测系统还包括性能监视单元,对硬件事件的值进行读取,用于检 测R0P攻击;所述性能监视单元包括事件选择模块、性能计数器模块和中断模块;事件选择 模块决定需要记录的性能事件;性能计数器模块对相应性能事件的值进行记录,每当有相 应的事件发生则对应的性能计数器的值将加一;中断模块主要负责何时读取性能计数器的 值。
[0015] 本发明的方法所采用的技术方案是:一种基于情境的R0P攻击检测方法,其特征在 于,包括W下步骤:
[0016] 步骤1:注入系统关键进程,其具体实现包括W下子步骤:
[0017] 步骤1.1:注入器模块查找系统中与敏感行为相关的关键系统进程的PID号;所述 关键系统进程具体是指:与Amlroid系统各种服务相关的system_se;rve;r,与通话、短信等业 务相关的com. an化oid. phone,与录制视频、语音相关的/system/bin/media_se;rve;r;
[0018] 步骤1.2:注入器模块通过ptrace()函数attach W上四个关键系统进程,加载监控 模块到其进程空间,调用mprotect 0函数改变监控模块所在进程空间的可执行属性,最终 由dlopenO函数执行库函m_init〇运行监控模块;
[0019] 步骤1.3:监控模块被注入关键系统进程中运行之后,W修改当前进程全局对象列 表的方式,对1化binder. so库中的ioctl()函数进行HOOK,实现对An化oid系统范围内应用 行为的监控与拦截,至此完成对监控模块的初始化;
[0020] 步骤2:收集被检应用情境信息,其具体实现包括W下子步骤:
[0021 ]步骤2.1:获取系统实时信息,包括:
[0022]①获取应用执行的ARM指令,当前寄存器的值,找空间布局;若当前ARM指令为R0P 攻击的关键指令,包括mov lr,pc指令,跳转指令b,W及切换指令集的跳转指令bx,保存返 回地址的跳转指令blW及切换数据集并保存返回地址的跳转指令blx时,调用R0P检测模 块,判断是否发生ROP攻击;
[0023] ②获取应用程序执行时硬件事件的值,并实时检测硬件事件的值是否存在异常;
[0024] ③在R0P攻击发生时,获取问题应用已加载的模块、加载模块的名称、内存基址、长 度、W及导出函数表,使用函数调用返回地址偏移进行遍历和匹配,定位到产生漏桐的模块 名、函数名和相对于函数首址的偏移;
[0025] ④在R0P攻击发生后,监控、拦截与记录应用的敏感行为;
[0026] 步骤2.2:获取用户预定义,即指用户维护的白名单:对于白名单应用,对其敏感行 为不进行拦截,也不收集其情境信息;
[0027] 步骤3:R0P攻击检测,分析情境收集模块中获得的ARM指令及相关的情境信息,进 而分析应用程序的控制流和数据流,检测R0P攻击的发生;其具体实现包括W下子步骤:
[0028] 步骤3.1:跳转异常检查;
[0029] 通
过当前跳转指令所在的地址与其跳转的目的地址之间的差值是否大于给定阔 值来检测R0P攻击,如果是,则认为发生了R0P攻击;
[0030] 步骤3.2:函数调用异常检查,其具体实现包括W下子步骤:
[0031 ]步骤3.2.1:获取函数调用跳转指令的目标地址开始的基本块;
[0032] 步骤3.2.2 :在基本块的起始部分,提取两条反汇编指令,检查第一条指令是否为 push,操作数中最后一个寄存器是不是Ir;对于第二条指令,检查是否为mov指令,且最后一 个操作数为SP;如果全部满足,则是正常的函数调用,退出检测;如果不满足,则认为是R0P 攻击;
[0033] 步骤3.3:函数返回异常检查,其具体实现包括W下子步骤:
[0034] 步骤3.3.1:在对应用进行情境收集过程中,情境收集模块创建维护一个影子找 Shadow Stack,当执行函数调用指令时,用于存放函数返回地址;
[0035] 步骤3.3.2:当检测到应用程序当前执行函数调用指令bl或blx时,将函数返回地 址压入影子找化adow S化ck中;
[0036] 步骤3.3.3:当检测到当前指令为函数返回的bx Ir指令时,分析影子找顶返回地 址与函数返回控制流跳转目的地址是否一致,如果不一致,则报告为R0P攻击;
[0037] 当检测到R0P攻击时,将R0P攻击检测结果、问题应用的相关情境信息与敏感行为 的监控、拦截情况形成检测记录,呈现给用户。
[003引本发明的主要优点:
[0039] 1.防止攻击者使用R0P技术执行恶意代码或绕过安全机制,避免用户遭受R0P攻击 的危害,提升了系统的安全性;
[0040] 2.检测装置未对系统本身进行修改,方便配置在任意Amlroid系统上,可检测系统 范围内针对任意应用的R0P攻击;
[0041] 3.基于应用的情境信息,从跳转异常检查、函数调用异常检查、函数返回异常检查 与硬件事件检测四个方面有效检测R0P攻击。R0P攻击检测过程的检测粒度达到指令级别, 是一种较细粒度的检测,有较低的漏报率和误报率;
[0042] 4.在检测R0P攻击的同时,同时记录问题应用R0P攻击相关的情境信息,可W辅助 用户对R0P攻击发生过程进行复盘与分析。用户对于Amlroid系统应用白名单的维护,可W 进一步提升检测结果的准确度,改善装置的检测效率。
【附图说明】
[0043] 图1:本发明实施例的装置构架原理图;
[0044] 图2:本发明实施例装置的性能监视单元构架原理图;
[0045] 图3:本发明实施例方法的注入系统关键进程流程图;
[0046] 图4:本发明实施例方法的R0P攻击检测流程图.
【具体实施方式】
[0047] 为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发 明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不 用于限定本发明。
[0048] 请见图1和图2,本发明提供的一种基于情境的R0P攻击检测系统,包括用户交互模 块、注入器模块、监控模块、情境收集模块、R0P攻击检测模块、记录模块和性能监视单元;
[0049] (1)用户交互模块提供了检测系统与用户交互的接口。用户可W通过交互模块指 定应用检测范围,查验检测结果与相关情境信息,还包括根据结果维护应用白名单。
[0050] (2)注入器模块完成将监控模块注入系统关键进程等注入过程,还包括初始监控 模块,W监控应用的敏感行为等初始启动过程。
[0051] (3)监控模块用于监控应用的敏感行为,当R0P攻击发生时,对其敏感行为进行拦 截。
[0052] (4)情境收集模块用于收集被检应用的情境信息,当触发关键点时,调用核屯、模块 R0P攻击检测模块,判断是否发生R0P攻击。当发生R0P攻击时,继续收集问题应用的情境信 息,还包括反馈监控模块,对问题应用的敏感行为进行拦截;调用记录模块,对情境信息进 行记录。
[0053] (5)R0P攻击检测模块,为检测系统的核屯、模块。该模块分析情境收集模块获得的 ARM指令等情境信息,根据预先配置的R0P攻击检测策略判断是否发生R0P攻击。还包括当检 测到应用进程受到R0P攻击时,调用记录模块,对R0P攻击发生的问题模块、问题函数等相关 情境信息进行记录,还包括检测到R0P攻击时反馈情境收集模块,进一步收集相关情境信 息。
[0054] (6)记录模块用于记录R0P攻击检测结果和相关的情境信息,如发生R0P攻击后的 问题应用Package名、问题模块、问题函数等,还包括问题应用的敏感行为监控与拦截情况, 并将W上信息形成R0P攻击检测记录。用户可W通过用户交互模块,同步数据库查验检测记 录,维护生成Amlroid系统应用的白名单。R0P攻击检测记录和应用白名单被统一保存在数 据库当中。
[0055] R0P攻击会导致程序的执行流发生变化,最终会体现在一些硬件事件上。ARM提供 的性能监视单元(Performance Monitor化its,PMU)可W对硬件事件的值进行读取,用于 检测R0P攻击。
[0056] 如图2所示,ARM架构的性能监视单元主要通过APB接口或者CP15接口获得性能监 视计数器的值。性能监视单元包括事件选择模块、性能计数器模块和中断模块。事件选择模 块决定需要记录的性能事件,性能计数器模块对相应性能事件的值进行记录,每当有相应 的事件发生则对应的性能计数器的值将加一。中断模块主要负责何时读取性能计数器的 值,本专利中每隔16000条指令读取一次。
[0057]本专利选取了与R0P攻击最相关的4个性能事件,如表1所示.
[005引表1:用于检测R0P的性能事件 「00591
[0060] ~具体实现步骤如下: '
'
[0061] ①数据处理,鉴于性能和有效性的考量,每隔16000条指令读取一次性能监视计数 器的值,然后利用指数转换对收集到的数据进行处理;
[0062] ②建立分类器,利用非监督式学习方法对收集到的数据进行机器学习;
[0063] ③通过步骤②建立的分类器识别是否存在R0P攻击。
[0064] 本发明提供的一种基于情境的R0P攻击检测方法,包括注入系统关键进程、收集被 检应用情境信息及R0P攻击检测Ξ部分内容。
[00化]一、注入系统关键进程;
[0066] 该部分主要完成将监控模块,注入Android系统关键进程,并初始监控模块的过 程。运行后的监控模块完成对系统内运行应用敏感行为的捕获与拦截,是对Amlroid系统 Nat ive层Hook技术的扩展,如图3,具体步骤:
[0067] 1.注入器模块查找系统中与敏感行为相关的关键系统进程的PID号。关键系统进 程具体是指:与An化oid系统各种服务相关的system_se;rve;r,与通话、短信等业务相关的 com. android. phone,与录审 ij视频、语音相关的/system/bin/media_server。
[0068] 2.鉴于An化oid系统基于linux内核,注入器模块通过ptraceO函数at化chW上四 个关键系统进程,加载监控模块到其进程空间,调用mprotectO函数改变监控模块所在进 程空间的可执行属性,最终由dlopenO函数执行库函m_init〇运行监控模块。
[0069] 3.监控模块被注入关键系统进程中运行之后,W修改当前进程全局对象列表 (Global Object Ta
ble, W下简称GOT)的方式,对lit)binde;r. so库中的ioctlO函数进行 册0K,实现对AiKlroid系统范围内应用行为的监控与拦截,至此完成对监控模块的初始化。
[0070] 二、收集被检应用情境信息;
[0071] 该部分为情境收集模块完成对应用情境信息的收集过程。在相关研究工作中,情 境是指可W用来描述实体状态的任何信息。在本装置中,包括系统实时信息与用户预定义 两个方面,具体步骤:
[0072] 1.获取系统实时信息,包括:
[007引①获取应用执行的ARM指令,当前寄存器的值,找空间布局。若当前ARM指令为R0P 攻击的关键指令,包括mov lr,pc指令,跳转指令b,W及切换指令集的跳转指令bx,保存返 回地址的跳转指令blW及切换数据集并保存返回地址的跳转指令blx时,调用R0P检测模 块,判断是否发生R0P攻击。
[0074] ②获取应用程序执行时硬件事件的值,并实时检测硬件事件的值是否存在异常。
[0075] ③在R0P攻击发生时,获取问题应用已加载的模块、加载模块的名称、内存基址、长 度、W及导出函数表(如果存在的话),使用函数调用返回地址偏移进行遍历和匹配,就可W 定位到产生漏桐的模块名、函数名和相对于函数首址的偏移。
[0076] ④在R0P攻击发生后,监控、拦截与记录应用的敏感行为。
[0077] 2.获取用户预定义,即指用户维护的白名单:
[0078] ①对于白名单应用,对其敏感行为不进行拦截,也不收集其情境信息。
[0079] S、R0P攻击检测;
[0080] 该部分为发明装置的核屯、模块,分析情境收集模块中获得的ARM指令及相关的情 境信息,进而分析应用程序的控制流和数据流,检测R0P攻击的发生,如图4,具体步骤:
[0081] 1.跳转异常检查;
[0082] 通过当前跳转指令所在的地址与其跳转的目的地址之间的差值是否大于给定阔 值来检测R0阳义击。为提高检测效率,降低误报率,只有当两个连续的跳转指令出现且中间 没有出现函数调用指令时,才对跳转指令进行异常检测,并且直接跳转指令因为不能被R0P 攻击利用,所W只关注间接跳转指令。
[0083]具体设及mov l;r,pc指令,跳转指令b,W及切换指令集的跳转指令bx。如果它的操 作数是立即数,则代表其是直接跳转,返回继续执行;如果跳转指令的操作数不是立即数, 本发明就认为它是间接跳转。即mov lr,pc指令为间接跳转指令,其余跳转指令的操作数不 为立即数时为间接跳转指令,为检测中关注的指令。
[0084] 运个限制对于正常程序而言并没有任何影响,只对可能出现在gadget中的跳转指 令进行异常检测。
[0085] 对于满足条件的跳转指令,即当两个连续的跳转指令出现且中间没有出现函数调 用指令的间接跳转指令,取出此条指令所在的地址,记作化mpSour ceAd化e S S;取出跳转指 令操作数的值,即间接跳转的目的地址,记为jumpSinkAddress;计算I jumpSourceAcMress-jumpSinkAd化ess I是否大于给定阔值,如果是,则认为发生了R0P攻击。
[0086] 2.函数调用异常检查;
[0087] 检查函数调用异常要分析函数调用指令,具体设及保存返回地址的跳转指令blW 及切换数据集并保存返回地址的跳转指令blx。
[0088] 正常函数中函数调用跳转指令的目的地址应该是被调函数的入口地址,如果不 是,那么本发明怀疑它可能是R0P攻击。即如果bl指令或blx指令跳转的目的指令序列为 "pushWJr} ;mov r7,sp"(其中"r7"可变,其余固定),则本发明认为它是正常的函数调 用;如果不是,则本发明认为其是R0P攻击。
[0089] 具体实现步骤如下:
[0090] ①获取函数调用跳转指令的目标地址开始的基本块。
[0091 ]②在基本块的起始部分,提取两条反汇编指令,检查第一条指令是否为push,操作 数中最后一个寄存器是不是Ir;对于第二条指令,检查是否为mov指令,且最后一个操作数 为SP。如果全部满足,则是正常的函数调用,退出检测;如果不满足,则认为是R0P攻击。
[0092] 3.函数返回异常检查;
[0093] 为了检查返回异常,建立一个影子找化adow Stack。当执行到函数调用的bl指令 或blx指令时,将函数返回地址压入化adow stack;当执行到函数返回的bx Ir指令时,取出 Shadow Stack找顶的地址,并比较运个地址与返回控制流跳转目的地是否一致。如果运两 个地址不一致,则认为是R0P攻击。也就是说,每当执行新的函数调用过程时,本发明更新 Shadow Stack。函数返回异常检查能够发现没有对应函数调用返回的,利用函数片段构造 的R0P攻击。
[0094]具体实现步骤如下:
[00M]①在对应用进行情境收集过程中,情境收集模块创建维护一个影子找化adow Stack,当执行函数调用指令时,用于存放函数返回地址;
[0096] ②当检测到应用程序当前执行函数调用指令bl或blx时,将函数返回地址压入影 子找化adow Sl:ack中;
[0097] ③当检测到当前指令为函数返回的bx Ir指令时,分析影子找顶返回地址与函数 返回控制流跳转目的地址是否一致,如果不一致,则报告为R0P攻击。
[009引 R0P检测方法除W上Ξ点外,当检测到R0P时,将R0P攻击检测结果、问题应用的相 关情境信息与敏感行为的监控、拦截情况形成检测记录,呈现给用户。用户分析查验检测结 果维护一个Android系统应用的白名单来提升检测的效率,并降低误报率。
[0099] W下结合具体实例对上述方案做进一步说明。
[0100] 实例基于Amlroid系统R0P攻击检测装置的实现。
[0101 ] W运行在An化oid系统的化ckage名为com. example .helloworld的应用为例进行 说明。在Android系统运行时,首先由注入器模块查找到系统关键进程的PID: system_ 361^61'为739,。0111.日]1化〇1(1.地〇]16为149,/37316111/13;[]1/1116(11日_361^61'为152,将监控模块 monitor. so注入到每个关键进程的进程空间,初始化监控模块完成对ioctl ()函数的册0K。 情境收集模块从数据库加载用户维护的应用白名单,如果应用com. example, helloworld不 在白名单上,查找其PID号,得到其PID号为11432;否则继续正常运行应用。情境收集模块通 过ptraceO获取应用com.example.helloworld的情境信息,包括获取应用执行的ARM指令, 当前寄存器的值,找空间布局。解析当前ARM指令,当前ARM指令为函数调用的bl指令或blx 指令时,建立影子找化adow S化ck保存函数的返回地址;为mov l;r,pc指令,跳转指令b,W 及切换指令集的跳转指令bx,保存返回地址的跳转指令blW及切换数据集并保存返回地址 的跳转指令blx时,调用R0P检测模块。R0P检测模块分析传入的应用情境信息,按照R0P检测 策略,进行跳转异常检查、函数调用异常检查与函数返回异常检查。
[0102] 若R0P模块判断未发生R0P攻击,则继续执行程序;若判断R0P攻击已经发生,情境 收集模块获取应用已加载的模块、加载模块的名称、内存基址、长度、W及导出函数表(如果 存在的话),使用
函数调用返回bx值进行遍历和匹配,就可W定位到产生漏桐的模块名、函 数名和相对于函数首址的偏移。将发生R0P攻击的应用化ckage名com.exaple.helloworld、 问题模块名、问题函数名W及相对首地址的偏移存入数据库。
[0103] R0P攻击发生后,监控模块开始监控拦截问题应用的敏感行为,生成记录存入数据 库。
[0104] 用户交互模块同步更新数据库中的检测记录,由用户对检测结果进行查验,考虑 是否更新应用白名单。
[0105] 本发明实现了对Amlroid系统中R0P攻击的有效检测,防止攻击者使用R0P技术执 行恶意代码或绕过安全机制,避免用户遭受ROP攻击的危害,提升系统的安全性。
[0106] 应当理解的是,本说明书未详细阐述的部分均属于现有技术。
[0107] 应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本 发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权 利要求所保护的范围情况下,还可W做出替换或变形,均落入本发明的保护范围之内,本发 明的请求保护范围应W所附权利要求为准。
【主权项】
1. 一种基于情境的ROP攻击检测系统,其特征在于:包括用户交互模块、注入器模块、监 控模块、情境收集模块、R0P攻击检测模块与记录模块; 所述用户交互模块提供检测系统与用户交互的接口,在进行R0P攻击检测之前可以通 过用户交互模块指定应用检测范围,当检测到R0P攻击时,用户根据交互模块查验检测结果 与相关情境信息,根据结果维护应用白名单; 所述注入器模块用于将监控模块注入系统关键进程,初始监控模块,监控应用的初始 启动过程; 所述监控模块用于监控应用的敏感行为,当R0P攻击发生时,对其敏感行为进行拦截; 所述情境收集模块用于收集被检应用的情境信息,当触发关键点时,调用R0P攻击检测 模块判断是否发生R0P攻击,当发生R0P攻击时,继续收集问题应用的情境信息;反馈监控模 块,对问题应用的敏感行为进行拦截;调用记录模块,对情境信息进行记录; 所述R0P攻击检测模块用于分析情境收集模块获得的情境信息,根据预先配置的R0P攻 击检测策略判断是否发生R0P攻击,当检测到应用进程受到R0P攻击时,调用记录模块,对 R0P攻击发生的相关情境信息进行记录;检测到R0P攻击时反馈情境收集模块,进一步收集 相关情境信息; 所述记录模块用于记录R0P攻击检测结果和相关的情境信息,形成R0P攻击检测记录; 用户通过用户交互模块同步数据库查验检测记录,维护生成Android系统应用的白名 单,R0P攻击检测记录和应用白名单被统一保存在数据库当中。2. 根据权利要求1所述的基于情境的R0P攻击检测系统,其特征在于:还包括性能监视 单元,对硬件事件的值进行读取,用于检测R0P攻击; 所述性能监视单元包括事件选择模块、性能计数器模块和中断模块;事件选择模块决 定需要记录的性能事件;性能计数器模块对相应性能事件的值进行记录,每当有相应的事 件发生则对应的性能计数器的值将加一;中断模块主要负责何时读取性能计数器的值。3. -种基于情境的R0P攻击检测方法,其特征在于,包括以下步骤: 步骤1:注入系统关键进程,其具体实现包括以下子步骤: 步骤1.1:注入器模块查找系统中与敏感行为相关的关键系统进程的PID号;所述关键 系统进程具体是指:与Android系统各种服务相关的system_server,与通话、短信等业务相 关的com·android·phone,与录制视步页、语音相关的/system/bin/media_server; 步骤1.2:注入器模块通过ptraceO函数attach以上四个关键系统进程,加载监控模块 到其进程空间,调用mprotectO函数改变监控模块所在进程空间的可执行属性,最终由 dlopenO函数执行库函数_化^〇运行监控模块; 步骤1.3:监控模块被注入关键系统进程中运行之后,以修改当前进程全局对象列表的 方式,对libbinder.so库中的ioctl()函数进行Η00Κ,实现对Android系统范围内应用行为 的监控与拦截,至此完成对监控模块的初始化; 步骤2:收集被检应用情境信息,其具体实现包括以下子步骤: 步骤2.1:获取系统实时信息,包括: ①获取应用执行的ARM指令,当前寄存器的值,栈空间布局;若当前ARM指令为R0P攻击 的关键指令,包括movlr,pc指令,跳转指令b,以及切换指令集的跳转指令bx,保存返回地 址的跳转指令bl以及切换数据集并保存返回地址的跳转指令blx时,调用R0P检测模块,判 断是否发生ROP攻击; ② 获取应用程序执行时硬件事件的值,并实时检测硬件事件的值是否存在异常; ③ 在R0P攻击发生时,获取问题应用已加载的模块、加载模块的名称、内存基址、长度、 以及导出函数表,使用函数调用返回地址偏移进行遍历和匹配,定位到产生漏洞的模块名、 函数名和相对于函数首址的偏移; ④ 在R0P攻击发生后,监控、拦截与记录应用的敏感行为; 步骤2.2:获取用户预定义,即指用户维护的白名单:对于白名单应用,对其敏感行为不 进行拦截,也不收集其情境信息; 步骤3:R0P攻击检测,分析情境收集模块中获得的ARM指令及相关的情境信息,进而分 析应用程序的控制流和数据流,检测R0P攻击的发生;其具体实现包括以下子步骤: 步骤3.1:跳转异常检查; 通过当前跳转指令所在的地址与其跳转的目的地址之间的差值是否大于给定阈值来 检测R0P攻击,如果是,则认为发生了R0P攻击; 步骤3.2:函数调用异常检查,其具体实现包括以下子步骤: 步骤3.2.1:获取函数调用跳转指令的目标地址开始的基本块; 步骤3.2.2:在基本块的起始部分,提取两条反汇编指令,检查第一条指令是否为push, 操作数中最后一个寄存器是不是lr;对于第二条指令,检查是否为mov指令,且最后一个操 作数为sp;如果全部满足,则是正常的函数调用,退出检测;如果不满足,则认为是R0P攻击; 步骤3.3:函数返回异常检查,其具体实现包括以下子步骤: 步骤3.3.1:在对应用进行情境收集过程中,情境收集模块创建维护一个影子栈Shadow Stack,当执行函数调用指令时,用于存放函数返回地址; 步骤3.3.2:当检测到应用程序当前执行函数调用指令bl或blx时,将函数返回地址压 入影子栈ShadowStack中; 步骤3.3.3:当检测到当前指令为函数返回的bxlr指令时,分析影子栈顶返回地址与 函数返回控制流跳转目的地址是否一致,如果不一致,则报告为R0P攻击; 当检测到R0P攻击时,将R0P攻击检测结果、问题应用的相关情境信息与敏感行为的监 控、拦截情况形成检测记录,呈现给用户。
【专利摘要】本发明公开了一种基于情境的ROP攻击检测系统及方法,系统包括用户交互模块、注入器模块、监控模块、情境收集模块、ROP攻击检测模块与记录模块;方法包括注入系统关键进程、收集被检应用情境信息及ROP攻击检测三部分内容。本发明实现了对Android系统中ROP攻击的有效检测,防止攻击者使用ROP技术执行恶意代码或绕过安全机制,避免用户遭受ROP攻击的危害,提升系统的安全性。
【IPC分类】G06F21/56, G06F21/55
【公开号】CN105488397
【申请号】CN201510874221
【发明人】王宇飞, 傅建明, 赵婷, 张波, 曾思成, 李晓龙, 唐亮, 刘欣, 孙辰军, 李俊娥
【申请人】国网智能电网研究院, 国家电网公司, 国网河北省电力公司, 武汉大学
【公开日】2016年4月13日
【申请日】2015年12月2日