一种Windows系统服务描述符表防篡改装置及方法
【技术领域】
[0001]本发明涉及计算机安全领域,特别涉及一种Windows系统服务描述符表防篡改装置及方法。
【背景技术】
[0002]随着计算机技术的不断发展,用户对计算机安全性的要求也越来越高,其中操作系统是计算机的核心部分,一旦操作系统被黑客或非法用户控制及利用,后果将不堪设想。系统服务描述符表是Windows操作系统的关键部件,是所有应用层API的统一入口,黑客经常使用自己编写的Rootkit后门程序来篡改系统服务描述符表,以达到隐藏自身、破坏系统正常行为的目的,所以防止对系统服务描述符表进行恶意篡改是亟待解决的问题。
[0003]目前,对于系统服务描述符表的防篡改方法主要包括:通过Windows操作系统自带的PatchGuard机制,在操作系统运行期间检查系统服务描述符表是否被篡改,如果被篡改操作系统马上报错、宕机。
[0004]针对通过PatchGuard机制对系统服务描述符表进行防篡改的方法,当Windows操作系统处于调试模式下运行时,PatchGuard机制不生效,黑客会在Rootkit后门程序中将Windows操作系统的运行模式置于调试模式,从而对系统服务描述符表进行篡改,因此通过PatchGuard机制对系统服务描述符表进行防篡改,Windows操作系统的安全性较低。
【发明内容】
[0005]本发明提供一种Windows系统服务描述符表防篡改装置及方法,能够提高Windows操作系统的安全性。
[0006]本发明提供了一种Windows系统服务描述符表防篡改装置,包括:主服务进程模块,CPU虚拟化驱动模块及OS通信驱动模块;
[0007]所述主服务进程模块,用于安装所述CPU虚拟化驱动模块和所述OS通信驱动模块;
[0008]所述OS通信驱动模块,用于获取系统服务描述符表的内存地址范围;
[0009]所述CPU虚拟化驱动模块,进行初始化后用于获取CPU指令,并根据所述系统服务描述符表的内存地址范围拦截对系统服务描述符表进行篡改的CPU指令。
[0010]优选地,所述CPU虚拟化驱动模块安装完成之后,进行初始化,包括如下中的任意一种或多种:分配最高特权进入区和虚拟机控制块所需的内存;设置CPU寄存器的标志位;填充虚拟机控制块的版本信息;使CPU进入虚拟机模式;初始化并激活虚拟机控制块;将从所述OS通信驱动模块获取的系统描述符表的内存地址范围填充到虚拟机控制块内,从而指明拦截内存操作;使当前操作系统作为虚拟机运行在虚拟CPU上。
[0011]优选地,所述CPU虚拟化驱动模块,进一步采用内核驱动的方式实现,随操作系统运行自动运行,由CPU以ROOT模式运行所述CPU虚拟化驱动模块的代码,具有最高的权限。
[0012]优选地,所述CPU虚拟化驱动模块,用于判断获取的CPU指令是否为内存写入指令,如果不是则不对所述CPU指令进行拦截,如果是则获取所述CPU指令要写入的第一内存地址,判断所述第一内存地址是否在所述系统服务描述符表的内存地址范围内,如果不在则不对所述CPU指令进行拦截,如果在则对所述CPU指令进行拦截。
[0013]优选地,所述OS通信驱动模块,进一步采用内核驱动的方式实现,随操作系统运行自动运行,由CPU以非ROOT和RO的模式运行所述OS通信驱动的代码,权限低于CPU虚拟化驱动模块,和其它操作系统内核代码相同。
[0014]进一步地,所述主服务进程模块,用于接收用户的卸载命令后,卸载所述OS通信驱动模块和所述CPU虚拟化驱动模块,并在卸载完成之后将自身卸载。
[0015]进一步地,所述OS通信驱动模块,用于接收所述CPU虚拟化驱动模块发送的已拦截指令消息,形成拦截日志,在接收到所述主服务进程模块发送的获取拦截日志的命令后,将所述拦截日志返回至所述主服务进程模块。
[0016]本发明还还提供了一种Windows系统服务描述符表防篡改方法,包括:
[0017]由主服务进程模块安装CPU虚拟化驱动模块和OS通信驱动模块;
[0018]由所述OS通信驱动模块获取系统服务描述符表的内存地址范围;
[0019]根据所述系统服务描述符表的内存地址范围,所述CPU虚拟化驱动模块进行初始化;
[0020]所述CPU虚拟化驱动模块获取CPU指令;
[0021]所述CPU虚拟化驱动模块根据所述系统服务描述符表的内存地址范围拦截对系统服务描述符表进行篡改的CPU指令。
[0022]优选地,所述根据所述系统服务描述符表的内存地址范围,所述CPU虚拟化驱动模块进行初始化包括如下中的任意一种或多种:分配最高特权进入区和虚拟机控制块所需的内存;设置CPU寄存器的标志位;填充虚拟机控制块的版本信息;使CPU进入虚拟机模式;初始化并激活虚拟机控制块;将从所述OS通信驱动模块获取的系统描述符表的内存地址范围填充到虚拟机控制块内,从而指明拦截内存操作;使当前操作系统作为虚拟机运行在虚拟CPU上。
[0023]优选地,所述由主服务进程模块安装CPU虚拟化驱动模块包括:所述CPU虚拟化驱动模块采用内核驱动的方式实现,随操作系统运行自动运行,由CPU以ROOT模式运行所述CPU虚拟化驱动模块的代码,具有最高的权限。
[0024]优选地,所述所述CPU虚拟化驱动模块根据所述系统服务描述符表的内存地址范围拦截对系统服务描述符表进行篡改的CPU指令包括:判断所述CPU指令是否为内存写入指令,如果不是则不对所述CPU指令进行拦截,如果是则获取所述CPU指令要写入的第一内存地址,判断所述第一内存地址是否在所述系统服务描述符表的内存地址范围内,如果不在则不对所述CPU指令进行拦截,如果在则对所述CPU指令进行拦截。
[0025]优选地,所述由主服务进程模块安装OS通信驱动模块包括:所述OS通信驱动模块采用内核驱动的方式实现,随操作系统运行自动运行,由CPU以非ROOT和RO的模式运行所述OS通信驱动的代码,权限低于CPU虚拟化驱动模块,和其它操作系统内核代码相同。
[0026]进一步地,所述主服务进程模块接收用户的卸载命令后,卸载所述OS通信驱动模块和所述CPU虚拟化驱动模块,并在卸载完成之后将自身卸载。
[0027]进一步地,所述OS通信驱动模块接收所述CPU虚拟化驱动模块发送的已拦截指令消息,形成拦截日志,在接收到所述主服务进程模块发送的获取拦截日志的命令后,将所述拦截日志返回至所述主服务进程模块。
[0028]本发明实施例提供了一种Windows系统服务描述符表防篡改装置及方法,该装置包括主服务进程模块,CPU虚拟化驱动模块及OS通信驱动模块,由主服务进程模块安装CPU虚拟化驱动模块及OS通信驱动模块,OS通信驱动模块获取系统服务描述符表的内存地址范围,CPU虚拟化驱动模块根据系统服务描述符表的内存地址范围对获取的CPU指令进行过滤,其中对系统服务描述符表进行篡改的CPU指令将被拦截,因此,在各种模式运行下的Windows操作系统,都能够拦截各类篡改系统服务描述符表的恶意CPU指令,从而提高Windows操作系统的安全性。
【附图说明】
[0029]图1是本发明实施例提供的一种Windows系统服务描述符表防篡改装置示意图;
[0030]图2是本发明实施例提供的一种Windows系统服务描述符表防篡改方法流程图;
[0031]图3是本发明实施例提供的OS通信驱动模块消息处理流程图。
【具体实施方式】
[0032]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0033]如图1所示,本发明一个实施例提供了一种Windows系统服务描述符表防篡改装置,包括主服务进程模块101,CPU虚拟化驱动模块102及OS通信驱动模块103 ;
[0034]所述主服务进程模块101,用于安装所述CPU虚拟化驱动模块102和所述OS通信驱动t旲块103 ;
[0035]所述OS通信驱动模块103,用于获取系统服务描述符表的内存地址范围;
[0036]所述CPU虚拟化驱动模块102,进行初始化后用于获取CPU指令,并根据所述系统服务描述符表的内存地址范围拦截对系统服务描述符表进行篡改的CPU指令。
[0037]本发明实施例提供了一种Windows系统服务描述符表防篡改装置,该装置包括主服务进程模块,CPU虚拟化驱动模块及OS通信驱动模块,由主服务进程模块安装CPU虚拟化驱动模块及OS通信驱动模块,OS通信驱动模块获取系统服务描述符表的内存地址范围,CPU虚拟化驱动模块根据系统服务描述符表的内存地址范围对获取的CPU指令进行过滤,其中对系统服务描述符表进行篡改的CPU指令将被拦截,因此,在各种模式下运行的Windows操作系统,都能够拦截各类篡改系统服务描述符表的恶意CPU指令,从而提高Windows操作系统的安全性。
[0038]在本发明一个实施例中,CPU虚拟化驱动模块安装完成之后,需要进行初始化,包括如下中的任意一种或多种:分配最高特权进入区和虚拟机控制块所需的内存;设置CPU寄存器的标志位;填充虚拟机控制块的版本信息;使CPU进入虚拟机模式;初始化并激活虚拟机控制块;将从所述OS通信驱动模块获取的系统描述符表的内存地址范围填充到虚拟机控制块内,从而指明拦截内存操作;使当前操作系统作为虚拟机运行在虚拟CPU上,这样将操作系统置于透明的虚拟化层上运行,在用户不察觉的情况下对系统服务描述符表进行监控,拦截各类恶意篡改系统服务描述符表的CPU指令,从而提高Windows操作系统的安全性。
[0039]在本发明一个实施例中,CPU虚拟化驱动模块以内核驱动的方式实现,并随操作系统的运行而自动运行,由CPU以ROOT模式运行其代码,具有最高的权限,这样,只要系统在运行,CPU虚拟化驱动模块就会对篡改系统服务描述符表的CPU指令进行拦截,因为其具有最高权限,其他应用程序无法对其进行修改或操作,保证实时对系统服务描述符表进行保护,从而提高Windows操作系统的安全性。
[0040]在本发明一个实施例中,CPU虚拟化驱动模块获取CPU指令后,首先判断该CPU指令是否为内存写入指令,如果不是则不对该CPU指令进行拦截,如果是则获取该CPU指令要写入的内存地址,判断该内存地址是否在系统服务描述符表的内存地址范围内,如果不在则不对该CPU指令进行拦截,如果在则对该CPU指令进行拦截,从而有效对篡改系统服务描述符表的CPU指令进行拦截的同时,保障正常的CPU指令得到及时的执行。
[0041]在本发明一个实施例中,OS通信驱动模块以内核驱动的方式实现,随操作系统运行自动运行,由CPU以非ROOT和RO的模式运行其代码,权限低于CPU虚拟化驱动模块,和其它操作系统内核代码相同,这样,保证在系统运行过程中OS通信驱动模块一致处于运行状态,能够实时获取拦截记录,形成拦截日志。
[0042]在本发明一个实施例中,主服务进程模块在接收到用户的卸载命令后,卸载OS通信驱动模块和CPU虚拟化驱动模块,并在卸载完成之后将自身卸载,从而满足用户在特殊情况下对系统服务描述符表进行修改的要求。
[0043]在本发明一个实施例中,OS通信驱动模块接收CPU虚拟化驱动模块发送来的已拦截指令消息,形成拦截日志,在接收到主服务进程模块发送的获取拦截日志的命令后,将拦截日志返回至主服务进程模块,由于拦截过程是在用户不察觉的情况下进行,形成拦截记录,用户可以通过主服务进程模块查看拦截记录,从而掌握系统的安全状况。
[0044]为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例,进一步详细描述基于本发明实施例提供的任一 Windows系统服务描述符表防篡改装置的Windows系统服务描述符表防篡方法。
[0045]如图2所示,本发明一个实施例提供了一种Windows系统服务描述符表防篡方法,该方法可以包括:
[0046]步骤201:主服务进程模块安装CPU虚拟化驱动模块和OS通信驱动模块。
[0047]在本发明一个实施例中,由主服务进程模块安装CPU虚拟化驱动模块和OS通信驱动模块,其中,CPU虚拟化驱动模块采用内核驱动的方式实现,随操作系统运行自动运行,由CPU以ROOT模式运行其代码,因此CPU虚拟化驱动模块具有最高的权限;os通信驱动模块采用内核驱动的方式实现,随操作系统运行自动运行,由CPU以非ROOT和RO的模式运行其代码,其权限低于CPU虚拟化驱动模块,和其他操作系统内核代码相同;主服务进程模块通过Windows后台服务的方式实现。
[0048]步骤202:0S通信驱动模块获取系统服务描述符表的内存地址范围。
[0049]在本发明一个实施例中,OS通信驱动模块获取当前Windows操作系统的系统服务描述符表的起始内存地址及内存地址范围,并进行存储,用以后续步骤判断是否对CPU指令进行拦截。
[0050]步骤203:CPU虚拟化驱动模块进行初始化。
[0051]在本发明一个实施例中,CPU虚拟化驱动模块在安装完成之后,需进行初始化操作,包括分配最高特权进入区和虚拟机控制块所需的内存;设置CPU寄存器的标志位;填充虚拟机控制块的版本信息;使CPU进入虚拟机模式;初始化并激活虚拟机控制块;将从所述OS通信驱动模块获取的系统描述符表的内存地址范围填充到虚拟机控制块内,从而指明拦截内存操作;使当前操作系统作为虚拟机运行在虚拟CPU上。
[0052]步骤204:CPU虚拟化驱动模块获取CPU指令。
[0053]在本发明一个实施例中,CPU虚拟化驱动模块获取当前Windows操作系统的所有CPU指令,通过对所有CPU指令进行判断,对于篡改系统服务描述符表的CPU指令进行拦截,从而保证防护的全面性。
[0054]步骤205:CPU虚拟化驱动模块判断CPU指令是否为内存写入指令,如果是,则执行步骤206,否则执行步骤209。
[0055]在本发明一个实施例中,对于获取的CPU指令,CPU虚拟化驱动模块首先判断该获得的CPU指令是否为内存写入指令,如果是,则需进一步判断该指令是否为写入系统服务描述符表
的指令,执行步骤206,如果否,则该CPU指令不会对系统服务描述符表进行篡改,应保证其得到正常执行,执行步奏209。
[0056]步骤206:CPU虚拟化驱动模块获取CPU指令要写入的内存地址。
[0057]在本发明一个实施例中,当获得的CPU指令为内存写入指令时,CPU虚拟化驱动模块获取该内存写入指令要写入的内存地址,通过内存地址可以判断该内存写入指令要写入的是否为系统服务描述符表的内存地址范围。
[0058]步骤207:CPU虚拟化驱动模块判断CPU指令要写入的内存地址是否在系统服务描述符表的内存地址范围内,如果是,则指定步骤208,否则执行步骤209。
[0059]在本发明一个实施例中,CPU虚拟化驱动模块根据填充到虚拟机控制块内的系统服务描述符表的内存地址范围,判断CPU指令要写入的内存地址是否在系统服务描述符表的内存地址范围,如果是,则可以判断该指令是要对系统服务描述符表进行篡改的指令,需对其进行拦截,执行步骤208,如果否,则该指令虽然是内存写入指令,但写入的不是系统服务描述符表的内存地址范围,不会对系统服务描述符表进行篡改,需保证其得到正常的执行,执行步骤209。
[0060]步骤208:拦截CPU执行,不允许其执行,并结束当前流程。
[0061]在本发明一个实施例中,如果CPU指令经CPU虚拟化驱动模块判断为写入当前操作系统系统服务描述符表的内存地址范围内的指令,则该指令是对系统服务描述符表进行篡改的指令,需对其进行拦截,因此CPU虚拟化驱动模块对该指令进行拦截,不允许其对当前操作系统系统服务描述符表进行写入,并结束当前流程。
[0062]步骤209:不对CPU指令进行拦截,允许其执行。
[0063]在本发明一个实施例中,如果CPU指令不是内存写入指令,或CPU指令是内存写入指令单但要写入的内存地址不在系统服务描述符表的内存地址范围内,则这些CPU指令不会对系统服务描述符表进行篡改,不需要对这些CPU指令进行拦截,应保证其得到正常执行。
[0064]本发明一个实施例中,OS通信驱动模块可以获取系统服务描述符表的内存地址范围,还可以记录拦截消息,形成拦截日志,如图3所示,其具体方法包括:
[0065]步骤301:接收来自主服务进程模块或CPU虚拟化驱动模块的消息。
[0066]在本发明一个实施例中,OS通信驱动模块接收消息,其中,接收到的消息有两个来源,一是来自主服务进程模块发送的获取拦截日志的请求消息,另一是CPU虚拟化驱动模块发来的CPU指令拦截消息或获取系统服务描述符表内存地址范围的请求消息。
[0067]步骤302:判断消息是否来自于CPU虚拟化驱动模块,如果是,执行步骤303,否则,执行步骤306。
[0068]在本发明一个实施例中,OS通信驱动模块接收到消息后,首先对该消息的来源进行判断,如果消息来自于CPU虚拟化驱动模块,则该消息可能为CPU指令拦截消息,也可能为获取系统服务描述符表内存地址范围的请求消息,需要对该类消息进行进一步的判断,因而执行步骤303,如果消息不是来自于CPU虚拟化驱动模块,那该消息定是来自于主服务进程模块,则针对该消息执行步骤306。
[0069]步骤303:判断消息是否为CPU指令拦截消息,如果是,执行步骤304,否则执行步骤 305。
[0070]在本发明一个实施例中,针对来自于CPU虚拟化驱动模块的消息,进一步判断该消息是否为CPU指令拦截消息,如果是则执行步骤304,如果不是,则该消息为获取系统服务描述符表内存地址范围的请求消息,需向请求对象发送所需系统服务描述符表的内存地址范围,针对该消息执行步骤305。
[0071]步骤304:保存CPU指令拦截消息,形成拦截日志,并结束当前流程。
[0072]在本发明一个实施例中,如果接收到的消息为CPU指令拦截消息,则将该消息进行保存,形成拦截日志,并结束当前流程,重新接收其他的消息。
[0073]步骤305:返回系统服务描述符表的内存地址范围,并结束当前流程。
[0074]在本发明一个实施例中,如果接收的消息为获取系统服务描述符表内存地址范围的请求消息,则将OS通信驱动模块已经获取并存储的系统服务描述符表内存地址范围发送给CPU虚拟化驱动模块,并结束当前流程。
[0075]步骤306:返回一条拦截日志。
[0076]在本发明一个实施例中,如果OS通信驱动模块接收到的消息为主服务进程模块发送的获取拦截日志的请求消息,则将拦截日志返回给主服务进程模块。
[0077]需要说明的是,用户可以通过主服务进程模块,获取拦截日志,另外,主服务进程模块可以安装CPU虚拟化启动模块和OS通信驱动模块,也可以在接收到用户的指令后,首先卸载CPU虚拟化启动模块和OS通信驱动模块,然后将自己也卸载。
[0078]根据上述方案,本发明的实施例所提供的一种Windows系统服务描述符表防篡改装置及方法,至少具有如下有益效果:
[0079]1、本发明实施例中,提供了一种Windows系统服务描述符表防篡改装置,该装置包括主服务进程模块,CPU虚拟化驱动模块及OS通信驱动模块,由主服务进程模块安装CPU虚拟化驱动模块及OS通信驱动模块,OS通信驱动模块获取系统服务描述符表的内存地址范围,CPU虚拟化驱动模块根据系统服务描述符表的内存地址范围对获取的CPU指令进行过滤,其中对系统服务描述符表进行篡改的CPU指令将被拦截,因此,在各种模式下运行的Windows操作系统,都能够拦截各类篡改系统服务描述符表的恶意CPU指令,从而提高Windows操作系统的安全性。
[0080]2、本发明实施例中,提供的Windows系统服务描述符表防篡改方法适用于各种类型的Windows操作系统,而现有技术通过PatchGuard机制对Windows系统服务描述符表进行防篡改只支持64为操作系统,但是目前仍有很多用户使用32位操作系统,因此,相对于现有技术,本发明实施例提供的Windows系统服务描述符表防篡改方法具有更广泛的适用性及全面性。
[0081]3、本发明实施例中,提供的Windows系统服务描述符表防篡改装置及方法,是一种预先防御机制,能够在Rootkit后门程序破坏系统服务描述符表之前对其拦截,而现有技术通过PatchGuard机制对Windows系统服务描述符表进行防篡改,属于事后检查机制,在检查出系统服务描述符表被篡改之前,Rootkit后门程序可能已经完成了要做的事,因此,相对于现有技术,本发明实施例提供的方案能够提高Windows操作系统的安全性。
[0082]4、本发明实施例中,采用预先拦截的措施,从根本上避免系统服务描述符表被篡改,不会出现因为系统服务描述符表被篡改而宕机的现象,而现有技术通过PatchGuard机制对Windows系统服务描述符表进行防篡改,如果检查出系统服务描述符表被篡改,则操作系统马上宕机,对于一些重要的计算机,宕机对于用户来说是接收不了的,因此,本发明实施例还能够保护用户的数据及操作。
[0083]5、本发明实施例中,用户可以根据实际情况,当在需要对系统服务描述符表进行修改时,卸载各个模块,从而实现对系统服务描述
符表的修改。
[0084]上述设备内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
[0085]需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
[0086]本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
[0087]最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
【主权项】
1.一种Windows系统服务描述符表防篡改装置,其特征在于,包括:主服务进程模块,CPU虚拟化驱动模块及OS通信驱动模块; 所述主服务进程模块,用于安装所述CPU虚拟化驱动模块和所述OS通信驱动模块; 所述OS通信驱动模块,用于获取系统服务描述符表的内存地址范围; 所述CPU虚拟化驱动模块,进行初始化后用于获取CPU指令,并根据所述系统服务描述符表的内存地址范围拦截对系统服务描述符表进行篡改的CPU指令。2.根据权利要求1所述的装置,其特征在于,所述CPU虚拟化驱动模块安装完成之后,进行初始化,包括如下中的任意一种或多种:分配最高特权进入区和虚拟机控制块所需的内存;设置CPU寄存器的标志位;填充虚拟机控制块的版本信息;使CPU进入虚拟机模式;初始化并激活虚拟机控制块;将从所述OS通信驱动模块获取的系统描述符表的内存地址范围填充到虚拟机控制块内,从而指明拦截内存操作;使当前操作系统作为虚拟机运行在虚拟CPU上。3.根据权利要求1所述的装置,其特征在于, 所述CPU虚拟化驱动模块,进一步采用内核驱动的方式实现,随操作系统运行自动运行,由CPU以ROOT模式运行所述CPU虚拟化驱动模块的代码,具有最高的权限; 和/或, 所述CPU虚拟化驱动模块,用于判断获取的CPU指令是否为内存写入指令,如果不是则不对所述CPU指令进行拦截,如果是则获取所述CPU指令要写入的第一内存地址,判断所述第一内存地址是否在所述系统服务描述符表的内存地址范围内,如果不在则不对所述CPU指令进行拦截,如果在则对所述CPU指令进行拦截。4.根据权利要求1所述的装置,其特征在于, 所述OS通信驱动模块,进一步采用内核驱动的方式实现,随操作系统运行自动运行,由CPU以非ROOT和RO的模式运行所述OS通信驱动的代码,权限低于CPU虚拟化驱动模块,和其它操作系统内核代码相同。5.根据权利要求1所述的装置,其特征在于,进一步包括: 所述主服务进程模块,用于接收用户的卸载命令后,卸载所述OS通信驱动模块和所述CPU虚拟化驱动模块,并在卸载完成之后将自身卸载; 和/或, 所述OS通信驱动模块,用于接收所述CPU虚拟化驱动模块发送的已拦截指令消息,形成拦截日志,在接收到所述主服务进程模块发送的获取拦截日志的命令后,将所述拦截日志返回至所述主服务进程模块。6.一种Windows系统服务描述符表防篡改方法,其特征在于,包括: 由主服务进程模块安装CPU虚拟化驱动模块和OS通信驱动模块; 由所述OS通信驱动模块获取系统服务描述符表的内存地址范围; 根据所述系统服务描述符表的内存地址范围,所述CPU虚拟化驱动模块进行初始化; 所述CPU虚拟化驱动模块获取CPU指令; 所述CPU虚拟化驱动模块根据所述系统服务描述符表的内存地址范围拦截对系统服务描述符表进行篡改的CPU指令。7.根据权利要求6所述的方法,其特征在于,所述根据所述系统服务描述符表的内存地址范围,所述CPU虚拟化驱动模块进行初始化包括如下中的任意一种或多种:分配最高特权进入区和虚拟机控制块所需的内存;设置CPU寄存器的标志位;填充虚拟机控制块的版本信息;使CPU进入虚拟机模式;初始化并激活虚拟机控制块;将从所述OS通信驱动模块获取的系统描述符表的内存地址范围填充到虚拟机控制块内,从而指明拦截内存操作;使当前操作系统作为虚拟机运行在虚拟CPU上。8.根据权利要求6所述的方法,其特征在于, 所述由主服务进程模块安装CPU虚拟化驱动模块包括:所述CPU虚拟化驱动模块采用内核驱动的方式实现,随操作系统运行自动运行,由CPU以ROOT模式运行所述CPU虚拟化驱动模块的代码,具有最高的权限; 和/或, 所述所述CPU虚拟化驱动模块根据所述系统服务描述符表的内存地址范围拦截对系统服务描述符表进行篡改的CPU指令包括:判断所述CPU指令是否为内存写入指令,如果不是则不对所述CPU指令进行拦截,如果是则获取所述CPU指令要写入的第一内存地址,判断所述第一内存地址是否在所述系统服务描述符表的内存地址范围内,如果不在则不对所述CPU指令进行拦截,如果在则对所述CPU指令进行拦截。9.根据权利要求6所述的方法,其特征在于, 所述由主服务进程模块安装OS通信驱动模块包括:所述OS通信驱动模块采用内核驱动的方式实现,随操作系统运行自动运行,由CPU以非ROOT和RO的模式运行所述OS通信驱动的代码,权限低于CPU虚拟化驱动模块,和其它操作系统内核代码相同。10.根据权利要求6所述的方法,其特征在于,进一步包括: 所述主服务进程模块接收用户的卸载命令后,卸载所述OS通信驱动模块和所述CPU虚拟化驱动t吴块,并在卸载完成之后将自身卸载; 和/或, 所述OS通信驱动模块接收所述CPU虚拟化驱动模块发送的已拦截指令消息,形成拦截日志,在接收到所述主服务进程模块发送的获取拦截日志的命令后,将所述拦截日志返回至所述主服务进程模块。
【专利摘要】本发明提供一种Windows系统服务描述符表防篡改装置及方法,该装置包括:主服务进程模块,CPU虚拟化驱动模块及OS通信驱动模块,所述主服务进程模块,用于安装所述CPU虚拟化驱动模块和所述OS通信驱动模块,所述OS通信驱动模块,用于获取系统服务描述符表的内存地址范围,所述CPU虚拟化驱动模块,进行初始化后用于获取CPU指令,并根据所述系统服务描述符表的内存地址范围拦截对系统服务描述符表进行篡改的CPU指令。本发明能够提高Windows操作系统的安全性。
【IPC分类】G06F21/56
【公开号】CN104899512
【申请号】CN201510275475
【发明人】邢希双
【申请人】浪潮电子信息产业股份有限公司
【公开日】2015年9月9日
【申请日】2015年5月26日