一种漏洞防利用方法及系统的制作方法

文档序号:6622067阅读:471来源:国知局
一种漏洞防利用方法及系统的制作方法
【专利摘要】本发明涉及一种漏洞防利用方法及系统,属于网络安全【技术领域】。现有的漏洞扫描方案维护成本较高,也不能及时检测新出的溢出漏洞。本发明所述的方法将漏洞防护模块注入到要保护的进程中;利用漏洞防护模块对漏洞进行检测;当检测到有漏洞运行时,对漏洞进行拦截。采用本发明所述的方法及系统可以在漏洞利用过程中及时检测出来,并阻止漏洞的继续运行。
【专利说明】一种漏洞防利用方法及系统

【技术领域】
[0001] 本发明属于网络安全【技术领域】,具体涉及一种漏洞防利用方法及系统。

【背景技术】
[0002] 随着微软停止对XP系统的技术支持,XP系统用户也将面临各种漏洞的袭击,其中 office软件漏洞尤为多,并且危害性极强。溢出漏洞是一种计算机程序的可更正性缺陷,溢 出漏洞的全名为缓冲区溢出漏洞,因为它是在程序执行的时候在缓冲区执行的错误代码, 所以叫缓冲区溢出漏洞。黑客主要利用office word的一些溢出漏洞对用户发起攻击,由于 这种攻击发起是通过word文档构造巧妙的溢出漏洞,传送word文件实现点对点的攻击,对 于这种漏洞本身杀软很难通过扫描等手段检测出来,而漏洞一旦执行成功将会对用户的财 产安全造成极大的威胁。
[0003] 现有的一些杀软诸如卡巴斯基等,存在一些关于漏洞的静态扫描方案,是针对特 定漏洞做的特征,可以检测到word文档中的特征,来判定是否在利用漏洞,这种方法虽然 针对性强,但是由于漏洞的多变性,导致维护成本较高,也不能及时检测新出的溢出漏洞。
[0004] DEP (Data Execution Prevention) S卩"数据执行保护",是 Windows 的一项安全机 制,主要用来防止病毒和其他安全威胁对系统造成破坏。微软从Windows XP SP2引入了该 技术,并一直延续到此后的Windows Server2003、Windows Server 2008中。DEP是一套软 硬件技术,能够在内存上执行额外检查以帮助防止在系统上运行恶意代码。在Microsoft Windows XP Service Pack 2> Microsoft Windows Server 2003 Service Pack 1> Microsoft Windows XP Tablet PC Edition 2005、Microsoft Windows Vista和Microsoft windows7中,由硬件和软件一起强制实施DEP。
[0005] DEP的优点是可以帮助防止数据页执行代码。通常情况下,不从默认堆和堆栈执行 代码。硬件实施DEP检测从这些位置运行的代码,并在发现执行情况时引发异常。软件实 施DEP可帮助阻止恶意代码利用Windows中的异常处理机制进行破坏。
[0006] 硬件实施DEP是某些DEP兼容处理器的功能,可以防止在已标记为数据存储区的 内存区域中执行代码。此功能也称为非执行和执行保护。Windows XP SP2还包括软件实施 DEP,其目的在于减少利用Windows中的例外处理机制的情况。
[0007] 与防病毒程序不同,硬件和软件实施DEP技术的目的并不是防止在计算机上安装 有害程序。而是监视您的已安装程序,帮助确定它们是否正在安全地使用系统内存。为监 视您的程序,硬件实施DEP将跟踪已指定为"不可执行"的内存区域。如果已将内存指定 为"不可执行",但是某个程序试图通过内存执行代码,Windows将关闭该程序以防止恶意代 码。无论代码是不是恶意,都会执行此操作。


【发明内容】

