保护进程内存及确保驱动程序加载的安全性的方法技术

技术编号:2915592 阅读:624 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了保护进程内存及确保驱动程序加载的安全性的方法。所述方法包括:在SSDT中与NtWriteVirtualMemory函数或NtLoadDriver函数对应的系统服务号处,将相应函数的地址指针修改为相应安全检测程序的地址指针;接收进程的写内存请求或对驱动程序的加载请求;在修改后的SSDT中查找相应的系统服务号并调用相应的安全检测程序;以及安全检测程序判断写内存请求或加载请求是否受限或合法,如果不受限或合法,则调用并执行NtWriteVirtualMemory函数或NtLoadDriver函数,如果受限或不合法,则执行规则处理。本发明专利技术的方法可广泛地用于保证网络安全性和系统安全性。

【技术实现步骤摘要】

本专利技术涉及网络安全和系统安全领域,特别涉及保护进程内存及确保驱动程序加载的安全性的方法
技术介绍
随着互联网技术的发展,网络安全问题日益突出,而由此带来的系统安全性问题也越来越引起人们的关注。各种计算机病毒、木马程序等恶意软件不仅让广大计算机用户防不胜防,同时也极大地制约着包含电子商务在内的互联网相关产业的发展。因此,信息安全问题已经成为涉及网上身份认证、网上支付技术在内的整个电子商务产业的发展瓶颈。一般地,这些恶意软件的破坏性是通过向系统的进程内存中非法写入恶意代码或者在系统中安装恶意驱动程序而造成的。因此,如何有效地防止非法写内存或者非法安装驱动程序成了抵制这类恶意软件的关键,也成了保证网络安全和系统安全的关键。当前,人们广为使用的操作系统的运行可被分为用户模式和内核模式。在用户模式下,对来自外部的用户请求等进行处理,其相当于计算机三环保护模型中的三环(Ring 3),具有最低权限级别。在内核模式下,执行系统内核组件功能,通过系统内核函数等的执行来最终响应用户请求,其对应于三环保护模型中的零环(Ring 0),具有最高权限级别。目前,人们开发出的多种网络防护和系统防护软件产品未能从系统内核层的角度来考虑进行架构,即,未能在具有最高权限级别的内核模式下防止恶意软件对内核层函数进行调用,从而不能从根源上抵制恶意软件的破坏行为。由于这些产品的设计构架的局限性,其并不能满足人们对于网络安全和系统安全的日益增长的需求。-->因此,需要能够从内核层来实现保护进程内存及确保驱动程序加载的安全性的方法,以便更高效地抵制恶意软件的破坏行为。
技术实现思路
针对上述问题,本专利技术从系统的内核层出发来实现网络安全性和系统安全性。本专利技术的一个目的是对进程的写内存请求进行拦截和检测,以实现执行写内存请求时的安全性。本专利技术的另一个目的是对驱动程序的加载请求进行拦截和检测,以实现执行驱动程序加载请求时的安全性。为了实现上述目的,本专利技术提供一种保护进程内存的方法,包括:(a)在系统服务描述表(SSDT)中与NtWriteVirtualMemory函数对应的系统服务号处,将NtWriteVirtualMemory函数的地址指针修改为安全检测程序的地址指针;(b)接收进程的写内存请求;(c)在修改后的SSDT中查找所述系统服务号并调用所述安全检测程序;以及(d)所述安全检测程序判断所述写内存请求是否受限,如果受限,则执行规则处理,如果不受限,则调用NtWriteVirtualMemory函数对所述进程进行写内存操作。此外,本专利技术还提供一种确保驱动程序加载的安全性的方法,包括:(a)在系统服务描述表(SSDT)中与NtLoadDriver函数对应的系统服务号处,将NtLoadDriver函数的地址指针修改为安全检测程序的地址指针;(b)接收对驱动程序的加载请求;(c)在修改后的SSDT中查找所述系统服务号并调用所述安全检测程序;以及(d)所述安全检测程序判断所述加载请求是否合法,如果合法,则调用NtLoadDriver函数进行对所述驱动程序的加载操作,如果不-->合法,则执行规则处理。本专利技术的方法具有安全、稳定、效率高、使用简便、通用性强等特点。本专利技术可以广泛地用于保证系统安全性以及网络安全性。附图说明图1示出根据本专利技术对系统服务描述表(SSDT)进行修改的示意图;图2示出根据本专利技术的保护进程内存的方法的流程图;图3示出在根据本专利技术的保护进程内存的方法中所执行的规则处理的示例性流程图;图4示出根据本专利技术的确保驱动程序加载的安全性的方法的流程图;以及图5示出在根据本专利技术的确保驱动程序加载的安全性的方法中所执行的规则处理的示例性流程图。具体实施方式当前使用的操作系统在接收到外部用户请求时,会经由系统服务调用接口对相应的内核层函数进行调用,从而响应用户请求。对内核层函数进行调用的过程主要为:对用户请求进行解析,在系统服务描述表(SSDT)中查找到相应的系统服务号及在该系统服务号处记录的与之对应的指向内核层函数的地址指针,然后根据该地址指针调用并执行函数。本专利技术保护进程内存的方法涉及内核层的NtWriteVirtualMemory函数,而确保驱动程序加载的安全性的方法涉及内核层的NtLoadDriver函数。基于以上描述的调用过程,例如,可以通过对外部函数WriteVirtualMemory(用于写内存)和OpenService(用于加载驱动程序)的执行过程分别进行跟踪,获得NtWriteVirtualMemory函数和NtLoadDriver函数在SSDT中的系统服务号及其地址指针。由此,便可通过对地址指针进行修改并进而由本专利技术的安全检测程序进行安全性检测来实现本专利技术的目的,以下将对此进行详细描述。-->图1示出根据本专利技术对SSDT进行修改的示意图。在本专利技术中,为了利用安全检测程序实现对外部请求的拦截和检测,在SSDT中分别对应于NtWriteVirtualMemory函数和NtLoadDriver函数的系统服务号A1和A2处,将NtWriteVirtualMemory函数和NtLoadDriver函数的地址指针分别修改为安全检测程序1和2的地址指针,其中,安全检测程序1可实现对进程的写内存请求的安全检测,安全检测程序2可实现对驱动程序的加载请求的安全检测。当外部请求到达并查找到SSDT的系统服务号A1或A2处时,调用该服务号处此时记录的地址指针(即,修改后的安全检测程序1或2的地址指针),由此,该外部请求实际上被拦截并转向安全检测程序1或2,安全检测程序1或2进而可对外部请求的安全性进行检测。可选地,安全检测程序1和2的功能可以集成在一起,从而在SSDT被修改后,系统服务号A1和A2处所记录的地址指针将指向相同的安全检测程序地址。下面具体描述根据本专利技术的保护进程内存的方法。图2示出根据本专利技术的保护进程内存的方法的流程图。在步骤S20,在SSDT中与NtWriteVirtualMemory函数对应的系统服务号A1处,将NtWriteVirtualMemory函数的地址指针修改为安全检测程序1的地址指针。在步骤S22,接收进程的写内存请求。在步骤S24,在修改后的SSDT中查找系统服务号A1,并根据A1处此时记录的安全检测程序1的地址指针来调用安全检测程序1。在步骤S26,安全检测程序1判断写内存请求是否是受限的,即,确定该写内存请求是否由于其可能是恶意软件所发出并可能对安全性造成危害而应受到限制,或者该写内存请求是否具有直接调用NtWriteVirtualMemory函数的权限。如果该写内存请求受限,则执行规则处理(将结合图3进行说明),如果不受限,则调用NtWriteVirtualMemory函数对所述进程进行写内存操作。可选地,在上述的步骤S20之前,例如,可以通过跟踪WriteVirtualMemory函数的执行过程,获得NtWriteVirtualMemory函数在SSDT中的系统服务号和地址指针。对于NtWriteVirtualMemory-->函数的系统服务号和地址指针的获取也可以采用本领域技术人员能够借助的其它技术手段来实现。可选地,在步骤S20中,还可以对NtWriteVirtualMemory函数的地址指针进行本文档来自技高网...

