基于程序行为分析的计算机防护方法

文档序号:6574254阅读:207来源:国知局
专利名称:基于程序行为分析的计算机防护方法
技术领域
本发明涉及一种计算机防护方法,尤其涉及以程序的动作行为为特征的计算机防护方法。
背景技术
现有的计算机病毒防范产品大体上可以分为两类,一类用来是对入侵计算机的病毒程序进行隔离,例如防火墙,通过对通讯端口、协议等进行限制来防止入侵病毒程序的进入;另一类用来对可能形成入侵的病毒程序文件进行扫描,例如现有的杀毒软件,利用入侵病毒程序的代码特征,发现并清除该病毒程序。这两类产品尽管能够发现并消除某些病毒程序,但是也都具有一些无法克服的缺点,例如(一)防火墙的防止病毒程序入侵主要通过对通信端口和/或协议的监控实现,需要由用户自己设置使用某个通信端口或协议的程序要么允许、要么不允许通过的条件,因此,1.要求用户对系统非常熟悉,才能对防火墙进行有效设置;2.监控颗粒太大,如果所禁止的端口和/或协议是正常程序也需要使用的,或者病毒程序采用了允许正常通过的端口或协议,则可能导致误判或直接影响网络的正常运行。
(二)利用病毒特征码的清楚病毒的方式将永远滞后于病毒的发展,因为只有捕获到病毒样本后,才能提取到病毒的特征码,这使得这种杀毒软件对新出现的未知病毒入侵无法防范。

发明内容
本发明要解决的问题在于,提供一种能够主动对程序行为进行判断从而防止计算机被病毒程序破坏的方法。
本发明提供的基于程序行为分析的计算机防护方法,包括对计算机运行的指令或指令集进行分类,并为所述指令或指令集设置危险系数;
监控运行的程序行为,累计将要运行或已经运行的指令或指令集的危险系数,在所述系数的和大于设定的阈值时,中断所述程序的运行。
进一步,选择出可能危及计算机安全的指令或指令集进行分类。
所述指令或指令集为下述操作的指令或指令集文件操作;网络操作;创建进程或线程操作;注册表操作;窗口、托盘操作;堆栈操作;注入线程操作;拦截系统API调用以及访问、修改和创建用户帐号操作。
所述程序行为为下述程序户行为调用操作系统外壳程序;修改程序文件或写程序文件;调用FTP或TFTP;创建FTP或TFTP服务;发送邮件;浏览器或邮件系统自动运行其他程序;创建超过预定数量的相同线程;修改和创建用户帐号;向系统注册表添加启动项;修改系统启动文件;向其他进程注入线程;堆栈操作;应用级进程自动提升为系统级进程操作;拦截系统API调用。
进一步,将监控程序嵌入到操作系统的API函数中,实现对程序的动作行为的监控。
以及,通过被监控程序运行的指令,记录被监控程序的动作行为。
所述方法还包括建立已知程序档案库,用于存储已知程序的标识和所述已知程序的特征数据;以及,判断被监控的程序是否是已知程序,如果是,利用已知程序档案库中的特征数据判断所述被监控程序是否完好,如果完好,结束判断,否则中止所述已知程序的执行。
所述方法还包括建立攻击识别规则库,用于存储明显破坏计算机安全的计算机指令或指令集;以及,在被监控的程序不是已知程序时,利用攻击识别规则库中的特指令或指令集判断所述被监控程序是否为危险程序,如果是,中止所述已知程序的执行。
在本发明中,对计算机运行的指令或指令集进行分类,并为所述指令或指令集设置危险系数,这样,将监控到的指令或指令集对应的危险系数累加起来,就可以判断被监控程序的行为,进而决定是否中断所述程序的运行。需要说明的是,本发明并没有仅对危害计算机安全的指令或指令集设置危险系数,而是对全部的计算机指令包含的指令或指令集进行分类进行分类和设置危险系数,能够避免多个无害指令结合后变为有害指令的情况,例如无限次的循环、对重要存储单元的读写等。可见,本发明能够主动对程序行为进行判断从而防止计算机被病毒程序破坏。


