检测脚本病毒的方法和装置制造方法
【专利摘要】本发明提供了一种检测脚本病毒的方法和装置。其中检测脚本病毒的方法,包括:使用预置的编译器对待检测脚本进行编译;在编译过程中对待检测脚本进行精简处理;调用预先设置的至少一个杀毒引擎对精简后的脚本进行扫描,得到脚本病毒检测结果。从而利用预置的编译器对待检测的脚本进行编译,得到原本在脚本中隐藏的数据特征,得到原本在脚本中被隐藏的数据特征,然后使用至少一个杀毒引擎进行脚本病毒检测,进而实现对脚本病毒样本的准确识别,消除了脚本病毒带来的安全隐患。
【专利说明】检测脚本病毒的方法和装置
【技术领域】
[0001]本发明涉及计算机安全【技术领域】,特别是涉及一种检测脚本病毒的方法和装置。
【背景技术】
[0002]脚本(script)是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。脚本程序在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。
[0003]脚本通常可以由应用程序临时调用并执行。各类脚本被广泛地应用于网页设计等计算机应用程序中,可以减小程序的规模和提高程序运行速度。由于脚本的特点和使用广泛性,也成为一些人进行恶意攻击的手段,例如在脚本中加入一些破坏计算机系统的命令,这样当用户浏览网页时,一旦调用这类脚本,便会使用户的系统受到攻击,例如VBS脚本病毒、JS脚本病毒等都影响了大量计算机的安全。
[0004]因此,现有技术中也出现了针对脚本病毒的检测方法,主要包括静态特征匹配和动态检测,其中静态特征匹配是对脚本语句利用现有的恶意特征库进行特征匹配,而动态查杀是在沙箱等安全环境下对脚本的运行结果进行检测。然而随着恶意脚本的制作技术的提高,也出现了针对以上两种检测方法规避的设计,例如对脚本语句进行拆分和冗余设计使之与恶意特征库中特征不匹配,或者设置脚本的执行条件避开沙箱的动态运行。
[0005]因此现有技术中的脚本检测技术的检测结构有可能不准确,导致安全隐患。
【发明内容】
[0006]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的检测脚本病毒的装置和相应的检测脚本病毒的方法。
[0007]本发明一个进一步的目的是要提高脚本的检测准确程度。
[0008]依据本发明的一个方面,提供了一种基于检测脚本病毒的方法。该检测脚本病毒的方法,包括:使用预置的编译器对待检测脚本进行编译;在编译过程中对待检测脚本进行精简处理;调用预先设置的至少一个杀毒引擎对精简后的脚本进行扫描,得到脚本病毒检测结果。
[0009]可选地,在编译过程中对待检测脚本进行精简处理包括:清除待检测脚本的代码中包含的冗余变量;清除待检测脚本的代码中包含的冗余函数。
[0010]可选地,清除待检测脚本的代码中包含的冗余变量包括:扫描待检测脚本的代码中的变量;确定变量的赋值代码中包含常量运算,并执行常量运算;使用常量运算后的结果重新赋值变量。
[0011]可选地,清除待检测脚本的代码中包含的冗余函数包括:扫描待检测脚本的代码中的函数,确定待检测脚本中的函数调用关系;根据函数调用关系,确定出冗余函数并清除。
[0012]可选地,杀毒引擎为多个,调用预先设置的至少一个杀毒引擎对精简后的脚本进行扫描包括:调用多个杀毒引擎分别从精简后的脚本中提取出数据特征并对数据特征进行恶意特征识别。
[0013]可选地,对数据特征进行恶意特征识别包括:将数据特征中的静态特征与提取该特征的杀毒引擎的静态特征库中的已知静态特征进行匹配;和/或将数据特征中的动态行为特征与杀毒引擎的动态行为特征库中的已知动态行为特征进行匹配。
[0014]可选地,静态特征至少包括以下中的任意一种或多种:二进制文件、函数结构、字符串、数值、数组、函数、统一资源定位符。
[0015]可选地,动态行为特征至少包括以下中的任意一种或多种:虚拟行为启动时的行为特征、网络行为特征、沙箱中运行时的行为特征、系统请求权限。
[0016]根据本发明的另一个方面,还提供了一种检测脚本病毒的装置。该检测脚本病毒的装置包括:编译模块,配置为使用预置的编译器对待检测脚本进行编译,并在编译过程中对待检测脚本进行精简处理;病毒检测模块,配置为调用预先设置的至少一个杀毒引擎对精简后的脚本进行扫描,得到脚本病毒检测结果。
[0017]可选地,编译模块包括:变量处理子模块,配置为清除待检测脚本的代码中包含的冗余变量;函数处理子模块,配置为清除待检测脚本的代码中包含的冗余函数。
[0018]可选地,变量处理子模块还被配置为:扫描待检测脚本的代码中的变量;确定变量的赋值代码中包含常量运算,并执行常量运算;使用常量运算后的结果重新赋值变量。
[0019]可选地,函数处理子模块还被配置为:扫描待检测脚本的代码中的函数,确定待检测脚本中的函数调用关系;根据函数调用关系,确定出冗余函数并清除。
[0020]可选地,病毒检测模块使用的杀毒引擎为多个,病毒检测模块包括:特征提取子模块,配置为调用多个杀毒引擎分别从精简后的脚本中提取出数据特征;特征识别子模块,配置为调用多个杀毒引擎分别对数据特征进行恶意特征识别。
[0021]可选地,特征识别子模块还配置为:将数据特征中的静态特征与提取该特征的杀毒引擎的静态特征库中的已知静态特征进行匹配;和/或将数据特征中的动态行为特征与杀毒引擎的动态行为特征库中的已知动态行为特征进行匹配,静态特征至少包括以下中的任意一种或多种:二进制文件、函数结构、字符串、数值、数组、函数、统一资源定位符,动态行为特征至少包括以下中的任意一种或多种:虚拟行为启动时的行为特征、网络行为特征、沙箱中运行时的行为特征、系统请求权限。
[0022]本发明的检测脚本病毒的方法,利用预置的编译器对待检测的脚本进行精简处理,得到原本在脚本中被隐藏的数据特征,然后利用杀毒引擎对脚本进行扫描,进而实现对恶意脚本样本的准确识别,消除了脚本带来的安全隐患。
[0023]进一步地,本发明的检测脚本病毒的方法可以对经优化的编译器编译后的脚本使用多个杀毒引擎进行扫描,充分使用多个杀毒引擎的特点,实现对脚本进行静态特征和动态行为的匹配,可以更加全面地对脚本进行检测,以及时对恶意脚本进行处理,进一步提高了网络的安全性。
[0024]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
[0025]根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
【专利附图】
【附图说明】
[0026]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0027]图1是根据本发明一个实施例的检测脚本病毒的装置100的示意性透视图;
[0028]图2是根据本发明一个实施例的检测脚本病毒的装置100的应用架构图;
[0029]图3是根据本发明一个实施例的检测脚本病毒的方法的示意图;
[0030]图4是根据本发明一个实施例的检测脚本病毒的方法中特征匹配的示意图;以及
[0031]图5是根据本发明一个实施例的检测脚本病毒的方法中集成多个杀毒引擎的示意图。
【具体实施方式】
[0032]在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0033]图1是根据本发明一个实施例的检测脚本病毒的装置100的示意性透视图。该检测脚本病毒的装置100 —般性地可包括:编译模块110、病毒检测模块120,以上模块可以根据本实施例的检测脚本病毒的装置100的功能配置灵活进行配置,在一些优选实施例中还可以通过增加新的模块或在已有模块中设置子模块以达到更优的技术效果或实现新的功能,例如编译模块I1还可以设置有变量处理子模块112和函数处理子模块114,病毒检测模块120还可以设置有:特征提取子模块122和特征识别子模块124。
[0034]图2是根据本发明一个实施例的检测脚本病毒的装置100的应用架构图,多台安装于终端202中通过网络204与安全服务器206数据连接。本实施例的检测脚本病毒的装置100可以灵活地布置于终端202或安全服务器206,对获取到的可疑脚本进行检测,并相应给出脚本病毒检测结果。例如,终端202收集到可疑脚本,将该脚本上传至安全服务器206,以供安全服务器206中的检测脚本病毒的装置100进行脚本检测;或者终端202收集到可疑脚本,对该脚本进行编译,确定出脚本中的数据特征,将该特征上传至安全服务器206进行特征匹配;又或者安全服务器206将至少一个杀毒引擎下发给终端202,由终端202中的检测脚本病毒的装置100完成脚本的获取、编译、特征匹配等步骤。
[0035]优选地,可以通过大量终端202收集脚本,并通过预置的优化编译器进行编译,得到待检测脚本中隐藏的数据特征,将以上数据特征与脚本进行关联,而通过安全服务器206依据各终端202上传的数据特征在数据库中进行特征匹配,并进一步地根据匹配结果对脚本指定相应的清除或者屏蔽措施。本实施例的检测脚本病毒的装置100也可以独自布置于终端202或安全服务器206中,本实施例并不对此进行限制。
[0036]以上终端202并不局限于个人计算机,也可以为各类便携式电子设备、例如平板电脑、智能手机等。
[0037]在本实施例的检测脚本病毒的装置100的部件中,编译模块110配置为使用预置的编译器对待检测脚本进行编译,并在编译过程中对待检测脚本进行精简处理,以上预置的编译器在对脚本进行编译的过程中,可以删除脚本中的无用语句,并将语句进行精简例如将语句中的常量进行直接运算,从而去除为进行反检测所做的设计,得到隐藏在待检测脚本中的特征。
[0038]在编译模块HO中,变量处理子模块112可以配置为清除待检测脚本的代码中包含的冗余变量;函数处理子模块114可以配置为清除待检测脚本的代码中包含的冗余函数。
[0039]其中,变量处理子模块112的处理流程可以包括:扫描待检测脚本的代码中的变量;确定变量的赋值代码中包含常量运算,并执行常量运算;使用常量运算后的结果重新赋值变量。例如在待检测脚本中有些变量仅在脚本的一处等式中出现,未参与其他的运算,就可以将该变量直接进行清除,或者待检测脚本中的变量赋值语句均为常量运算,可以直接将该变量作为常量运算。
[0040]函数处理子模块114的处理流程可以包括:扫描待检测脚本的代码中的函数,确定待检测脚本中的函数调用关系;根据函数调用关系,确定出冗余函数并清除。例如对于某些函数在脚本的运行过程未被调用,就可以将该函数认定为冗余函数。
[0041]病毒检测模块120配置为调用预先设置的至少一个杀毒引擎对精简后的脚本进行扫描,得到脚本病毒检测结果。在一种可选的配置中,病毒检测模块120可以包括特征提取子模块122和特征识别子模块124。经过以上编译模块110的处理,由于清理了一部分代码,隐藏在代码中的一些数据特征出现,便于杀毒引擎全面地对脚本进行病毒检测。
[0042]在使用一种杀毒引擎的情况下,病毒检测模块120可以直接调用该杀毒引擎进行脚本的特征提取,并利用该杀毒引擎预置的脚本病毒特征库进行恶意特征匹配。
[0043]为了防止单一的杀毒引擎查杀遗漏可能的恶意特征,保证全面地检测脚本病毒,病毒检测模块120使用的杀毒引擎可以为多个,其中特征提取子模块122可以调用多个杀毒引擎分别从精简后的脚本中提取出数据特征;特征识别子模块124调用多个杀毒引擎分别对数据特征进行恶意特征识别。
[0044]调用多个杀毒引擎的动作可以依次进行,例如第一杀毒引擎完成病毒检测后,依次执行第二杀毒引擎、第三杀毒引擎的检测流程。当有杀毒引擎确定出脚本病毒或者所有预置的杀毒引擎均未发现脚本病毒时,检测过程结束。
[0045]调用多个杀毒引擎的动作可以并行执行,例如多个杀毒引擎同时对一个经过优化的编译器编译过的脚本进行病毒检测,从而提高病毒检测的效率。
[0046]具体地,特征识别子模块124还配置为:将数据特征中的静态特征与提取该特征的杀毒引擎的静态特征库中的已知静态特征进行匹配;和/或将数据特征中的动态行为特征与杀毒引擎的动态行为特征库中的已知动态行为特征进行匹配,从而提高了脚本病毒的检测准确性。
[0047]以上特征识别子模块124使用的静态特征至少包括以下中的任意一种或多种:二进制文件、函数结构、字符串、数值、数组、函数、统一资源定位符,二其使用的动态行为特征至少包括以下中的任意一种或多种:虚拟行为启动时的行为特征、网络行为特征、沙箱中运行时的行为特征、系统请求权限。
[0048]其中静态特征匹配的过程可以将脚本的静态特征与杀毒引擎的静态特征库中的已知静态特征进行匹配。具体的匹配可以包括:将脚本的二进制文件与静态特征库中的已知恶意脚本二进制文件进行匹配,将脚本的函数结构与静态特征库中的已知恶意脚本函数结构进行匹配,将脚本的至少部分字符串与静态特征库中的已知恶意脚本的字符串进行匹配。
[0049]如果根据静态特征库无法判断获取的脚本是否为恶意脚本,则可以继续从脚本中提取动态行为特征,例如动态特征匹配子模块134可以通过跟踪脚本的运行行为,例如以Hook (钩子函数)、SSDT表(系统服务描述符表),DebugAPI (调试应用函数接口 )等方式根据脚本的运行行为。对于windows操作系统,可以使用微软提供的平台WDK(驱动程序工具包)来获取脚本运行行为。
[0050]动态行为特征的匹配过程可以将脚本的动态行为特征与杀毒引擎的动态行为特征库中的已知动态行为特征进行匹配。例如,将待检测脚本的虚拟行为启发时的行为特征与动态行为特征库中的已知动态行为特征进行匹配;将待检测脚本的网络行为特征与动态行为特征库中的已知动态行为特征行匹配;待检测脚本的在沙箱中运行时的行为特征与动态行为特征库中的已知动态行为特征进行匹配。
[0051]沙箱(Sandbox)可模拟代码运行的真实环境,并用相应地安全机制隔离运行恶意脚本带来的安全问题。通过沙箱技术,代码分析人员可以评估恶意代码。虚拟机是一种典型的沙箱。它通过软件仿真物理意义上的主机,该主机就像在真实机器上启动运行。常见的虚拟机包括VMware。在现有技术中直接在沙箱中运行脚本,由于沙箱本身无法模拟所有的实际运行情况,比如脚本中存在条件运行,在沙箱不满足该预设条件时,有可能无法是脚本动态行为出现。而在本实施例的检测脚本病毒的装置100中,对脚本进行精简处理,清除了某些冗余的运行条件,可以使脚本的动态行为得到全面的模拟,从而可以进行全面的动态特征匹配,提高了脚本的检测准确程度。
[0052]本实施例的检测脚本病毒的装置100中,将待检测脚本进行编译然后利用至少一个病毒杀毒引擎进行病毒检测,由于编译器将脚本的无用函数、代码、变量、常量等进行了清除,清除了脚本病毒制作者采取的代码混淆措施,提高了病毒检测的准确程度。
[0053]本发明实施例还提供了一种检测脚本病毒的方法,该检测脚本病毒的方法可以由以上实施例介绍的任意一种检测脚本病毒的装置100来执行,以提高脚本的安全检测的准确程度。图3是根据本发明一个实施例的检测脚本病毒的方法的示意图,如图所示,该检测脚本病毒的方法包括以下步骤:
[0054]步骤S302,使用预置的编译器对待检测脚本进行编译;
[0055]步骤S304,在编译过程中对待检测脚本进行精简处理;
[0056]步骤S306,调用预先设置的至少一个杀毒引擎对精简后的脚本进行扫描,得到脚本病毒检测结果。
[0057]步骤S304中在编译过程中对待检测脚本进行精简处理可以包括:清除待检测脚本的代码中包含的冗余变量;以及清除待检测脚本的代码中包含的冗余函数。
[0058]传统的脚本是直接进行解释执行,脚本解释为机器代码进行执行,一般不进行编译,而在实施例中首先使用编译器对脚本进行编译,从而优化了脚本代码,既可以提高脚本的运行速度,又可以去除脚本中的混淆代码,可以确定出脚本的隐含特征。
[0059]具体地,清除待检测脚本的代码中包含的冗余变量包括:扫描待检测脚本的代码中的变量;确定变量的赋值代码中包含常量运算,并执行常量运算;使用常量运算后的结果重新赋值变量。清除待检测脚本的代码中包含的冗余函数包括:扫描待检测脚本的代码中的函数,确定待检测脚本中的函数调用关系;根据函数调用关系,确定出冗余函数并清除。
[0060]例如,脚本中包括某一字符串,在进行防检测处理时,脚本设计者将该字符串进行了拆分,此处举例字符串为“ fromXcode ”,脚本中将“ from”、“X”、“ code ”进行了切割,中间添加了冗余语句,此时现有技术中无法得到脚本中隐藏的“fromXcode”语句。而在本实施例的检测脚本病毒的方法中可以使用编译器对脚本进行优化,对于字符串类的静态常量,就可以在编译过程就可以将分割的“from”、“X”、“COde”拼接为“fromXcode”,这样就得到了隐藏字符串。
[0061]对于动态行为,如果脚本设置了运行条件,仅在满足条件,例如访问某一同一资源定位符时,才会触发拼接字符串的代码,在现有的动态行为检测的过程中,可能满足代码的运行条件。而在本实施例的检测脚本病毒的方法中,编译过程中就可以将运行条件下的代码进行执行,完成字符串的拼接,去掉了混淆代码,在脚本的运行过程可以提高速度。
[0062]而且脚本编译过程中可以将一些无用的代码进行了清除,也可以减少脚本检测的数据量,提高效率。
[0063]以上仅以字符串举例说明,步骤S304确定出隐藏的数据特征可以包括以下至少一项:二进制文件、函数结构、字符串、数值、数组、函数、统一资源定位符。
[0064]步骤S306调用预先设置的至少一个杀毒引擎对精简后的脚本进行扫描的流程可以为调用多个杀毒引擎分别从精简后的脚本中提取出数据特征并对数据特征进行恶意特征识别。恶意特征识别可以包括:静态特征匹配和动态特征匹配。
[0065]在使用一种杀毒引擎的情况下,步骤S306的一种流程可以直接调用该杀毒引擎进行脚本的特征提取,并利用该杀毒引擎预置的脚本病毒特征库进行恶意特征匹配。
[0066]为了防止单一的杀毒引擎查杀遗漏可能的恶意特征,保证全面地检测脚本病毒,病毒检测模块120使用的杀毒引擎可以为多个,其中特征提取子模块122可以调用多个杀毒引擎分别从精简后的脚本中提取出数据特征;特征识别子模块124调用多个杀毒引擎分别对数据特征进行恶意特征识别。
[0067]调用多个杀毒引擎的动作可以依次进行,例如第一杀毒引擎完成病毒检测后,依次执行第二杀毒引擎、第三杀毒引擎的检测流程。当有杀毒引擎确定出脚本病毒或者所有预置的杀毒引擎均未发现脚本病毒时,检测过程结束。
[0068]调用多个杀毒引擎的动作可以并行执行,例如多个杀毒引擎同时对一个经过优化的编译器编译过的脚本进行病毒检测,从而提高病毒检测的效率。
[0069]病毒引擎对数据特征进行恶意特征识别包括:将数据特征中的静态特征与提取该特征的杀毒引擎的静态特征库中的已知静态特征进行匹配;和/或将数据特征中的动态行为特征与杀毒引擎的动态行为特征库中的已知动态行为特征进行匹配。
[0070]其中静态特征匹配将精简后的脚本的静态特征与静态特征库中的已知静态特征进行匹配,静态特征至少包括以下中的任意一种:二进制文件、函数结构、字符串、数值、数组、函数、统一资源定位符。
[0071]动态特征匹配将精简后的脚本的动态行为特征与动态行为特征库中的已知动态行为特征进行匹配。动态行为特征至少包括以下中的任意一种:虚拟行为启动时的行为特征、网络行为特征、沙箱中运行时的行为特征、系统请求权限。
[0072]静态特征匹配具体的匹配可以包括:将脚本的二进制文件与静态特征库中的已知恶意脚本二进制文件进行匹配,将脚本的函数结构与静态特征库中的已知恶意脚本函数结构进行匹配,将脚本的至少部分字符串与静态特征库中的已知恶意脚本的字符串进行匹配。
[0073]如果根据静态特征库无法判断获取的脚本是否为恶意脚本,则可以继续从脚本中提取动态行为特征,例如动态特征匹配通过跟踪脚本的运行行为,例如以Hook(钩子函数)、SSDT表(系统服务描述符表),DebugAPI (调试应用函数接口)等方式根据脚本的运行行为。对于windows操作系统,可以使用微软提供的平台WDK(驱动程序工具包)来获取脚本运行行为。
[0074]例如,动态特征匹配将待检测脚本的虚拟行为启发时的行为特征与动态行为特征库中的已知动态行为特征进行匹配;将待检测脚本的网络行为特征与动态行为特征库中的已知动态行为特征行匹配;待检测脚本的在沙箱中运行时的行为特征与动态行为特征库中的已知动态行为特征进行匹配。
[0075]沙箱(Sandbox)可模拟代码运行的真实环境,并用相应地安全机制隔离运行恶意脚本带来的安全问题。通过沙箱技术,代码分析人员可以评估恶意代码。虚拟机是一种典型的沙箱。它通过软件仿真物理意义上的主机,该主机就像在真实机器上启动运行。常见的虚拟机包括VMware。在现有技术中直接在沙箱中运行脚本,由于沙箱本身无法模拟所有的实际运行情况,比如脚本中存在条件运行,在沙箱不满足该预设条件时,有可能无法是脚本动态行为出现。而在本实施例的检测脚本病毒的方法中,对脚本进行编译精简处理,清除了某些冗余的运行条件,可以使脚本的动态行为得到全面的模拟,从而可以进行全面的动态特征匹配,提高了脚本的检测准确程度。
[0076]图4是根据本发明一个实施例的检测脚本病毒的方法中特征匹配的示意图,杀毒引擎对经过编译后的脚本进行特征匹配过程:二进制文件匹配、函数结构特征匹配、字符串特征匹配、虚拟行为特征匹配、网络行为特征匹配、沙箱行为匹配、后台特征匹配。
[0077]二进制文件匹配可以将待检测脚本中的二进制文件与静态特征库中的已知恶意脚本的二进制文件进行匹配。其中二进制文件可以是在编译过程中进行脱壳或卸出(dump)后的结果,从而可以提取出有效的特征信息,以避免壳或包对二进制文件匹配的干扰。
[0078]函数结构特征匹配将待检测脚本的函数结构与静态特征库中的已知恶意脚本的函数结构进行匹配。
[0079]字符串特征匹配将待检测脚本的至少部分字符串与静态特征库中的已知恶意脚本的进行匹配。
[0080]虚拟行为特征匹配将待检测脚本的虚拟行为启发时的行为特征与动态行为特征库中的已知动态行为特征进行匹配。具体地,将待检测脚本模拟执行,分析待检测脚本是否匹配恶意脚本行为规则。
[0081]网络行为特征匹配将待检测脚本的网络行为特征与动态行为特征库中的已知动态行为特征进行匹配。具体地,通过模拟执行或虚拟机内执行,匹配网络数据包规则。
[0082]沙箱行为匹配将待检测脚本在沙箱中运行时的行为特征与动态行为特征库中的已知动态行为特征进行匹配。具体地,将恶意代码样本自动放入VMware或Sandbox执行,观察待检测脚本的是否触发恶意规则。
[0083]后台特征匹配将待检测脚本在虚拟运行时的后台行为特征与动态行为特征库中的已知动态行为特征进行匹配。例如后台行为可以是后台升级行为。
[0084]当待检测脚本中的一项或多项特征与特征库中的特征匹配,可以认定待检测脚本存在安全隐患,存在脚本病毒,需要及时向用户进行提示,并屏蔽恶意脚本的运行。保护用户不受侵害,提高了用户访问网页或使用其他客户端的安全性。
[0085]以上是一个杀毒引擎进行脚本病毒查杀的过程,在使用多个杀毒引擎进行脚本病毒检测时,可以根据杀毒引擎具备的功能执行以上特征匹配流程的至少一项或多项。
[0086]由于不同杀毒引擎的病毒特征库以及查杀算法存在差异,因此使用多个杀毒引擎共同进行病毒检测,提高了检测的全面性和准确性。
[0087]本实施例的脚本病毒的检测方法中,多个杀毒引擎可以预置与同一杀毒客户端中,以一个杀毒客户端集成有第一杀毒引擎和第二杀毒引擎为例。第一杀毒引擎和第二杀毒引擎可以具体为针对脚本的不同特征进行检测。第一杀毒引擎和第二杀毒引擎之间可以采用并行查杀的方式,即当第一杀毒引擎在检测某些脚本特征的过程中,第二杀毒引擎对另一些脚本特征进行检测,既提高了检测准确性,也提高了检测效率。
[0088]其中,第一杀毒引擎和第二杀毒引擎均可以采用本地检测和云检测的方式进行检测。例如第一杀毒引擎和第二杀毒引擎分别将其提取的脚本特征上传给对应的云端安全检测器,然后接收云端的检测结果。以上第一杀毒引擎和第二杀毒引擎可以从QVM(Qihc)0Virtual Machine,人工智能引擎)引擎、BitDefender杀毒引擎、小红伞杀毒引擎或其他杀毒引擎中进行选择。
[0089]以上第一杀毒引擎和第二杀毒引擎检测的脚本特征类型可以是重复的,从而利用其不同的特征匹配规则和特征库实现脚本特征匹配。
[0090]图5是根据本发明一个实施例的检测脚本病毒的方法中集成多个杀毒引擎的示意图。图5示出的用于对本实施例的脚本病毒的检测方法内部测试的病毒查杀客户端中集成有QVMII人工智能引擎、小红伞杀毒引擎、Bit Defender杀毒引擎、360云查杀引擎等多个病毒扫描引擎。另外在该病毒查杀客户端中还集成了以上介绍的用于对待检测脚本进行编译的编译器。在该实施例的检测脚本病毒的方法执行过程中,在获取待检测脚本后,编译器首先对待检测样本进行编译,消除可能的对脚本进行的混淆处理,然后调用以上杀毒引擎进行检测。
[0091]进一步地,本发明实施例中,还可以向一些高级用户提供多引擎的选择功能,用户可以对预置的多个杀毒引擎进行选择设置,使用用户开启的一个或多个杀毒引擎进行脚本病毒的检测。
[0092]本实施例的检测脚本病毒的方法,利用预置的编译器对待检测的脚本进行编译,得到原本在脚本中隐藏的数据特征,然后使用至少一个杀毒引擎进行脚本病毒检测,进而实现对脚本病毒样本的准确识别,消除了脚本带来的安全隐患。
[0093]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0094]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身都作为本发明的单独实施例。
[0095]本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0096]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0097]本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例检测脚本病毒的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0098]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0099]至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
[0100]本发明实施例还提供了 Al.—种检测脚本病毒的方法,包括:
[0101]使用预置的编译器对待检测脚本进行编译,
[0102]在编译过程中对所述待检测脚本进行精简处理;
[0103]调用预先设置的至少一个杀毒引擎对精简后的脚本进行扫描,得到脚本病毒检测结果。
[0104]A2.根据Al所述的方法,其中,在编译过程中对所述待检测脚本进行精简处理包括:
[0105]清除所述待检测脚本的代码中包含的冗余变量;
[0106]清除所述待检测脚本的代码中包含的冗余函数。
[0107]A3.根据A2所述的方法,其中,清除所述待检测脚本的代码中包含的冗余变量包括:
[0108]扫描所述待检测脚本的代码中的变量;
[0109]确定所述变量的赋值代码中包含常量运算,并执行所述常量运算;
[0110]使用所述常量运算后的结果重新赋值所述变量。
[0111]A4.根据A2所述的方法,其中,清除所述待检测脚本的代码中包含的冗余函数包括:
[0112]扫描所述待检测脚本的代码中的函数,确定所述待检测脚本中的函数调用关系;
[0113]根据所述函数调用关系,确定出冗余函数并清除。
[0114]A5.根据Al至A4中任一项所述的方法,其中,所述杀毒引擎为多个,
[0115]调用预先设置的至少一个杀毒引擎对精简后的脚本进行扫描包括:调用所述多个杀毒引擎分别从精简后的脚本中提取出数据特征并对所述数据特征进行恶意特征识别。
[0116]A6.根据A5所述的方法,其中,对所述数据特征进行恶意特征识别包括:
[0117]将所述数据特征中的静态特征与提取该特征的杀毒引擎的静态特征库中的已知静态特征进行匹配;和/或
[0118]将所述数据特征中的动态行为特征与所述杀毒引擎的动态行为特征库中的已知动态行为特征进行匹配。
[0119]A7.根据A6所述的方法,其中,所述静态特征至少包括以下中的任意一种或多种:二进制文件、函数结构、字符串、数值、数组、函数、统一资源定位符。
[0120]AS.根据A6所述的方法,其中,所述动态行为特征至少包括以下中的任意一种或多种:虚拟行为启动时的行为特征、网络行为特征、沙箱中运行时的行为特征、系统请求权限。
[0121]本发明实施例还提供了 B9.—种检测脚本病毒的装置,包括:
[0122]编译模块,配置为使用预置的编译器对待检测脚本进行编译,并在编译过程中对所述待检测脚本进行精简处理;
[0123]病毒检测模块,配置为调用预先设置的至少一个杀毒引擎对精简后的脚本进行扫描,得到脚本病毒检测结果。
[0124]B10.根据B9所述的装置,其中,所述编译模块包括:
[0125]变量处理子模块,配置为清除所述待检测脚本的代码中包含的冗余变量;
[0126]函数处理子模块,配置为清除所述待检测脚本的代码中包含的冗余函数。
[0127]Bll.根据BlO所述的装置,其中,所述变量处理子模块还被配置为:
[0128]扫描所述待检测脚本的代码中的变量;
[0129]确定所述变量的赋值代码中包含常量运算,并执行所述常量运算;
[0130]使用所述常量运算后的结果重新赋值所述变量。
[0131]B12.根据BlO所述的装置,其中,所述函数处理子模块还被配置为:
[0132]扫描所述待检测脚本的代码中的函数,确定所述待检测脚本中的函数调用关系;
[0133]根据所述函数调用关系,确定出冗余函数并清除。
[0134]B13.根据B9至B12中任一项所述的装置,其中,
[0135]所述病毒检测模块使用的所述杀毒引擎为多个,
[0136]所述病毒检测模块包括:
[0137]特征提取子模块,配置为调用所述多个杀毒引擎分别从精简后的脚本中提取出数据特征;
[0138]特征识别子模块,配置为调用所述多个杀毒引擎分别对所述数据特征进行恶意特征识别。
[0139]B14.根据B13所述的装置,其中,特征识别子模块还配置为:
[0140]将所述数据特征中的静态特征与提取该特征的杀毒引擎的静态特征库中的已知静态特征进行匹配;和/或
[0141]将所述数据特征中的动态行为特征与所述杀毒引擎的动态行为特征库中的已知动态行为特征进行匹配,
[0142]所述静态特征至少包括以下中的任意一种或多种:二进制文件、函数结构、字符串、数值、数组、函数、统一资源定位符,
[0143]所述动态行为特征至少包括以下中的任意一种或多种:虚拟行为启动时的行为特征、网络行为特征、沙箱中运行时的行为特征、系统请求权限。
【权利要求】
1.一种检测脚本病毒的方法,包括: 使用预置的编译器对待检测脚本进行编译, 在编译过程中对所述待检测脚本进行精简处理; 调用预先设置的至少一个杀毒引擎对精简后的脚本进行扫描,得到脚本病毒检测结果O
2.根据权利要求1所述的方法,其中,在编译过程中对所述待检测脚本进行精简处理包括: 清除所述待检测脚本的代码中包含的冗余变量; 清除所述待检测脚本的代码中包含的冗余函数。
3.根据权利要求2所述的方法,其中,清除所述待检测脚本的代码中包含的冗余变量包括: 扫描所述待检测脚本的代码中的变量; 确定所述变量的赋值代码中包含常量运算,并执行所述常量运算; 使用所述常量运算后的结果重新赋值所述变量。
4.根据权利要求2所述的方法,其中,清除所述待检测脚本的代码中包含的冗余函数包括: 扫描所述待检测脚本的代码中的函数,确定所述待检测脚本中的函数调用关系; 根据所述函数调用关系,确定出冗余函数并清除。
5.根据权利要求1至4中任一项所述的方法,其中,所述杀毒引擎为多个, 调用预先设置的至少一个杀毒引擎对精简后的脚本进行扫描包括:调用所述多个杀毒引擎分别从精简后的脚本中提取出数据特征并对所述数据特征进行恶意特征识别。
6.根据权利要求5所述的方法,其中,对所述数据特征进行恶意特征识别包括: 将所述数据特征中的静态特征与提取该特征的杀毒引擎的静态特征库中的已知静态特征进行匹配;和/或 将所述数据特征中的动态行为特征与所述杀毒引擎的动态行为特征库中的已知动态行为特征进行匹配。
7.根据权利要求6所述的方法,其中,所述静态特征至少包括以下中的任意一种或多种:二进制文件、函数结构、字符串、数值、数组、函数、统一资源定位符。
8.根据权利要求6所述的方法,其中,所述动态行为特征至少包括以下中的任意一种或多种:虚拟行为启动时的行为特征、网络行为特征、沙箱中运行时的行为特征、系统请求权限。
9.一种检测脚本病毒的装置,包括: 编译模块,配置为使用预置的编译器对待检测脚本进行编译,并在编译过程中对所述待检测脚本进行精简处理; 病毒检测模块,配置为调用预先设置的至少一个杀毒引擎对精简后的脚本进行扫描,得到脚本病毒检测结果。
10.根据权利要求9所述的装置,其中,所述编译模块包括: 变量处理子模块,配置为清除所述待检测脚本的代码中包含的冗余变量; 函数处理子模块,配置为清除所述待检测脚本的代码中包含的冗余函数。
【文档编号】G06F21/00GK104134019SQ201410361072
【公开日】2014年11月5日 申请日期:2014年7月25日 优先权日:2014年7月25日
【发明者】陈卓, 唐海, 杨康, 邢超 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司