【技术保护点】
一种保护进程内存的方法,包括: (a)在系统服务描述表(SSDT)中与NtWriteVirtualMemory函数对应的系统服务号处,将NtWriteVirtualMemory函数的地址指针修改为安全检测程序的地址指针; (b) 接收进程的写内存请求; (c)在修改后的SSDT中查找所述系统服务号并调用所述安全检测程序;以及 (d)所述安全检测程序判断所述写内存请求是否受限,如果受限,则执行规则处理,如果不受限,则调用NtWriteVirtualMemo ry函数对所述进程进行写内存操作。

【技术特征摘要】
1、一种保护进程内存的方法,包括:(a)在系统服务描述表(SSDT)中与NtWriteVirtualMemory函数对应的系统服务号处,将NtWriteVirtualMemory函数的地址指针修改为安全检测程序的地址指针;(b)接收进程的写内存请求;(c)在修改后的SSDT中查找所述系统服务号并调用所述安全检测程序;以及(d)所述安全检测程序判断所述写内存请求是否受限,如果受限,则执行规则处理,如果不受限,则调用NtWriteVirtualMemory函数对所述进程进行写内存操作。2、如权利要求1所述的保护进程内存的方法,其中,在步骤(a)之前还包括:通过跟踪WriteVirtualMemory函数的执行过程,获得NtWriteVirtualMemory函数在SSDT中的所述系统服务号和所述地址指针。3、如权利要求1所述的保护进程内存的方法,其中,步骤(a)还包括对NtWriteVirtualMemory函数的所述地址指针进行存储。4、如权利要求1所述的保护进程内存的方法,其中,在步骤(b)之前还包括:建立受保护进程列表。5、如权利要求4所述的保护进程内存的方法,其中,步骤(d)中判断所述写内存请求是否受限的处理包括:判断所述进程是否位于所述受保护进程列表中。6、如权利要求5所述的保护进程内存的方法,其中,如果所述进程位于所述受保护进程列表中,则所述写内存请求被判断为受限;如果所述进程不位于所述受保护进程列表中,则所述写内存请求被判断为不受限。7、如权利要求5所述的保护进程内存的方法,其中,判断所述进程是否位于所述受保护进程列表中的处理包括:解析所述进程的全路径;判断解析出的所述进程的全路径是否与受保护进程列表中的某一进程的全路径匹配。8、如权利要求7所述的保护进程内存的方法,其中,如果存在匹配,则所述写内存请求被判断为受限;如果不存在匹配,则所述写内存请求被判断为不受限。9、如权利要求1所述的保护进程内存的方法,其中,所述规则处理包括:判断是否需要由用户处理;如果不需要由用户处理,则拒绝所述写内存请求,否则,交给用户处理。10、如权利要求9所述的保护进程内存的方法,其中,如果用户接受所述写内存请求,则调用NtWriteVirtualMemory函数进行写内存操作;如果用户不接受,则拒绝所述写内存请求。11、如权利要求1所述的保护进程内存的方法,其中,所述规则处理包括:直接拒绝所述写内存请求。12、一种确保驱动程序加载的安全性的方法,包括:(...

【专利技术属性】
技术研发人员:韩宇
申请(专利权)人:北京瑞星国际软件有限公司
类型:发明
国别省市:11[中国|北京]

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

1