图1为本发明所述方法的第一实施例流程图;图2为本发明所述方法的第二实施例流程图;图3为本发明所述方法的第三实施例流程图。
具体实施例方式
下面参照附图,并结合最常用的微软Windows操作系统,对本发明的实施例作详细说明。
如图1所示,为本发明所述方法的第一实施例流程图。图1所述的实施例的步骤11对计算机运行的指令或指令集进行分类,然后在步骤12为所述指令或指令集设置危险系数。本实施例中,步骤11和步骤12可以通过一个指令或指令集表实现。该表可以称为指令系数表,仅设置两个字段,一个指令字段,用于存储被分类出的指令或指令集合,一个字段为系数字段,用于存储不同指令或指令集合对应的危险系数。其中,一个不同的指令,由于带有不同参数或者不同作用范围的参数可能使一个具体的指令由对计算机无害变为有害,例如,当描述循环的指令的循环次数有限且合理时对计算机无害,但是当循环次数无线时,则可能由于陷入死循环而过渡消耗计算机的资源而变得有害。因此,一个指令可能由于带有的参数不同,或者参数的范围不同而具有不同的危险系数,一个指令由于带有的参数不同,或者参数的范围不同而变为不同的指令,在所述指令系数表中占有较多的行。同理,当不同的指令单独存在时可能对计算机无害,但是当该指令与其他指令结合构成一个指令集合时却可能变得有害。例如,一个读存储单元数据的指令时无害的,但是当读取的存储单元为存储堆栈指针的单元,则该“读”指令与一个数值运算指令和写存储单元指令结合时,就可能构成一个有害的指令集合。因此,可能要一组指令在所述指令系数表中占一行。在本发明的另一个实施例中,该指令系数表还包括一个类别字段,用于识别所述指令字段存储的是一个单个的指令还是一个由多条指令构成的指令集合。
然后在步骤13,监控运行的程序行为,即监控将要运行或已经运行的指令或指令集,找到所述指令或指令集对应的危险系数,然后在步骤14累计将要运行或已经运行的指令或指令集的危险系数,即将所述危险系数作求和操作,然后在步骤15判断所述求和操作的结果是否大于设定的阈值,如果大于,说明被监控的程序已经具有了足以危害计算机系统安全的行为,因此在步骤16中断所述程序的运行;否则,说明被监控的程序具有足以危害计算机系统安全的行为,此时返回到步骤13继续监控。
图1所述的方法可以静态使用也可以动态使用。所谓静态使用,是对处于静止状态或非激活状态的被监控程序进行扫描判断,从而获得该程序是否是病毒程序或被病毒侵害;也可以在被监控程序处于活动状态,即运行状态时对其进行监控,尤其是在一个指令或指令集运行之前对其进行判断,还有可能防止实际对计算机危害结果的发生。
在本发明的另一个实施例中,步骤13的监控操作通过类别字段协助完成,即先判断一个指令的类别,从而确定这是一个需要作单独判断的指令还是属于一个指令集的指令,从而方便步骤13的操作。
在本发明的另一个实施例中,选择出可能危及计算机安全的指令或指令集进行分类,而不是对所有指令分类,排除一些明显不能成生对计算机危害的指令,例如空操作指令,可以提高对被监控程序的监控效率。
图2为本发明所述方法的第二实施例流程图;与图1所述实施例相比,本实施例增加了建立已知程序档案库的步骤21,所述已知程序档案库用于存储已知程序的标识和所述已知程序的特征数据;还增加了一个判断步骤22,判断被监控的程序是否是已知程序,如果是,利用已知程序档案库中的特征数据判断所述被监控程序是否完好(步骤23),如果完好,结束判断(步骤24),否则中止所述已知程序的执行。
图3为本发明所述方法的第三实施例流程图;与图2所述实施例相比,增加了建立攻击识别规则库的步骤31,所述攻击识别规则库用于存储明显破坏计算机安全的计算机指令或指令集;以及,增加了在被监控的程序不是已知程序时,利用攻击识别规则库中的特指令或指令集判断所述被监控程序是否为危险程序的步骤32,如果晶步骤32判断被进空的程序是危险程序,直接经步骤16中止所述已知程序的执行。
在图1、图2和图3所述的实施例中,还包括通过被监控程序运行的指令,记录被监控程序的动作行为的步骤(图中未绘出)。
在图1、图2和图3所述的实施例中。将监控程序嵌入到操作系统的API函数中,从而获得对系统的监控权,实现对被监控程序的动作行为的监控。
如果比较结果证明被监控程序为危险程序,不但中断该程序的继续运行,而且向用户报警,或等待进一步处理。因此,采用如上所述的方法对已知程序进行检查,不但可以保证对已知程序是否正常运行进行判断,而且可以检查出已知程序是否受到攻击,并且与现有技术采用病毒特征代码比较的方法相比,不但检查病毒攻击的准确性更好,而且执行效率更高。
如上所述,根据将已知程序与程序行为知识库中记录的合法的动作行为进行比较,如果已知程序按照前述所记录的合法的程序行为执行,则说明所述已知程序运行正常;如果一旦出现了该已知程序合法动作行为以外的动作行为,则可以确定所述已知程序收到攻击,应将其停止。
而且,在本发明的实施例中,根据被监控程序的不同调用系统API函数结束当前进程;或者调用系统API函数结束当前线程。
由于在已知程序中,有相当一部分程序其功能是系统的底层服务,如果直接将这些程序结束,会使系统重启,以致系统瘫痪。因此,在本发明中对于那些不可以中断,且已经受到攻击的程序,直接中断执行了非法操作的线程结束即可,即保证系统的安全,又可以不影响系统的工作,使系统稳定运行,避免了现有的病毒防火墙工具,由于对系统中的重要服务的程序病毒进行检查时,杀灭病毒的同时,使系统中重要的程序文件造成损坏,影响系统的稳定性。例如微软Windows操作系统中,Lsass.exe为系统服务程序,如果该程序受到病毒程序的攻击,直接将该程序发生攻击的线程结束,这样,即可以保证系统安全,又能够阻止有害程序对系统的侵害。
在对被监控程序的动作行为是否为有害动作行为进行判断的步骤中,要将捕获到的该程序的动作行为与攻击识别规则库中的攻击识别规则进行比较,从而判断该程序是否为有害程序所述攻击识别规则库为是记录了有害程序的攻击行为特征的数据库,每一记录对应一个动作集,即对计算机的破坏性行为及这些行为或动作之间特定的关联关系。
所述指令或指令集为下述操作的指令或指令集文件操作;网络操作;创建进程或线程操作;注册表操作;窗口、托盘操作;堆栈操作;注入线程操作;拦截系统API调用以及访问、修改和创建用户帐号操作。
所述程序行为为下述程序户行为调用操作系统外壳程序;修改程序文件或写程序文件;调用FTP或TFTP;创建FTP或TFTP服务;发送邮件;浏览器或邮件系统自动运行其他程序;创建超过预定数量的相同线程;修改和创建用户帐号;向系统注册表添加启动项;修改系统启动文件;向其他进程注入线程;堆栈操作;应用级进程自动提升为系统级进程操作;拦截系统API调用。
例如,程序自行改变运行层级,如在微软Windows操作系统中,某程序自动从应用级提升系统级执行,由于只有少数的正常程序才具有这一特征,因此,可以判断得到很多具有这种特征分程序为病毒程序或被病毒攻击过的程序。
本发明的实施例中,所述攻击识别规则库包括下述规则的任何单个或两个以上任意的组合。
a)运行于用户层的程序,转入系统核心层RINGO运行;和/或;b)执行修改其他程序文件的操作;和/或;c)通过监听端口接收数据后,立即调用操作系统的外壳程序;和/或;d)通过监听端口接收数据后,使系统缓冲区溢出;和/或;e)通过监听端口接收数据后,立即调用一般文件传输协议程序传输数据;和/或;f)由邮件系统自动生成,且该程序运行时修改注册表的自启动项,该程序无窗口、无托盘,并且立即开始发送邮件;和/或;g)由邮件系统自动生成,且该程序运行时修改注册表的自启动项,该程序无窗口、无托盘,并且立即开始创建监听端口。
例如,对于一个已知程序,如果该程序行为不包括能修改其他程序文件的行为时,而当该程序运行时,却修改了其他程序文件,上述危险动作就可以被监控到,然后与已知程序档案库中存储的该已知程序的特征数据相比较,就可以判断该已知程序一定是被病毒感染。
通过上述的说明内容,本发明领域相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。因此,本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利范围来确定其技术性范围。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种基于程序行为分析的计算机防护方法,其特征在于对计算机运行的指令或指令集进行分类,并为所述指令或指令集设置危险系数;监控运行的程序行为,累计将要运行或已经运行的指令或指令集的危险系数,在所述系数的和大于设定的阈值时,中断所述程序的运行。
2.按照权利要求1所述基于程序行为分析的计算机防护方法,其特征在于,选择出可能危及计算机安全的指令或指令集进行分类。
3.按照权利要求2所述基于程序行为分析的计算机防护方法,其特征在于,所述指令或指令集为下述操作的指令或指令集文件操作;网络操作;创建进程或线程操作;注册表操作;窗口、托盘操作;堆栈操作;注入线程操作;拦截系统API调用以及访问、修改和创建用户帐号操作。
4.按照权利要求3所述基于程序行为分析的计算机防护方法,其特征在于,所述程序行为为下述程序户行为调用操作系统外壳程序;修改程序文件或写程序文件;调用FTP或TFTP;创建FTP或TFTP服务;发送邮件;浏览器或邮件系统自动运行其他程序;创建超过预定数量的相同线程;修改和创建用户帐号;向系统注册表添加启动项;修改系统启动文件;向其他进程注入线程;堆栈操作;应用级进程自动提升为系统级进程操作;拦截系统API调用。
5.按照权利要求1所述基于程序行为分析的计算机防护方法,其特征在于将监控程序嵌入到操作系统的API函数中,实现对程序的动作行为的监控。
6.按照权利要求5所述基于程序行为分析的计算机防护方法,其特征在于通过被监控程序运行的指令,记录被监控程序的动作行为。
7.按照权利要求1、2、3、4、5或6所述基于程序行为分析的计算机防护方法,其特征在于还包括建立已知程序档案库,用于存储已知程序的标识和所述已知程序的特征数据;以及,判断被监控的程序是否是已知程序,如果是,利用已知程序档案库中的特征数据判断所述被监控程序是否完好,如果完好,结束判断,否则中止所述已知程序的执行。
8.按照权利要求7所述基于程序行为分析的计算机防护方法,其特征在于还包括建立攻击识别规则库,用于存储明显破坏计算机安全的计算机指令或指令集;以及,在被监控的程序不是已知程序时,利用攻击识别规则库中的特指令或指令集判断所述被监控程序是否为危险程序,如果是,中止所述已知程序的执行。
9.按照权利要求8所述基于程序行为分析的计算机防护方法,其特征在于,所述攻击识别规则库,包括下述规则及一个以上下述的规则的任意组合a)运行于用户层的程序,转入系统核心层RING0运行;和/或;b)执行修改其他程序文件的操作;和/或;c)通过监听端口接收数据后,立即调用操作系统的外壳程序;和/或;d)通过监听端口接收数据后,使系统缓冲区溢出;和/或;e)通过监听端口接收数据后,立即调用一般文件传输协议程序传输数据;和/或;f)由邮件系统自动生成,且该程序运行时修改注册表的自启动项,该程序无窗口、无托盘,并且立即开始发送邮件;和/或;g)由邮件系统自动生成,且该程序运行时修改注册表的自启动项,该程序无窗口、无托盘,并且立即开始创建监听端口。
全文摘要
本发明涉及一种基于程序行为分析的计算机防护方法,该方法对计算机运行的指令或指令集进行分类,并为所述指令或指令集设置危险系数;并且以此为基础,监控运行的程序行为,累计将要运行或已经运行的指令或指令集的危险系数,在所述系数的和大于设定的阈值时,中断所述程序的运行。因此,本发明能够主动对程序行为进行判断从而防止计算机被病毒程序破坏。
文档编号G06F21/54GK101013461SQ20071008023
公开日2007年8月8日 申请日期2007年2月14日 优先权日2007年2月14日
发明者白杰, 李薇, 鲁征宇 申请人:白杰, 李薇, 鲁征宇
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1