[0008] 针对现有技术中存在的缺陷,本发明的目的是提供一种漏洞防利用方法及系统, 该方法及系统能够在漏洞利用过程中及时检测出来,并阻止漏洞的继续运行。
[0009] 为达到以上目的,本发明采用的技术方案是,一种漏洞防利用方法,包括以下步 骤:
[0010] 将漏洞防护模块注入到要保护的进程中;
[0011] 利用漏洞防护模块对漏洞进行检测;
[0012] 当检测到有漏洞运行时,对漏洞进行拦截。
[0013] 进一步,通过本地配置文件和/或云端数据库来判断是否需要将漏洞防护模块注 入到要保护的进程中。
[0014] 进一步,所述的漏洞防护模块是通过DEP数据执行保护、ALSR地址随机化机制、 R0P面向返回的编程攻击三种防护手段实现对未知的漏洞进行检测。
[0015] 进一步,所述的漏洞防护模块中内置开关,通过开关操作对DEP数据执行保护、 ALSR地址随机化机制、R0P面向返回的编程攻击三种防护手段实现开启或关闭。
[0016] 进一步,若开启的DEP数据执行保护、ALSR地址随机化机制、R0P面向返回的编程 攻击三种防护手段与其他软件发生冲突,则关闭存在冲突的防护手段。
[0017] 进一步,所述的DEP数据执行保护是将DEP注入进程后打开DEP,接受处理触发的 DEP异常,并且还会针对一些漏洞绕过DEP的方法进行防护。
[0018] 更进一步,在NtVirtualProtectMemory设置了一个检测点,检测栈指针异常、堆 栈执行属性修改,阻止漏洞绕过DEP防护。
[0019] 进一步,所述的ALSR地址随机化机制是在NtVirtualProtectMemory函数中设置 有hook点,当dll加载时调用该函数,此时提前在dll加载地址申请内存并重新加载dll, 地址将会发生变化,就达到了让地址随机化的目的;在dll加载地址申请内存时会记录dll 地址,当shellcode试图访问这个地址时将会抛出异常,被之前设置的异常接受例程接受 到并处理。
[0020] 进一步,所述R0P防护是在多个系统函数中设置观察点,在程序执行到这些函数 的时候做一次检测,如果发现异常则判定为溢出漏洞,其中,所述的检测包括栈状态检查、 返回地址检查和模块调用检查。
[0021] 进一步,所要保护的进程是office word进程,所要拦截的漏洞是office word的溢 出漏洞。
[0022] 本发明还公开了一种漏洞防利用系统,包括以下模块:
[0023] 注入模块,用于将漏洞防护模块注入到要保护的进程中;
[0024] 漏洞防护模块,用于对漏洞进行检测,当检测到有漏洞运行时,对漏洞进行拦截。
[0025] 进一步,所述的漏洞防护模块包括DEP、ALSR、R0P三种防护单元,分别用于通过 DEP数据执行保护、ALSR地址随机化机制、R0P面向返回的编程攻击三种防护手段检测未知 漏洞。
[0026] 进一步,所述的漏洞防护模块中内置开关,通过开关操作对DEP数据执行保护、 ALSR地址随机化机制、R0P面向返回的编程攻击三种防护单元实现开启或关闭。
[0027] 进一步,该系统还设置了过滤模块,用于在存在冲突软件时关闭存在冲突的防护 单元,保证漏洞防护模块稳定的运行。
[0028] 本发明的效果在于:采用本发明所述的方法及系统,可以在漏洞利用过程中及时 检测出来,并阻止漏洞的继续运行。本发明之所以具有上述显著效果,在于本发明使用多种 检测方法动态检测溢出漏洞的发生,可以应对已知和未知漏洞。本发明还加入了云端控制, 增强快速反应能力,在发现新的漏洞时能够从云端指定需要保护的进程,加入开关控制以 及过滤模块最大限度的保证防护的稳定性。

【专利附图】

【附图说明】
[0029] 图1是本发明所述方法的主流程图;
[0030] 图2是本发明所述方法【具体实施方式】中的详细流程图;
[0031] 图3是本发明【具体实施方式】中所述DEP防护的流程图;
[0032] 图4是本发明【具体实施方式】中所述ALSR防护的流程图;
[0033] 图5是本发明【具体实施方式】中所述R0P防护的流程图;
[0034] 图6是本发明【具体实施方式】中所述R0P三种检测方法的流程图;
[0035] 图7是本发明所述系统【具体实施方式】中的结构框图。

