一种病毒或恶意程序的防御方法和系统
技术领域
本发明涉及计算机安全技术领域,特别是涉及一种病毒或恶意程序的防御方法和系统。
背景技术
在计算机领域中,木马是一类恶意程序。木马是有隐藏性的、自发性的,可被用来进行恶意行为的程序,多不会直接对电脑产生危害,而是以控制为主。
随着病毒或恶意程序编写技术的发展,木马程序对用户的威胁越来越大,尤其是一些木马程序采用了极其狡猾的手段来隐蔽自己,使普通用户很难在中毒后发觉。木马程序可能会赤裸裸地偷偷监视别人和盗窃别人的密码或数据,如盗窃管理员密码搞破坏,或者,偷窃游戏帐号、股票帐号甚至网上银行帐户的上网密码用于它用等,以达到偷窥别人隐私和得到经济利益的目的。
针对流行木马,现有通用的防御方法主要基于特征的实时扫描,这里的特征可以包括木马文件部分内容特征,也可以包括木马文件完整内容特征。当安全软件扫描文件时,如果某个文件与其中一种特征匹配,就拒绝访问这个文件或直接将其删除,从而达到防御流行木马的效果。
现有通用的防御方法,可有效防止已知木马在用户电脑上运行,或传播到用户的电脑,但是,其需要安全软件实时运行,才有可能通过扫描判断每个要访问的文件是否属于流行木马,一旦用户因为某种原因(例如担心安全软件误报)退出安全软件,木马的防御效果就不复存在。而安全软件的实时运行,会消耗大量的系统资源,导致系统速度变慢,并且,这种消耗的命中率是很低的。因为大部分人访问的文件都不是流行木马,却需要经过这个特征匹配的过程。
总之,需要本领域技术人员迫切解决的一个技术问题就是:如何能够节省木马防御的资源开销,从而提高系统速度。
发明内容
本发明所要解决的技术问题是提供一种病毒或恶意程序的防御方法和系统,能够节省病毒或恶意程序防御的资源开销,从而提高系统速度。
为了解决上述问题,本发明公开了一种病毒或恶意程序的防御方法,包括:
服务器端统计所有客户端的病毒或恶意程序数据;
对所述病毒或恶意程序数据进行分析,得到病毒或恶意程序的运行环境信息;
客户端根据所述病毒或恶意程序的运行环境信息,预先占用病毒或恶意程序的运行环境;所述病毒或恶意程序的运行环境信息包括:病毒或恶意程序欲占用的路径;所述预先占用病毒或恶意程序的运行环境包括:根据病毒或恶意程序的运行环境信息,在所述病毒或恶意程序欲占用的路径下创建与病毒或恶意程序数据中的目录名或文件名相同的安全目录或文件,并防止对该安全目录或文件进行写入、修改、替换、删除和/或对该安全目录或文件的属性进行写入、修改或删除;所述病毒或恶意程序的运行环境信息还包括病毒或恶意程序所需的关键内核对象;所述客户端根据病毒或恶意程序的运行环境信息,预先占用病毒或恶意程序运行环境的步骤,还包括:创建病毒或恶意程序所需的关键内核对象,并不关闭相应的文件句柄。
优选的,所述病毒或恶意程序运行环境信息包括病毒或恶意程序欲占用的路径;
所述预先占用病毒或恶意程序运行环境的步骤,进一步包括:
防止对病毒或恶意程序欲占用的路径进行数据的写入、修改、替换、删除和/或对病毒或恶意程序欲占用的路径的属性进行写入、修改或删除。
优选的,所述防止对病毒或恶意程序欲占用的路径进行数据的写入、修改、替换、删除和/或对病毒或恶意程序欲占用的路径的属性进行写入、修改或删除的步骤,包括:
对病毒或恶意程序欲占用的路径设置拒绝被写入、修改、替换、或删除的权限;或者,
打开且不关闭所述病毒或恶意程序欲占用的路径的句柄对象。
优选的,所述防止对该安全目录或文件进行写入、修改、替换、删除和/或对该安全目录或文件的属性进行写入、修改或删除的步骤,包括:
在创建与病毒或恶意程序数据中的目录名或文件名相同的安全目录或文件时,对其设置并选择拒绝被写入、修改、替换、或删除的权限;或者,
在创建与病毒或恶意程序数据中的目录名或文件名相同的安全目录或文件时,对其设置只读属性;或者,
打开且不关闭所述安全目录或文件的句柄对象。
优选的,所述创建病毒或恶意程序所需的关键内核对象的步骤包括:
在调用应用程序编程接口函数创建病毒或恶意程序所需的关键内核对象时,为所述病毒或恶意程序所需的关键内核对象分配一个内存块,并进行初始化;
扫描所在进程的句柄表,初始化一条记录并放在该句柄表中;
向调用者返回该条记录在句柄表中的索引作为所述病毒或恶意程序所需的关键内核对象的文件句柄。
优选的,所述服务器端统计所有客户端的病毒或恶意程序数据的步骤,包括:
服务器端定期对来自客户端的病毒或恶意程序数据进行统计,统计出客户端使用数量排名靠前或者增长速度靠前或者危险性排名靠前或者感染性排名靠前的病毒或恶意程序数据,以统计出的病毒或恶意程序数据进行分析操作。
优选的,所述方法还包括:
在接收到取消防御的请求时,客户端根据所述病毒或恶意程序的运行环境信息,释放预先占用相应的病毒或恶意程序运行环境。
优选的,所述对所述病毒或恶意程序数据进行分析的步骤,包括:
对所述病毒或恶意程序的二进制代码进行静态分析,得到病毒或恶意程序的运行环境信息;或者,
运行所述病毒或恶意程序,对其动态行为特征进行观察,得到病毒或恶意程序的运行环境信息。
另一方面,本发明还公开了一种病毒或恶意程序的防御系统,包括:
统计模块,位于服务器端,用于统计所有客户端的病毒或恶意程序数据;分析模块,用于对所述病毒或恶意程序数据进行分析,得到病毒或恶意程序的运行环境信息;
预先占用模块,位于客户端,用于根据所述病毒或恶意程序的运行环境信息,预先占用病毒或恶意程序的运行环境;所述病毒或恶意程序的运行环境信息包括:病毒或恶意程序欲占用的路径;所述预先占用模块,包括:第一创建子模块,用于根据病毒或恶意程序的运行环境信息,在所述病毒或恶意程序欲占用的路径下创建与病毒或恶意程序数据中的目录名或文件名相同的安全目录或文件;第二防止子模块,用于防止对该安全目录或文件进行写入、修改、替换、删除和/或对该安全目录或文件的属性进行写入、修改或删除;所述病毒或恶意程序的运行环境信息还包括病毒或恶意程序所需的关键内核对象;所述预先占用模块,还包括:第二创建子模块,用于创建病毒或恶意程序所需的关键内核对象,并不关闭相应的文件句柄。
优选的,所述病毒或恶意程序运行环境信息包括病毒或恶意程序欲占用的路径;
所述预先占用模块,包括:
第一防止子模块,用于防止对病毒或恶意程序欲占用的路径进行数据的写入、修改、替换、删除和/或对病毒或恶意程序欲占用的路径的属性进行写入、修改或删除。
第二防止子模块,用于防止对该安全目录或文件进行写入、修改、替换、删除和/或对该安全目录或文件的属性进行写入、修改或删除。
优选的,所述第一防止子模块,具体用于对病毒或恶意程序欲占用的路径设置拒绝被写入、修改、替换、或删除的权限;或者,打开且不关闭所述病毒或恶意程序欲占用的路径的句柄对象。
优选的,所述第二防止子模块,包括:
第一设置单元,用于在创建与病毒或恶意程序数据中的目录名或文件名相同的安全目录或文件时,对其设置并选择拒绝被写入、修改、替换、或删除的权限;或者,
第二设置单元,用于在创建与病毒或恶意程序数据中的目录名或文件名相同的安全目录或文件时,对其设置只读属性;或者,
持有单元,用于打开且不关闭所述安全目录或文件的句柄对象。
优选的,所述第二创建子模块包括:
分配单元,用于在调用应用程序编程接口函数创建病毒或恶意程序所需的关键内核对象时,为所述病毒或恶意程序所需的关键内核对象分配一个内存块,并进行初始化;
扫描单元,用于扫描所在进程的句柄表,初始化一条记录并放在该句柄表中;
返回单元,用于向调用者返回该条记录在句柄表中的索引作为所述病毒或恶意程序所需的关键内核对象的文件句柄。
优选的,所述统计模块,具体用于定期对来自客户端的病毒或恶意程序数据进行统计,统计出客户端使用数量排名靠前或者增长速度靠前或者危险性排名靠前或者感染性排名靠前的病毒或恶意程序数据,以统计出的病毒或恶意程序数据进行分析操作。
优选的,所述系统还包括:
释放模块,位于客户端,用于在接收到取消防御的请求时,根据所述病毒或恶意程序的运行环境信息,释放预先占用相应的病毒或恶意程序运行环境。
优选的,所述分析模块,包括:
静态分析子模块,用于对所述病毒或恶意程序的二进制代码进行静态分析,得到病毒或恶意程序的运行环境信息;或者,
动态分析子模块,用于运行所述病毒或恶意程序,对其动态行为特征进行观察,得到病毒或恶意程序的运行环境信息。
与现有技术相比,本发明具有以下优点:
本发明基于分析得到的病毒或恶意程序的运行环境信息,在客户端将病毒或恶意程序运行环境预先占用,能够阻断病毒或恶意程序进入系统,导致病毒或恶意程序无法正常完成攻击行为;具体而言,本发明能够基于病毒或恶意程序欲占用的路径预先占用,并拒绝任何程序向这些路径添加文件,从而阻断病毒或恶意程序进入系统;或者,基于病毒或恶意程序的行为特点,将病毒或恶意程序工作时需要的关键内核对象预先占用,从而导致病毒或恶意程序无法正常完成攻击行为。
相对于现有技术病毒或恶意程序防御的方法,需要安全软件对每个运行的程序进行实时特征扫描,而所述实时特征扫描会消耗大量的系统资源,导致系统速度变慢;而本发明只需一次性预先占用病毒或恶意程序欲占用的路径,或病毒或恶意程序所需的关键内核对象,对系统的资源需求小;病毒或恶意程序欲占用的空的路径几乎不占用磁盘空间,病毒或恶意程序所需的关键内核对象也只需要很少的内存资源;总之,由于本发明无须对每个运行的程序进行实时特征扫描,故能够避免大量磁盘I/O和CPU消耗,从而提高系统速度。
另外,本发明还可以由服务器端定期对来自客户端的病毒或恶意程序数据进行统计,统计出客户端使用数量排名靠前或者增长速度靠前或者危险性排名靠前或者感染性排名靠前的病毒或恶意程序数据,以统计出的病毒或恶意程序数据进行分析操作;由于所述数据统计可以及时发现新的流行病毒或恶意程序,这样,将分析后的防御信息更新后,就可防御此类病毒或恶意程序的攻击,能够跟随病毒或恶意程序特征变化及时地进行相应的防御。
附图说明
图1是本发明一种病毒或恶意程序的防御方法实施例的流程图;
图2是本发明一种病毒或恶意程序的防御系统实施例的结构图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例的核心构思之一在于,分析得到的病毒或恶意程序的运行环境信息,在客户端将病毒或恶意程序运行环境预先占用,能够阻断病毒或恶意程序进入系统,导致病毒或恶意程序无法正常完成攻击行为。
参照图1,示出了本发明一种病毒或恶意程序的防御方法实施例的流程图,具体可以包括:
步骤101、服务器端统计所有客户端的病毒或恶意程序数据;
本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板式设备、多处理器系统、包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本专利发明人经过大量分析和研究,总结得到如下病毒或恶意程序的运行环境信息的特性:
一、病毒或恶意程序欲占用的路径
病毒或恶意程序通常都是按照一定的方式传播。以木马为例,其往往通过弱口令或软件漏洞、软件下载或聊天软件传输文件等渠道,进入用户电脑后,将自己复制到特定的路径下继续工作。这个特定路径是有规律的,通常是文件比较多的路径(如C:\WINDOWS\system32)或层次比较深的路径(例如C:\Program Files\Common Files),这样是为了避免被普通用户发现,这些路径在木马发布前是通过代码预先定义的。为了长期、持续运行,这类木马通常等待对自己有利的信息出现,才开始真正工作。
二、病毒或恶意程序所需的关键内核对象
有的病毒或恶意程序是一次性运行的,不需要电脑重启后运行。这样的病毒或恶意程序不会复制自己到特定的路径,而只要自己执行起来即可。这类病毒或恶意程序通常是破坏性的,例如修改用户的浏览器主页;或等待即将发生的事件(如游戏登陆、网络购物、网络支付)时,才发起攻击。
本专利发明人发现,这些病毒或恶意程序在运行时,除了自身内存数据外,还需要访问系统的注册表、进程对象、窗口对象等内核对象。这些内核对象通常是是病毒或恶意程序运行所必须的,因为病毒或恶意程序不同于普通应用程序,独立完成自己的功能,病毒或恶意程序需要修改系统,就必须访问注册表;病毒或恶意程序需要盗取账号,就必须访问游戏的进程等内核对象。
本发明实施例中,服务器端统计的主要目的是看哪些病毒或恶意程序数据符合上述病毒或恶意程序的运行环境信息的特性,以便采用本发明的技术方案对这些病毒或恶意程序数据进行防御。
在实际应用中,服务器端可自行搜集欲分析的病毒或恶意程序数据,也可从客户端处获取欲分析的病毒或恶意程序数据。例如,在使用云查杀方式查杀木马时,客户端可将木马的关键信息(如内容特征等)发送到服务器端,由服务器段对收到的病毒或恶意程序数据进行对比,得到一个判定结果:此文件是否为木马。对于无法获得关键信息的陌生的文件,客户端则可将此文件完整或部分上传到服务器端,由服务器端调用一系列鉴定方式来判定此文件是否为木马。因此,服务器端可以定期对这些云查杀的病毒或恶意程序数据进行统计,这里的统计周期可由本领域人员根据实际情况设定,例如,一天,两个小时,一个小时,半小时或者更短等,本发明对具体的分析周期不加以限制。
步骤102、对所述病毒或恶意程序数据进行分析,得到病毒或恶意程序的运行环境信息;
所述分析主要是从所述病毒或恶意程序数据中提炼出病毒或恶意程序的运行环境信息的过程。
在本发明的一种优选实施例中,所述分析可以包括:
对所述病毒或恶意程序的二进制代码进行静态分析,得到病毒或恶意程序的运行环境信息。
在具体实现中,可通过解析病毒或恶意程序数据得到相应的病毒或恶意程序欲占用的路径。例如,对于加载在网页中的木马病毒(以下简称网页木马)而言,由于大部分网页是基于javascript(可简写为js)或vbscript(可简写为vbs)脚本语言开发的,其中,针对js网页木马的解析技术已经非常成熟,而针对vbs网页木马,可预先获取木马病毒的vbc代码样本,把它当作一段普通字符串来处理,提取其中的字符串特征,来识别vbs网页木马,进而得到相应的木马路径。
在本发明的另一种优选实施例中,所述分析还可以包括:
运行所述病毒或恶意程序,对其动态行为特征进行观察,得到病毒或恶意程序的运行环境信息。
在具体实现中,可针对一种木马分析其特定的样本,研究其攻击过程,进而得到其所需的内核对象。例如对于攻击浏览器的木马,可找到相应的浏览器进程,并打开相关窗口;因此,浏览器进程和窗口就是攻击浏览器的木马所需要的内核对象。
上述分析可由服务器端来完成,也可由客户端完成,本发明对此不加以限制。并且,在分析病毒或恶意程序数据得到病毒或恶意程序欲占用的路径和病毒或恶意程序所需的关键内核对象等各种病毒或恶意程序运行环境信息后,可分别建立相应的列表。对于定期分析的情况,还应更新每次分析得到的列表。
步骤103、客户端根据所述病毒或恶意程序的运行环境信息,预先占用病毒或恶意程序的运行环境。
在客户端将病毒或恶意程序运行环境预先占用,能够阻断病毒或恶意程序进入系统,导致病毒或恶意程序无法正常完成攻击行为。
在本发明的一种优选实施例中,所述病毒或恶意程序运行环境信息可以包括病毒或恶意程序欲占用的路径;
相应地,所述步骤102可以进一步包括:
防止对病毒或恶意程序欲占用的路径进行数据的写入、修改、替换、删除和/或对病毒或恶意程序欲占用的路径的属性进行写入、修改或删除。
由于能够防止向病毒或恶意程序欲占用的路径写入数据,修改、替换或者删除病毒或恶意程序欲占用的路径,所以能够阻断病毒或恶意程序进入系统,导致病毒或恶意程序无法正常完成攻击行为。
在本发明的另一种优选实施例中,所述病毒或恶意程序的运行环境信息包括病毒或恶意程序欲占用的路径;
所述预先占用病毒或恶意程序运行环境的步骤,可以进一步包括:
根据病毒或恶意程序的运行环境信息,在所述病毒或恶意程序欲占用的路径下创建与病毒或恶意程序数据中的目录名或文件名相同的安全目录或文件,并防止对该安全目录或文件进行写入、修改、替换、删除和/或对该安全目录或文件的属性进行写入、修改或删除。
假设病毒或恶意程序欲占用的路径的列表中一条路径为C:\WINDOWS\system32,虽然不能对该路径对应的整个目录做任何限制,但可以根据该木马常使用的文件名,例如1.exe,提前创建名为1.exe的空目录或空文件。由于该空目录或空文件预先占用了病毒或恶意程序的工作路径,且设置了防止对该安全目录或文件进行写入、修改、替换、删除和/或对该安全目录或文件的属性进行写入、修改或删除的途径,所以该空目录或空文件是安全的。
在具体实现中,关于如何防止对病毒或恶意程序欲占用的路径进行数据的写入、修改、替换、删除和/或对病毒或恶意程序欲占用的路径的属性进行写入、修改或删除,本发明可以提供如下方案:
方案一、对病毒或恶意程序欲占用的路径设置拒绝被写入、修改、替换、或删除的权限;
为了防止未授权用户访问该空目录或该空文件,可以针对该空目录或该空文件设置相应的权限。
在实际中,对于Windows或Linux操作系统,可通过设置API(应用程序编程接口,Application Programming Interface),对文件或目录添加拒绝访问的权限。这里的拒绝访问是拒绝任何用户、任何方式的访问,访问权限又可以进一步包括:读取、执行、删除、修改等,读取是指可以显示该文件的内容,如果该文件是一个s h e l l脚本或程序则可以执行该文件。这样,由于拒绝任何用户访问C:\WINDOWS\system32\1.exe这个空目录,故能够拒绝任何程序向该空目录添加文件,从而阻断病毒或恶意程序进入系统。
方案二、独占文件对象。
具体地,打开且不关闭所述病毒或恶意程序欲占用的路径的句柄对象。
独占文件对象就是创建文件或目录,但不关闭这个文件或目录的句柄对象,这样其他程序就无法再使用这个文件路径。
在文件读写过程中,要从一个文件读取数据,应用程序首先要调用操作系统函数并传送文件名,并选一个到该文件的路径来打开文件。该函数取回一个顺序号,即文件句柄(file handle),该文件句柄对于打开的文件是唯一的识别依据。要从文件中读取一块数据,应用程序需要调用函数ReadFile,并将文件句柄在内存中的地址和要拷贝的字节数传送给操作系统。当完成任务后,在通过调用系统函数来关闭该文件。总之,只要不关闭这个目录的句柄对象,其他程序就无法再使用这个文件,从而阻断病毒或恶意程序进入系统。由于句柄对象在目录读写过程中的作用与其在文件读写过程的作用类似,故在此不作赘述,相互参照即可。
由于设置拒绝访问的权限或独占文件对象的方案各有特点和适用性,故在实际中,本领域技术人员可以根据实际需要,采用设置拒绝访问的权限或独占文件对象的方案。例如,设置拒绝访问的权限的方案无需安全软件一直运行,也即在安全软件退出以后,该方案仍然能够起到有效防御病毒或恶意程序的作用;而独占文件对象的方案要求安全软件一直运行。又如,设置拒绝访问的权限的方案需要NTFS(新技术档案系统,New Technology FileSystem)分区才能支持,对于FAT32(32代文件配置表,File Allocation Table32)分区则只能采用独占文件对象的方案。
在本发明的一种优选实施例中,所述防止对该安全目录或文件进行写入、修改、替换、删除和/或对该安全目录或文件的属性进行写入、修改或删除的步骤,可以进一步包括:
在创建与病毒或恶意程序数据中的目录名或文件名相同的安全目录或文件时,对其设置并选择拒绝被写入、修改、替换、或删除的权限;或者,
在创建与病毒或恶意程序数据中的目录名或文件名相同的安全目录或文件时,对其设置只读属性;或者,
打开且不关闭所述安全目录或文件的句柄对象。
当然除了上述两种方案外,本领域技术人员还可以根据实际需要,采用其它防止方案,如设置文件或路径的属性为只读等,本发明对具体的防止方案不加以限制。
总之,本发明的宗旨是基于分析得到的病毒或恶意程序欲占用的路径,将病毒或恶意程序欲占用的路径预先占用,并拒绝任何程序向这些路径添加文件,从而阻断病毒或恶意程序进入系统。需要说明的是,由于预先占用的病毒或恶意程序欲占用的路径为空目录或空文件,并没有实际内容,所以不会被其他安全软件误判为病毒或恶意程序。
在本发明的另一种优选实施例中,所述病毒或恶意程序运行环境信息可以包括病毒或恶意程序所需的关键内核对象;
相应地,所述步骤103可以进一步包括:
创建病毒或恶意程序所需的关键内核对象,并不关闭相应的文件句柄。
内核对象是操作系统分配的一个内存块,该内存块是一个数据结构,用户管理各种信息。当应用程序要与系统设备进行交互时,将使用到内核对象,出于安全的考虑,进程是不能直接访问内核对象的,操作系统提供了对应的函数对它们进行访问。
例如,Windows系统包括若干类型的内核对象,如存取符号对象、事件对象、文件对象、文件映射对象、I/O完成端口对象、作业对象、信箱对象、互斥对象、管道对象、进程对象、信标对象、线程对象和等待计时器对象等。在实际中经常需要创建、打开和操作它们。
这些内核对象可通过调用函数来创建的。例如,Create File Mapping函数可使系统能够创建一个文件映射对象。在利用Create File Mapping函数创建内核对象时,内核会为该对象分配一个内存块,并进行初始化,然后内核再扫描该进程的句柄表,初始化一条记录并放在句柄表中,并向调用者返回该条记录在句柄表中的索引作为所述病毒或恶意程序所需的关键内核对象的文件句柄。
所谓的句柄表就是指每个进程在被初始化时,将被分配一个句柄表,该句柄表将存储内核对象的句柄,该句柄表包含三个内容:内核对象句柄、内核对象句柄地址和访问屏蔽标志。
由于内核对象的数据结构只能被内核访问,应用程序无法在内存中找到这些数据结构并直接改变它们的内容,为此,Windows提供了一组函数,以通过这些函数访问内核对象。当调用一个用于创建内核对象的函数时,该函数就返回一个用于标识该对象的文件句柄。
因此,如果能够一直持有病毒或恶意程序所需的关键内核对象,也即,一直打开相应的文件句柄,那么,病毒或恶意程序在需要该关键内核对象时,就会创建失败,从而能够阻止病毒或恶意程序进入系统。在实施时,为避免普通程序的正常运行,应尽量选择病毒或恶意程序特殊使用的关键内核对象,而不是普通程序都会访问的内核对象。
总之,本发明基于病毒或恶意程序的行为特点,将流行病毒或恶意程序工作时需要的关键内核对象预先占用,从而导致病毒或恶意程序无法正常完成攻击行为。需要说明的是,由于关键内核对象通常不是病毒或恶意程序判定的标准,同样也不会被其他安全软件误判为病毒或恶意程序。
现有技术病毒或恶意程序防御的方法,需要安全软件对每个运行的程序进行实时特征扫描,而所述实时特征扫描会消耗大量的系统资源,导致系统速度变慢。而本发明只需一次性预先占用病毒或恶意程序欲占用的路径或病毒或恶意程序所需的关键内核对象,对系统的资源需求小:空的病毒或恶意程序欲占用的路径几乎不占用磁盘空间,病毒或恶意程序所需的关键内核对象只需要很少的内存资源;总之,由于本发明无须对每个运行的程序进行实时特征扫描,故能够避免大量磁盘I/O(输入输出,Input/Output)和CPU消耗,从而提高系统速度。
可以理解,在接收到取消防御的请求时,客户端还可以根据所述病毒或恶意程序运行环境信息,释放预先占用相应的病毒或恶意程序运行环境。
所述释放预先占用相应的病毒或恶意程序运行环境的步骤具体可以包括:
1、对病毒或恶意程序欲占用的路径设置拒绝被写入、修改、替换、或删除的权限,可以通过驱动方式删除相应的权限;
由于其他程序无法删除被添加了权限的目录或文件,安全软件自己的进程也无法删除,故需要借助驱动方式,绕过系统的权限检查删除该目录或文件。
2、对于独占文件对象的方案,可以直接关闭该空目录或该空文件的句柄对象。
3、对于内核对象的方案,直接关闭所创建关键内核对象的文件句柄。
例如,无论进程怎样创建内核对象,在不使用该对象的时候都应当通过Bool CloseHandle(HANDLE hobj)来向操作系统声明结束对该对象的访问。
病毒或恶意程序特征变化快,安全软件跟随特征变化所作的特征库更新必须及时、频繁。例如,有的病毒或恶意程序特征变化能力很强,就是为了躲避安全软件的特征扫描。
在本发明的一种优选实施例中,为了更及时地防御病毒或恶意程序,在对病毒或恶意程序数据进行分析之前,所述方法还可以包括:
服务器端定期对来自客户端的病毒或恶意程序数据进行统计,统计出客户端使用数量排名靠前或者增长速度靠前或者危险性排名靠前或者感染性排名靠前的病毒或恶意程序数据,以统计出的病毒或恶意程序数据进行分析操作。
由于所述数据统计可以及时发现新的流行病毒或恶意程序,这样,将分析后的防御信息更新到客户端以后,就可防御此类病毒或恶意程序的攻击,能够跟随病毒或恶意程序特征变化及时地进行相应的防御,避免类似现有技术花费时间去做基于多个样本特征的分析定位、提取特征的操作。
与前述方法实施例相应,本发明还公开了一种病毒或恶意程序的防御系统,参照图2,具体可以包括:
统计模块201,位于服务器端,用于统计所有客户端的病毒或恶意程序数据;
分析模块202,用于对所述病毒或恶意程序数据进行分析,得到病毒或恶意程序的运行环境信息;
预先占用模块203,位于客户端,用于根据所述病毒或恶意程序的运行环境信息,预先占用病毒或恶意程序的运行环境。
在本发明的一种优选实施例中,所述病毒或恶意程序运行环境信息可以进一步包括病毒或恶意程序欲占用的路径;
相应地,所述预先占用模块203,可以包括:
第一防止子模块,用于防止对病毒或恶意程序欲占用的路径进行数据的写入、修改、替换、删除和/或对病毒或恶意程序欲占用的路径的属性进行写入、修改或删除。
在本发明实施例中,优选的是,所述第一防止子模块,可具体用于对病毒或恶意程序欲占用的路径设置拒绝被写入、修改、替换、或删除的权限;或者,打开且不关闭所述病毒或恶意程序欲占用的路径的句柄对象。
在本发明的另一种优选实施例中,所述病毒或恶意程序的运行环境信息可以包括病毒或恶意程序欲占用的路径;
相应地,所述预先占用模块203,可以进一步包括:
第一创建子模块,用于根据病毒或恶意程序的运行环境信息,在所述病毒或恶意程序欲占用的路径下创建与病毒或恶意程序数据中的目录名或文件名相同的安全目录或文件;
第二防止子模块,用于防止对该安全目录或文件进行写入、修改、替换、删除和/或对该安全目录或文件的属性进行写入、修改或删除。
在本发明实施例中,优选的是,所述第二防止子模块,可以进一步包括:
第一设置单元,用于在创建与病毒或恶意程序数据中的目录名或文件名相同的安全目录或文件时,对其设置并选择拒绝被写入、修改、替换、或删除的权限;或者,
第二设置单元,用于在创建与病毒或恶意程序数据中的目录名或文件名相同的安全目录或文件时,对其设置只读属性;或者,
持有单元,用于打开且不关闭所述安全目录或文件的句柄对象。
在本发明的再一种优选实施例中,所述病毒或恶意程序的运行环境信息可以包括病毒或恶意程序所需的关键内核对象;
此时,所述预先占用模块203,可以进一步包括:
第二创建子模块,用于创建病毒或恶意程序所需的关键内核对象,并不关闭相应的文件句柄。
在本发明实施例中,优选的是,所述第二创建子模块可以进一步包括:
分配单元,用于在调用应用程序编程接口函数创建病毒或恶意程序所需的关键内核对象时,为所述病毒或恶意程序所需的关键内核对象分配一个内存块,并进行初始化;
扫描单元,用于扫描所在进程的句柄表,初始化一条记录并放在该句柄表中;
返回单元,用于向调用者返回该条记录在句柄表中的索引作为所述病毒或恶意程序所需的关键内核对象的文件句柄。
在本发明的一种优选实施例中,所述统计模块201,可具体用于定期对来自客户端的病毒或恶意程序数据进行统计,统计出客户端使用数量排名靠前或者增长速度靠前或者危险性排名靠前或者感染性排名靠前的病毒或恶意程序数据,以统计出的病毒或恶意程序数据进行分析操作。
在本发明的另一种优选实施例中,所述系统还可以包括:
释放模块,位于客户端,用于在接收到取消防御的请求时,根据所述病毒或恶意程序的运行环境信息,释放预先占用相应的病毒或恶意程序运行环境。
在本发明的再一种优选实施例中,所述分析模块202,可以进一步包括:
静态分析子模块,用于对所述病毒或恶意程序的二进制代码进行静态分析,得到病毒或恶意程序的运行环境信息;或者,
动态分析子模块,用于运行所述病毒或恶意程序,对其动态行为特征进行观察,得到病毒或恶意程序的运行环境信息。
对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
以上对本发明所提供的一种病毒或恶意程序的防御方法和系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。