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

文档序号:7611890阅读:172来源:国知局
专利名称:基于程序行为分析的计算机防护方法
技术领域
本发明涉及一种计算机防护方法,与现有技术相比较不同的是,不采用病毒特征代码进行比对,而是以程序的动作行为为特征,是基于程序行为分析的计算机防护方法。
背景技术
一直以来,对计算机病毒的入侵和反入侵的斗争都在激烈地进行着,随着计算机越来越广泛地使用,这种斗争的激烈程度也上升到一个新的高度。经过长期的斗争实践,人们总结出许多的具体方法来防止对计算机病毒的入侵,研制出许多相应的防范产品。这些产品大体上可以分为两类,一类是对入侵病毒进行隔离,例如防火墙,通过对通讯端口、协议等进行限制来防止入侵病毒的进入;另一类是对可能形成入侵的染病毒文件进行搜寻,例如现有的杀毒软件,利用可能形成入侵染病毒文件的代码特征,通过扫描发现并清除有害染病毒文件。这两类产品虽然在反病毒入侵的斗争中起了不少的作用,但都具有一些无法克服的缺点,它们分别是(一)防火墙虽然能够阻断一些非法病毒或黑客的入侵,但防火墙的监控对象为主要端口和协议,需要由用户自己设置要么允许通过、要么不允许通过。其主要缺陷,1.要求用户对系统非常熟悉,才能对它进行有效设置;2.由于监控颗粒太大,对于网络应用中必须用到的端口和协议基本无法设置,如果允许通过,则可能导致病毒或黑客入侵发生;若不允许通过,则可能又直接影响网络的正常运行。
(二)利用病毒特征码的杀毒软件将永远滞后于病毒的发展,因为只有捕获到病毒样本后,才能提取到病毒的特征码,这使得这种杀毒软件对新出现的未知病毒入侵无法防范,用户即使装备了杀毒软件,也会再次受到该病毒的攻击伤害,只有通过升级、更新病毒数据库才可以解决,而这种解决是滞后于病毒发生的。

