用于检测未知恶意软件的系统和方法

文档序号:6443303阅读:258来源:国知局

专利名称::用于检测未知恶意软件的系统和方法
技术领域
:本发明一般涉及计算机安全领域,并且特别地,涉及用于检测未知恶意软件的系统、方法和计算机程序产品。
背景技术
:在过去的十年间,由诸如游戏、新闻、娱乐、购物、银行、社交网络等互联网服务的发展所推动的互联网用户数量的显著增长,已导致新类型恶意软件的出现的显著增加。仅在过去的三年间,所检测到的新的恶意程序的数量已增加了超过十倍。并且该增长率在继续增加。由此,反病毒软件开发人员一直在努力通过开发新的用于检测恶意软件的系统和方法来跟上新种类的恶意软件的激增。作为此开发的结果,恶意软件的签名匹配和启发式(heuristic)分析技术已经广泛普及且极其常用于反病毒应用程序及其他计算机和网络安全产品。然而这些技术具有局限性。签名匹配方法专门面向对已知的软件对象的检测,而不适于检测之前属于未知类型的恶意软件。这与签名匹配方法是基于对来自文件的小型片段的散列函数值进行比较的事实相关联。因此,由于散列函数的加密属性,输入数据中甚至一个比特的改变,也会完全改变输出结果。保护的启发式分析方法也在检测未知恶意软件方面具有缺陷首先,相对于签名方法的更长的操作时间;以及其次,其提供60-70%的检测率,这已经接近其能力的极限。因此,用于检测未知恶意软件的新方法是必要的。
发明内容本发明公开了用于检测未知恶意软件的系统、方法和计算机程序产品。在一个示例性实施例中,用于检测未知恶意软件的方法包括确定软件对象是否为已知的恶意的或干净(clean)的对象;以及,如果该对象是未知的,确定该未知对象的文件类型。基于该对象的该文件类型,选择两个或多个不同的恶意软件分析方法来分析该对象是否存在恶意软件。对于每个所选择的恶意软件分析方法,生成相关联的对象基因。该对象基因为含有从对象中检索的或与对象相关联的多个信息元素的数据结构。然后,使用所选择的恶意软件分析方法分析该对象基因是否存在恶意软件。在另一个示例性实施例中,用于检测未知恶意软件的方法包括为多个已知的恶意的和干净的对象中的每一个生成至少一个对象基因。使用一个或多个恶意软件分析方法分析每个对象基因。然后,基于通过所述方法对该已知恶意对象的基因的分析来计算通过一个恶意软件分析方法或者两个或多个恶意软件分析方法的组合对恶意对象的成功检测水平。下一步,基于通过所述方法对已知干净对象的基因的分析来计算通过一个恶意软件分析方法或者两个或多个恶意软件分析方法的组合对干净对象的误报(falsepositive)水平。然后,以该已知恶意对象的该成功检测水平和该已知干净对象的该误报水平的函数来测量每个恶意分析方法或恶意分析方法的组合的有效性。最后,选择最有效的恶意软件分析方法的一个或组合来分析未知对象是否存在恶意软件。以上对于示例性实施例的简要概括起到了提供对本发明的基本理解的作用。此概括并非对本发明的所有预期方面的广泛概述,并且既非意图识别所有实施例的重要或关键元素,也非意图描述任何或所有实施例的范围。其唯一的目的是以简化的形式预设一个或多个实施例,作为以下的对于本发明的更详细说明的前序。为了前述内容的实现,该一个或多个实施例包括在权利要求书中所说明并特别指出的特征。并入此说明书并构成此说明书的一部分的附示了本发明的一个或多个示例性实施例,并且与详细的说明一起起到解释这些实施例的原理和实施的作用。在附图中图I图示了根据一个示例性实施例的用于检测未知恶意软件的过程的流程图。图2图示了根据一个示例性实施例的用于选择恶意软件分析方法的表格。图3图示了根据一个示例性实施例的用于选择恶意软件分析方法的过程的流程图。图4图示了根据一个示例性实施例的用于选择计算机系统来分析未知对象是否存在恶意软件的表格。图5图示了根据一个示例性实施例的用于实施图3的方法的系统的示意图。图6图示了根据所公开的实施例的用于实施用于检测未知恶意软件的系统和方法的通用计算机的示意图。图7图示了蠕虫程序的执行路径基因的示例。图8图示了用于木马程序的程序流程图基因的示例。图9图示了用于蠕虫程序的函数调用图表基因的示例。图10图示了可执行文件的可操作区域基因的示例。图11示意性图示了PDF文件的结构。图12图示了根据一个示例性实施例的用于评估恶意软件分析方法的有效性的表格。图13A图示了修改程序代码,因此逐行比较分析会失败的示例。图13B图示了通过添加虚拟(dummy)指令来抵消对函数调用图表的分析的方法。图14图示了根据一个示例性实施例的单独以及组合来操作每个方法的有效比率的示例。具体实施例方式在此围绕用于检测未知恶意对象的系统、方法和计算机程序产品来描述本发明的示例性实施例。本领域普通技术人员应当了解,以下的描述仅仅是示例性的而并非意图以任何方式进行限定。对于受益于本发明的本领域技术人员来说,他们将会很容易地想到其他实施例。现将详细参考在附图中图示的本发明的示例性实施例的实施方式。贯穿附图和以下的描述将尽可能使用相同的附图标记来指代相同或相似的项。5在一个示例性实施例中,“对象基因组(objectgenome)”的概念用于描述软件对象、适应性选择用于分析软件对象的方法、以及检测恶意对象。如本文所使用的软件对象包括不同格式的文件,诸如可执行文件、脚本、文档、库以及其它类型的可执行代码或数据。对象基因组是含有一组特征的数据结构,每个特征在一般形式下以可能将软件对象的类缘(affinity)确定至一个类的方式来描述软件对象。在一个示例性实施例中,该对象基因组包括一组所谓的“基因(gene)”(类比于生物),由此,该基因为该对象的特征的类似物。在下文中,为了简要,我们将使用术语“基因”。特别地,对象基因可以定义为含有被研究对象的多个不同信息元素的数据结构,包括但不限于该对象的独特的代码行、其可操作区域、程序执行路径、行为模式、程序流程图、操作系统应用程序接口(API)调用图表以及其它类型的信息。不同类型的对象可以具有不同基因,并且不同基因可以包括从对象提取的不同信息元素。例如,可操作区域基因可以包括在文件执行过程中加载到随机存取存储器中的文件的部分。图10示出了一个用于获得可执行文件的可操作区域的示例,该可执行文件用于Windows家族中的操作系统环境。这类的文件被称为可移植可执行(protableexecutable,PE)文件。这些类型的文件具有特定的结构,即数据头(header)、一组片段(section)、导入表、重定位表等。由此,用于此类文件的可操作区域基因可以包括该文件的最重要的元素,包括其数据头、入口点、指向主函数的指针以及其它服务区域。此外,如图10中所示,在该特定元素之前和之后提取4KB的数据。以此方式,生成32KB的信息,该32KB的信息存储在随机存取存储器中并用于进一步分析。此方法将文件分析时间最小化,这是因为在计算机中对硬盘驱动器上的对象进行直接存取是非常慢的操作,而使用随机存取存储器来作业则要快得多。然而,在处理不同格式的文件,如可移植文档格式(PDF)的过程中,可以选择文件的其他部分作为可操作区域。因此,此类型对象的可操作区域基因会包括与那些在PE文件中所使用的信息元素不同的信息元素。特别地,在PDF文件的情况下,文件的主动式(active)内容,比如java脚本(以java脚本语言写的脚本),可以被视为表征文件功能(functionality)的最重要的信息元素,这是因为由于脚本可调用其他可执行文件,因此在文档主体中java脚本的执行不是安全的操作。因此,此对象的主动式内容元素可以包括在可操作区域基因中。图11示出了该PDF文件的结构,该PDF文件包括多个主动式及被动式(passive)内容元素和这些元素之间的交叉引用表格,以及用于解码这些元素的规则。此外,可以使用不同的方法来分析不同的对象基因组,以便确定对象是恶意的还是干净的。例如,可以通过与存储在远程恶意软件数据库中的已知恶意对象的类似函数调用图表(call-graph)进行比较来分析对象的函数调用图表基因。在一个实施例中,可在不请求远程数据库的情况下去处理在恶意软件数据库中不占用很大空间的基因。在此情况下,可以将所指出的数据库传送至合适的分析组件,该分析组件可以是配置在用户的计算机上的反病毒应用程序的一部分。此分析组件将能够直接在用户计算机上对函数调用图表基因与来自所接收的数据库的已知恶意对象的函数调用图表进行比较,并且提交关于该对象是否为恶意的合适的决定。图I图示了用于使用上文所公开的原理来检测未知恶意软件的示例性方法。该方法100可以通过配置在用户计算机系统上的反病毒应用程序或其他类型的安全软件来实施。在步骤110,可以计算来自被分析的对象的散列函数值,并将该值与存储在本地或远程的恶意的和干净的对象的数据库中的值进行比较。这里,所提到的数据库可在现有已知的和未来的数据库管理系统(DBMS)的控制下操作,该数据库管理系统诸如Oracle、MySQL、微软SQL服务器以及其它。此外,可以使用任何已知的散列函数,包括MD5、SHA-USHA-2、Skein及其它。优选地,在此过程的开始对已知的恶意的和干净的对象进行识别,以便将必须进一步分析是否存在恶意软件的所有对象的集合最小化为只包括未知对象。由此,在步骤120,如果确定该对象为已知的恶意软件或为干净对象,则对该对象的进一步分析是不必要的,并且过程100可以终止。然而,如果在步骤120确定该对象为未知的,该处理转到步骤130,在该步骤中,基于该未知对象的文件类型,例如可执行文件、PDF文件、脚本、动态链接库或其他文件类型,选择一个或多个用于分析未知对象的恶意软件分析方法。图3中示出了用于选择恶意软件分析方法的过程的示例性实施例。下一步在步骤140,为每个所选择的恶意软件分析方法生成对象基因组。这里,可取决于在其上对象将得到分析的计算机系统的能力和资源以及正被分析的对象的文件类型来确定不同基因的列表。在图2和图3中更详细地示出了从对象中选择合适的基因的过程,本文将在下文对其加以讨论。下一步在步骤150,基于其特征,选择能够以尽可能最有效的方式分析此基因组的计算机系统。此计算机系统与在其上检测对象的计算机系统可以是相同或不同的。在图4中示出了用于选择用于分析对象基因组的计算机系统的方法的示例性实施例。下一步,在步骤160,使用本文所描述的一个或多个不同的所选择的恶意软件分析方法来分析该对象基因组是否存在恶意软件。最后,在步骤170,可以将恶意软件分析的结果发送至用户计算机系统。在一个示例性实施例中,可以首先使用精确匹配比较技术,采用在已知的恶意的和/或干净的对象数据库中所含有的信息来分析未知对象的基因。例如,如果在步骤130选择了行为模式分析方法,则可以生成行为模式基因,并且首先将该行为模式基因与存储在已知的恶意软件数据库中的已知恶意对象的类似行为模式进行精确匹配比较。这些数据库对于执行分析的计算机系统而言可以是本地的或是远程的。例如,本地数据库可以实施为执行软件对象是否存在恶意软件的分析的反病毒应用程序的一部分。如果该对象基因在恶意的或干净的对象数据库中具有精确匹配,则不必进行进一步的分析,并且将该分析的结果发送至用户计算机系统。然而,如果没有找到精确匹配,根据另一个示例性实施例,可以在对象基因组上执行近似字符串匹配(approximatestringmatching,又名模糊字符串检索)。因为近似字符串匹配是相当资源密集型的过程,所以应当仅在该精确匹配分析未能提供确凿的结果之后对其加以执行。在一个示例性实施例中,近似字符串匹配包括有对行的非特定比较,例如使用LevenshteiruLandau-Vishkin或其他算法。使用行为模式基因的例子,可以对包括行为模式的代码行的序列与已知的恶意行为模式进行比较。可以基于超过一些给定的阈值来确定行为模式之间的相似度水平。在一个示例性实施例中,可以在本文中使用在5,440,742号美国专利中所公开的用于计算相似度的方法,或者可以使用其它已知的方法。而在另一个示例性实施例中,可以使用在共同拥有的7,530,106号美国专利中公开的安全评级方法来分析未知的对象,该专利以引用的方式并入本文,并且基于指定的安全评级可做出对象是否为恶意的或干净的决定。使用行为模式基因的例子,可通过以下方式执行安全评级分析将未知对象的行为模式划分为几个逻辑块,其中每个块包括可先于跳转(JMP)指令执行的汇编指令的序列(见下文对图8的说明);确定每个块的状况,其中该状况包括恶意的(仅在恶意模式中找到)、干净的(仅在干净模式中找到)、混合的(在恶意和干净模式中均可找到)以及未知的(第一次遇到的块);取决于在行为模式中每个块的状况和出现频率来确定安全评级;以及通过组合所有逻辑块的评级来为整个行为模式计算安全评级。可以基于该对象基因组的整体安全评级来做出该对象是否为恶意的决定。最后,在步骤160,一旦将该未知对象归类为恶意的或干净的,就将分析结果发送至在其上检测该对象的用户计算机,以便配置在用户计算机上的反病毒应用程序能够采取合适的行动。图2图示了用于为恶意软件分析选择相关基因的过程的一个示例。一般而言,该过程是基于将确定对象为恶意的必要时间最小化的。这些方法可以包括而非限定于,分析对象的独特的代码行、分析对象的可操作区域、分析对象的执行路径、分析对象的行为模式、分析对象的执行流程图、分析对象函数调用图表等。然后,基于所选择的分析方法,从该对象中检索该对象合适的信息元素,以生成所有相关基因,诸如独特的代码行基因、API调用图表基因、可操作区域基因或其他基因。在一个示例性实施例中,可以使用模糊逻辑来选择分析方法。确定两个语言变量该方法的有效性和为该方法获取输入数据的资源密集度,为每个语言变量确定术语集(term-set),例如{“低”、“中”、“高”}。这里,周期性地对方法的有效性进行复查。然后,可取决于执行该分析的计算机系统的配置类型,例如“低功率”、“中”、“高生产率”,而将这些方法的排序列表划分为不同类别。在第7,925,874号美国专利中公开了这类分析的示例,该专利通过引用的方式并入本发明。由此,基于所选择的方法,可生成最佳的基因集合,该基因集合可由用户计算机系统从正在被分析的对象中提取,并且该基因集合在确定对象是否为恶意时给出最佳结果。图3图示了用于确定方法的最有效的组合的过程,该方法用于分析未知对象及其对应恶意软件存在的基因。该有效性将被定义为成功恶意软件检测的水平和误报检测的水平之间的比率。可以将未知恶意软件的成功检测水平推算为所检测的恶意的对象的数量和恶意的对象的总数量之间的比率。可以以被识别为恶意类型的干净对象的数量和该类型的干净对象的总数之间的比率来计算误报检测的水平。因为在一些情况下,在单独使用时不是最有效的方法却能在组合时给出最好的结果,所以优选地使用恶意软件分析方法的不同组合。图14示出了示例,其中如组合曲线1430所示,将分析方法1410和1420—起使用,提供了在恶意对象的检测有效性方面的非线性增加。如图3中所示,在步骤310,为来自恶意和干净对象的数据库的所有对象生成对象基因组。之后,在步骤320,为每个基因选择至少一个分析方法。然后,在步骤330,生成用于分析每个基因的方法的至少一个组合,之后评估其操作有效性。应当注意,所生成的组合可以包括一个或多个用于分析基因的方法。在步骤340和350,为方法的每一组合确定成功检测的水平和误报检测的水平,以在步骤360测量其相对于每个类型的对象的有效性。图12示出了分析方法的不同组合的有效性示例图。然后,在步骤370比较不同组合的有效性的值,并选择方法的最有效的组合来分析不同类型的对象。由此,基于正在被分析的未知对象的文件类型,例如可执行文件、脚本、后脚本(postscript)文档等,选择分析方法的最有效的组合,并且只生成与所选择的方法相关联的基因。应当注意,恶意软件分析方法的组合的有效性可被周期性地重新评估,这会在其可目度方面提供更相关的目息,并从而会提闻对未知恶意软件的检测质量。此外,随着不同文件类型的未知基因的出现,可以将关联的恶意软件分析方法的有效性的一些标称值输入数据库中。随着与新基因有关的附加信息的收集,用于分析此类型对象的恶意软件分析方法的有效性可被重新评估。当新的文件类型出现以及当对现有基因的分析未给出适当的结果时,也可以发生这一情形。这意味着存在大量的其中对已知基因的分析给出错误结果的情况。随着新文件类型的对象的出现,可能出现生成与此新文件类型相关联的新类型基因的需求。在一个示例性实施例中,也可以对含有关于恶意的和干净的基因组的信息的数据库进行周期性地重新评估。特别地,可以重新评估单独的基因对多个恶意程序的覆盖范围。覆盖范围意为由一个基因辅助所揭示的恶意对象的百分比。如上文所指出,处理方法的组合的有效性能够随时间推移而改变;对于覆盖范围来说也是这样。对于这一改变的评估,可以以指定基因集合的所有覆盖范围的算数平均值来计算基因对多个恶意对象的平均覆盖范围。这里,计算所得值的减少可以证明在基因分析中使用的恶意软件分析方法的有效性的降低,以及需要改变规则以增加新的基因。图4图示了选择计算机的示例性过程,该计算机基于其特征,能够处理对象基因组。在一个示例性实施例中,可将信息存储在中央服务器上,用于网络中的计算机参数以及其操作的时间和持续时段方面的统计数据。例如,与第7,925,874号美国专利所公开的方法相仿,网络计算机的整个集合可基于其生产率水平被划分至组,该第7,925,874号美国专利通过引用的方式并入本发明。此外,取决于在步骤130所选择的方法的资源密集度,确定具有所要求的特征的计算机子集。然后,通过确定网络可访问性(accessibility)的水平再次缩小该子集。这里,网络可访问性应当理解为计算机保持处于网络中的时段、其负荷水平、通信信道的带宽等。这里,如果不能在用户的计算机中找到所要求的对象,可利用反病毒公司的远程服务器起到分析计算机的作用。如果满足指定标准的计算机的数量较大,则可仅选择这些计算机的某一子集。让我们假定,例如,要求找到具有用于分析某一软件对象的平均特征的计算机。图4示出了具有指定参数的计算机的集合,包括计算机2和计算机3。这里,仅有其中的一个,计算机3,具有网络可访问性的平均水平,即接收来自计算机3的响应的概率高于计算机2。从而,在此例子中,仅可选择计算机3来分析未知对象基因组。图5图示了用于实施过程300的计算机系统的示例性架构,该过程300用于确定方法的最有效的组合来分析未知对象以及其对应恶意软件存在的基因。系统500包括多个可由处理器执行的软件模块以及存储在本地或远程存储器中的数据库。特别地,系统500包括模块510,该模块510用于从存储在数据库520中的已知恶意对象和存储在数据库530中的已知干净对象生成不同基因。系统500还含有模块540,该模块540用于基于对象的文件类型形成恶意软件分析方法的不同的组合。方法的可能组合可以以集合{基因I:方法1,基因2:方法5,基因7:方法11,...}来表现。系统500还包括模块550和模块560,该模块550用于计算对已知恶意对象的成功检测水平,该模块560用于计算对分别来自数据库520和数据库530的不同类型的已知恶意的和干净的对象的误报检测水平。该系统500还包括模块570,用于基于从模块550和560获得的数据衡量恶意软件分析方法的组合的有效性。此外,该系统500包括模块580,用于为每个文件类型的软件对象选择恶意软件分析方法的最有效的组合。图6图示了适合实施系统500的计算机系统5的一个示例性实施例,如个人计算机(PC)或应用程序服务器。如图所示,计算机系统5可以包括通过系统总线10连接的一个或多个处理器15、存储器20、一个或多个硬盘驱动器30、光驱35、串行接口40、图形卡45、声卡50和网卡55。系统总线10可以为几种类型的总线结构中的任何一个,包括使用各种已知总线架构中的任意一种的存储器总线或存储器控制器、外围总线和本地总线。处理器15可以包括一个或多个IntelCore2Quad2.33GHz处理器或其他类型的通用微处理器。系统存储器20可以包括只读存储器(ROM)21和随机存取存储器(RAM)23。存储器20可以实施为DRAM(动态RAM)、EPROM、EEPR0M、闪存或其他类型的存储器架构。ROM21存储基本输入/输出系统22(BIOS),该基本输入/输出系统22含有帮助在计算机系统5的组件之间传输信息的基本例程,如在启动过程中。RAM23存储操作系统24(OS),如WindowsXPProfessional或其他类型的操作系统,该操作系统负责在计算机系统5中管理和协调进程,以及分配和共享硬件资源。系统存储器20还存储应用程序和程序25,如服务器306。系统存储器20还存储由程序25使用的各种运行时(runtime)数据26以及关于已知恶意的和干净的对象的信息的各种数据库。计算机系统5可以进一步包括硬盘驱动器30以及光盘驱动器35,该硬盘驱动器30诸如SATA磁性硬盘驱动器(HDD),该光盘驱动器35用于读或写诸如⑶-R0M、DVD_R0M或其他光学介质的可移动光盘。驱动器30和35及其相关联的计算机可读介质提供了对实施本文所公开的算法和方法的计算机可读指令、数据结构、数据库、应用程序以及程序模块/子例程的非易失性存储。尽管示例性的计算机系统5采用磁盘和光盘,本领域技术人员应当理解,在计算机系统的替代实施例中,还可以使用可存储计算机系统5可访问数据的其他类型的计算机可读介质,如磁带盒、闪存卡、数字视频盘、RAM、R0M、EPR0M以及其他类型的存储器。计算机系统5进一步包括例如通用串行总线(USB)的多个串行端口40,用于连接如键盘、鼠标、触控板及其它类型的数据输入设备75。串行端口40还可以用来连接诸如打印机、扫描仪及其它类型的数据输出设备80以及例如外部数据存储设备等的其它外围设备85。系统5还可以包括图形卡45,如nVidiaGeForceGT240M或其他视频卡,用于与监视器60或其他视频再现设备接合。系统5还可以包括声卡50,用于经由内部或外部扬声器65再现声音。此外,系统5可以包括网卡55,诸如以太网、WiFi、GSM、蓝牙或其他有线、无线或蜂窝网络接口,用于将计算机系统5连接至如因特网的网络70。图7图示了蠕虫程序的执行路径基因的一部分的例子。在阶段710,计算机系统的网络地址通过其名称进行定义,并将行“mxl.mail,yahoo,com”作为参数传送。然后,在阶段720,尝试与其建立连接,该连接成功地完成。之后,完成数据的接收730,然后在阶段740计算该数据的长度,然后将其发送至阶段750。由此,从程序的执行路径可以清楚在程序执行过程中调用了什么函数及其什么参数,这已证明对于分析程序的恶意性是有用的。图8图示了木马(Trojan-horse)程序的示例性程序流程基因。如图所示,顶点(vertices)为在JMP指令之前执行的汇编函数的集合。当且仅当有从顶点中的一个至另一个的调用时将两个顶点通过边(edge)连接。这里,可对无条件转移810和有条件转移820都加以记录。对于有条件转移820,总是存在被满足或未被满足的某个假设。例如,记录“jnzshortloc_40686B”意为如果标记ZF的值不为零,则转移至区域loc_40686B。图9图示了蠕虫程序的函数调用图表的一部分。在此情况下,顶点为高级语言的某些规程或函数,例如“Openfile(打开文件)”。从其中分离出标准函数或API函数920,以及独特的函数910是可能的,该独特的函数910是由实际的程序员为自己写的。如果有从一个函数至另一个函数的调用时,边将两个顶点连接起来。例如,在函数Sub_401463中,函数RegQueryValueExA、Sub_401031、RegCloseKey等被调出,即有从顶点Sub_401463至RegQueryValueExA>Sub_401031和RegCloseKey的边。图10图示了可执行文件的示例性可操作区域基因。在一个示例性实施例中,选择数据头、在随机存储器中程序的执行开始处(入口点)的地址、指向主函数的指针以及指向执行的末尾的指针,作为文件的代表性信息元素列入基因中。此外,在指定部分的之前和之后分别各取出4KB的数据。由此生成32KB的信息,该32KB的信息存储在随机存取存储器中,并且由其引发进一步的操作。这一方法将用于处理文件的时间最小化,这是因为在计算机中直接在硬盘驱动器上访问对象是非常慢的操作,而使用随机存取存储器来操作则要快得多。图11图示了PDF文件的结构。所描述的格式暗指存在以“%HF”开始的数据头1110。进一步地,在文件1120中有被动式和主动式内容的列表,除了其他方面之外,为该被动式和主动式内容指定了其数量和类型以及对其编码所用的方法。每个对象的末尾由特殊的标志指明。在交叉引用表1130中,将引用指示至文档中的其他内容,并且在下一个片段1140中,规定了用于将此表格解码的规则。区域1150示出了文档的末尾,该文档的末尾由EOF”符号的序列标记。图12图示了确定在对未知对象的分析中所使用的恶意软件分析方法的有效性的示例。将该有效性的值指定在O和I之间。在一个示例性实施例中,此值能够凭经验确定。例如,考虑指定类型的恶意的和干净的对象的集合,并生成该集合的每个元素所要求的基因。然后,使用所选择的方法分析基因。基于处理的结果,做出对象是否为恶意的决定。由此,在最后的步骤中,获得经识别为恶意的对象的集合X。然后,处理未知对象的有效性能够从以下公式计算出来-■如果--■O,否则其中k为处理未知对象的方法的有效性,|xb|-经识别为恶意的恶意对象的数量,IxwI-经识别为恶意的干净对象的数量,以及B和W-分别为恶意对象和干净对象的指定数量。如前文所述,所描述的用于确定恶意软件分析方法的有效性的过程可被周期性的执行,以生成最新的评估。图13A图示了被对两个恶意对象逐行比较的方法所欺骗的例子。图中示出了两个木马程序的两个代码行集合,这两个集合具有相同的功能,但具有不同的文件名称。由此,两个对象均进行相仿的恶意行为,但是当比较其代码行以精确匹配时,却确认实际上所有行都是不同的。由此,如果精确的逐行比较没有给出肯定的(positive)结果,可以使用上文所描述的近似字符串匹配。图13B图示了阻止使用分析程序的函数调用图表对恶意对象进行检测的代码模糊处理的示例。在被调用函数的指定列表中,计算机犯罪(criminals)已包括了不影响程序最终结果的虚拟代码(dummycode)0由于函数调用图表过于不相仿,因此无法直接比较所提供的函数调用图表来将该程序识别为已知的恶意软件。因此,这一垃圾指令使得使用调用图表分析来检测未知恶意软件变得很困难,转而应当使用其它的恶意软件分析方法。图14图示了两个分别用于分析基因的方法1410和1420的组合1430的操作的示例。这里未知恶意对象的成功检测水平沿纵坐标设置,误报检测水平沿横坐标设置。由此可见,单独用于基因A的恶意软件分析方法1410和单独用于基因B的恶意软件分析方法1420并不具有高有效性,但是存在其联合的应用1430的有效性显著地超过这两个方法中的每一个单独使用的有效性以及其组合有效性的情形。在各种实施例中,本文描述的算法和方法可以实现于硬件、软件、固件或者其任意组合中。如果在软件中实现,这些功能可以作为一个或者多个指令或者代码在非暂时性计算机可读介质上存储。计算机可读介质既包括计算机存储介质也包括通信介质,所述通信介质有利于从一个地方向另一个地方传送计算机程序。存储介质可以是能够被计算机访问的任何可用的介质。作为示例而非限制,这种计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储器、磁盘存储器或其它磁性存储设备、或者任何能够用于以指令或者数据结构的形式承载或者存储所需的程序代码并且可被计算机访问的其它介质。而且,任何连接都可以被称为计算机可读介质。例如,如果利用同轴电缆、光缆、双绞线、数字用户线(DSL)或者诸如红外、射频和微波这类无线技术从网站、服务器或者其它远程信源发送软件,那么介质的定义包括该同轴电缆、光缆、双绞线、数字用户线(DSL)、或者诸如红外、射频和微波这类无线技术。为了清楚起见,没有显示并描述本文所述的实施例的所有常规特征。应该理解的是,在任何这种实际的实现方式的开发中,为了达到开发者的特定目标,必须做出大量特定的实现方式的决定,而且,这些特定目标会因实现方式的不同和开发者的不同而变化。应该理解的是,这样的开发工作可能是复杂且费时的,但不论如何,对于受益于本申请的一般技术人员而目,都将是常规的工程任务。而且,可以理解的是,本文使用的措辞和术语用于描述的目的而非限制,以使本说明书的术语或者措辞可由本领域技术人员在本文提出的教导和指导下结合相关领域技术人员的知识做出解释。而且,除非像这样明确地予以阐述,否则说明书中或者权利要求中的任何术语都并非意图表示不常见的或者特殊的意思。本文公开的各种实施例包括本文通过说明方式提到的已知组件的现在和将来已知的等同物。而且,尽管已经示出和描述了实施例和应用程序,但对受益于本文公开的内容的本领域技术人员来说显而易见的是,在不脱离本文公开的发明构思的情况下,比上述提及到的多个修改例都是可能的。权利要求1.一种用于检测未知恶意软件的方法,所述方法包括为多个已知恶意的和干净的对象的每一个生成至少一个对象基因,其中对象基因为包含从对象中检索的或与对象相关联的多个信息元素的数据结构;使用一个或多个恶意软件分析方法来分析每个对象基因;基于通过所述方法对所述已知恶意对象的基因的分析来计算通过一个恶意软件分析方法或者两个或多个恶意软件分析方法的组合对恶意对象的成功检测水平;基于通过所述方法对已知干净对象的基因的分析来计算通过一个恶意软件分析方法或者两个或多个恶意软件分析方法的组合对干净对象的误报检测水平;以所述已知恶意对象的所述成功检测水平和所述已知干净对象的所述误报检测水平的函数来衡量恶意软件分析方法的每一个或所述组合的有效性;以及选择最有效的恶意软件分析方法的一个或者组合来分析未知对象是否存在恶意软件。2.如权利要求I所述的方法,进一步包括识别所述未知对象的文件类型;基于所述对象的所述文件类型,选择所述最有效的恶意软件分析方法的所述一个或所述组合;为每个所选择的恶意软件分析方法,生成所述未知对象的基因;使用所述所选择的恶意软件分析方法来分析所述未知对象的所述基因;基于使用所述所选择的恶意软件分析方法对所述对象基因的分析的结果,确定所述未知对象是恶意的或干净的。3.如权利要求I所述的方法,其中所述恶意软件分析方法的有效性水平定义为已知恶意对象的所述成功恶意软件检测水平与已知干净对象的所述误报检测水平的比率。4.如权利要求I所述的方法,其中使用恶意软件分析方法的已知恶意对象的所述成功检测水平定义为使用所述方法检测到的已知恶意对象的数量与已知恶意对象的总数量之间的比率。5.如权利要求I所述的方法,其中使用恶意软件分析方法的已知干净对象的所述误报检测水平定义为使用所述方法识别为恶意的干净对象的数量与已知干净对象的总数量之间的比率。6.如权利要求I所述的方法,其中所述恶意软件分析方法包括以下各项中的一个或多个分析所述对象的独特的代码行、分析所述对象的可操作区域、分析所述对象的执行路径、分析所述对象的行为模式、分析程序流程图以及分析所述对象的函数调用图表。7.根据权利要求I所述的方法,其中使用所述恶意软件分析方法分析对象基因进一步包括以下各项中的一个或多个对所述对象基因的信息元素的模式与和已知恶意的或干净的对象相关联的信息元素的模式执行精确匹配分析;对所述对象基因的所述信息元素与和已知恶意的或干净的对象相关联的信息元素的模式执行近似字符串匹配;通过分别评估所述信息元素的各自逻辑块的恶意性,对所述对象基因的所述信息元素执行安全评级分析。8.一种用于检测未知恶意软件的系统,所述系统包括存储器,其经配置以存储多个已知恶意的和干净的对象;处理器,其耦合至所述存储器,并经配置以为多个已知恶意的和干净的对象的每一个生成至少一个对象基因,其中对象基因为包含从对象中检索的或与对象相关联的多个信息元素的数据结构;使用一个或多个恶意软件分析方法来分析每个对象基因;基于通过所述方法对所述已知恶意对象的基因的分析来计算通过一个恶意软件分析方法或者两个或多个恶意软件分析方法的组合对恶意对象的成功检测水平;基于通过所述方法对已知干净对象的基因的分析来计算通过一个恶意软件分析方法或者两个或多个恶意软件分析方法的组合对干净对象的误报检测水平;以所述已知恶意对象的所述成功检测水平和所述已知干净对象的所述误报检测水平的函数来衡量恶意分析方法的每一个或所述组合的有效性;以及选择最有效的恶意软件分析方法的一个或组合来分析未知对象是否存在恶意软件。9.如权利要求8所述的系统,其中所述处理器进一步经配置以识别所述未知对象的文件类型;基于所述对象的所述文件类型,选择所述最有效的恶意软件分析方法的所述一个或所述组合;为每个所选择的恶意软件分析方法,生成所述未知对象的基因;使用所述所选择的恶意软件分析方法来分析所述未知对象的所述基因;基于使用所述所选择的恶意软件分析方法对所述对象基因的分析的结果,确定所述未知对象是恶意的或干净的。10.如权利要求8所述的系统,其中所述恶意软件分析方法的有效性水平定义为已知恶意对象的所述成功恶意软件检测水平与已知干净对象的所述误报检测水平的比率。11.如权利要求8所述的系统,其中使用恶意软件分析方法的已知恶意对象的所述成功检测水平定义为使用所述方法检测到的已知恶意对象的数量与已知恶意对象的总数量之间的比率。12.如权利要求8所述的系统,其中使用恶意软件分析方法的已知干净对象的所述误报检测水平定义为使用所述方法识别为恶意的干净对象的数量与已知干净对象的总数量之间的比率。13.如权利要求8所述的系统,其中所述恶意软件分析方法包括以下各项中的一个或多个分析所述对象的独特的代码行、分析所述对象的可操作区域、分析所述对象的执行路径、分析所述对象的行为模式、分析程序流程图以及分析所述对象的函数调用图表。14.如权利要求8所述的系统,其中为了使用所述恶意软件分析方法分析对象基因,所述处理器进一步经配置以执行以下各项中的一个或多个对所述对象基因的信息元素的模式与和已知恶意的或干净的对象相关联的信息元素的模式的精确匹配分析;对所述对象基因的所述信息元素与和已知恶意的或干净的对象相关联的信息元素的模式的近似字符串匹配;以及通过分别评估所述信息元素的各自逻辑块的恶意性,对所述对象基因的所述信息元素的安全评级分析。全文摘要本发明公开了用于检测未知恶意软件的系统、方法和计算机程序产品。该方法包括为已知恶意的和干净的对象生成基因;使用不同的恶意软件分析方法分析对象基因;基于对已知恶意对象的基因的分析来计算通过恶意软件分析方法的一个或组合对恶意对象的成功检测水平;基于对已知干净对象的基因的分析来计算通过恶意软件分析方法的一个或组合对干净对象的误报检测水平;以成功检测水平和误报检测水平的函数来衡量恶意分析方法的每一个或组合的有效性;以及选择最有效的恶意软件分析方法的一个或组合来分析未知对象是否存在恶意软件。文档编号G06F21/56GK102592079SQ20111044219公开日2012年7月18日申请日期2011年12月26日优先权日2010年12月30日发明者尤里·V·马舍夫斯基,罗曼·瓦西连科申请人:卡巴斯基实验室封闭式股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1