一种应用的保护方法及系统技术方案

技术编号:21273822 阅读:47 留言:0更新日期:2019-06-06 08:08
本发明专利技术涉及一种应用的保护方法和系统,包括:获取该应用,该应用包括第一部分应用和第二部分应用,内存空间包括安全区域;将应用该第一部分应用存放至该安全区域,应用第二部分应用存放至该安全区域外的该内存空间,将指向该安全区域的地址随机放置到虚拟地址空间中;当该虚拟地址空间内发生试探行为时,在该内存空间中随机移动该安全区域的位置,并在该安全区域原有位置遗留一个禁止访问的陷阱区域;当检测到任何对该陷阱区域的访问时,报出访问陷阱区域的警告信息给用户。随着试探次数的增多,安全区域被随机的次数也会增多,使得攻击者的下次试探会很大概率被捕获。

【技术实现步骤摘要】
一种应用的保护方法及系统
本专利技术涉及应用软件的安全和防护(SecurityandProtection)领域,特别涉及一种信息隐藏方法及系统。
技术介绍
由于低开销和高安全特性,信息隐藏技术已经成为众多防御机制的防御基础。很多防御机制利用该隐藏技术保护其关键数据。例如,用其保护跳转指令的跳转目标,保护所有的代码指针,保护加解密使用的秘钥,保护安全的栈帧,保护所有代码变体地址等。该技术将隐藏区域(本专利技术称之为“安全区域”)随机放置到巨大的虚拟地址空间中,并确保所有指向该安全区域的指针无法泄露。巨大的随机熵使得攻击者很难猜到安全区域所在的位置。安全区域只能通过专用寄存器加偏移的方式进行合法访问。在较长的一段时间里,人们认为利用信息隐藏技术来保护关键数据是安全可靠的。然而随着试探攻击技术的发展,信息隐藏技术已遭到破解。一类方式是避免试探过程中崩溃出现,从而攻击者可以获得持续试探的机会。有些研究人员利用网络服务器应用的工作进程自启动特性,来避免试探过程中的崩溃发生。还有一些研究人员采用注册信号处理函数来避免崩溃。因此诞生了一种更加隐蔽的试探技术,它通过反复申请内存来测量未分配区域(空区域)的大小来间接推断出安全区域的位置。第二类方式是降低安全区域的随机熵,攻击者观察到很多安全区域是线程局部的,因此可以通过大量喷射线程,在虚拟地址空间中喷射大量的安全区域,进而使得其随机熵下降。这些新型攻击方法的出现使得信息隐藏技术不再有效,同时使用该技术的防御机制面临重大的安全威胁。为了解决上述安全问题,MemSentry提出两种强隔离手段来保护安全区域:一个是基于域的隔离方法;另一个是基于地址的隔离方法。对于访问不频繁的安全区域,它采用第一种隔离方法。每当需要访问安全区域时,MemSentry打开安全区域的内存访问权限;当不需要访问安全区域时,MemSentry关闭安全区域的内存访问权限。对于访问非常频繁的安全区域,它采用第二种隔离方法,即插桩所有的访问指令,来约束访存指令的访问地址,使其不能访问安全区域的位置。基于这两种防御方法,MemSentry开发了一个工具链和一个运行时环境。受保护的程序需要利用MemSentry提供的编译器来编译该程序,并显示指定安全区域。编译后的程序随后运行在其提供的运行时环境里。虽然MemSentry能够有效保护安全区域,但是它也有很多劣势使得MemSentry很难部署。首先,对于现有使用信息隐藏技术的防御机制,绝大部分的安全区域都是访问频繁的。MemSentry只能使用基于地址的隔离方法,但是该方法开销仍然较大(经SPECCPU2006基准测试集测试,MemSentry所引入的开销大于15%)。其次,MemSentry需要使用信息隐藏技术的防御机制和被保护的程序都需要有源代码,进行重新编译。然而,现有大部分防御机制都是针对二进制程序的,不需要源代码。对于这些防御机制,MemSentry无法提供有效的保护。通过对所有使用信息隐藏技术的防御机制进行分析,发现现有防御机制的安全区域中均存储着以下内容:代码指针、与代码位置相关的地址、加密秘钥和安全的栈局部变量(该变量不会传播,只会在本函数内访问。该局部变量只通过利用栈指针寄存器进行访问,不能通过绝对地址等其他方式进行访问)。通过观察安全区域中的内容,可以发现受保护的内容都是与安全区域位置无关的,即安全区域中没有存储指向安全区域的绝对地址。安全区域位置无关特性启发了本专利技术可以通过持续移动安全区域的位置来抵御现有的试探攻击。由于信息隐藏技术将指向安全区域的指针存放到独占的寄存器中,并确保该寄存器内容不会被泄露,因此攻击者只能通过猜测的手段来暴力扫描内存找到安全区域的位置。实际上,无论攻击者使用何种方式进行内存虚拟地址扫描,他们都需要通过以下三种攻击渠道来完成攻击:渠道1:搜集足够多的虚拟内存布局信息来高效地推测安全的位置;渠道2:创造大量并且持续试探的机会,并且不会使得目标进程崩溃;渠道3:降低安全区域的随机熵来增大单次试探的成功概率。
技术实现思路
为了解决上述技术问题,本专利技术目的在于提供一种应用的保护方法(本专利技术),其中包括:步骤1、获取该应用,该应用包括第一部分应用和第二部分应用,内存空间包括安全区域;步骤2、将应用该第一部分应用存放至该安全区域,应用第二部分应用存放至该安全区域外的该内存空间,将指向该安全区域的地址随机放置到虚拟地址空间中;步骤3、当该虚拟地址空间内发生试探行为时,在该内存空间中随机移动该安全区域的位置,并在该安全区域原有位置遗留一个禁止访问的陷阱区域;步骤4、当检测到任何对该陷阱区域的访问时,报出访问陷阱区域的警告信息给用户。该应用的保护方法,其中该方法还包括:启动该应用第一部分,生成受保护第一进程,为该第一进程的每个线程分配私有内存区域;启动该应用第二部分,生成受保护第二进程,为该第二进程的每个线程分配私有内存区域;当某一线程访问其他线程的私有内存区域时,报出访问私有内存区域的警告信息给用户。该应用的保护方法,其中通过为每个线程分别维护各自独立的一张私有扩展页表,每一张私有扩展页表分别对应一个私有内存区域。该应用的保护方法,其中该步骤2包括:每次随机移动完安全区域的位置,更新独占寄存器中的值使其指向随机移动后的该安全区域,并在该安全区域原有位置遗留一个于该安全区域相同大小的该陷阱区域。该应用的保护方法,其中该试探行为包括内存分配、内存权限设置、内存克隆和内存访问。本专利技术还公开了一种应用的保护系统,其中包括:获取应用模块,用于获取该应用,该应用包括第一部分应用和第二部分应用,内存空间包括安全区域;随机放置模块,用于将应用该第一部分应用存放至该安全区域,应用第二部分应用存放至该安全区域外的该内存空间,将指向该安全区域的地址随机放置到虚拟地址空间中;陷阱遗留模块,用于当该虚拟地址空间内发生试探行为时,在该内存空间中随机移动该安全区域的位置,并在该安全区域原有位置遗留一个禁止访问的陷阱区域;告警模块,用于当检测到任何对该陷阱区域的访问时,报出访问陷阱区域的警告信息给用户。该应用的保护系统,其中该系统还包括:私有内存启动该应用第一部分,生成受保护第一进程,为该第一进程的每个线程分配私有内存区域;启动该应用第二部分,生成受保护第二进程,为该第二进程的每个线程分配私有内存区域;当某一线程访问其他线程的私有内存区域时,报出访问私有内存区域的警告信息给用户。该应用的保护系统,其中通过为每个线程分别维护各自独立的一张私有扩展页表,每一张私有扩展页表分别对应一个私有内存区域。该应用的保护系统,其中该随机放置模块包括:每次随机移动完安全区域的位置,更新独占寄存器中的值使其指向随机移动后的该安全区域,并在该安全区域原有位置遗留一个于该安全区域相同大小的该陷阱区域。该应用的保护系统,其中该试探行为包括内存分配、内存权限设置、内存克隆和内存访问。本专利技术的技术效果包括:在使用信息隐藏技术的受保护进程运行时,其安全区域的位置会持续被移动。本专利技术运行时捕获攻击者所有可能的试探行为(包括内存分配、内存权限设置、内存克隆和内存访问),每当这些试探行为被检测到后,本专利技术会立即随机移动安全区域的位置。每次安全区域移动后,原有安全区域的位置会变为陷阱区域。随着攻击本文档来自技高网
...

