计算机安全启动的方法

文档序号:6557251阅读:245来源:国知局
专利名称:计算机安全启动的方法
技术领域
本发明涉及一种计算机安全启动的方法,特别是一种在计算机Windows系统上安全启动的方法。
背景技术
目前,计算机病毒泛滥,一些人为了获取非法利益,在别人的计算机里非法安装各种恶意程序,包括木马后门、病毒、间谍软件等。这些非法的恶意程序在计算机启动的时候自动运行,监控计算机的操作,窃取计算机用户的私隐、银行卡密码和执行其它各种有害的操作,给计算机用户的工作和生活带来了麻烦。由于计算机软件存在大量的漏洞,导致计算机很容易被感染上各种恶意程序,给用户在使用计算机时造成了不便和损失。人们想尽了各种办法来查找自动运行的恶意程序,至今仍然没有一个有效的方法。另一方面,判断一个程序是否为恶意程序的方法也存在很多问题,传统的杀毒软件判断病毒的方法采用二进制的特征码识别,这种识别方法已经不能有效的对付新出现的恶意程序。因为现在的病毒,传播速度快、变种多,杀毒软件厂商都是通过收集病毒样本提取特征码的方法来查杀病毒,扮演着事后修补的角色。而类似木马后门的病毒变种多、针对性强、样本难以获取,依赖样本特征码的杀毒软件往往无法有效查杀这一类的病毒。

发明内容
本发明的目的是提供一种计算机安全启动的方法,要解决的技术问题是识别恶意程序和防止恶意程序的运行。
本发明采用以下技术方案一种计算机安全启动的方法,包括以下步骤一、在计算机的应用层和驱动层分别安装主界面组件和驱动组件;二、驱动组件记录有计算机启动过程中运行的所有进程的名称,主界面组件对驱动组件记录下来的已运行进程进行扫描分析,确定安全进程;三、启动计算机时,驱动组件被计算机的CPU优先加载运行,不列在安全进程中的程序被判断为恶意程序,被驱动组件拦截,不执行运行。
本发明的方法在计算机第一次启动时,驱动组件记录下计算机启动过程中运行的所有进程的名称,并存储;计算机启动完成后,主界面组件对驱动组件记录下来的已运行进程进行扫描分析,确定安全进程。
本发明的主界面组件对驱动组件记录下来的已运行程序使用数字签名验证、安全程序签名库验证和静态行为特征码分析的方法进行扫描分析。
本发明的驱动组件记录下计算机启动过程中运行的所有进程的名称时,以名称列表方式,存储到硬盘中的已运行进程列表中。
本发明的方法在扫描分析时,使用打分的方法表示危险值,每个扫描分析步骤都得到一个危险分数值,主界面组件把等于0分的进程记录到安全程序列表中。
本发明的驱动组件通过返回值拦截恶意程序。
本发明的主界面组件具有人机交互模块、发送消息给驱动组件进行通信的模块、扫描分析识别恶意程序模块。
本发明的驱动组件拦截是通过创建进程处理来代替计算机中原有的创建进程处理实现的。
本发明的安全程序签名库验证采用扫描分析识别恶意程序模块把待分析程序的特征码与安全程序签名库里的特征码逐一比较,如果有相同的特征码,就把该待分析程序名称记录到安全程序列表,肯定该程序是正常程序。
本发明的静态行为特征码分析采用分析整个待验证程序文件的大小、资源及创建日期、验证文件的可移植的执行体信息、版本信息、可移植的执行体结构的导入表信息、区段信息、进程信息和文件名称,经比较给出危险值,然后把危险值累加,把最终危险值为0的程序名称记录到安全程序列表。
本发明与现有技术相比,驱动组件被计算机的CPU优先加载运行,在计算机启动过程中拦截恶意程序,对正常的程序并不拦截,主界面组件对驱动组件记录下来的已运行程序采用数字签名验证、安全程序签名库验证和静态行为特征码分析判断方法判断一个程序是否为恶意程序,保证了计算机系统的正常工作,又可以有效地清除计算机系统启动过程中自动运行的恶意程序。