发明内容
本发明正是为了解决现有技术的缺点而产生,解决了现有杀毒软件、防火墙不能对未知病毒以及木马进行有效的防护,并且解决了现有杀毒软件、防火墙使用过于复杂的弊病。其目的在于提供一种基于程序行为分析的计算机防护方法,并能够有效的对病毒、木马的攻击进行拦截,保证计算机的安全。
本发明的基于程序行为分析的计算机防护方法,其特征在于对于已知程序,监控其动作行为,并与程序行为知识库中记录的所述已知程序的合法动作行为进行比较,判断该已知程序是否受到非法攻击;对于未知程序,监控其动作行为,并与攻击识别规则库中记录的攻击识别规则进行比较,判断其是否为有害程序;前述程序行为知识库为,利用自动化工具,逐一对合法的已知程序所执行的动作行为进行分析列表,并将所述分析列表进行存储的数据库;所述攻击识别规则库为,利用自动化工具,记录了计算机病毒、木马及有害程序的攻击行为特征的数据库,每一记录对应一类病毒,每一类病毒对应一个动作集,该动作集包括一系列动作及其之间特定的关联关系。
如上所述,可知前述攻击识别规则库中记录的有害程序的攻击行为特征,并非某个或某种病毒、木马的单一的动作。根据下述动作行为分类可知,单一的动作并不是判断有害程序的标准。因此,攻击识别规则库中存储的记录为,每一条所述记录对应一类病毒或木马,并且包括该类病毒或木马的多个动作行为作为其特征,并且记录了所述该类病毒或木马的多个动作行为之间在时间等方面的关联关系,从而可以准确的对有害程序做出判断。
并且,对于各个监控动作和危险动作设置权值,当未知程序执行所述监控动作或危险动作达到权值上限时,则可以向用户报警;且该权值上限可以使用本发明所提供的经验值,也可由用户自定义,给用户在使用上带来了方便。
如上所述,进行监控、记录的动作行为包括监控动作,该动作可能影响计算机安全,需要对其进行实时监控;并且所述监控动作,是计算机程序所执行的常见的动作,是多数的正常程序也必须执行的动作。
并且所述监控动作包括文件操作;网络操作;创建进程、创建线程;注册表操作;窗口、托盘操作;堆栈溢出;注入线程;拦截系统API调用以及访问、修改和创建用户帐号。
危险动作,该动作首先是一个监控动作,在程序运行中,该动作可能威胁计算机安全;并且所述危险动作为少数正常程序会执行的动作,并且多数的病毒程序或木马程序需要执行的程序,因此执行这样的动作的程序具有危害性会更大,例如,程序自行改变运行层级,在微软Windows操作系统中,某程序自动从应用级(RING3)提升系统级(RING0)执行,只有少数的正常程序才具有这一特征,但是却是很多具有攻击性的病毒程序所共同具有的特征。
并且所述危险动作包括调用SHELL程序;修改程序文件或写程序文件;调用FTP或TFTP;创建FTP或TFTP服务;发送邮件;浏览器或邮件系统自动运行其他程序;创建大量相同线程;修改和创建用户帐号;危险网络操作;向系统注册表添加启动项;修改系统启动文件;向其他进程注入线程;堆栈溢出;应用级进程时自动提升为系统级进程操作;拦截系统API调用。
除前述监控动作和危险动作以外,还包括非监控动作,即不影响计算机安全无需进行监控的动作。例如,修改显示设置、对GDI资源的调用等。
本发明的基于程序行为分析的计算机防护方法中,所述自动化工具为,通过勾挂系统的API(Application Programming Interface应用编程接口)函数对程序的动作行为进行监控。现有的操作系统,程序执行时通常需要进行系统提供的API的调用,因此,只需要通过勾挂程序的系统API调用,即可对程序所执行的动作行为进行监控。
本发明的基于程序行为分析的计算机防护方法,其特征在于,包括如下步骤6.1)程序开始运行;6.2)判断该程序是否为已知程序;
6.3)如判断为已知程序,则监控、记录该已知程序的动作行为,并与程序行为知识库中存储的已知程序合法的动作行为进行比较,并判断该程序是否被攻击;如判断为未知程序,对该程序的动作行为是否为有害动作行为进行判断。
并且,所述程序被判断为已知程序后,对该已知程序是否受到攻击进行判断的步骤,还包括如下步骤7.1)勾挂程序系统API调用;7.2)监控程序动作行为,捕获程序所执行的监控动作和危险动作;7.3)将所记录的动作行为与程序行为知识库中存储的已知程序合法动作行为进行比较,判断该已知程序是否受到攻击;7.4)如果比较结果为合法动作行为,则返回步骤7.1);如果比较结果为否,则证明该已知程序已受到攻击,并终止该程序继续运行,向用户报警,或等待进一步处理。因此,采用如上所述的方法对已知程序进行检查,不但可以保证对已知程序是否正常运行进行判断,而且可以检查出已知程序是否受到攻击,并且与现有技术采用病毒特征代码比较的方法相比,不但检查病毒攻击的准确性更好,而且执行效率更高。
因此,根据将已知程序与程序行为知识库中记录的合法的动作行为进行比较,如果已知程序按照前述所记录的合法的程序行为执行,则说明所述已知程序运行正常;如果一旦出现了该已知程序合法动作行为以外的动作行为,则可以确定所述已知程序收到攻击,应将其停止。
并且,所述步骤7.4)中还包括如下步骤
8.1)根据程序行为知识库的定义,判断是否结束进程;8.2)如果判断结果为是,则调用系统API函数结束当前进程;如果判断结果为否,则调用系统API函数结束当前线程。
由于在已知程序中,有相当一部分程序其功能是系统的底层服务,如果直接将这些程序结束,会使系统重启,以致系统瘫痪。因此,在本发明中,对于程序行为知识库中的程序进行定义,如上述步骤8.1),对于那些不可以终止,且已经受到攻击的程序,将按照步骤8.2)所述,将执行了非法操作的线程结束即可。如上所述,即保证系统的安全,又可以不影响系统的工作,使系统稳定运行,避免了现有的病毒防火墙工具,由于对系统中的重要服务的程序病毒进行检查时,杀灭病毒的同时,使系统中重要的程序文件造成损坏,影响系统的稳定性。
如果,所述程序被判断为未知程序后,对该程序的动作行为是否为有害动作行为进行判断的步骤,包括如下步骤9.1)勾挂程序系统API调用;9.2)监控程序动作行为,捕获程序所执行的监控动作和危险动作;9.3)判断该程序是否有程序来源;9.4)将捕获到的该程序的动作行为与攻击识别规则库中的攻击识别规则进行比较;9.5)判断该程序是否为有害程序;如果判断结果为是,则进入下一步;9.6)由用户确认是否允许该程序继续执行;9.7)如果用户确认允许该程序继续运行,则该程序继续运行,如果用户确认不允许该程序继续运行,则终止该程序继续运行。
如上所述对于未知程序,根据前述攻击识别规则库,可以判断该程序是否为有害程序,从程序行为进行分析不但省去了现有杀毒软件中用户频繁升级病毒库的麻烦,而且对于未知的病毒、木马等有害程序更能起到很好的拦截效果,这是现有技术所不能解决的难题,并且具有更高的执行效率。
本发明的基于程序行为分析的计算机防护方法中,如果该程序有程序来源信息,则将监控到的该程序的动作行为记录到程序行为知识库中,并返回步骤9.2),继续对该程序的动作行为进行监控、记录。
将该有程序来源的程序的动作行为记录到程序行为知识库中时,其记录的结构与程序行为知识库相同,并在返回步骤9.2)后,继续捕获该程序的监控动作和危险动作,并继续向程序行为知识库中添加该程序的记录。
前述步骤9.3)中,所述程序来源信息为包括是否为安装程序创建;是否为经用户确认过的程序。当某未知程序是由安装程序创建时,该程序具有很高的可靠性,因此可以通过系统默认设置,认为该程序是合法程序,因此将其动作行为,添加到程序行为知识库中,因此在保证系统安全的前提下,减少了系统的开销。如果某未知程序其执行的动作行为已经通过了用户的确认,则说明用户了解该程序的动作行为,因此将其添加到程序行为知识库,并且将以后的动作行为也添加到程序行为知识库中。
本发明的基于程序行为分析的计算机防护方法,所述步骤9.6)中,在用户确认允许被判定为有害程序的无来源未知程序继续执行后,将该程序的所述动作行为记录到程序行为知识库中;并返回步骤9.2)。
用户对未知程序的动作行为进行确认,并添加到程序行为知识库中时,其记录的结构与程序行为知识库相同,并在返回步骤9.2)后,继续捕获该程序的监控动作和危险动作,并继续向程序行为知识库中添加该程序的记录。
如上所述,可以使程序行为知识库得到不断补充,当未知程序的记录被加入到程序行为知识库中后,该未知程序就转变为了已知程序,再次执行该程序时,则按照已知程序的判断方法进行判断,从而提高了系统的效率。
本发明的基于程序行为分析的计算机防护方法中,所述步骤7.4)或所述步骤9.7)中,通过调用系统API,将受到攻击的已知程序和具有有害动作行为的未知程序终止。所述API函数均为操作系统提供的固定的函数。
本发明的基于程序行为分析的计算机防护方法,其中所述步骤9.4)或所述步骤9.5)中,判断该程序的动作行为是否为有害动作行为,通过在步骤9.4)中与攻击识别规则库中的攻击识别规则进行比较,得到该监控动作或危险动作的权值,并在步骤9.5)中将权值累加;当权值累加结果达到权值上限,则将该程序行为判断为有害程序行为。
本发明的基于程序行为分析的计算机防护方法中,所述权值上限由本发明提供的经验值判断,或按照用户自定义。
本发明的基于程序行为分析的计算机防护方法,所述被监控的程序处于运行状态,其退出后,不再进行监视和记录。这样,不但可以有效的保护系统,而且可以减少系统开销。
本发明的基于程序行为分析的计算机防护方法中,所述程序行为知识库,其结构描述包括程序ID、程序类型、程序运行层级、写PE文件权限、调用系统SHELL权限、网络行为和注册表操作。
其中所述程序行为知识库中,所述程序类型为程序分类枚举类型,分为可被缓冲区溢出攻击的程序和普通应用程序。
其中所述网络行为,其结构描述包括网络连接动作类型、使用端口数量以及连接描述。
其中所述连接描述包括本地端口、本地地址、远程端口、远程地址以及使用协议。
其中所述注册表操作,其结构描述包括该程序所操作的注册表项数、每项操作的键值。
并且,所述程序行为知识库,通过对本地计算机使用软件进行检查,添加与用户已经使用的已知程序相对应的已知程序行为的记录,作为本地计算机的程序行为知识库,并按照用户需要对用户将要使用的已知程序进行补充。
其中,所述攻击识别规则库,包括病毒规则一,a)运行于用户层RING3的程序,转入系统核心层RING0运行;病毒规则二,b)该程序执行修改其他程序文件的操作;远程攻击规则一,
c)该程序通过监听端口接受数据后,立即调用SHELL程序;远程攻击规则二,d)该程序通过监听端口接收数据后,发生缓冲区溢出;远程攻击规则三,e)该程序通过监听端口接收数据后,立即调用一般文件传输协议TFTP程序;邮件蠕虫规则一,f)该程序由邮件系统自动生成,且该程序运行时修改注册表的自启动项,该程序无窗口、无托盘,并且立即开始发送邮件;可疑木马规则一,g)该程序由邮件系统自动生成,且该程序运行时修改注册表的自启动项,该程序无窗口、无托盘,并且立即开始创建监听端口;本发明的基于程序行为分析的计算机防护方法中,所述攻击识别规则库,其结构描述包括可执行PE文件的全路径、创建者全路径、创建者的特性、创建者有无窗口、与创建者是否同一文件、是否拷贝自身、文件有无描述、是否自启动、谁创建的自启动项、是否被创建者启动、是否自己创建自启动项、是否有窗口或托盘图标、修改注册表项链表和网络动作链表。
其中,所述修改注册表项链表的子数据结构,包括入口列表、键名、值名和值。
其中,所述网络动作链表的子数据结构,包括类型、本地端口、本地地址、远程端口、远程地址和使用协议。