【技术保护点】
1.一种应用的保护方法,其特征在于,包括:步骤1、获取该应用,该应用包括第一部分应用和第二部分应用,内存空间包括安全区域;步骤2、将应用该第一部分应用存放至该安全区域,应用第二部分应用存放至该安全区域外的该内存空间,将指向该安全区域的地址随机放置到虚拟地址空间中;步骤3、当该虚拟地址空间内发生试探行为时,在该内存空间中随机移动该安全区域的位置,并在该安全区域原有位置遗留一个禁止访问的陷阱区域;步骤4、当检测到任何对该陷阱区域的访问时,报出访问陷阱区域的警告信息给用户。

【技术特征摘要】
1.一种应用的保护方法,其特征在于,包括:步骤1、获取该应用,该应用包括第一部分应用和第二部分应用,内存空间包括安全区域;步骤2、将应用该第一部分应用存放至该安全区域,应用第二部分应用存放至该安全区域外的该内存空间,将指向该安全区域的地址随机放置到虚拟地址空间中;步骤3、当该虚拟地址空间内发生试探行为时,在该内存空间中随机移动该安全区域的位置,并在该安全区域原有位置遗留一个禁止访问的陷阱区域;步骤4、当检测到任何对该陷阱区域的访问时,报出访问陷阱区域的警告信息给用户。2.如权利要求1所述的应用的保护方法,其特征在于,该方法还包括:启动该应用第一部分,生成受保护第一进程,为该第一进程的每个线程分配私有内存区域;启动该应用第二部分,生成受保护第二进程,为该第二进程的每个线程分配私有内存区域;当某一线程访问其他线程的私有内存区域时,报出访问私有内存区域的警告信息给用户。3.如权利要求2所述的应用的保护方法,其特征在于,通过为每个线程分别维护各自独立的一张私有扩展页表,每一张私有扩展页表分别对应一个私有内存区域。4.如权利要求1所述的应用的保护方法,其特征在于,该步骤2包括:每次随机移动完安全区域的位置,更新独占寄存器中的值使其指向随机移动后的该安全区域,并在该安全区域原有位置遗留一个于该安全区域相同大小的该陷阱区域。5.如权利要求1所述的应用的保护方法,其特征在于,该试探行为包括内存分配、内存权限设置、内存克隆和内存访问。6.一种应用的保护系统,其...

【专利技术属性】
技术研发人员:王喆武成岗赖远明康妍
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:北京,11

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

1