发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种文件宏病毒免疫方法和装置。
依据本发明的一个方面,提供了一种文件宏病毒免疫方法,包括:
截获Office进程的文件行为请求;
依据所述文件行为请求,分析得到相应文件行为的信息;
利用所述文件行为的信息,判断所述文件行为是否为宏病毒行为;
在所述文件行为是Office进程修改模板文件的宏病毒行为时,允许所截获的文件行为请求;
在所述文件行为是除Office进程修改模板文件的行为之外的宏病毒行为时,阻止所截获的文件行为请求;
其中,所述依据所述文件行为请求,分析得到相应文件行为的信息的步骤,包括:
分析所述文件行为请求中携带的应用程序接口API的参数,得到相应文件行为的信息;
所述文件行为的信息至少包括如下信息中的一项或多项:文件路径,行为名称,共享方式和文件属性;所述文件属性至少包括如下属性中的一项或多项:普通,只读,隐藏,加密和压缩。
可选地,所述利用所述文件行为的信息,判断所述文件行为是否为宏病毒行为的步骤,包括:
将所述文件行为的信息与已知宏病毒行为的信息进行匹配,若匹配成功,则确定所述文件行为是宏病毒行为。
可选地,所述利用所述文件行为的信息,判断所述文件行为是否为宏病毒行为的步骤,包括:
依据所述文件行为的信息,判断所述文件行为对应文件为本次计算机运行期间未被Office进程修改过的已有文件还是被Office进程修改过的新文件;
将所述文件行为的信息和所述文件行为对应文件的判断结果与已知宏病毒行为的信息进行匹配,若匹配成功,则确定所述文件行为是宏病毒行为。
可选地,所述方法还包括:
若所述文件行为是Office进程修改模板文件的宏病毒行为,则在所述Office进程结束时,判断修改后的模板文件是否带有宏,若是,则使用预先备份的不带有宏的模板文件替换所述修改后的模板文件;
所述判断修改后的模板文件是否带有宏的步骤,包括:
以二进制的格式打开所述修改后的模板文件;
判断所述修改后的模板文件的二进制内容中是否包含有宏标识,若是,则判断修改后的模板文件带有宏,否则判断修改后的模板文件不带有宏。
可选地,所述方法还包括:
当匹配失败时,判断所述文件行为对应文件或目录是否在白名单数据集中;
当所述文件行为对应文件或目录在白名单数据集中时,确定所述文件行为不是宏病毒行为;
当所述文件行为对应文件或目录不在白名单数据集中时,判断所述文件行为对应文件或目录是否在黑名单数据集中;
当所述文件行为对应文件或目录在黑名单数据集中时,确定所述文件行为是宏病毒行为;
当所述文件行为对应文件或目录不在黑名单数据集中时,判断所述文件行为对应文件或目录为本次计算机运行期间未被Office进程修改过的已有文件或目录还是被Office进程修改过的新文件或目录;
当所述文件行为对应文件或目录为本次计算机运行期间未被Office进程修改过的已有文件或目录时,确定所述文件行为不是宏病毒行为;
当所述文件行为对应文件或目录为本次计算机运行期间被Office进程修改过的新文件或目录时,确定所述文件行为是宏病毒行为。
可选地,所述依据所述文件行为的信息,判断所述文件行为对应文件为本次计算机运行期间未被Office进程修改过的已有文件还是被Office进程修改过的新文件的步骤,包括:
维护第一文件集合和第二文件集合;所述第一文件集合包括本次计算机运行期间未被Office进程修改过的已有文件,所述第二文件集合包括Office进程操作过的已有文件;
依据所述文件行为的信息,判断所述文件行为对应文件是否在所述第一文件集合或第二文件集合中;
当所述文件行为对应文件在所述第一文件集合中时,判断所述文件行为对应文件为本次计算机运行期间未被Office进程修改过的已有文件;
当所述文件行为对应文件在所述第二文件集合中时,判断所述文件行为对应文件为本次计算机运行期间被Office进程修改过的新文件。
可选地,所述已知宏病毒行为至少包括如下行为中的一项或多项:Office进程修改模板文件的行为,Office进程向模板目录写文件的行为,Office进程执行Office进程释放的可执行文件,Office进程执行Office进程释放的脚本文件,Office进程修改注册表的行为,Office进程复制文件的行为。
根据本发明的另一方面,提供了一种文件宏病毒免疫装置,包括:
请求截获模块,适于截获Office进程的文件行为请求;
请求分析模块,适于依据所述文件行为请求,分析得到相应文件行为的信息;
宏病毒判断模块,适于利用所述文件行为的信息,判断所述文件行为是否为宏病毒行为;
第一处理模块,适于在所述文件行为是Office进程修改模板文件的宏病毒行为时,允许所截获的文件行为请求;及
第二处理模块,适于在所述文件行为是除Office进程修改模板文件的行为之外的宏病毒行为时,阻止所截获的文件行为请求;
其中,所述请求分析模块,具体适于分析所述文件行为请求中携带的应用程序接口API的参数,得到相应文件行为的信息;所述文件行为的信息至少包括如下信息中的一项或多项:文件路径,行为名称,共享方式和文件属性;所述文件属性至少包括如下属性中的一项或多项:普通,只读,隐藏,加密和压缩。
可选地,所述宏病毒判断模块包括:
第一匹配子模块,适于将所述文件行为的信息与已知宏病毒行为的信息进行匹配,若匹配成功,则确定所述文件行为是宏病毒行为。
可选地,所述宏病毒判断模块包括:
文件信息判断子模块,适于依据所述文件行为的信息,判断所述文件行为对应文件为本次计算机运行期间未被Office进程修改过的已有文件还是被Office进程修改过的新文件;及
第二匹配子模块,适于将所述文件行为的信息和所述文件行为对应文件的判断结果与已知宏病毒行为的信息进行匹配,若匹配成功,则确定所述文件行为是宏病毒行为。
可选地,所述第一处理模块还包括:
宏处理子模块,适于当所述文件行为是Office进程修改模板文件的宏病毒行为且所述Office进程结束时,判断修改后的模板文件是否带有宏,若是,则使用预先备份的不带有宏的模板文件替换所述修改后的模板文件;
所述装置还包括:适于判断修改后的模板文件是否带有宏的宏判断模块,所述宏判断模块包括:
打开子模块,适于以二进制的格式打开所述修改后的模板文件;及
宏标识判断子模块,适于判断所述修改后的模板文件的二进制内容中是否包含有宏标识,若是,则判断修改后的模板文件带有宏,否则判断修改后的模板文件不带有宏。
可选地,所述装置还包括:
白名单数据集判断模块,适于当匹配失败时,判断所述文件行为对应文件或目录是否在白名单数据集中;
第一白名单数据集处理模块,适于当所述文件行为对应文件或目录在白名单数据集中时,确定所述文件行为不是宏病毒行为;
第二白名单数据集处理模块,适于当所述文件行为对应文件或目录不在白名单数据集中时,判断所述文件行为对应文件或目录是否在黑名单数据集中;
第一黑名单数据集处理模块,适于当所述文件行为对应文件或目录在黑名单数据集中时,确定所述文件行为是宏病毒行为;
第二黑名单数据集处理模块,适于当所述文件行为对应文件或目录不在黑名单数据集中时,判断所述文件行为对应文件或目录为本次计算机运行期间未被Office进程修改过的已有文件或目录还是被Office进程修改过的新文件或目录;及
文件处理模块,适于当所述文件行为对应文件或目录为本次计算机运行期间未被Office进程修改过的已有文件或目录时,确定所述文件行为不是宏病毒行为,以及,当所述文件行为对应文件或目录为本次计算机运行期间被Office进程修改过的新文件或目录时,确定所述文件行为是宏病毒行为。
可选地,所述文件信息判断子模块,包括:
文件集合维护单元,适于维护第一文件集合和第二文件集合;所述第一文件集合包括本次计算机运行期间未被Office进程修改过的已有文件,所述第二文件集合包括本次计算机运行期间被Office进程修改过的新文件;
文件集合判断单元,适于依据所述文件行为的文件路径,判断所述文件行为对应文件是否在所述第一文件集合或第二文件集合中,当所述文件行为对应文件或目录在所述第一文件集合中时,判断所述文件行为对应文件为本次计算机运行期间未被Office进程修改过的已有文件,当所述文件行为对应文件或目录在所述第二文件集合中时,判断所述文件行为对应文件为本次计算机运行期间被Office进程修改过的新文件。
可选地,所述已知宏病毒行为至少包括如下行为中的一项或多项:Office进程修改模板文件的行为,Office进程向模板目录写文件的行为,Office进程执行Office进程释放的可执行文件,Office进程执行Office进程释放的脚本文件,Office进程修改注册表的行为,Office进程复制文件的行为。
本发明的一种文件宏病毒免疫方法和装置具有如下有益效果:
通过本发明,可以通过对Office进程的行为请求进行截获及分析,如果发现宏病毒行为的情况,就可以采取相应的阻止措施,以防止用户的计算机受到宏病毒的侵害。由于Office进程的行为请求是Office宏病毒行为的必经途径,故相对于现有技术仅能免疫特定的、已有的宏病毒,本发明能够针对所有的Office宏病毒行为进行免疫处理,故本发明能够提供宏病毒的免疫范围,提高宏病毒的免疫效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
参照图1,示出了根据本发明一个实施例的一种文件宏病毒免疫方法的流程图,具体可以包括:
步骤101、截获Office进程的文件行为请求;
Windows下暴露的对开发人员的接口叫做API(应用程序编程接口,Application Programming Interface),各种应用层应用程序都是通过调用各种API来实现的,Office软件也不例外;也即,无论执行Office宏病毒行为还是执行Office正常读取文件等安全行为,Office进程均需要调用相应的API。,换个说法,Office进程的文件行为请求也就是调用API的请求。
通常API被封装到DLL(动态链接库)中,在某个应用程序要调用一个API的时候,如果这个函数所在的DLL没有被加载到本进程中则加载该DLL,然后保存当前环境(各个寄存器和函数调用完后的返回地址等)。接着程序会跳转到这个API的入口地址去执行此处的指令。由此看来,欲在调用真正的API之前先调用自己的函数,那么可以修改这个API的入口处的代码,使其先跳转到自己的函数地址,然后在自己的函数中确定是否调用原有的API函数。
Hook(钩子)是Windows消息处理中的一个环节,用于监控消息在系统中的传递。钩子机制允许应用程序截获处理Window消息或特定事件。钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。
因此,本发明实施例可以通过Hook API的原理截获Office进程的文件行为请求,具体而言,预先修改Office进程的入口处的代码,这样,Office进程的文件行为请求被Office应用程序执行时,相应的API就会先跳转到本发明实施例的函数地址,并且,本发明实施例可以获取得到Office进程的文件行为请求。
步骤102、依据所述文件行为请求,分析得到相应文件行为的信息;
在实际应用中,所述文件行为请求中通常携带有应用程序接口API的参数,则所述依据所述文件行为请求,分析得到相应文件行为的信息的步骤,具体可以包括:
子步骤S101、分析所述文件行为请求中携带的应用程序接口API的参数,得到相应文件行为的信息;
其中,所述文件行为的信息至少可以包括如下信息中的一项或多项:文件路径,行为名称,共享方式和文件属性;所述文件属性至少可以包括如下属性中的一项或多项:普通,只读,隐藏,加密和压缩。
以CreateFile函数为例,该API是用来创建和打开文件的:
HANDLE CreateFile(
LPCTSTR lpFileName,//指向文件名的指针
D WORD dwDesiredAccess,//访问模式(写/读)
D WORD dwShareMode,//共享方式
LPSECURITY_ATTRIBUTES lpSecurityAttributes,//指向安全属性的指针
D WORD dwCreationDisposition,//如何创建
DWORD dwFlagsAndAttributes,//文件属性
HANDLE hTemplateFile//用于复制文件句柄
)
如果应用程序要调用该API,其参数就需要指明文件路径,行为名称(写或者读文件的行为),文件共享方式等,也即,分析API的参数可以得到相应文件行为的众多信息。
当然上述操作文件的API只是作为示例,实际上,除了操作文件的API外,本发明实施例能够截获的API还可以包括其它API,如操作注册表的APIRegSetValue等。
LONG RegSetValue(//设置指定注册表项中缺省(没有名字)的值
HKEY hKey,//指向当前打开的句柄或者预定义的句柄值
LPCTSTR lpSubKey,//设置Key子项的缺省值,如果设置为NULL,则设置hKey表项。。
DWORD dwType,//被存储信息的类型
LPCTSTR lpData,//要存储的值的指针
DWORD cbData //数据的大小,不包含终止字符
)
步骤103、利用所述文件行为的信息,判断所述文件行为是否为宏病毒行为;
本发明实施例可以提供如下判断所述文件行为是否为宏病毒行为的方案:
判断方案1、
所述利用所述文件行为的信息,判断所述文件行为是否为宏病毒行为的步骤,具体可以包括:
子步骤S201、将所述文件行为的信息与已知宏病毒行为的信息进行匹配,若匹配成功,则确定所述文件行为是宏病毒行为。
在实际应用中,可收集得到已知宏病毒行为,并进一步分析得到所收集已知宏病毒行为的信息。
在本发明的一种应用示例中,可以对大量Microsoft Office的宏病毒样本的研究,收集得到如下已知宏病毒行为:
1、修改注册表的行为,目的:修改注册表中安全等级设置以降低安全等级设置,或修改注册表中开机启动项以将释放的可执行文件写入开机启动项等;
2、传播行为,其利用感染模板进行传播,例如向模板目录写文件等等;其中,不同的Microsoft office会有不同的感染模板,例如Windows7系统,默认情况下
MicrosoftWord的感染模板文件是C:\Users\【用户名】\AppData\Roaming\Microsof\Templates\normal.dot
Excel的感染模板目录:C:\Users\【用户名】\AppData\Roaming\Microsoft\Excel\xlstart和Excel安装目录\office11\xlstart
3、感染行为:恶意程序打开安全文件,自己往安全文件里面复制,给用户邮件联系人发送包括病毒文件的邮件等;
4、发作时行为,包括:
4.1、在某个时间段弹窗;
4.2、重复复制工作表,影响软件正常使用;
4.3、释放可执行文件,具体可以包括:创建文件、写文件、执行文件等等。
需要说明的是,上述已知宏病毒行为是针对Microsoft Office研究得到的,其只是作为本发明实施例的一种示例,并不作为本发明实施例的实施限制。
对上述已知宏病毒行为进行分析,可以得到表1所示已知宏病毒行为的信息,其具体可以包括已知宏病毒行为的名称和已知宏病毒行为的对象两种信息。
表1
对于表1中序号为1或2或5(Office安全等级设置项目)对应的已知宏病毒行为,均可使用判断方案1判断得到。
在实际应用中,可以预先读取注册表,获取Office的模板文件和模板目录,例如在win7系统,默认情况下Word的模板文件为:C:\Users\【用户名】\AppData\Roaming\Microsoft\Templates\normal.dot,Excel的模板目录为:C:\Users\【用户名】\AppData\Roaming\Microsoft\Excel\xlstart,或者Excel的安装目录\office11\xlstart。
通常Excel的模板目录(xlstart目录)下是不允许存放文件的,故如果所述文件行为的信息表明相应文件行为是针对xlstart目录下文件的,故可以确定相应文件行为是宏病毒行为。
判断方案2、
所述利用所述文件行为的信息,判断所述文件行为是否为宏病毒行为的步骤,具体可以包括:
子步骤S301、依据所述文件行为的信息,判断所述文件行为对应文件为本次计算机运行期间未被Office进程修改过的已有文件还是被Office进程修改过的新文件;
子步骤S302、将所述文件行为的信息和所述文件行为对应文件的判断结果与已知宏病毒行为的信息进行匹配,若匹配成功,则确定所述文件行为是宏病毒行为。
对于表1中序号为3或4或5(Office进程释放或修改过的PE文件)或6对应的已知宏病毒行为,均可使用判断方案2判断得到。
本发明实施例中,未被Office进程修改过的已有文件还是被Office进程修改过的新文件的主要区别在于,前者的内容未被Office进程修改过,而后者的内容被Office进程修改过。例如,用户在本次开机后打开了一个已有Word文档,但未编辑过该Word文档,也即该Word文档的内容在本次计算机运行期间未被修改过,则该Word文档属于本次计算机运行期间未被Office进程修改过的已有文件;而如果用户在本次开机后打开且编辑了某个Word文档,那么无论该Word文档是新建文档还是已有文档,该Word文档的内容在本次计算机运行期间被修改过,这导致该Word文档与发生了变化,则该Word文档属于本次计算机运行期间被Office进程修改过的新文件。
以序号为6的已知宏病毒行为的判断为例,假设当前文件行为的行为名称为Office进程的复制行为,则可以判断该复制行为的源文件为本次计算机运行期间未被Office进程修改过的已有文件还是被Office进程修改过的新文件;若源文件为本次计算机运行期间被Office进程修改过的新文件,那么对应的目标文件也是本次计算机运行期间被Office进程修改过的新文件,则说明该复制行为是释放病毒文件的行为;相反,若源文件为本次计算机运行期间未被Office进程修改过的已有文件,那么目标文件也是本次计算机运行期间未被Office进程修改过的已有文件,本发明实施例在源文件在宏病毒发作前就存在于计算机中且内容未发送变化的情况下,认为这个源文件是安全的,进一步认为复制后的目标文件也是安全的,故可以确定此种情况下的复制行为不是释放病毒文件的行为。
在本发明的一种优选实施例中,所述依据所述文件行为的信息,判断所述文件行为对应文件为未被Office进程修改过的已有文件还是被Office进程修改过的新文件的子步骤S301,具体可以包括:
子步骤S311、维护第一文件集合和第二文件集合;所述第一文件集合具体可以包括本次计算机运行期间未被Office进程修改过的已有文件,所述第二文件集合具体可以包括本次计算机运行期间被Office进程修改过的新文件;
在具体实现中,可以采用各种方法维护第一文件集合和第二文件集合。例如,可以在用户开机后,监测(用户操作或病毒操作)Office进程的行为,如果Office进程在本次计算机运行期间读取过某已有文件但未通过操作修改该已有文件的内容,则可将该文已有件放至第一文件集合;相反,如果Office进程在本次计算机运行期间通过操作修改过某文件,则无论该文件是新建文件还是已有文件,均应将该文件放至第二文件集合。需要说明的是,可以在本次开机期间依据Office进程的行为对第一文件集合和第二文件集合进行不断地维护,当然也可以在执行本发明实施例的过程中进行第一文件集合和第二文件集合的维护。
在本发明的一种优选实施例中,第一文件集合和第二文件集合在本次计算机运行期间有效,也即在本次开机时生效,在本次关机时失效。
需要说明的是,第一文件集合和第二文件集合也可用于目录的维护,例如,如果本次开机期间某目录(包括目录本身和目录下的内容)未发生变化,则可将该目录放至第一文件集合,如果本次开机期间某目录(包括目录本身和目录下的内容)发生了变化,则可将该目录放至第二文件集合,等的。
子步骤S312、依据所述文件行为的信息,判断所述文件行为对应文件是否在所述第一文件集合或第二文件集合中;
子步骤S313、当所述文件行为对应文件或目录在所述第一文件集合中时,判断所述文件行为对应文件为本次计算机运行期间未被Office进程修改过的已有文件;
子步骤S314、当所述文件行为对应文件或目录在所述第二文件集合中时,判断所述文件行为对应文件为本次计算机运行期间被Office进程修改过的新文件。
以序号为3的已知宏病毒行为的判断为例,假设当前文件行为的行为名称、当前文件行为针对文件的扩展名和路径均可以通过步骤102分析得到,假设当前文件行为的行为名称为Office进程的执行文件行为,当前文件行为针对文件的扩展名为.exe,当前文件行为针对文件的路径在第二文件集合中查找得到,那么可以确认当前文件行为属于Office进程释放的PE文件,因为Office进程释放的文件肯定是新文件。
需要说明的是,本发明实施例对于序号为3或4或5对应的已知宏病毒行为的判断,能够避免第三方插件被误拦,主要理由如下:宏病毒行为释放的文件肯定为新文件,其能在第二文件集合中查找得到;而对于第三方插件而言,当其将Office程序打开时,其通常将所需的PE文件从插件的安装目录复制到Office目录下的某个特定位置,而插件的安装目录下的文件为事先已知的、内容未被修改过的文件,故本发明实施例对于已知宏病毒行为的判断,能够将第三方插件的行为排除在外,避免第三方插件被误拦。
步骤104、在所述文件行为是Office进程修改模板文件的宏病毒行为时,允许所截获的文件行为请求;
例如,Word的normal.dot或normal.dotm等模板文件,因为这些模板文件在每次关闭Word文档时都会产生,宏病毒常利用模板文件释放宏脚本,但是直接阻止释放宏脚本的行为,容易导致Word运行出错,故本发明实施例在判断出类似的宏病毒行为时,采取允许所截获的文件行为请求的策略。
在本发明的一种优选实施例中,所述方法还可以包括:
步骤S401、若所述文件行为是Office进程修改模板文件的宏病毒行为,则在所述Office进程结束时,判断修改后的模板文件是否带有宏,若是,则使用预先备份的不带有宏的模板文件替换所述修改后的模板文件;
其中,所述判断修改后的模板文件是否带有宏的步骤,具体可以包括:
子步骤S411、以二进制的格式打开所述修改后的模板文件;
子步骤S412、判断所述修改后的模板文件的二进制内容中是否包含有宏标识,若是,则判断修改后的模板文件带有宏,否则判断修改后的模板文件不带有宏。
本发明实施例中,不带有宏的模板文件可为预先备份得到。例如,在实施例本发明实施例之前,可以判断本地计算机的模板文件是否带有宏,若否,则进行备份,若是,则直接删掉,不进行备份。
至于如何判断所述修改后的模板文件的二进制内容中是否包含有宏标识,在实际中,可以判断Normal.dot有无_vba_project字符,若有则说明Normal.dot带有宏标识,若没有则说明Normal.dot不带有宏标识;对于Normal.dotm,由于此文件原本是zip压缩包,故可以判断其解压后的文件是否有vbaProject.bin压缩项,若有则说明Normal.dotm带有宏,若没有则说明Normal.dotm不带有宏标识。
步骤105、在所述文件行为是除Office进程修改模板文件的行为之外的宏病毒行为时,阻止所截获的文件行为请求。
如果分析得知所述文件行为是除Office进程修改模板文件的行为之外的宏病毒行为,本发明实施例可以采取相应的阻止措施,以防止用户的计算机受到宏病毒的侵害。
需要说明的是,如果分析得知所述文件行为不是宏病毒行为,则可以允许所截获的文件行为请求。
前面提到,在Office进程的文件行为请求被Office应用程序执行时,相应的API先跳转到本发明实施例的函数地址,那么,对于阻止所截获的文件行为请求的情形,可以只执行本发明实施例的函数即可;对于允许所截获的文件行为请求的情形,可以在本发明实施例的函数执行完毕后,跳转到该文件行为请求对应API的原始入口地址去执行相应的指令,例如执行安全的Office进程的打开文件等行为。需要说明的是,本发明实施例对具体的阻止或允许所截获的文件行为请求的具体方式不加以限制。
参照图2,示出了根据本发明一个实施例的一种文件宏病毒免疫方法的流程图,具体可以包括:
步骤201、截获Office进程的文件行为请求;
步骤202、依据所述文件行为请求,分析得到相应文件行为的信息;
步骤203、依据所述文件行为的信息,判断所述文件行为对应文件或目录为本次计算机运行期间未被Office进程修改过的已有文件或目录还是被Office进程修改过的新文件或目录;
步骤204、将所述文件行为的信息和所述文件行为对应文件的判断结果与已知宏病毒行为的信息进行匹配,若匹配成功,则确定所述文件行为是宏病毒行为;
步骤205、当匹配失败时,判断所述文件行为对应文件或目录是否在白名单数据集中;
步骤206、当所述文件行为对应文件或目录在白名单数据集中时,确定所述文件行为不是宏病毒行为;
步骤207、当所述文件行为对应文件或目录不在白名单数据集中时,判断所述文件行为对应文件或目录是否在黑名单数据集中;
步骤208、当所述文件行为对应文件或目录在黑名单数据集中时,确定所述文件行为是宏病毒行为;
步骤209、当所述文件行为对应文件或目录不在黑名单数据集中时,判断所述文件行为对应文件或目录为本次计算机运行期间未被Office进程修改过的已有文件或目录还是被Office进程修改过的新文件或目录;
步骤210、当所述文件行为对应文件或目录为本次计算机运行期间未被Office进程修改过的已有文件或目录时,确定所述文件行为不是宏病毒行为;
步骤211、当所述文件行为对应文件或目录为本次计算机运行期间被Office进程修改过的新文件或目录时,确定所述文件行为是宏病毒行为;
步骤212、在所述文件行为是Office进程修改模板文件的宏病毒行为时,允许所截获的文件行为请求;
步骤213、在所述文件行为是除Office进程修改模板文件的行为之外的宏病毒行为时,阻止所截获的文件行为请求。
本发明实施例中,白名单数据集可用于表示用户或服务器指定的用户自身确定的无威胁的文件或者目录(目录中的所有文件均认为用户信任),在扫描或者监控的过程中不会报出,无视扫描结果;白名单数据集可由客户端用户设置得到,或者,可由服务器收集众多客户端的白名单数据集,并同步到客户端得到;通常,所述白名单数据集记录有文件的等级,可以根据文件名或者文件的hash值等查询到文件是否是安全的;另外,需要说明的是,所述白名单数据集既可用于验证具体文件及目录的安全性,又用于验证文件扩展名的安全性,例如,用户可由将文本文件的扩展名“.txt”、图片文件的扩展名“.jpg/.bmp”放至白名单中,也可以将一个具体的文本文件及目录放至白名单数据集中。
同理,黑名单数据集可用于表示用户或服务器指定的确定的有威胁的文件或者目录,在扫描或者监控的过程中会报出,无视扫描结果;白名单数据集可由客户端用户设置得到,或者,可由服务器收集众多客户端的白名单数据集,并同步到客户端得到。
参照图3,示出了根据本发明一个实施例的一种文件宏病毒免疫装置的结构图,具体可以包括:
请求截获模块301,适于截获Office进程的文件行为请求;
请求分析模块302,适于依据所述文件行为请求,分析得到相应文件行为的信息;
宏病毒判断模块303,适于利用所述文件行为的信息,判断所述文件行为是否为宏病毒行为;
第一处理模块304,适于在所述文件行为是Office进程修改模板文件的宏病毒行为时,允许所截获的文件行为请求;及
第二处理模块305,适于在所述文件行为是除Office进程修改模板文件的行为之外的宏病毒行为时,阻止所截获的文件行为请求。
在本发明的一种优选实施例中,所述请求分析模块302,可具体适于分析所述文件行为请求中携带的应用程序接口API的参数,得到相应文件行为的信息;所述文件行为的信息至少可以包括如下信息中的一项或多项:文件路径,行为名称,共享方式和文件属性;所述文件属性至少可以包括如下属性中的一项或多项:普通,只读,隐藏,加密和压缩。
在本发明的另一种优选实施例中,所述宏病毒判断模块303具体可以包括:
第一匹配子模块,适于将所述文件行为的信息与已知宏病毒行为的信息进行匹配,若匹配成功,则确定所述文件行为是宏病毒行为。
在本发明的再一种优选实施例中,所述宏病毒判断模块303具体可以包括:
文件信息判断子模块,适于依据所述文件行为的信息,判断所述文件行为对应文件为本次计算机运行期间未被Office进程修改过的已有文件还是被Office进程修改过的新文件;及
第二匹配子模块,适于将所述文件行为的信息和所述文件行为对应文件的判断结果与已知宏病毒行为的信息进行匹配,若匹配成功,则确定所述文件行为是宏病毒行为。
在本发明的一种优选实施例中,所述第一处理模块304还可以包括:
宏处理子模块,适于当所述文件行为是Office进程修改模板文件的宏病毒行为且所述Office进程结束时,判断修改后的模板文件是否带有宏,若是,则使用预先备份的不带有宏的模板文件替换所述修改后的模板文件;
则所述装置还可以包括:适于判断修改后的模板文件是否带有宏的宏判断模块,所述宏判断模块具体可以包括:
打开子模块,适于以二进制的格式打开所述修改后的模板文件;及
宏标识判断子模块,适于判断所述修改后的模板文件的二进制内容中是否包含有宏标识,若是,则判断修改后的模板文件带有宏,否则判断修改后的模板文件不带有宏。
在本发明的一种优选实施例中,所述装置还可以包括:
白名单数据集判断模块,适于当匹配失败时,判断所述文件行为对应文件或目录是否在白名单数据集中;
第一白名单数据集处理模块,适于当所述文件行为对应文件或目录在白名单数据集中时,确定所述文件行为不是宏病毒行为;
第二白名单数据集处理模块,适于当所述文件行为对应文件或目录不在白名单数据集中时,判断所述文件行为对应文件或目录是否在黑名单数据集中;
第一黑名单数据集处理模块,适于当所述文件行为对应文件或目录在黑名单数据集中时,确定所述文件行为是宏病毒行为;
第二黑名单数据集处理模块,适于当所述文件行为对应文件或目录不在黑名单数据集中时,判断所述文件行为对应文件或目录为本次计算机运行期间未被Office进程修改过的已有文件或目录还是被Office进程修改过的新文件或目录;及
文件处理模块,适于当所述文件行为对应文件或目录为本次计算机运行期间未被Office进程修改过的已有文件或目录时,确定所述文件行为不是宏病毒行为,以及,当所述文件行为对应文件或目录为Office进程操作过的已有文件或目录时,确定所述文件行为是宏病毒行为。
在本发明的另一种优选实施例中,所述文件信息判断子模块,具体可以包括:
文件集合维护单元,适于维护第一文件集合和第二文件集合;所述第一文件集合具体可以包括本次计算机运行期间未被Office进程修改过的已有文件,所述第二文件集合具体可以包括本次计算机运行期间被Office进程修改过的新文件;
文件集合判断单元,适于依据所述文件行为的文件路径,判断所述文件行为对应文件是否在所述第一文件集合或第二文件集合中,当所述文件行为对应文件或目录在所述第一文件集合中时,判断所述文件行为对应文件为本次计算机运行期间未被Office进程修改过的已有文件,当所述文件行为对应文件或目录在所述第二文件集合中时,判断所述文件行为对应文件为本次计算机运行期间被Office进程修改过的新文件。
在本发明的再一种优选实施例中,所述已知宏病毒行为至少可以包括如下行为中的一项或多项:Office进程修改模板文件的行为,Office进程向模板目录写文件的行为,Office进程执行Office进程释放的可执行文件,Office进程执行Office进程释放的脚本文件,Office进程修改注册表的行为,Office进程复制文件的行为。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。