图1为本发明的基于程序行为分析的计算机防护方法的流程图;图2为判断未知程序的动作行为的权值计算的流程图。
具体实施例方式
下面参照附图,并结合最常用的微软Windows操作系统,将本发明的基于程序行为分析的计算机防护方法运用于该微软Windows操作系统中,对本发明的实施例作详细说明。
如图1所示,为本发明的基于程序行为分析的计算机防护方法的流程图。
本发明的基于程序行为分析的计算机防护方法,其特征在于对于已知程序,监控其动作行为,并与程序行为知识库中记录的所述已知程序的合法动作行为进行比较,判断该已知程序是否受到非法攻击;对于未知程序,监控其动作行为,并与攻击识别规则库中记录的攻击识别规则进行比较,判断其是否为有害程序;本发明的基于程序行为分析的计算机防护方法,其特征在于,包括如下步骤6.1)程序开始运行;6.2)判断该程序是否为已知程序;
6.3)如判断为已知程序,则监控、记录该已知程序的动作行为,并与程序行为知识库中存储的已知程序合法的动作行为进行比较,并判断该程序是否被攻击;如判断为未知程序,对该程序的动作行为是否为有害动作行为进行判断。
并且,所述程序被判断为已知程序后,对该已知程序是否受到攻击进行判断的步骤,还包括如下步骤7.1)勾挂程序系统API调用;7.2)监控程序动作行为,捕获程序所执行的监控动作和危险动作;7.3)将所记录的动作行为与程序行为知识库中存储的已知程序合法动作行为进行比较,判断该已知程序是否受到攻击;7.4)如果比较结果为合法动作行为,则返回步骤7.1);如果比较结果为否,则证明该已知程序已受到攻击,并终止该程序继续运行,向用户报警,或等待进一步处理。因此,采用如上所述的方法对已知程序进行检查,不但可以保证对已知程序是否正常运行进行判断,而且可以检查出已知程序是否受到攻击,并且与现有技术采用病毒特征代码比较的方法相比,不但检查病毒攻击的准确性更好,而且执行效率更高。
如上所述,根据将已知程序与程序行为知识库中记录的合法的动作行为进行比较,如果已知程序按照前述所记录的合法的程序行为执行,则说明所述已知程序运行正常;如果一旦出现了该已知程序合法动作行为以外的动作行为,则可以确定所述已知程序收到攻击,应将其停止。
并且,所述步骤7.4)中还包括如下步骤
8.1)根据程序行为知识库的定义,判断是否结束进程;8.2)如果判断结果为是,则调用系统API函数结束当前进程;如果判断结果为否,则调用系统API函数结束当前线程。
由于在已知程序中,有相当一部分程序其功能是系统的底层服务,如果直接将这些程序结束,会使系统重启,以致系统瘫痪。因此,在本发明中,对于程序行为知识库中的程序进行定义,如上述步骤8.1),对于那些不可以终止,且已经受到攻击的程序,将按照步骤8.2)所述,将执行了非法操作的线程结束即可。如上所述,即保证系统的安全,又可以不影响系统的工作,使系统稳定运行,避免了现有的病毒防火墙工具,由于对系统中的重要服务的程序病毒进行检查时,杀灭病毒的同时,使系统中重要的程序文件造成损坏,影响系统的稳定性。例如微软Windows操作系统中,Lsass.exe为系统服务程序,如果该程序可能受到溢出攻击,则不能将其进程结束,这样会使系统重启造成系统不稳定;因此,按照本发明的方法及程序行为知识库中对其定义,将该程序发生溢出攻击的线程结束,这样,即可以保证系统安全,又能够组织有害程序对系统的侵害;又如微软Word文字编辑软件,也存在溢出攻击的危险,但是由于其不是系统服务软件,因此根据本发明的方法及程序行为知识库的定义,可以将整个Word进程结束,以此保护了系统的安全。
如果,所述程序被判断为未知程序后,对该程序的动作行为是否为有害动作行为进行判断的步骤,包括如下步骤9.1)勾挂程序系统API调用;9.2)监控程序动作行为,捕获程序所执行的监控动作和危险动作;9.3)判断该程序是否有程序来源;
9.4)将捕获到的该程序的动作行为与攻击识别规则库中的攻击识别规则进行比较;9.5)判断该程序是否为有害程序;如果判断结果为是,则进入下一步;9.6)由用户确认是否允许该程序继续执行;9.7)如果用户确认允许该程序继续运行,则该程序继续运行,如果用户确认不允许该程序继续运行,则终止该程序继续运行。
本发明的基于程序行为分析的计算机防护方法中,如果该程序有程序来源信息,则将监控到的该程序的动作行为记录到程序行为知识库中,并返回步骤9.2),继续对该程序的动作行为进行监控、记录。
将该有程序来源的程序的动作行为记录到程序行为知识库中时,其记录的结构与程序行为知识库相同,并在返回步骤9.2)后,继续捕获该程序的监控动作和危险动作,并继续向程序行为知识库中添加该程序的记录。如上所述,可以使程序行为知识库得到不断补充,当未知程序的记录被加入到程序行为知识库中后,该未知程序就转变为了已知程序,再次执行该程序时,则按照已知程序的判断方法进行判断,从而提高了系统的效率。
并且,如图2所示,为判断未知程序的动作行为的权值计算的流程图。
本发明的基于程序行为分析的计算机防护方法,其中所述步骤9.4)或所述步骤9.5)中,判断该程序的动作行为是否为有害动作行为,通过在步骤9.4)中与攻击识别规则库中的攻击识别规则进行比较,得到该监控动作或危险动作的权值,并在步骤9.5)中将权值累加;当权值累加结果达到权值上限,则将该程序行为判断为有害程序行为。其中,所述权值上限由本发明提供的经验值判断,或按照用户自定义。
本发明的基于程序行为分析的计算机防护方法,其中,前述程序行为知识库为,利用自动化工具,逐一对合法的已知程序所执行的动作行为进行分析列表,并将所述分析列表进行存储的数据库;所述攻击识别规则库为,利用自动化工具,记录了计算机病毒、木马及有害程序的攻击行为特征的数据库,每一记录对应一类病毒,每一类病毒对应一个动作集,该动作集包括一系列动作及其之间特定的关联关系。
如上所述,可知前述攻击识别规则库中记录的有害程序的攻击行为特征,并非某个或某种病毒、木马的单一的动作。根据下述动作行为分类可知,单一的动作并不是判断有害程序的标准。因此,攻击识别规则库中存储的记录为,每一条所述记录对应一类病毒或木马,并且包括该类病毒或木马的多个动作行为作为其特征,并且记录了所述该类病毒或木马的多个动作行为之间在时间等方面的关联关系,从而可以准确的对有害程序做出判断。
并且如上所述,对于各个监控动作和危险动作设置权值,当未知程序执行所述监控动作或危险动作达到权值上限时,则可以向用户报警;且该权值上限可以使用本发明所提供的经验值,也可由用户自定义,给用户在使用上带来了方便。
如上所述,进行监控、记录的动作行为包括
监控动作,该动作可能影响计算机安全,需要对其进行实时监控;并且所述监控动作,是计算机程序所执行的常见的动作,是多数的正常程序也必须执行的动作。
并且所述监控动作包括文件操作;网络操作;创建进程、创建线程;注册表操作;窗口、托盘操作;堆栈溢出;注入线程;拦截系统API调用以及访问、修改和创建用户帐号。
危险动作,该动作首先是一个监控动作,在程序运行中,该动作可能威胁计算机安全;并且所述危险动作为少数正常程序会执行的动作,并且多数的病毒程序或木马程序需要执行的程序,因此执行这样的动作的程序具有危害性会更大,例如,程序自行改变运行层级,在微软Windows操作系统中,某程序自动从应用级(RING3)提升系统级(RING0)执行,只有少数的正常程序才具有这一特征,但是却是很多具有攻击性的病毒程序所共同具有的特征。
并且所述危险动作包括调用SHELL程序;修改程序文件或写程序文件;调用FTP或TFTP;创建FTP或TFTP服务;发送邮件;浏览器或邮件系统自动运行其他程序;创建大量相同线程;修改和创建用户帐号;危险网络操作;向系统注册表添加启动项;修改系统启动文件;向其他进程注入线程;堆栈溢出;应用级进程时自动提升为系统级进程操作;拦截系统API调用。
除前述监控动作和危险动作以外,还包括非监控动作,即不影响计算机安全无需进行监控的动作。例如,修改显示设置,对GDI资源的调用等。这些动作不会对系统造成不良影响,因此为了节省系统开销,并不对这些动作行为进行监控。
本发明的基于程序行为分析的计算机防护方法中,所述自动化工具为,通过勾挂系统的API(Application Programming Interface应用编程接口)函数对程序的动作行为进行监控。现有的操作系统,程序执行时通常需要进行系统提供的API的调用,因此,只需要通过勾挂程序的系统API调用,即可对程序所执行的动作行为进行监控。
如上所述对于未知程序,根据前述攻击识别规则库,可以判断该程序是否为有害程序,从程序行为进行分析不但省去了现有杀毒软件中用户频繁升级病毒库的麻烦,而且对于未知的病毒、木马等有害程序更能起到很好的拦截效果,这是现有技术所不能解决的难题,并且具有更高的执行效率。
并且,前述步骤9.3)中,所述程序来源信息为包括是否为安装程序创建,是否为经用户确认过的程序。如图1所示,当某未知程序是由安装程序创建时,该程序具有很高的可靠性,因此可以通过系统默认设置,认为该程序是合法程序,因此将其动作行为,添加到程序行为知识库中,因此在保证系统安全的前提下,减少了系统的开销。如果某未知程序其执行的动作行为已经通过了用户的确认,则说明用户了解该程序的动作行为,因此将其添加到程序行为知识库,并且将以后的动作行为也添加到程序行为知识库中。
本发明的基于程序行为分析的计算机防护方法中,所述步骤7.4)或所述步骤9.7)中,通过调用系统API,将受到攻击的已知程序和具有有害动作行为的未知程序终止。所述API函数均为操作系统提供的固定的函数。
本发明的基于程序行为分析的计算机防护方法,所述被监控的程序处于运行状态,其退出后,不再进行监视和记录。这样,不但可以有效的保护系统,而且可以减少系统开销。
本发明的基于程序行为分析的计算机防护方法中,所述程序行为知识库,其结构描述包括程序ID、程序类型、程序运行层级、写PE文件权限、调用系统SHELL权限、网络行为和注册表操作。
所述程序行为知识库结构实体描述如下struct Know{DWORD type1;BOOL bAllowedWriteFile;BOOL bCreateShell;DWORD NetOffset;DWORD RegOffset;};其中type1为程序分类枚举类型,目前暂时分为可被缓冲区溢出攻击的程序和普通应用程序两类,描述如下,enum KnowType{OVERFLOW,NORMAL};bAllowedWriteFile,表示该程序是否可以写可执行PE文件。
bCreateShell,表示该程序是否可以调用系统shell。
NetOffset,表示在知识库文件中偏移多少的位置为对该程序网络行为的描述。
RegOffset,表示在知识库文件中偏移多少的位置为对该程序注册表操作行为的描述。
在程序行为知识库中使用以下分结构描述该程序的网络动作行为的结构实体描述为struct Net{short type2;int num;ListenPort port[];};其中,Type2,用来描述网络连接的动作类型,分为两类,监听和连接,使用如下枚举量描述,enum NetType{Listen,Connect};num,为涉及到的端口数量;ListenPort,针对每一个连接的具体描述,使用如下结构表示,struct ListenPort{short lport;IPADDR lipaddr;short dport;IPADDR dipaddr;short protocol;};lport使用的本地端口;lipaddr使用的本地地址;dport所连接的远程端口;dipaddr所连接的远程地址;
protocol所使用的协议,使用TCP/IP协议定义。
在程序行为知识库中使用以下分结构描述该程序的注册表操作动作行为的结构实体描述为struct Reg{int num;char*fullregname[];};num,表示该程序所操作的注册表项数。
fullregname,每一项操作的键值。
并且,所述程序行为知识库,通过对本地计算机使用软件进行检查,添加与用户已经使用的已知程序相对应的已知程序行为的记录,作为本地计算机的程序行为知识库,并按照用户需要对用户将要使用的已知程序进行补充。
本发明的基于程序行为分析的计算机防护方法中,所述攻击识别规则库,其结构描述包括可执行PE文件的全路径、创建者全路径、创建者的特性、创建者有无窗口、与创建者是否同一文件、是否拷贝自身、文件有无描述、是否自启动、谁创建的自启动项、是否被创建者启动、是否自己创建自启动项、是否有窗口或托盘图标、修改注册表项链表和网络动作链表。
本发明的区分有害程序行为的方法中,所述攻击识别规则库,其中,每一记录的数据结构实体为struct UnknowPEFileInMem{
Char WeighofDanger;//危险权值Char FileName[MAX_PATH];//新创建的PE文件的全路径Char CreatorName[MAX_PATH];//创建者的全路径Char CharacterOfCreator;//创建者的特性Char NoWindowOfCreator;//创建者有无窗口Char SameAsCreator;//与创建者是同一个文件Char CopySelf;//拷贝自身,对于创建者是CopySelf,对于被复制的文件是SameAsCreator,//以次来区分两者Char FileDescription;//文件有无描述Char AutoRun;//是否自启动Char WhoWriteAutoRun;//谁创建的自启动项BOOLEAN RunByCreator;//是否被创建者启动BOOLEAN RunBySelf;//是否自己创建启动项BOOLEAN bCreateWindow;//是否有窗口或托盘图标LIST_ENTRY RegList;//修改注册表项链表LIST_NET ListNetAction;//网络动作链表}上述创建者的特性“CharacterOfCreator”的具体数据记录及描述是-1未知程序;0其它已知程序;1邮件系统;2网络浏览器;3网络交流系统(如QQ、MSN等);
上述谁创建的自启动项“WhoWriteAutoRun”的具体数据记录及描述是0未知;1自己;2创建者;3.自己,创建者都会写其中修改注册表项链表的子数据结构实体为。
struct REG_DATA{LIST_ENTRY List;//入口列表char Key[];//键名char ValueName[];//值名char Value[];//值}其中网络动作链表的子数据结构实体为struct LIST_NET{int type;//类型short lport;//本地端口IPADDR lipaddr;//本地IP地址short dport;//远程端口IPADDR dipaddr;//远程IP地址short protocol;//使用协议};
按照如上所述攻击识别规则库,其中包括病毒规则一,a)运行于用户层RING3的程序,转入系统核心层RING0运行;病毒规则二,b)该程序执行修改其他程序文件的操作;远程攻击规则一,c)该程序通过监听端口接受数据后,立即调用SHELL程序;远程攻击规则二,d)该程序通过监听端口接收数据后,发生缓冲区溢出;远程攻击规则三,e)该程序通过监听端口接收数据后,立即调用一般文件传输协议TFTP程序;邮件蠕虫规则一,f)该程序由邮件系统自动生成,且该程序运行时修改注册表的自启动项,该程序无窗口、无托盘,并且立即开始发送邮件;可疑木马规则一,g)该程序由邮件系统自动生成,且该程序运行时修改注册表的自启动项,该程序无窗口、无托盘,并且立即开始创建监听端口;下面以病毒攻击为例,对本发明的实施例作详细说明。
对于一个已知程序,如果程序行为描述为不能修改程序文件,当该程序运行时,却修改了其他程序文件,上述危险动作被系统监控,然后与程序行为知识库中存储的该已知程序的合法动作行为相比较,产生不同的动作,因此可以判断该已知程序一定是被病毒感染。利用这一方法可以发现CIH等病毒,对于被CIH等病毒感染的已知程序运行时,该已知程序就会试图感染其他PE文件,因此可以在对病毒并不了解的情况下,将其阻止,从而避免了由于病毒代码更新的滞后性而使新生的病毒有机可乘。
下面利用拦截震荡波病毒,对本发明的实施例作以说明震荡波蠕虫病毒与其他蠕虫病毒不同,并不发送邮件,其工作原理为,在本地开辟后门。监听TCP 5554端口,做为FTP服务器等待远程控制命令。病毒以FTP的形式提供文件传送。黑客可以通过这个端口偷窃用户机器的文件和其他信息。病毒开辟128个扫描线程,以本地IP地址为基础,取随机IP地址,疯狂的试探连接445端口,试图利用windows操作系统中的LSASS中存在一个缓冲区溢出漏洞进行攻击,一旦攻击成功会导致对方机器感染此病毒并进行下一轮的传播。
当感染了震荡波病毒的的计算机发出攻击包至使用了本发明的防护系统时,本地计算机的LSASS进程溢出,溢出代码会调用GetProcAddress,就会被本发明的监控机制捕获,判断为缓冲区溢出,而且在溢出前,LSASS进程会从系统的139,445端口接收数据,这与上述d)规则所提供的规则相符;因此本发明可以准确判断出该远程攻击,于是系统调用ExitThread,将这个线程结束,从而使震荡波蠕虫无法进入下一步的动作,有效保护了本地计算机。
下面再利用截获著名的反弹行木马黑洞对本发明的实施例作以说明由于其属于未知程序,该进程启动即被本发明的监控系统捕获,同时该程序没有创建应用程序窗口及系统托盘区图标;并且该程序启动后会修改注册表启动项,以保证自己可以在下次用户登录时自动启动,此动作行为也是危险动作,因此也被本发明的监控系统捕获,该进程继续执行将会连接远端web服务器以获得客户端服务的地址、端口信息,以便与其建立连接进行信息传输,此连网动作被捕获后,将上述动作一同与攻击识别规则库中的规则比较,符合攻击识别规则库中的规则g),便可判断为可疑木马,并向用户报警,同时说明该非法程序的属性为可疑木马,,以便用户更准确的了解信息,避免了现有防火墙系统只要发生网络动作便报警,而且需要用户对报警动作安全性做出判断,避免了计算机知识较少的用户在使用防护系统时产生麻烦。
通过上述的说明内容,本发明领域相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。因此,本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利范围来确定其技术性范围。
权利要求
1.一种基于程序行为分析的计算机防护方法,其特征在于对于已知程序,监控其动作行为,并与程序行为知识库中记录的该已知程序的合法动作行为进行比较,判断该已知程序是否受到非法攻击;对于未知程序,监控其动作行为,并与攻击识别规则库中记录的攻击识别规则进行比较,判断其是否为有害程序;所述程序行为知识库为,利用自动化工具,逐一对合法的已知程序所执行的动作行为进行分析列表,并将所述分析列表进行存储的数据库;所述攻击识别规则库为,利用自动化工具,记录了计算机病毒、木马及有害程序的攻击行为特征的数据库,每一记录对应一类病毒,每一类病毒对应一个动作集,该动作集包括一系列动作及其之间的关联关系。
2.按照权利要求1所述基于程序行为分析的计算机防护方法,其特征在于,所述进行监控、记录动作行为包括监控动作,该动作可能影响计算机安全、需要对其进行实时监控;危险动作,该动作首先是一个监控动作,在程序运行中,该动作可能威胁计算机安全;此外,还包括非监控动作,即不影响计算机安全无需进行监控的动作。
3.按照权利要求2所述基于程序行为分析的计算机防护方法,其特征在于,所述监控动作,包括文件操作;网络操作;创建进程、创建线程;注册表操作;窗口、托盘操作;堆栈溢出;注入线程;拦截系统API调用以及访问、修改和创建用户帐号。
4.按照权利要求2所述基于程序行为分析的计算机防护方法,其特征在于,所述危险动作包括调用SHELL程序;修改程序文件或写程序文件;调用FTP或TFTP;创建FTP或TFTP服务;发送邮件;浏览器或邮件系统自动运行其他程序;创建大量相同线程;修改和创建用户帐号;危险网络操作;向系统注册表添加启动项;修改系统启动文件;向其他进程注入线程;堆栈溢出;应用级进程自动提升为系统级进程操作;拦截系统API调用。
5.按照权利要求1所述基于程序行为分析的计算机防护方法,其特征在于所述自动化工具为,通过勾挂系统的API函数对程序的动作行为进行监控。
6.按照权利要求1所述基于程序行为分析的计算机防护方法,其特征在于,包括如下步骤6.1)程序开始运行;6.2)判断该程序是否为已知程序;6.3)如判断为已知程序,则监控、记录该已知程序的动作行为,并与程序行为知识库中存储的已知程序合法的动作行为进行比较,并判断该程序是否被攻击;如判断为未知程序,对该程序的动作行为是否为有害动作行为进行判断。
7.按照权利要求1或6所述基于程序行为分析的计算机防护方法,其特征在于,所述程序被判断为已知程序后,对该已知程序是否受到攻击进行判断的步骤,还包括如下步骤7.1)勾挂程序系统API调用;7.2)监控程序动作行为,捕获程序所执行的监控动作和危险动作;7.3)将所记录的动作行为与程序行为知识库中存储的已知程序合法动作行为进行比较,判断该已知程序是否受到攻击;7.4)如果比较结果为合法动作行为,则返回步骤7.1);如果比较结果为否,则证明该已知程序已受到攻击,并终止该程序继续运行,向用户报警,或等待进一步处理。
8.按照权利要求7所述基于程序行为分析的计算机防护方法,其特征在于,所述步骤7.4)中还包括如下步骤8.1)根据程序行为知识库的定义,判断是否结束进程;8.2)如果判断结果为是,则调用系统API函数结束当前进程;如果判断结果为否,则调用系统API函数结束当前线程。
9.按照权利要求1或6所述基于程序行为分析的计算机防护方法,其特征在于,所述程序被判断为未知程序后,对该程序的动作行为是否为有害动作行为进行判断的步骤,包括如下步骤9.1)勾挂程序系统API调用;9.2)监控程序动作行为,捕获程序所执行的监控动作和危险动作;9.3)判断该程序是否有程序来源;9.4)将捕获到的该程序的动作行为与攻击识别规则库中的攻击识别规则进行比较;9.5)判断该程序是否为有害程序;如果判断结果为是,则进入下一步;9.6)由用户确认是否允许该程序继续执行;9.7)如果用户确认允许该程序继续运行,则该程序继续运行,如果用户确认不允许该程序继续运行,则终止该程序继续运行。
10.按照权利要求9所述基于程序行为分析的计算机防护方法,其特征在于所述步骤9.3)中,如果该程序有程序来源信息,则将监控到的该程序的动作行为记录到程序行为知识库中,并返回步骤9.2)。
11.按照权利要求10所述基于程序行为分析的计算机防护方法,其特征在于将该有程序来源的程序的动作行为记录到程序行为知识库中时,其记录的结构与程序行为知识库相同,并在返回步骤9.2)后,继续捕获该程序的监控动作和危险动作,并继续向程序行为知识库中添加该程序的记录。
12.按照权利要求9所述基于程序行为分析的计算机防护方法,其特征在于,所述步骤9.3)中,所述程序来源信息包括是否为安装程序创建;是否为经用户确认过的程序。
13.按照权利要求9所述基于程序行为分析的计算机防护方法,其特征在于所述步骤9.6)中,在用户确认允许被判为有害程序的无来源未知程序继续执行后,将该程序的所述动作行为记录到程序行为知识库中;并返回步骤9.2)。
14.按照权利要求13所述基于程序行为分析的计算机防护方法,其特征在于用户对未知程序的动作行为进行确认,并添加到程序行为知识库中时,其记录的结构与程序行为知识库相同,并在返回步骤9.2)后,继续捕获该程序的监控动作和危险动作,并继续向程序行为知识库中添加该程序的记录。
15.按照权利要求7至11、13或14中的任意一项所述基于程序行为分析的计算机防护方法,其特征在于已记录到程序行为知识库的有程序来源的未知程序和经过用户对其动作行为进行确认的未知程序,当再次运行该程序时,将按照已知程序的判断方法对其进行判断。
16.按照权利要求1、7或9中的任意一项所述基于程序行为分析的计算机防护方法,其特征在于所述步骤7.4)或所述步骤9.7)中,通过调用系统API,将受到攻击的已知程序和具有有害动作行为的未知程序终止。
17.按照权利要求9所述基于程序行为分析的计算机防护方法,其特征在于所述步骤9.4)或所述步骤9.5)中,判断该程序的动作行为是否为有害动作行为,通过在步骤9.4)中捕获的该未知程序的动作行为与攻击识别规则库中的攻击识别规则进行比较,得到该监控动作或危险动作的权值;在步骤9.5)中将权值累加;当权值累加结果达到权值上限,则将该程序行为判断为有害程序行为。
18.按照权利要求17所述基于程序行为分析的计算机防护方法,其特征在于所述权值上限由本发明提供的经验值判断,或按照用户自定义。
19.按照权利要求6至9中任意一项所述基于程序行为分析的计算机防护方法,其特征在于所述被监控的程序处于运行状态,其退出后,不再进行监视和记录。
20.按照权利要求1所述基于程序行为分析的计算机防护方法,其特征在于,所述程序行为知识库,其结构描述包括程序ID、程序类型、程序运行层级、写PE文件权限、调用系统SHELL权限、网络行为和注册表操作。
21.按照权利要求20所述基于程序行为分析的计算机防护方法,其特征在于所述程序行为知识库中,所述程序类型为程序分类枚举类型,分为可被缓冲区溢出攻击的程序和普通应用程序。
22.按照权利要求20所述基于程序行为分析的计算机防护方法,其特征在于,所述网络行为,其结构描述包括网络连接动作类型、使用端口数量以及连接描述。
23.按照权利要求22所述基于程序行为分析的计算机防护方法,其特征在于,所述连接描述包括本地端口、本地地址、远程端口、远程地址以及使用协议。
24.按照权利要求20所述基于程序行为分析的计算机防护方法,其特征在于,所述注册表操作,其结构描述包括该程序所操作的注册表项数、每项操作的键值。
25.按照权利要求1或20所述基于程序行为分析的计算机防护方法,其特征在于所述程序行为知识库,通过对本地计算机使用软件进行检查,添加与用户已经使用的已知程序相对应的已知程序行为的记录,作为本地计算机的程序行为知识库,并按照用户需要对用户将要使用的已知程序进行补充。
26.按照权利要求1所述基于程序行为分析的计算机防护方法,其特征在于,所述攻击识别规则库中,所述关联关系包括前后动作之间的时间关系及调用和被调用关系。
27.按照权利要求26所述基于程序行为分析的计算机防护方法,其特征在于,所述攻击识别规则库,包括病毒规则一a)运行于用户层RING3的程序,转入系统核心层RING0运行。
28.按照权利要求26所述基于程序行为分析的计算机防护方法,其特征在于,所述攻击识别规则库,包括病毒规则二b)该程序执行修改其他程序文件的操作。
29.按照权利要求26所述基于程序行为分析的计算机防护方法,其特征在于,所述攻击识别规则库,包括远程攻击规则一c)该程序通过监听端口接受数据后,立即调用SHELL程序。
30.按照权利要求26所述基于程序行为分析的计算机防护方法,其特征在于,所述攻击识别规则库,包括远程攻击规则二d)该程序通过监听端口接收数据后,发生缓冲区溢出。
31.按照权利要求26所述基于程序行为分析的计算机防护方法,其特征在于,所述攻击识别规则库,包括远程攻击规则三e)该程序通过监听端口接收数据后,立即调用一般文件传输协议TFTP程序。
32.按照权利要求26所述基于程序行为分析的计算机防护方法,其特征在于,所述攻击识别规则库,包括邮件蠕虫规则一f)该程序由邮件系统自动生成,且该程序运行时修改注册表的自启动项,该程序无窗口、无托盘,并且立即开始发送邮件。
33.按照权利要求26所述基于程序行为分析的计算机防护方法,其特征在于,所述攻击识别规则库,包括可疑木马规则一g)该程序由邮件系统自动生成,且该程序运行时修改注册表的自启动项,该程序无窗口、无托盘,并且立即开始创建监听端口。
34.按照权利要求26所述基于程序行为分析的计算机防护方法,其特征在于,所述攻击识别规则库,其结构包括可执行PE文件的全路径、创建者全路径、创建者的特性、创建者有无窗口、与创建者是否同一文件、是否拷贝自身、文件有无描述、是否自启动、谁创建的自启动项、是否被创建者启动、是否自己创建自启动项、是否有窗口或托盘图标、修改注册表项链表和网络动作链表。
35.按照权利要求34所述基于程序行为分析的计算机防护方法,其特征在于,所述修改注册表项链表的子数据结构,包括入口列表、键名、值名和值。
36.按照权利要求34所述基于程序行为分析的计算机防护方法,其特征在于,所述网络动作链表的子数据结构,包括类型、本地端口、本地地址、远程端口、远程地址和使用协议。
全文摘要
本发明涉及一种计算机防护方法,即,基于程序行为分析的计算机防护方法。其特征在于对于已知程序,监控其动作行为,并与程序行为知识库中记录的该已知程序的合法动作行为进行比较,判断该已知程序是否受到非法攻击;对于未知程序,监控其动作行为,并与攻击识别规则库中记录的攻击识别规则进行比较,判断其是否为有害程序。避免了现有的杀毒软件需要将程序与病毒库中的病毒特征代码进行比较。利用本发明的方法不但提高了效率,避免了病毒代码更新的滞后性,可以有效地对未知的病毒、木马进行拦截。
文档编号H04L29/06GK1818823SQ20051000768
公开日2006年8月16日 申请日期2005年2月7日 优先权日2005年2月7日
发明者刘旭 申请人:福建东方微点信息安全有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1