图1是本发明实施例的流程图。
图2是本发明实施例计算机启动流程图。
图3是本发明实施例计算机重启动流程图。
图4是本发明实施例扫描识别恶意程序流程图。
图5是本发明实施例编辑流程图。
图6是本发明实施例计算机启动过程中拦截处理流程图。
图7是本发明进程拦截流程图。
图8是本发明实施例重新启动计算机的界面图。
具体实施例方式
下面结合附图和实施例对本发明作进一步详细说明。名词定义,进程为一个正在运行的程序的实例。恶意程序对计算机系统有害的程序,包括了病毒程序、木马后门和间谍程序等。驱动组件是一个驱动程序,驱动程序运行在系统的底层,对系统有很高的控制权限,可以看作是操作系统的一部分。主界面组件为主界面程序,主要用来处理人机交互,在Windows系统中,主界面组件一般是以窗口的形式与用户交互,使用者可以用鼠标和键盘操作,完成所需的任务。
本发明的计算机安全启动的方法,使用计算机配置为CPU奔腾400MHz或者更高,内存64MB以上,显示卡SVGA16位色以上的显示模式,硬盘300MB以上,操作系统为Windows 2000/Windows XP/Windows2003,首先在计算机的应用层和驱动层分别安装主界面组件和驱动组件。主界面组件包括(1)人机交互模块部分,如图8所示,采用Windows的窗口,通过窗口内的一个按钮与用户交互;(2)与驱动组件相互通信的模块部分,主界面组件与驱动组件建立消息通道,以发送消息给驱动组件的方式控制驱动组件完成记录进程信息和拦截进程启动的的功能;(3)扫描分析识别恶意程序模块部分,通过扫描判断一个程序是否为恶意程序,具体的扫描方法包括了顺序进行的数字签名验证、安全程序签名库验证和静态行为特征码分析,扫描过程中使用分数表示危险值,把每一项扫描得到的分数累加,扫描完成后,根据最终的分数判断被扫描程序的危险度。
驱动组件用于拦截所有程序的运行,并记录所运行进程的名称到设置在硬盘的已运行进程的列表记录中,拦截程序运行是通过创建进程处理来代替计算机中原有的创建进程处理的功能实现的。
如图1所示,本发明的计算机安全启动的方法,包括以下步骤一、在计算机的应用层和驱动层分别安装主界面组件和驱动组件;二、启动计算机时,驱动组件以名称列表方式记录下计算机启动过程中运行的所有进程的名称,存储到硬盘中的已运行进程列表中;三、计算机启动完成后,主界面组件对驱动组件记录下来的已运行程序列表顺序使用数字签名验证、安全程序签名库验证和静态行为特征码分析的方法进行扫描分析,使用打分的方法表示危险值,每个扫描分析步骤都得到一个危险分数值,主界面组件把等于0分的程序记录到安全程序列表中;四、重新启动计算机,不在安全程序的列表中被判断为恶意程序,被驱动组件通过返回值拦截,不执行运行。
本发明的计算机安全启动的方法由于在计算机的驱动层中安装了驱动组件,在计算机启动过程中,驱动组件被计算机的CPU优先加载运行,运行之后,通过替换监控所有新的进程创建。如图2所示,计算机启动的时候,驱动组件运行,驱动组件使用自身的创建进程处理代替计算机原有的进程,计算机创建各个新的进程时,驱动组件记录下各个被创建的进程名称,以列表的方式存储在已运行进程列表记录里。如图3所示,计算机重新启动的时候,驱动组件根据硬盘中保存在安全程序列表里的进程名称对新创建的进程名称作字符串比较,不在启动列表中的程序都直接终止该进程,通过返回值来不允许创建该进程,只有进程名称在安全程序列表中的程序才允许创建进程。计算机系统启动完成后,主界面组件发送停止拦截的命令给驱动组件,驱动组件停止阻止创建进程的运行,计算机系统的控制权通过放过被阻止的进程来交给用户。计算机的驱动层安装驱动组件之后,每次启动计算机,驱动组件会记录下运行的程序名称到已运行进程列表记录,完成了安全启动的第一次启动,这样可以省略掉第一次启动计算机的过程,仅仅需要执行第二次的启动,简化了用户使用安全启动的步骤。
主界面组件扫描识别恶意程序使用的扫描方法包括了数字签名验证、安全程序签名库验证和静态行为特征码分析。这样做的目的是首先排除设置在计算机操作系统中认为正常的程序,扫描分析模块的扫描功能,再根据静态行为特征码对比分析该程序,得到一个危险值,危险值是以分数来计算,分数越大,该程序的危险度就越高,然后把危险值为0的程序名称存储在注册表的安全程序列表中。如图4所示,主界面组件扫描分析恶意程序的流程是先分析数字签名,再分析安全程序签名库,最后分析静态行为特征码。
计算机的中央处理器读取待扫描文件,通过读取方式进行比较,首先验证恶意程序列表,恶意程序列表为人工收集提取的特征码的集合,保存在硬盘中,通过读取硬盘中的数据来进行比较,如果中央处理器读取待扫描文件的特征码在恶意程序列表里面,说明该程序已经是恶意程序,危险值给100分,表示比较危险,没有必要再往下扫描,扫描结束。
数字签名是Windows操作系统提供的验证某个文件是否含有唯一确定签名的一项功能。Windows操作系统里面的每一个程序的数据上都有微软的数字签名,数字签名的值是唯一的,它可以证明该程序是正常的安全程序。如果待分析程序含有微软的数字签名,就把该程序名称记录到安全程序列表里面,扫描结束,如没有数字签名,进行安全程序签名库验证。
安全程序签名库是由人工通过收集的安全程序的特征码集合,以列表的方式存储在安全程序签名库文件里,中央处理器把常用的软件用文本收集起来,通过分析验证过是正常程序之后,提取这些正常程序的文件的特征码,集合在一起。主界面组件的扫描分析识别恶意程序模块把待分析程序的特征码与安全程序签名库里的特征码逐一比较,如果有相同的特征码,就把该待分析程序名称记录到安全程序列表,肯定该程序是正常程序,扫描结束。
扫描恶意程序方法中的静态行为特征码分析采用下面的规则顺序,通过比较来给出危险值,然后把危险值累加,把最终危险值为0的程序名称记录到安全程序列表,然后扫描结束。
1、计算机的中央处理器判断分析整个待验证文件的大小,给出打分值并保存在内存中,然后累加,当分值超过100时判断为恶意程序,扫描结束。一个正常的程序,或者一些大型的软件,一般都不会太小,而只有病毒或木马为了传输的方便,一般会比较小。
1.1、待验证文件小于1KB时,加20分,记入并保存在内存中;1.2、待验证文件小于50KB时,加15分;1.3、待验证文件小于100KB时,加10分;1.4、待验证文件小于200KB时,加5分;1.5、待验证文件大于500KB时,减5分;1.6、待验证文件大于1024KB时,减20分。
2、计算机的中央处理器判断分析待验证文件的资源和创建日期,给出打分值记入并存储在内存中,然后累加,当分值超过100时判断为恶意程序,扫描结束。一般的病毒程序都不会有窗体、图标和声音等资源,就算有,也是很少,所以在这里对资源和创建日期比较敏感的信息进行分析。
2.1、中央处理器判断分析待验证文件的资源数,将结果记入并存储在内存中,资源数少于等于5,则加5分;2.2、中央处理器判断分析字符串,当文件小于500K时,减10分;2.3、中央处理器判断分析待验证文件的创建日期为一天以内,加5分。
3、中央处理器判断分析待验证文件的可移植的执行体PE信息,以确定待验证文件是否被加壳,若加壳危险值加50分,记入并存储在内存中。
3.1、中央处理器判断待验证程序入口点所在的段,是不是标准的段。正常程序的代码段入口点,都在code,.code名字的代码段中,如果不是的话,认为都是加壳;3.2、中央处理器判断待验证程序进口点的代码是否与壳特征码相同。计算机的编译器编译后生成的入口点的代码都是相同的,加壳工具也是如此,因此根据一个程序的入口点代码与特征码库中的壳特征进行比较,就能判断是否被加壳的程序;3.3、中央处理器分析待验证程序的导入函数,并确定待验证文件是否被加壳。如分析待验证程序敏感的四个API函数,当导入表内容中只有两个以上,六个以下的API函数,并且与六个api函数相符合,表明待验证程序被加壳。常见的五个敏感的API函数“VirtualAlloc”、“VirtualFree”、“LoadLibraryA”、“LoadLibraryW”和“GetProcAddress”,这五个API函数是加壳常用的,VirtualAlloc和VirtualFree用于进行内存的分配和释放,LoadLibraryA和LoadLibraryW用于加载DLL动态链接库,GetProcAddress用于从LoadLibray加载的DLL动态链接库中,获取函数的入口点指针。
4、计算机的中央处理器分析待验证程序文件版本信息,给出打分值。一般正常的程序都会有开发商的版本信息,如公司名、版本号、版权信息和描述字符,大部分的病毒程序都不会有这些信息,仅仅有小部分病毒会伪造版本信息,中央处理器将分析判断结果记入并存储在内存中,然后继续扫描。
4.1、待验证程序文件中没有版本信息,加8分;4.2、待验证程序文件中没有公司名称的加2分;4.3、待验证程序文件中没有版权信息加2分;
4.4、待验证程序文件中没有描述信息,或描述字符少于5个,加2分;4.5、文件公司名称为微软件的,并且该文件被加壳,加10分。
5、计算机的中央处理器分析待验证程序文件的可移植的执行体PE结构的导入表信息,对动态连接库DLL和其导入函数进行比较识别,然后将分析判断结果记入并存储在内存中,然后继续扫描,给出打分值。
5.1、导入表不完整,如果中央处理器读取文件头或是导入表出错,通过中央处理器判断,直接给该程序加50分;5.2、中央处理器分析DLL信息,是否存在少于或者等于2个以上非微软DLL导入表中加载的非微软模,块超过2个,每个减去20分;5.3、导入表中存在与网络相关的模块,加10分,中央处理器分析待验证程序文件中是否存在网络相关的DLL,如WPCAP,一个用于拦截数据包的开发包的DLL,加5分;5.4、中央处理器分析待验证程序文件中是否存在文件相关的应用程序编程接口API,如CreateFile,加5分;如果程序被加壳,就不分析API导入表中含有危险接口,即写文件、创建进程和网络访问的接口调用,每个加5分;5.5、如果待验证程序文件是VB(Visual Basic)程序,中央处理器分析判断是否含有文件操作,而且使用网络控件,加10分。
6、计算机的中央处理器分析待验证程序文件的区段信息,给出打分值。正常的程序非代码段的大小大约是代码段的10倍以内,如果超过10倍的话,有可能是一些打包了病毒,或是被病毒感染的程序,中央处理器把除了代码段之外的所有段都加起来,再比较大小,即它们与代码段的大小相差多少,这样中央处理器将分析判断结果记入并存储在内存中,然后继续扫描。
6.1、段表不完整,加10分;6.2、非代码段是代码段的100倍以上,加10分;6.3、非代码段是代码段的80倍以上,加8分;6.4、非代码段是代码段的60倍以上,加6分;6.5、非代码段是代码段的40倍以上,加4分;6.6、非代码段是代码段的20倍以上,加2分;6.7、非代码段是代码段的10倍以上,加1分。
7、计算机的中央处理器分析进程信息,将分析判断结果记入并存储在内存中,然后继续扫描,给出打分值。
7.1、待验证进程名称如果是“svchost.exe”,“lsass.exe”,“winlogon.exe”,“services.exe”,“Msimn.exe”,“msnmsgr.exe”这六个进程中的其中一个,加5分;7.2、待验证程序文件在操作系统的安装目录下,加10分;7.3、待验证程序文件在%system%目录下,加10分;7.4、待验证程序文件的路径是网络路径,加5分;7.5、中央处理器分析待验证进程与如下关键进程的名字的相似度,达到80%,加10分“conime”,“svchost”,“services”,“winlogon”,“explorer”,“lsass”,“internat”,“smss”;7.6、分析创建的进程名称的后缀是否是“DLL”,如果是,加20分。
8、计算机的中央处理器分析待验证程序文件的文件名称,给出打分值。名,对于正常的程序,一般文件名都不会超过32个,并且其中一般也不会超有2个以上的空格,也不会有中文或是#、$、@和%这些特殊字符,如果符合了下面这些条件的话,那就说明这个程序有可能是有问题的程序,中央处理器将分析判断结果记入并存储在内存中,然后继续扫描。
8.1、文件名超长,对大于32个字符,加5分;8.2、文件名中含有3个以上的空格,加5分;8.3、文件名中含有特殊字符,如中文符号,每个字符加1分;8.4、文件名分析分数高于10分,则设为10分。
如图5所示,根据计算机扫描的结果,使用者可以编辑修改主界面程序扫描的结果,使用者手动设置扫描结果列表中的某个的程序为恶意程序或者正常程序。
如图6所示,在计算机启动过程中,首先加载驱动组件,先给该程序创建进程,然后调度该进程,使进程运行起来。驱动组件替换计算机中原有的创建进程处理功能为驱动组件本身的处理。在计算机创建进程的时候,驱动组件会先对被创建的进程作以下处理1、启动进程是否为操作系统进程,操作系统进程是计算机启动必须运行的进程,绝对不能拦截,否则会使得计算机系统不能正常工作,所以要允许操作系统程序的进程运行;2、判断是否为正常程序列表里面的程序,如果是正常程序列表里面的程序,就允许创建进程;3、禁止其它所有进程的直接创建。
在正常情况下,计算机系统启动完成后,驱动组件停止自动拦截,但是考虑到有可能会出现各种问题,导致驱动组件一直处于拦截状态,这样就会造成计算机无法正常使用,所以在驱动组件要有一个停止自动拦截的方法如果主界面程序已经运行,或者驱动组件自身运行之后定时检测,如果驱动组件检测到自身运行超过5分钟,驱动组件就停止拦截,使计算机可以正常运行。
如图7所示,本发明驱动组件实现进程拦截的方法是使用创建进程处理代替计算机中原有的创建进程处理。首先驱动组件在初始化的时候,计算机的中央处理器获取原有处理函数的ID号,找到ID号对应的函数内存地址,然后采用修改地址属性的方法,把函数地址设为可写,修改函数地址,改写该地址为驱动组件里面的处理函数地址,进行替换。驱动组件的处理函数开始做出判断,决定阻止还是允许该进程的运行,计算机启动完成后恢复函数地址的不可写。要实现进程拦截可以有多种方法,本发明采用的方法是替换ZwCreateProcess、ZwCreateProcessEx、ZwCreateThread、ZwResumeThread这四个创建进程使用的内核处理函数。
权利要求
1.一种计算机安全启动的方法,包括以下步骤一、在计算机的应用层和驱动层分别安装主界面组件和驱动组件;二、驱动组件记录有计算机启动过程中运行的所有进程的名称,主界面组件对驱动组件记录下来的已运行进程进行扫描分析,确定安全进程;三、启动计算机时,驱动组件被计算机的CPU优先加载运行,不列在安全进程中的程序被判断为恶意程序,被驱动组件拦截,不执行运行。
2.根据权利要求1所述的计算机安全启动的方法,其特征在于所述计算机第一次启动时,驱动组件记录下计算机启动过程中运行的所有进程的名称,并存储;计算机启动完成后,主界面组件对驱动组件记录下来的已运行进程进行扫描分析,确定安全进程。
3.根据权利要求2所述的计算机安全启动的方法,其特征在于所述主界面组件对驱动组件记录下来的已运行程序使用数字签名验证、安全程序签名库验证和静态行为特征码分析的方法进行扫描分析。
4.根据权利要求3所述的计算机安全启动的方法,其特征在于所述驱动组件记录下计算机启动过程中运行的所有进程的名称时,以名称列表方式,存储到硬盘中的已运行进程列表中。
5.根据权利要求4所述的计算机安全启动的方法,其特征在于所述扫描分析时,使用打分的方法表示危险值,每个扫描分析步骤都得到一个危险分数值,主界面组件把等于0分的进程记录到安全程序列表中。
6.根据权利要求5所述的计算机安全启动的方法,其特征在于所述驱动组件通过返回值拦截恶意程序。
7.根据权利要求6所述的计算机安全启动的方法,其特征在于所述主界面组件具有人机交互模块、发送消息给驱动组件进行通信的模块、扫描分析识别恶意程序模块。
8.根据权利要求7所述的计算机安全启动的方法,其特征在于所述驱动组件拦截是通过创建进程处理来代替计算机中原有的创建进程处理实现的。
9.根据权利要求8所述的计算机安全启动的方法,其特征在于所述安全程序签名库验证采用扫描分析识别恶意程序模块把待分析程序的特征码与安全程序签名库里的特征码逐一比较,如果有相同的特征码,就把该待分析程序名称记录到安全程序列表,肯定该程序是正常程序。
10.根据权利要求9所述的计算机安全启动的方法,其特征在于所述静态行为特征码分析采用分析整个待验证程序文件的大小、资源及创建日期、验证文件的可移植的执行体信息、版本信息、可移植的执行体结构的导入表信息、区段信息、进程信息和文件名称,经比较给出危险值,然后把危险值累加,把最终危险值为0的程序名称记录到安全程序列表。
全文摘要
本发明公开了一种计算机安全启动的方法,要解决的技术问题是识别恶意程序和防止恶意程序的运行,本发明的方法包括以下步骤在计算机的应用层和驱动层分别安装主界面组件和驱动组件,驱动组件记录计算机启动过程中运行的进程,主界面组件对驱动组件记录下来的已运行进程进行扫描分析,确定安全进程,启动计算机时驱动组件被优先加载运行,恶意程序被驱动组件拦截,本发明与现有技术相比,驱动组件被优先加载运行,在计算机启动过程中拦截恶意程序,主界面组件采用数字签名验证、安全程序签名库验证和静态行为特征码分析判断方法判断程序是否为恶意程序,保证了计算机系统的正常工作,又可以有效地清除计算机系统启动中自动运行的恶意程序。
文档编号G06F9/445GK1900940SQ20061006176
公开日2007年1月24日 申请日期2006年7月19日 优先权日2006年7月19日
发明者谢朝霞 申请人:谢朝霞
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1