【具体实施方式】
[0036] 下面结合附图和【具体实施方式】对本发明作进一步描述。
[0037] 本发明主要针对漏洞利用过程中的一些手法与特点而产生的一些异常来检测漏 洞是否运行,一旦检测到这些异常就阻止漏洞的运行,这种特征由于不是针对特定的漏洞, 所以具有泛用性,只要是利用相似手法的漏洞都可检测出来。
[0038] 本实施例中,以所要保护的进程是office word进程,所要拦截的漏洞是office word的一些溢出漏洞为例对本发明进行详细地描述。
[0039] 如图1所示,一种漏洞防利用方法,包括以下步骤:
[0040] 步骤S1,将漏洞防护模块注入到要保护的进程中;
[0041] 步骤S2,利用漏洞防护模块对漏洞进行检测;
[0042] 步骤S3,当检测到有漏洞运行时,对漏洞进行拦截。
[0043] 如图2所示,本实施例中,是通过本地配置文件和/或云端数据库来判断是否需要 将漏洞防护模块注入到要保护的进程中。
[0044] 所述的漏洞防护模块是通过DEP (Data Execution Prevention,数据执行保护)、 ALSR(地址随机化机制)、R0P(Return-〇riented programming,面向返回的编程攻击)三种 防护手段实现对未知的office word的一些溢出漏洞进行检测。
[0045] 所述的漏洞防护模块中内置开关,通过开关操作对DEP (数据执行保护)、ALSR (地 址随机化机制)、R0P三种防护手段实现开启或关闭。
[0046] 本实施例中,所述的方法还包括以下步骤:若开启的DEP、ALSR、R0P三种防护手段 与其他软件发生冲突,则关闭存在冲突的防护手段。
[0047] 下面对DEP、ALSR、R0P三种防护在本实施例中的具体实现方法进行详细说明:
[0048] 1、DEP 防护:
[0049] XP SP2以后的操作系统本身内置了 DEP (数据执行保护)功能,但是未针对WORD 等进程打开,本方案在注入相关进程后将打开DEP,并接受处理触发的DEP异常。并且还会 针对一些漏洞绕过DEP的方法进行防护。
[0050] DEP防护整体设计示意图如图3所示。在NtVirtualProtectMemory设置了一个检 测点,检测栈指针异常、堆栈执行属性修改,可以有效的阻止漏洞绕过DEP防护。
[0051] 2、ALSR 防护:
[0052] 漏洞在运行过程中大部分都需要硬编码一些地址在shellcode中,而Shellcode 是在漏洞发生后获得执行权限的一段代码,可以为提升权限或者做其他恶意操作。
[0053] 由于XP下动态链接库的加载地址都是不变的,所以很容易被利用,本方案将使用 一些手法使得动态链接库在加载过程中地址发生变化,从而使得shellcode在执行过程中 出现错误,此时接受到这些异常则可判定发生溢出。
[0054] ALSR防护示意图如图4所示。ALSR防护是在NtMapViewOfSection函数中设置 Η00Κ点,hook是通过修改程序代码从而达到改变程序执行流程,在程序执行过程中加入检 测流程的方法。当dll加载时会调用该函数,此时提前在dll加载地址申请内存并重新加 载dll,地址将会发生变化,就达到了让地址随机化的目的。而在dll加载地址申请内存时 会记录dll地址,当shellcode试图访问这个地址时将会抛出异常被之前设置的异常接受 例程接受到并处理。
[0055] 3、R0P 防护:
[0056] 在漏洞的执行过程中通常需要调用一些系统函数来达到特定的目的,包括下载文 件、执行程序、创建远程线程、记载动态链接库等,根据这个特点,本方案在多个系统函数中 设置观察点,在程序执行到这些函数的时候做一次检测,如果发现异常则可判定为溢出漏 洞。
[0057] R0P防护观测点示意图如图5所示。这些观测点实际上是在一些shellcode执行 过程中可能用到的重要函数中,也就是在漏洞发生后必经的重要路径中,在此时检测可发 现大量的异常情况,组合一次或多次异常则可判定发生溢出漏洞。
[0058] 这里R0P防护主要有三种检测,栈状态检查(栈指针、栈帧)、返回地址检查(返回 地址是否可执行、返回地址是否为call指令)、模块调用检查(是否从可执行模块调用), 如图6所示。
[0059] 如图7所示,一种漏洞防利用系统,包括以下模块:
[0060] 注入模块11,用于将漏洞防护模块注入到要保护的Office word进程中;
[0061] 漏洞防护模块12,用于对office word的一些溢出漏洞进行检测,当检测到有 office word的一些溢出漏洞运行时,对漏洞进行拦截。
[0062] 本实施例中,所述的漏洞防护模块包括DEP防护单元14、ALSR防护单元 15、R0P防护单元16,分别用于通过DEP(数据执行保护)、ALSR(地址随机化机制)、 R0P (Return-oriented programming,面向返回的编程攻击)三种防护手段检测未知漏洞。
[0063] 所述的漏洞防护模块中内置开关,通过开关操作对DEP数据执行保护、ALSR地址 随机化机制、R0P面向返回的编程攻击三种防护单元实现开启或关闭。
[0064] 本实施例中,为了解决开启DEP、ALSR、R0P三种防护方案与其他软件可能发生冲 突的问题,还设置了过滤模块13,用于在存在冲突软件时关闭存在冲突的防护单元,保证漏 洞防护模块稳定的运行。
[0065] 通过上述实施例可以看出,采用本发明所述的方法及系统,可以在漏洞利用过程 中及时检测出来,并阻止漏洞的继续运行。
[0066] 本发明之所以具有上述显著效果,主要在于:
[0067] 1、本发明通过使用多种检测方法动态检测溢出漏洞的发生,可以应对已知和未知 漏洞;
[0068] 2、本发明通过加入了云端控制,可以增强快速反应,在发现新的漏洞时能够从云 端指定需要保护的进程;
[0069] 3、本发明通过加入开关控制以及过滤模块可以最大限度的保证防护的稳定性。
[0070] 本发明所述的方法和系统并不限于【具体实施方式】中所述的实施例,所述的漏洞并 不限于office漏洞,所述的防护手段也不限于DEP、ALSR、R0P三种防护手段。本领域技术人 员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技术创新范围。
[0071] 此外,术语"第一"、"第二"仅用于描述目的,而不能理解为指示或暗示相对重要性 或者隐含指明所指示的技术特征的数量。由此,限定有"第一"、"第二"的特征可以明示或 者隐含地包括至少一个该特征。在本发明的描述中,"多个"的含义是至少两个,例如两个, 三个等,除非另有明确具体的限定。
[0072] 在本说明书的描述中,参考术语"一个实施例"、"一些实施例"、"示例"、"具体示 例"、或"一些示例"等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特 点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不 必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任 一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技 术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结 合和组合。
[0073] 尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例 性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述 实施例进行变化、修改、替换和变型。
【权利要求】
1. 一种漏洞防利用方法,包括以下步骤: 将漏洞防护模块注入到要保护的进程中; 利用漏洞防护模块对漏洞进行检测; 当检测到有漏洞运行时,对漏洞进行拦截。
2. 如权利要求1所述的方法,其特征在于:通过本地配置文件和/或云端数据库来判 断是否需要将漏洞防护模块注入到要保护的进程中。
3. 如权利要求1所述的方法,其特征在于:所述的漏洞防护模块是通过DEP数据执行 保护、ALSR地址随机化机制、ROP面向返回的编程攻击三种防护手段实现对未知的漏洞进 行检测。
4. 如权利要求3所述的方法,其特征在于:所述的漏洞防护模块中内置开关,通过开关 操作对DEP数据执行保护、ALSR地址随机化机制、ROP面向返回的编程攻击三种防护手段实 现开启或关闭。
5. 如权利要求3或4所述的方法,其特征在于,该方法还包括以下步骤:若开启的DEP 数据执行保护、ALSR地址随机化机制、ROP面向返回的编程攻击三种防护手段与其他软件 发生冲突,则关闭存在冲突的防护手段。
6. 如权利要求3所述的方法,其特征在于:所述的DEP数据执行保护是将DEP注入进程 后打开DEP,接受处理触发的DEP异常,并且还会针对一些漏洞绕过DEP的方法进行防护。
7. 如权利要求6所述的方法,其特征在于:在NtVirtualProtectMemory设置了一个检 测点,检测栈指针异常、堆栈执行属性修改,阻止漏洞绕过DEP防护。
8. 如权利要求3所述的方法,其特征在于: 所述的ALSR地址随机化机制是在NtVirtualProtectMemory函数中设置有hook点, 当dll加载时调用该函数,此时提前在dll加载地址申请内存并重新加载dll,地址将会 发生变化,就达到了让地址随机化的目的;在dll加载地址申请内存时会记录dll地址,当 shellcode试图访问这个地址时将会抛出异常,被之前设置的异常接受例程接受到并处理。
9. 如权利要求3所述的方法,其特征在于:所述R0P防护是在多个系统函数中设置观 察点,在程序执行到这些函数的时候做一次检测,如果发现异常则判定为溢出漏洞,其中, 所述的检测包括栈状态检查、返回地址检查和模块调用检查。
10. 如权利要求1至4任一项所述的方法,其特征在于:所要保护的进程是office word 进程,所要拦截的漏洞是office word的溢出漏洞。
11. 一种漏洞防利用系统,包括以下模块: 注入模块,用于将漏洞防护模块注入到要保护的进程中; 漏洞防护模块,用于对漏洞进行检测,当检测到有漏洞运行时,对漏洞进行拦截。
12. 如权利要求11所述的系统,其特征在于:所述的漏洞防护模块包括DEP、ALSR、ROP 三种防护单元,分别用于通过DEP数据执行保护、ALSR地址随机化机制、ROP面向返回的编 程攻击三种防护手段检测未知漏洞。
13. 如权利要求12所述的系统,其特征在于: 所述的漏洞防护模块中内置开关,通过开关操作对DEP数据执行保护、ALSR地址随机 化机制、R0P面向返回的编程攻击三种防护单元实现开启或关闭。
14. 如权利要求11或12或13所述的系统,其特征在于:该系统还设置了过滤模块,用 于在存在冲突软件时关闭存在冲突的防护单元,保证漏洞防护模块稳定的运行。
【文档编号】G06F21/57GK104217157SQ201410372895
【公开日】2014年12月17日 申请日期:2014年7月31日 优先权日:2014年7月31日
【发明者】张韬, 刘桂峰, 姚辉 申请人:珠海市君天电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1