模糊列入白名单反恶意软件系统及方法

文档序号:6497790阅读:268来源:国知局
模糊列入白名单反恶意软件系统及方法
【专利摘要】在一些实施例中,反恶意软件系统考虑非恶意数据对象之间的良性差异,例如由编译器及其它多态性引入的差异。将目标对象分离成众多代码块,且针对每一代码块计算散列。接着,将所获得目标散列集与对应于从列入白名单的对象提取的代码块的散列的数据库进行比较。如果目标对象具有与列入白名单的对象共有的显著数目个散列,那么可将其标记为列入白名单的(被信赖的、非恶意的)。略微不同于已知列入白名单的对象的对象仍可接收白名单状态。通过允许相异对象的散列集之间的特定程度的不匹配,本发明的一些实施例在不使安全性降低到不可接受程度的情况下增加列入白名单的效率。
【专利说明】模糊列入白名单反恶意软件系统及方法
[0001]相关申请案的交叉参考
本申请案主张于2011年11月2日提出申请的第61/554,859号美国临时专利申请案的 申请日期:的权益,所述临时专利申请案特此以全文引用方式并入。
【背景技术】
[0002]本发明涉及用于保护用户免受恶意软件破坏的系统及方法,且特定来说涉及软件列入白名单。
[0003]恶意软件(还称为恶意软件(malware))影响全世界的大量计算机系统。在其许多形式(例如计算机病毒、蠕虫、特洛伊木马及rootkit)中,恶意软件对数百万计算机用户呈现出严重风险,使他们易于遭受数据损失、身份盗用及生产力损失等等。
[0004]专用于恶意软件扫描的计算机程序采用从用户计算机系统检测及消除恶意软件的各种方法。此类方法包含基于行为的技术及基于内容的技术。基于行为的方法可涉及允许被怀疑程序在经隔离虚拟环境中执行,从而识别恶意行为并阻挡冒犯程序的执行。在基于内容的方法中,通常将被怀疑文件的内容与已知恶意软件识别签名的数据库进行比较。如果在被怀疑文件中找到已知恶意软件签名,那么将所述文件标记为恶意的。
[0005]打击恶意软件的其它方法采用应用程序白名单,其包括维持在用户的计算机系统上允许的软件及行为的列表,及阻挡执行所有其它应用程序。此类方法对多态恶意软件特别有效,多态恶意软件能够随机地修改其恶意软件识别签名,从而使常规基于内容的方法无效。
[0006]一些列入白名单应用采用散列值来识别并确保列入白名单的软件的完整性。可针对隶属于列入白名单的应用程序的文件或文件群组创建加密散列并进行存储以供参考。接着,通过将所存储散列与在运行时产生的新散列进行比较而验证相应应用程序。
[0007]反恶意软件列入白名单方法的性能可取决于以高效且灵活方式维持并更新白名单数据库的能力。

【发明内容】

[0008]根据一个方面,一种方法包括:在客户端计算机系统处执行所述客户端计算机系统的多个目标对象的初始恶意软件扫描;及响应于通过所述初始恶意软件扫描做出的所述目标对象被怀疑为恶意的初步确定:在所述客户端计算机系统处产生所述目标对象的多个目标散列,每一目标散列表示所述目标对象的相异代码块,每一相异代码块由所述目标对象的处理器指令序列组成;经由广域网将所述多个目标散列从所述客户端计算机系统发送到连接到所述客户端计算机系统的服务器计算机系统;及在所述客户端计算机系统处从所述服务器计算机系统接收所述目标对象是否为恶意的服务器侧指示符。所述服务器侧指示符由所述服务器计算机系统通过以下操作产生:针对所述多个目标散列中的至少一目标散列,检索参考对象的多个参考散列,所述参考对象选自根据所述目标散列的一组列入白名单的对象,且当所述多个目标散列不完全相同于所述多个参考散列时,根据所述多个目标散列与所述多个参考散列两者共有的散列计数确定相似度得分;及当所述相似度得分超过预定阈值时,将所述目标对象指定为非恶意的。
[0009]根据另一方面,一种方法包括:经由广域网在服务器计算机系统处接收连接到所述服务器计算机系统的客户端计算机系统的目标对象的多个目标散列;在所述服务器计算机系统处产生所述目标对象是否为恶意的服务器侧指示符;及将所述目标对象是否为恶意的所述服务器侧指示符发送到所述客户端计算机系统。所述多个目标散列是在所述客户端计算机系统处响应于由所述客户端计算机系统做出的所述目标对象被怀疑为恶意的初步确定而产生的,所述初步确定由所述客户端计算机系统的多个目标对象的初始恶意软件扫描而引起。在所述服务器计算机系统处产生所述目标对象是否为恶意的服务器侧指示符包括:针对所述多个目标散列中的至少一目标散列,检索参考对象的多个参考散列,所述参考对象选自根据所述目标散列的一组列入白名单的对象,且当所述多个目标散列不完全相同于所述多个参考散列时,根据所述多个目标散列与所述多个参考散列两者共有的散列计数确定相似度得分;及当所述相似度得分超过预定阈值时,将所述目标对象指定为非恶意的。
[0010]根据另一方面,一种方法包括:在服务器计算机系统处接收目标对象的多个目标散列,每一目标散列表示所述目标对象的相异代码块,每一相异代码块由所述目标对象的处理器指令序列组成;针对所述多个目标散列中的至少一目标散列,采用所述服务器计算机系统来:检索参考对象的多个参考散列,所述参考对象选自根据所述目标散列的一组列入白名单的对象,且当所述多个目标散列不完全相同于所述多个参考散列时,根据所述多个目标散列与所述多个参考散列两者共有的散列计数确定相似度得分;及当所述相似度得分超过预定阈值时,采用所述服务器计算机系统来将所述目标对象标记为非恶意的。
[0011]根据另一方面,一种计算机系统包括至少一处理器,所述处理器经编程以:接收多个目标散列,每一目标散列表示目标对象的相异代码块,每一相异代码块由所述目标对象的处理器指令序列组成;针对所述多个目标散列中的至少一目标散列:检索参考对象的多个参考散列,所述参考对象选自根据所述目标散列的一组列入白名单的对象,且当所述多个目标散列不完全相同于所述多个参考散列时,根据所述多个目标散列与所述多个参考散列两者共有的散列计数确定相似度得分;及当所述相似度得分超过预定阈值时,将所述目标对象标记为非恶意。
[0012]根据另一方面,一种非暂时性计算机可读存储媒体编码指令,所述指令在于处理器上执行时致使所述处理器执行以下步骤:接收多个目标散列,每一目标散列表示目标对象的相异代码块,每一相异代码块由所述目标对象的处理器指令序列组成;针对所述多个目标散列中的至少一目标散列,检索参考对象的多个参考散列,所述参考对象选自根据所述目标散列的一组列入白名单的对象;当所述多个目标散列不完全相同于所述多个参考散列时,根据所述多个目标散列与所述多个参考散列两者共有的散列计数确定相似度得分。当所述相似度得分超过预定阈值时,所述目标对象为非恶意的。
[0013]根据另一方面,一种计算机系统包括:用于接收多个目标散列的构件,每一目标散列表示目标对象的相异代码块,每一相异代码块由所述目标对象的处理器指令序列组成;用于检索参考对象的多个参考散列的构件,所述参考对象选自根据所述多个目标散列的所选择目标散列的一组列入白名单的对象;用于根据所述多个目标散列与所述多个参考散列两者共有的散列计数确定相似度得分的构件;及用于根据所述相似度得分将所述目标对象标记为非恶意的构件。
[0014]根据另一方面,一种方法包括:在服务器计算机系统处接收多个目标散列,每一目标散列表示目标对象的相异数据块,每一相异代码块由所述目标对象的处理器指令序列组成;响应于接收到所述多个目标散列,检索表示列入白名单的数据对象的多个参考散列,且当所述多个目标散列不完全相同于所述多个参考散列时,当所述多个目标散列与所述多个参考散列共享大多数项目时,将所述目标对象标记为非恶意的。
【专利附图】

【附图说明】
[0015]将在阅读以下实施方式后且在参考图式后更好地理解本发明的前述方面及优点,在图式中:
[0016]图1展示根据本发明的一些实施例的示范性反恶意软件系统。
[0017]图2图解说明根据本发明的一些实施例的客户端计算机系统的示范性硬件配置。
[0018]图3展示根据本发明的一些实施例的反恶意软件服务器系统的示范性硬件配置。
[0019]图4展示根据本发明的一些实施例的在客户端计算机系统上执行的示范性反恶意软件应用程序的图式。
[0020]图5展示根据本发明的一些实施例的在反恶意软件服务器系统上执行的示范性应用程序。
[0021]图6图解说明根据本发明的一些实施例的由图4的客户端反恶意软件应用程序执行的示范性步骤序列。
[0022]图7展示根据本发明的一些实施例的代码正规化的实例。
[0023]图8展示根据本发明的一些实施例的处理器指令的示范性存储器表示。
[0024]图9展示根据本发明的一些实施例的示范性代码块及对应于代码块的示范性操作码模式。
[0025]图10图解说明根据本发明的一些实施例的包括多个代码块的示范性代码片段及对应于代码片段的示范性对象数据指示符(ODI)。
[0026]图11展示根据本发明的一些实施例的由图5的服务器反恶意软件应用程序执行的示范性步骤序列。
【具体实施方式】
[0027]在以下说明中,应理解,结构之间的所有所叙述连接可为直接操作连接或通过中间结构的间接操作连接。一组元素包含一或多个元素。对一元素的任一叙述应理解为指至少一个元素。多个元素包含至少两个元素。除非另有需要,否则不必以特定所图解说明的次序执行任何所描述方法步骤。从第二元素导出的第一元素(例如,数据)涵盖等于所述第二元素的第一元素以及通过处理所述第二元素而产生的第一元素及任选地其它数据。根据参数做出确定或决策涵盖根据所述参数及任选地根据其它数据做出所述确定或决策。除非另有规定,否则某一数量/数据的指示符可为所述数量/数据本身或不同于所述数量/数据本身的指示符。本发明的一些实施例中所描述的计算机程序可为其它计算机程序的独立式软件实体或子实体(例如,子例程、代码对象)。除非另有规定,否则目标对象为驻存于客户端计算机系统上的文件或进程。目标对象的识别符包括允许目标对象本身的选择性识别及检索而不仅为较大数据结构(例如客户端计算机系统的完整存储器)的一部分的数据。除非另有规定,否则目标对象的对象数据指示符(ODI)包括目标对象数据(例如,代码块、操作码模式、散列)的有利于确定目标对象是否为恶意(例如,被恶意软件感染)的特征。除非另有规定,否则散列为散列函数的输出。散列函数为将符号序列(例如,字符、位)映射成较短数值或位串序列的数学变换。目标散列为对目标对象的数据计算的散列。除非另有规定,否则术语列入白名单应理解为意指被信赖为干净(即,不含有恶意软件)的。当第一组的所有元素含在第二组中且第二组的所有元素含在第一组中时,所述第一组与所述第二组完全相同。计算机可读媒体涵盖非暂时性媒体(例如磁性、光学及半导体存储媒体(例如,硬驱动器、光盘、快闪存储器、DRAM))以及通信链路(例如导电电缆及光纤链路)。根据一些实施例,本发明除其它之外还提供包括经编程以执行本文中所描述的方法的硬件(例如,一或多个处理器)的计算机系统以及编码指令以执行本文中所描述的方法的计算机可读媒体。
[0028]以下说明通过实例且不必通过限制方式图解说明本发明的实施例。
[0029]图1展示根据本发明的一些实施例的示范性恶意软件检测系统10。系统10包括一组反恶意软件(AM)服务器系统20a到20c及一组客户端计算机系统30a到30b。客户端计算机系统30a到30b可表示各自具有处理器、存储器及存储装置且运行例如Windows?, MacOS?或Linux的操作系统的终端用户计算机。一些客户端计算机系统30a到30b可表示移动计算及/或电信装置,例如平板PC及移动电话。在一些实施例中,客户端计算机系统30a到30b可表示个别顾客,或数个客户端计算机系统可属于同一顾客。在一些实施例中,系统30a到30b中的一者可为服务器计算机(例如邮件服务器),在所述情形中,可使用恶意软件检测服务来识别存在于电子邮件或发送到多个客户端的其它消息中的恶意软件且在将所述消息递送到客户端之前采取适当行动(例如,移除或隔离受恶意软件感染的项目)。网络12连接客户端计算机系统30a到30c与反恶意软件服务器系统20a到20c。网络12可为广域网,例如因特网。网络12的部分(举例来说,网络12的互连客户端计算机系统30a到30b的一部分)还可包含局域网(LAN)。
[0030]图2展示客户端计算机系统30的示范性硬件配置。在一些实施例中,系统30包括处理器24、存储器单元26、一组输入装置28、一组输出装置32、一组存储装置34及通信接口控制器36,其全部由一组总线38连接。
[0031]在一些实施例中,处理器24包括经配置以执行一组信号及/或数据的计算及/或逻辑运算的物理装置(例如,多核心集成电路)。在一些实施例中,此类逻辑运算以处理器指令序列(例如,机器代码或其它类型的软件)的形式递送到处理器24。存储器单元26可包括存储由处理器24在执行指令的过程中存取或产生的数据/信号的易失性计算机可读媒体(例如,RAM)。输入装置28可包含允许用户将数据及/或指令引入到系统30中的计算机键盘及鼠标等等。输出装置32可包含显示装置,例如监视器。在一些实施例中,输入装置28与输出装置32可共享一件共用硬件,如在触屏装置的情形中。存储装置34包含实现软件指令及/或数据的非易失性存储、读取及写入的计算机可读媒体。示范性存储装置34包含磁盘及光盘以及快闪存储器装置,以及可装卸式媒体,例如CD及/或DVD磁盘及驱动器。通信接口控制器36使得系统30能够连接到计算机网络及/或其它机器/计算机系统。典型通信接口控制器36包含网络适配器。总线38共同表示多个系统、外围及芯片集总线及/或实现计算机系统30的装置24到36的互相通信的所有其它电路。举例来说,总线38可包括将处理器24连接到存储器26的北桥总线及/或将处理器24连接到装置28到36的南桥总线等等。
[0032]图3展示根据本发明的一些实施例的系统20a到20c的示范性AM服务器系统20的硬件配置。AM服务器系统20可为计算机系统,其包括服务器处理器124、服务器存储器126、一组服务器存储装置134及服务器通信接口控制器136,其全部经由一组服务器总线138彼此连接。虽然硬件配置的一些细节可在服务器系统20与客户端计算机系统30之间不同,但装置124、126、134、136及138的范围可分别类似于上文所描述的装置24、26、34、36及38的范围。
[0033]客户端计算机系统30可包含客户端反恶意软件(AM)应用程序40及客户端侧高速缓冲存储器56,如图4中所展示。在一些实施例中,客户端AM应用程序40可为独立式应用程序,或可为具有反病毒、防火墙、反垃圾邮件及其它模块的安全套件的反恶意软件模块。客户端AM应用程序可包括主动AM扫描仪42、静态AM扫描仪44、连接到静态AM扫描仪44的仿真器46、连接到扫描仪42及44的代码正规化引擎48、客户端AM通信管理器52以及连接到通信管理器52及代码正规化引擎48的散列引擎54。
[0034]在一些实施例中,客户端AM应用程序40经配置以进行客户端-服务器协作扫描的客户端侧部分以检测存储于形成客户端计算机系统30的一部分的计算机可读媒体(例如,存储器、硬驱动器)上或连接到系统30的计算机可读媒体(例如,存储卡、外部硬驱动器、网络装置等)上的恶意软件。作为客户端-服务器协作扫描的一部分,客户端AM应用程序40经配置以将目标对象数据指示符(ODI) 100发送到AM服务器系统20a到20c且从系统20a到20c接收扫描报告50。
[0035]由AM应用程序40扫描的目标对象包含计算机文件及进程。每一进程可包含一组经加载存储器模块(即,目标可执行文件及其所参考动态链接库的经加载图像)以及对应于经加载存储器模块的任何额外文件。如果目标对象含有恶意软件实体(例如,病毒、蠕虫、特洛伊)的至少一部分,那么可将其视为恶意软件。
[0036]在一些实施例中,0DI100包括多个代码块指示符,每一代码块指示符指示目标对象的相异代码块。将关于图7到9详细地论述0DI100的示范性内容及格式。
[0037]在一些实施例中,扫描报告50包含目标对象的识别符(例如,标签、文件ID),目标对象的恶意软件状态指示符(例如,被感染、干净、未知)及/或感染目标对象的恶意软件代理的一组识别符(例如个别恶意软件代理的名称(例如,Win32.Worm.Downadup.Gen)、恶意软件类别指示符(病毒、rootkit等)或恶意软件知识库中的相应代理的指针)。在一些实施例中,可针对一批目标对象编译单个扫描报告。
[0038]在一些实施例中,服务器通信管理器52经配置以管理与服务器AM系统20a到20c的通信。举例来说,管理器52可建立经由网络12的连接,向AM服务器20a到20c发送数据/从AM服务器20a到20c接收数据,维持进行中的扫描事物的列表,及使目标0DI100与执行服务器侧扫描的AM服务器相关联。
[0039]主动AM扫描仪42及静态AM扫描仪44使得客户端AM应用程序40能够运行目标对象的初步反恶意软件扫描,如下文更详细地展示。如果所述初步扫描检测到恶意内容,那么直接向用户报告冒犯目标对象,而不必经历客户端-服务器扫描,因此节省时间及计算机资源。在一些实施例中,文件目标对象由静态AM扫描仪44处置,而进程目标对象由主动AM扫描仪42处置。在一些实施例中,静态AM扫描仪44可使用仿真器46来拆开文件且除主要存储器之外还在经保护环境中执行文件。扫描仪42、44可使用基于行为的方法、各种启发法、基于内容的方法(例如,签名匹配)或其组合来确定目标对象是否为恶意软件。用于确定目标对象是否为恶意的启发式准则的实例除其它之外还包括目标对象的便携式可执行(PE)文件中的各种区段的相对大小、每一区段中的信息密度、PE标题中的特定旗标及旗标群组的存在、关于打包器/保护器(如果有的话)的信息及在可执行档内的特定文本模式的存在。
[0040]客户端AM应用程序40可采用代码正规化引擎48及散列引擎54来产生目标0DI100。下文将关于图7论述代码正规化引擎48的操作。散列引擎54经配置以接收操作码模式且产生相应操作码模式的散列,如关于图8到9所展示。在一些实施例中,散列为散列函数(将符号序列(例如,字符、位)映射成数值或位串序列的数学变换)的输出。由散列引擎54采用的示范性散列函数包含循环冗余校验(CRC)、消息摘要(MD)或安全散列(SHA)等等。示范性散列为4字节CRC32。
[0041]客户端侧高速缓冲存储器56的一些实施例包括在任一给定时间,对应于驻存于相应客户端系统30上的目标对象的ODI的储存库,已针对恶意软件扫描了对象。在一些实施例中,高速缓冲存储器56可包括目标对象ODI的散列集;可对从客户端系统30接收的每一 ODI进行散列,其中移除重复散列,且将所得散列存储为相应ODI的独特指示符。高速缓冲存储器56允许恶意软件扫描的加速。如果在客户端高速缓冲存储器56中找到目标对象的ODI或其散列(其指示已对相应目标对象扫描至少一次),那么可直接从高速缓冲存储器56检索所述目标对象的恶意软件状态且向用户报告所述恶意软件状态(其为比执行所述目标对象的新扫描快得多的进程)。针对每一 ODI,高速缓冲存储器56的一些实施例可包括对象识别符(例如,标签、文件ID)及相应目标对象的恶意软件状态的指示符。
[0042]图5展示根据本发明的一些实施例的在AM服务器系统20上执行的示范性应用程序。在一些实施例中,系统20包括服务器AM应用程序60、服务器侧高速缓冲存储器68、白名单数据库65、恶意软件数据库66及爆发数据库67b,其全部连接到AM服务器应用程序60。
[0043]在一些实施例中,AM服务器应用程序60经配置以执行与客户端计算机系统30a到30b的多个恶意软件检测事物。针对每一此类事物,服务器AM应用程序60经配置以进行协作扫描的服务器侧部分以检测驻存于相应客户端计算机系统上的恶意软件,如下文详细地描述。作为客户端-服务器事物的一部分,应用程序60从客户端计算机系统接收目标ODI100,且将扫描报告50发射到相应客户端计算机系统。服务器AM应用程序60可包括服务器AM通信管理器62及连接到通信管理器62的代码比较器64。
[0044]在一些实施例中,服务器通信管理器62经配置以管理与客户端计算机系统30a到30b的通信。举例来说,管理器62可建立经由网络12的连接,向客户端发送数据/从客户端接收数据,维持进行中的扫描事物的列表及使目标ODIlOO与起源客户端计算机系统30a到30b相关联。代码比较器64经配置以计算指示目标对象与存储于数据库65到67中的一组参考对象之间的相似度程度的相似度得分,如下文详细地描述。
[0045]在一些实施例中,服务器侧高速缓冲存储器68包括已针对恶意软件扫描的目标对象的ODI的储存库,ODI在先前客户端-服务器协作扫描的过程中从各种客户端计算机系统30a到30b接收。如下文进一步论述,如果在服务器高速缓冲存储器68中找到目标对象的ODI (其指示已对相应目标对象扫描至少一次),那么可从高速缓冲存储器68检索目标对象的恶意软件状态(例如,干净、被感染等)而不执行目标对象的新扫描。服务器高速缓冲存储器68的一些实施例可与目标ODI —起存储相应目标对象的恶意软件状态(例如,干净、被感染)。
[0046]数据库65到67维持为与当前恶意软件相关的知识的储存库。在一些实施例中,每一数据库65到67包括对应于已知恶意软件状态的参考对象(文件及进程)的集合的一组数据指示符。在一些实施例中,数据库65到67存储呈操作码模式散列(下文关于图7到10进一步描述)的形式的数据。白名单数据库65包含从被信赖为干净(B卩,列入白名单的项目)的对象检索的散列集。恶意软件数据库66包括从已知为恶意软件的对象检索的恶意软件识别散列。在一些实施例中,爆发数据库67包括针对具有未知恶意软件状态(尚未辨识为恶意软件或干净)的对象计算的散列。
[0047]在一些实施例中,存储于数据库65到67中的所有操作码模式散列具有同一大小(例如,4字节)。其可顺序地存储于服务器系统20a到20c的存储器及/或计算机可读媒体中。在一些实施例中,与参考散列集一起存储包括对象识别符(例如,还表示为4字节数值的文件ID)的第二数据结构。使用存储于相应AM服务器的存储器中的双向映射来使每一散列与所述散列从其检索的对象的文件ID相关。此允许服务器AM应用程序选择性地检索参考散列以确定从客户端计算机系统接收的目标对象是否类似于存储于数据库65到67中的任何参考对象。通过添加从客户端计算机系统30a到30b接收的目标对象数据而使数据库65到67保持最新,如下文进一步描述。
[0048]图6展示根据本发明的一些实施例的由客户端AM应用程序40执行的示范性步骤序列。在步骤202中,应用程序40选择目标对象来针对恶意软件进行扫描。在一些实施例中,可由用户直接或间接规定目标对象(按需扫描)。举例来说,用户可指令AM应用程序40扫描特定文件或特定文件夹的内容或者存储于特定计算机可读媒体(例如,CDR0M、快闪存储器装置)上的内容。在存取时扫描期间选择其它示范性目标对象,其中应用程序40经配置以在读取/加载/发射特定类型的文件或进程之前对其进行扫描。在一些实施例中,可出于运行应用程序40的客户端计算机系统的经排程扫描的目的而编译一组目标对象。驻存于运行Microsoft Windows?的客户端系统上的此组示范性目标对象可包含来自WINDIR文件夹的可执行文件、来自WINDIR/系统32文件夹的可执行档、当前运行的进程的可执行档、由当前运行的进程导入的动态链接库(DLL)及所有经安装系统服务的可执行档等等。在一些实施例中,目标对象还可包含由所关注的恶意软件程序(举例来说,被视为最广泛且在起始相应恶意软件扫描时作用的恶意软件程序)定为目标的文件/进程。
[0049]在一些实施例中,使用识别符(例如,文件ID)来独特地标识相应目标对象。所述识别符包括允许目标对象本身(例如,文件或进程)的选择性识别且不作为较大结构(例如,相应客户端计算机系统的完整存储器)的一部分的数据。示范性目标对象识别符包括文件路径及存储器地址等等。所述识别符还允许客户端AM应用程序40选择性地检索目标对象以便计算目标ODIlOO以及明确地执行多个目标对象的客户端-服务器扫描事物。
[0050]在步骤204(图6)中,客户端AM应用程序40可运行目标对象的初步反恶意软件扫描。在一些实施例中,文件目标对象由静态AM扫描仪44处置,而进程目标对象由主动AM扫描仪42处置。扫描仪42、44可使用行为方法(例如,仿真)、各种启发法(例如,目标对象的便携式可执行标题的几何学)、基于内容的方法(例如,签名匹配)或其组合来确定目标对象是否为恶意软件。在一些实施例中,扫描仪42、44可产生目标对象的恶意软件状态的指示符。示范性状态指示符包含恶意的、被怀疑为恶意的及干净的等等。
[0051 ] 在一些实施例中,可在目标对象具有与已知恶意对象共有的一些特征时怀疑所述目标对象为恶意的,但不足以视为恶意软件。示范性可疑特征包含在特定值/值对的目标对象的PE标题内存在、在特定代码序列(例如,检查目标对象是否正在虚拟环境内执行的代码)的目标对象内存在及恶意软件识别文本模式(签名)(例如反恶意软件软件的共用密码及名称及/或路径指示符)的存在等等。其它可疑特征可包括目标对象的特定恶意软件识别行为模式。
[0052]在一些实施例中,扫描仪42、44针对相应目标对象计算恶意软件得分,其中可赋予每一恶意软件识别特征一特定权重。当恶意软件得分超过第一阈值时,可怀疑相应目标对象为恶意的;当所述得分超过第二较高阈值时,可将所述目标对象标记为恶意软件。含有IRC协议特有的串、反病毒程序的名称、常见Windows?密码及漏洞利用(exploit)特有的代码序列的示范性目标对象可接收相对高恶意软件得分,且可因此标记为恶意软件,而仅含有一些反恶意软件应用程序的名称的另一示范性目标对象可接收相对低得分,但可能仍被怀疑为恶意的。
[0053]在步骤206中,应用程序40根据初步恶意软件扫描确定目标对象是否为恶意的。如果不是,那么应用程序40的操作继续进行到下文所描述的步骤210。如果是,那么在步骤208中,AM应用程序40将目标对象标记为恶意软件且相应地在步骤230中更新客户端侧高速缓冲存储器56。接下来,客户端AM应用程序40在步骤232中输出恶意软件扫描的结果。
[0054]在一些实施例中,步骤232可包括发出警告(例如,弹出窗口)以通知用户相应客户端计算机系统可能被感染。或者,应用程序40可将恶意软件扫描记录于系统日志中。AM应用程序40的一些实施例可向用户显示扫描报告,所述报告除其它之外还包括目标对象的名称(或对象识别符)、所检测的恶意软件的类型的指示符及关于相应恶意软件(例如,可能清除方法)的额外信息。
[0055]在步骤210中,客户端AM应用程序40可根据初步扫描的结果(参见上文步骤204)确定目标对象是否被怀疑为恶意的。如果是,那么操作继续进行到下文所论述的步骤212。如果不是,那么在步骤228中,应用程序40可将目标对象标记为非恶意的(干净的)且继续进行到步骤230。
[0056]在步骤212中,当目标对象为文件时,应用程序40可在由仿真器46提供的经保护环境中加载目标文件以移除保护目标对象的代码的任何打包及/或加密层。当目标对象为进程时,应用程序40的操作可跳过步骤212,因为已将目标对象加载到系统存储器中。
[0057]在步骤214中,代码正规化引擎48执行目标对象的代码正规化。编译器可取决于所使用的编译参数、特别是由于代码优化而产生不同于同一源代码块的的机器代码。可由保护器/多态恶意软件引入额外代码变化形式。在一些实施例中,代码正规化包括将形成目标对象的处理器指令集变换成经标准化处理器指令集以移除由编译及/或其它多态性引入的计算机代码的变化形式。示范性代码正规化操作可如下进行:
[0058]1.根据目标对象的特定特征检测用于建立目标对象的编译器。当已知编译器时,确定对象特有代码在目标对象的存储器图像内的位置。当无法确定编译器时,选择代码提取的目标区域以便覆盖尽可能多的潜在对象特有代码位置(例如,进入点、第一区段的开始、所有区段的开始等)。
[0059]2.代码反汇编在于前一步骤中找到的位置处开始。在一些实施例中,代码反汇编遵循代码分支(例如,在x86代码中的JMP/Jxx/CALL)。按顺序处理反汇编指令。作为正规化进程的一部分,使一些指令保持不变且更改其它指令。示范性更改包含:
[0060]a.基于寄存器ID在功能块内出现的次序对其进行替换;
[0061]b.消除常数值及偏移;
[0062]c.用MOV指令替换后续接着POP序列的PUSH ;
[0063]d.用M0V〈item>,O替换将变量/寄存器/存储器地址的值设定为O的序列(例如,X0R〈item>,〈item〉);
[0064]e.分别用一个或两个INC/DEC指令替换I或2的加/减。
[0065]f.分别用JE/JNE指令替换JZ/JNZ指令;
[0066]g.移除函数序言及结尾; [0067]h.移除指令类别CMP、MOV及TEST ;
[0068]1.移除非运算(O的ADD及SUB ;Ν0Ρ等)。
[0069]图7展示根据本发明的一些实施例的代码正规化的实例。从示范性目标对象反汇编的代码片段包括功能块70。在一些实施例中,功能块以I3USH EBP ;M0V EBP,ESP指令序列开始且其以POP EBP结束。根据列示于右边的方案修改来自功能块70的每一行代码(处理器指令)以产生对应经正规化功能块72。
[0070]在步骤216(图6)中,客户端AM应用程序40计算目标对象的对象数据指示符(ODI)。在一些实施例中,ODI包括多个代码块指示符,每一代码块指示符指示目标对象的相异代码块。示范性代码块指示符包括相应代码块的操作码模式。
[0071]在一些实施例中,代码块包括连续处理器指令序列,所述序列从目标对象的经正规化代码提取。在一些实施例中,代码块包括预定代码独立的数目个指令。或者,代码块内的指令的计数在预定范围内变化。示范性代码块包括介于5个与50个之间的连续指令。在一些实施例中,代码块的大小(例如,指令的数目)实质上小于功能块的大小,使得功能块可包括一个以上代码块。在一些实施例中,代码块在功能块的开始处开始或在CALL指令处开始。图7中展示示范性代码块74。
[0072]在一些实施例中,步骤216包括将目标对象分离成若干代码块,及从每一此类代码块提取一组操作码指示符。图8展示处理器指令80 (针对丨mcl? x86,处理器的32位家族图解说明)的示范性二进制存储器表示。在一些实施例中,每一处理器指令作为字节序列(包括一组指令字段(例如前缀字段82a、一对操作码字段82b到82C、Mod/Reg/R/M字段82d及位移/数据字段82e)的序列)存储于存储器中。在一些实施例中,操作码字段82b到82c将指令类型(例如,M0V、PUSH等)编码,而字段82a、82d到82e将各种指令参数(例如,寄存器名称、存储器地址等)编码。在一些实施例(例如x86格式)中,指令字段的字节大小及内容为指令相依的,且因此,x86架构的指令具有变化的长度。图8中所图解说明的指令(X0RCL、12H)包括仅第一操作码字节(XOR的10000000)、Mod/Reg/R/M字节(寄存器CL的11110001)及位移/数据字节(00010010针对12H为二进制的),而其它指令可包括操作码字段或前缀、操作码、Mod、Reg及/或数据字段的其它组合两者。
[0073]图9展示对应于代码块74的示范性操作码模式90。在一些实施例中,操作码模式90为包括一组操作码指示符92的数据结构(例如,字节序列、列表等),每一操作码指示符对应于经正规化代码块74的处理器指令。示范性操作码指示符92包括相应处理器指令的操作码字段的内容,在所述情形中,操作码模式90包括组成相应代码块的指令类型序列。在图9中所图解说明的实施例中,每一操作码指示符92包括操作码字节与参数字节的组合(举例来说,指令I3USH EDX的操作码指示符在十六进制中为52)。
[0074]图10图解说明根据本发明的一些实施例的经正规化代码片段及片段的示范性0DI100。0DI100包括多个代码块指示符104a到104c,每一代码块指示符提供相应代码块74a到74c的摘要(例如,指纹、签名)。示范性代码块指示符104a到104c包括相应操作码模式90a到90c。在一些实施例中,代码块指示符104a到104c分别包括操作码模式90a到90c的散列,如图10中所图解说明。除代码块指示符104a到104c外,ODI100的一些实施例还可包括标识相应目标对象的对象识别符102 (例如,文件ID)及/或目标对象的一组对象特征指示符106。示范性对象特征指示符包括文件大小(例如,130kB)、文件类型的指示符(例如,文件是否为可执行档、DLL等)、目标对象的存储器地址及指示一组反恶意软件启发式测试的结果的一组数值(例如,目标对象是否显示特定恶意软件特有行为或内容)等等。在一些实施例中,对象特征指示符106可由AM扫描仪42到44(例如)在目标对象的初步扫描期间(步骤202)计算。
[0075]为了简化,说明书的其余部分将假设代码块指示符104a到104c包括操作码模式90a到90c的散列。步骤216 (图6)的执行接着如下继续进行。客户端AM应用程序40可将目标对象分离成若干相异代码块(由图10中的代码块74a到74c图解说明)。针对每一代码块74a到74c,应用程序40可继续进行以分别计算操作码模式90a到90c,如图9中所展示。应用程序40可接着调用散列引擎54以计算操作码模式90a到90c的散列以产生相应代码块指示符(即,目标散列)104a到104c。散列引擎54可采用散列算法,例如循环冗余校验(CRC)、消息摘要(MB)或安全散列(SHA)等等。
[0076]在计算目标ODI100之后,在步骤218 (图6)中,客户端AM应用程序40在客户端侧高速缓冲存储器56中执行ODI的查找。如果ODI匹配高速缓冲存储器记录(高速缓冲存储器命中)(其指示已针对恶意软件对相应目标对象扫描至少一次),那么应用程序40继续进行到步骤220以根据高速缓冲存储器记录标记目标对象(例如,干净或恶意软件)且前进到上文所论述的步骤232。
[0077]如果在客户端侧高速缓冲存储器56中不匹配目标ODI100,那么在步骤222中,应用程序40可调用客户端AM通信管理器52以起始客户端-服务器扫描事物。通信管理器52将目标0DI100发射到AM服务器20a到20c,且在步骤224中从服务器20a到20c接收扫描报告50。在一些实施例中,每一 ODI可形成相异客户端-服务器扫描事物的一部分,或可在同一事物内同时发射多个ODI (分批处理)。
[0078]在步骤226中,应用程序40根据扫描报告50确定目标对象是否被列入白名单(干净的)。如果是,那么将目标对象标记为非恶意的(步骤228)。如果根据扫描报告50目标对象为恶意的,那么应用程序40将目标对象标记为恶意软件(步骤208)。
[0079]图11展示根据本发明的一些实施例的由服务器AM应用程序60(图5)执行的示范性步骤序列。在步骤302中,服务器AM通信管理器62从客户端计算机系统30接收目标ODIlOO0在步骤304中,应用程序60在服务器侧高速缓冲存储器68中执行0DI100的查找。如果ODI匹配高速缓冲存储器记录(高速缓冲存储器命中)(其指示已针对恶意软件对相应目标对象扫描至少一次),那么应用程序60继续进行到步骤306以根据高速缓冲存储器记录标记目标对象(例如,干净或恶意软件)。在步骤308中,通信管理器62编译扫描报告50且将报告50发射到相应客户端计算机系统30。
[0080]如果在服务器侧高速缓冲存储器68中找不到0DI100的记录,那么在步骤310中,服务器AM应用程序60对ODI100的散列进行滤波以产生相关散列子集。在一些实施例中,可从0DI100丢弃并非对象特有的操作码模式的散列以改进恶意软件扫描的性能。此类非特有操作码模式(举例来说)对应于拆包器代码(例如,安装器、自提取器)及/或库代码或存在于干净及恶意软件对象两者中。
[0081]在步骤312中,针对0DI100的每一散列,服务器AM应用程序60可查询白名单数据库65以检索含有相应散列的一组列入白名单的参考对象。在一些实施例中,使用基于堆的算法来根据所检索参考对象与目标对象的相似度将其排定等级。
[0082]在步骤314中,服务器AM应用程序60调用代码比较器64以计算表征目标对象与在步骤312中检索的每一列入白名单的参考对象在多大程度上相似的相似度得分。在一些实施例中,根据以下公式计算相似度得分:
[。。83] s[ι]
[0084]其中C表示目标对象与相应参考对象两者共有的散列的数目(计数),Nt表示如上文步骤310中所论述对其进行滤波的目标ODI的散列的数目(计数),且其中Nk表示参考对象的散列的数目(计数)。
[0085]替代实施例可根据例如以下各项的公式计算相似度得分:
[0086]S = 200*C/ (Nt+Ne) [2]
[0087]或
[0088]S = 50* (C/Nt+C/Ne) [3]
[0089]在步骤316中,应用程序60将相似度得分(例如,公式[I])与预定阈值进行比较。当相似度得分超过阈值时(其指示目标对象类似于至少一个列入白名单的对象),服务器AM应用程序60的一些实施例可在步骤318中将目标对象标记为非恶意的(干净的)。列入白名单阈值的示范性值为50,从而指示当目标对象与列入白名单的对象共享其操作码模式的50%时其被列入白名单。
[0090]接下来,步骤320用当前目标对象的记录更新白名单数据库65,且步骤322用目标对象的记录及扫描结果(例如,干净)的指示符更新服务器侧高速缓冲存储器68。
[0091]当列入白名单相似度得分(步骤318)不超过阈值时(其指示目标对象不充分类似于任何已知列入白名单的对象),服务器AM应用程序继续移动到步骤324,其中将目标0DI100与恶意软件对象的一组记录进行比较。在一些实施例中,进一步对0DI100的散列集进行滤波以从白名单数据库65 (参见上文步骤312)移除匹配记录的所有散列,因此保留未在任何已知列入白名单的对象中找到的散列子集。针对目标对象的每一此类未辨识的散列,代码比较器64可查询恶意软件及/或爆发数据库66到67以检索含有相应散列的一组恶意软件对象。在步骤326中,代码比较器64可接着继续进行以计算指示目标对象与每一此类恶意软件对象在多大程度上相似的恶意软件相似度得分。在一些实施例中,代码比较器64使用上文所描述的公式[I到3]中的任一者来计算恶意软件相似度得分。
[0092]步骤328将恶意软件相似度得分与预设定阈值进行比较。当恶意软件相似度得分超过阈值时(其指示目标对象类似于存储于数据库66到67中的至少一个恶意软件对象),在步骤330中,将目标对象标记为恶意软件。作为恶意软件的类别的示范性阈值为70(SP,目标对象与已知恶意软件对象共享操作码模式的至少70% )。接下来,更新恶意软件及/或爆发数据库66到67以包含目标对象的记录。服务器侧高速缓冲存储器68经更新以包含目标对象的记录及其恶意软件状态(例如,被感染)的指示符,且编译扫描报告并将其发射到客户端计算机系统(步骤308)。
[0093]当恶意软件相似度得分不超过阈值时(其指示目标对象不类似于已知恶意软件对象),服务器AM应用程序的一些实施例可将目标对象标记为列入白名单的/非恶意的(步骤318),且相应地更新白名单数据库65。
[0094]目标ODI100还可触发恶意软件爆发警告。在一些实施例中,服务器AM应用程序60将来自爆发数据库67的参考对象(类似于目标对象且已由AM服务器系统20a到20c在预定时间框(例如,最近6个小时)内接收的对象)计数。当所述计数超过阈值(例如,10)时,假设恶意软件爆发且将目标对象以及类似于其的所有参考对象标记为被感染。接着,相应地更新恶意软件及/或爆发数据库66到67。
[0095]上文所描述的示范性系统及方法允许反恶意软件系统维持灵活白名单数据库及使用白名单数据库来改进恶意软件检测性能。
[0096]在常规列入白名单应用中,将目标对象(计算机文件或进程)的散列与对应于列入白名单的对象(被信赖为干净的对象)的散列集进行比较。如果目标对象的散列匹配列入白名单的散列(其指示目标对象与列入白名单的对象中的至少一者相同),那么信赖目标对象且(例如)允许其执行。由于散列函数的特定数学性质,常规列入白名单不允许列入白名单的对象的代码的变化:如果两个对象仅有小到I位的不同,那么两个对象的散列不再匹配。同时,合法计算机文件及进程可由于(举例来说)编译器之间或同一软件的相继版本之间的差异而显示显著变化。
[0097]上文所描述的系统及方法的一些实施例允许反恶意软件系统考虑数据对象之间的良性差异,例如由编译器及其它多态性引入的差异。将目标对象分离成众多代码块,且针对每一代码块计算散列。接着,将所获得的目标散列集与对应于从列入白名单的对象提取的代码块的散列的数据库进行比较。如果目标对象具有与列入白名单的对象共有的显著数目个散列,那么可将其标记为列入白名单的(被信赖的)。略微不同于已知列入白名单的对象的对象仍可接收白名单状态。通过允许相异对象的散列集之间的特定程度的不匹配,本发明的一些实施例在不使数据安全性减小到不可接受程度的情况下增加列入白名单的效率。
[0098]可根据数个准则决定代码块的大小。小的代码块(例如,各自几个处理器指令)可导致每目标对象大量散列,此可增加反恶意软件服务器的存储及处理负载且减缓扫描。另一方面,小的代码块提供显著程度的灵活性:如果两个对象仅略微不同,那么差异将仅由散列的一小部分拾取,从而产生高相似度得分。大的代码块(例如,数百个处理器指令)平均每目标对象产生较少(例如,数个)散列,且因此从存储及处理角度为有利的。然而,大的代码块承受与常规散列相同的缺点:两个对象之间的小的差异可由散列的大部分拾取,从而产生低相似度得分。测试揭露介于5个与50个之间的处理器指令且在一些实施例中特别是大约5个到15个(例如,大约10个)指令的最优代码块大小。
[0099]上文所描述的示范性系统及方法允许反恶意软件系统进行协作客户端-服务器扫描事物及根据目标对象的服务器侧扫描的结果评估目标对象的恶意软件状态。在远程反恶意软件服务器上进行恶意软件扫描的一部分具有优于在客户端计算机系统上进行目标对象的本地扫描的大量优点。
[0100]恶意软件代理及软件的激增一股来说已贡献于白名单及恶意软件散列数据库的大小的稳定增加,其可总计为数兆字节到数千兆字节的数据。上文所描述的示范性方法及系统允许将散列数据库存储于反恶意软件服务器上,因此避免从企业服务器到大量顾客的定期重数据软件更新。
[0101]通过集中在服务器上执行恶意软件扫描的一显著部分,上文所描述的系统及方法允许新检测的恶意软件及新合法软件的散列的及时并入。相比来说,在其中扫描主要分配给客户端计算机系统的常规恶意软件检测中,关于新安全性威胁及新列入白名单的软件的信息收集可涉及间接方法,从而花费显著较长时间来到达反恶意软件软件生产者。
[0102]在客户端与上文所描述的反恶意软件服务器系统之间交换的文件的大小被保持为最小值。替代从客户端将完整目标对象发送到服务器以供进行服务器侧扫描,上文所描述的示范性方法及系统经配置以交换散列,其可总计为每目标对象数个字节到数千字节,因此显著减少网络业务量。
[0103]所属领域的技术人员将清楚,可在不背离本发明的范围的情况下以许多方式更改以上实施例。因此,本发明的范围应由所附权利要求书及其法律等效形式确定。
【权利要求】
1.一种方法,其包括: 在客户端计算机系统处执行所述客户端计算机系统的多个目标对象的初始恶意软件扫描 '及 响应于通过所述初始恶意软件扫描做出的所述目标对象被怀疑为恶意的初步确定: 在所述客户端计算机系统处产生所述目标对象的多个目标散列,每一目标散列表示所述目标对象的相异代码块,每一相异代码块由所述目标对象的处理器指令序列组成; 经由广域网将所述多个目标散列从所述客户端计算机系统发送到连接到所述客户端计算机系统的服务器计算机系统;及 在所述客户端计算机系统处从所述服务器计算机系统接收所述目标对象是否为恶意的服务器侧指示符,其中所述服务器侧指示符由所述服务器计算机系统通过以下操作产生: 针对所述多个目标散列中的至少一目标散列,检索参考对象的多个参考散列,所述参考对象选自根据所述目标散列的一组列入白名单的对象,且当所述多个目标散列不完全相同于所述多个参考散列时,根据所述多个目标散列与所述多个参考散列两者共有的散列计数确定相似度得分 '及 当所述相似度得分超过预定阈值时,将所述目标对象指定为非恶意的。
2.根据权利要求1所述的方法,其中由所述计算机服务器系统产生所述服务器侧指示符包括: 当所述相似度得分不超过所述预定阈值时,通过从所述目标对象的所述多个目标散列中过滤出在干净散列的数据库中显现的所有目标散列来产生所述目标对象的经过滤目标散列集;及 将所述经过滤目标散列集与恶意软件特有的恶意软件识别散列的数据库进行比较。
3.根据权利要求1所述的方法,其中由所述计算机服务器系统产生所述服务器侧指示符包括: 当所述相似度得分不超过所述预定阈值时,通过从所述目标对象的所述多个目标散列中过滤出在干净散列的数据库中显现的所有目标散列来产生所述目标对象的经过滤目标散列集 '及 将所述经过滤目标散列集与由连接到所述服务器计算机系统的多个相异客户端计算机系统在预定最近时间段内报告的未知对象特有的爆发检测散列的数据库进行比较。
4.一种方法,其包括: 在服务器计算机系统处经由广域网接收连接到所述服务器计算机系统的客户端计算机系统的目标对象的多个目标散列,其中所述多个目标散列是在所述客户端计算机系统处响应于由所述客户端计算机系统做出的所述目标对象被怀疑为恶意的初步确定而产生的,所述初步确定由所述客户端计算机系统的多个目标对象的初始恶意软件扫描而引起; 在所述服务器计算机系统处通过以下操作产生所述目标对象是否为恶意的服务器侧指示符: 针对所述多个目标散列中的至少一目标散列,检索参考对象的多个参考散列,所述参考对象选自根据所述目标 散列的一组列入白名单的对象,且当所述多个目标散列不完全相同于所述多个参考散列时,根据所述多个目标散列与所述多个参考散列两者共有的散列计数确定相似度得分,及 当所述相似度得分超过预定阈值时,将所述目标对象指定为非恶意的;及将所述目标对象是否为恶意的所述服务器侧指示符发送到所述客户端计算机系统。
5.根据权利要求4所述的方法,其中由所述计算机服务器系统产生所述服务器侧指示符包括: 当所述相似度得分不超过所述预定阈值时,通过从所述目标对象的所述多个目标散列中过滤出在干净散列的数据库中显现的所有目标散列来产生所述目标对象的经过滤目标散列集 '及 将所述经过滤目标散列集与恶意软件特有的恶意软件识别散列的数据库进行比较。
6.根据权利要求4所述的方法,其中由所述计算机服务器系统产生所述服务器侧指示符包括: 当所述相似度得分不超过所述预定阈值时,通过从所述目标对象的所述多个目标散列中过滤出在干净散列的数据库中显现的所有目标散列来产生所述目标对象的经过滤目标散列集 '及 将所述经过滤目标散列集 与由连接到所述服务器计算机系统的多个相异客户端计算机系统在预定最近时间段内报告的未知对象特有的爆发检测散列的数据库进行比较。
7.一种方法,其包括: 在服务器计算机系统处接收目标对象的多个目标散列,每一目标散列表示所述目标对象的相异代码块,每一相异代码块由所述目标对象的处理器指令序列组成; 针对所述多个目标散列中的至少一目标散列,采用所述服务器计算机系统来: 检索参考对象的多个参考散列,所述参考对象选自根据所述目标散列的一组列入白名单的对象,及 当所述多个目标散列不完全相同于所述多个参考散列时,根据所述多个目标散列与所述多个参考散列两者共有的散列计数确定相似度得分;及 当所述相似度得分超过预定阈值时,采用所述服务器计算机系统来将所述目标对象标记为非恶意的。
8.根据权利要求7所述的方法,其中所述目标散列包括操作码模式的散列,所述操作码模式包括指令指示符序列,每一指令指示符指示所述相异代码块的处理器指令。
9.根据权利要求7所述的方法,其中所述处理器指令序列由介于5个与50个之间的连续处理器指令组成。
10.根据权利要求9所述的方法,其中所述处理器指令序列由介于5个与15个之间的连续处理器指令组成。
11.根据权利要求7所述的方法,其中所述处理器指令序列以CALL指令开始。
12.根据权利要求7所述的方法,其进一步包括: 对所述目标对象执行代码正规化过程以产生经正规化目标对象,且其中每一相异代码块由所述经正规化目标对象的计算机指令序列组成;及 将散列函数应用于所述相异代码块以产生所述目标散列。
13.根据权利要求7所述的方法,其中将所述相似度得分确定为以下函数:
C/max (NT, Ne)其中C表示所述多个目标散列与所述多个参考散列两者共有的所述散列计数,而Nt及Ne分别表示所述多个目标散列的基数及所述多个参考散列的基数。
14.根据权利要求7所述的方法,其中将所述相似度得分确定为以下函数: c/(nt+ne) 其中C表示所述多个目标散列与所述多个参考散列两者共有的所述散列计数,而Nt及Ne分别表示所述多个目标散列的所述基数及所述多个参考散列的所述基数。
15.根据权利要求7所述的方法,其中将所述相似度得分确定为以下函数:
c/nt+c/ne 其中C表示所述多个目标散列与所述多个参考散列两者共有的所述散列计数,而Nt及Ne分别表示所述多个目标散列的所述基数及所述多个参考散列的所述基数。
16.根据权利要求7所述的方法,其中所述目标对象包括计算机文件。
17.根据权利要求7所述的方法,其中所述目标对象包括计算机进程。
18.一种包括至少一处理器的计算机系统,所述处理器经编程以: 接收多个目标散列,每一目标散列表示目标对象的相异代码块,每一相异代码块由所述目标对象的处理器指令序列组成; 针对所述多个目标散列中的至少一目标散列: 检索参考对象的多个参考散列,所述参考对象选自根据所述目标散列的一组列入白名单的对象,及 当所述多个目标散列不完全相同于所述多个参考散列时,根据所述多个目标散列与所述多个参考散列两者共有的散列计数确定相似度得分;及 当所述相似度得分超过预定阈值时,将所述目标对象标记为非恶意的。
19.根据权利要求18所述的系统,其中所述目标散列包括操作码模式的散列,所述操作码模式包括指令指示符序列,每一指令指示符指示所述相异代码块的处理器指令。
20.根据权利要求18所述的系统,其中所述处理器指令序列由介于5个与50个之间的连续处理器指令组成。
21.根据权利要求20所述的系统,其中所述处理器指令序列由介于5个与15个之间的连续处理器指令组成。
22.根据权利要求18所述的系统,其中所述处理器指令序列以CALL指令开始。
23.根据权利要求18所述的系统,其中所述处理器经进一步编程以: 对所述目标对象执行代码正规化过程以产生经正规化目标对象,其中每一相异代码块由所述经正规化目标对象的计算机指令序列组成;及 将散列函数应用于所述相异代码块以产生所述目标散列。
24.根据权利要求18所述的系统,其中所述相似度得分被确定为以下函数:
C/max (NT, Ne) 其中C表示所述多个目标散列与所述多个参考散列两者共有的所述散列计数,而Nt及Ne分别表示所述多个目标散列的基数及所述多个参考散列的基数。
25.根据权利要求18所述的系统,其中所述相似度得分被确定为以下函数: c/(nt+ne) 其中C表示所述多个目标散列与所述多个参考散列两者共有的所述散列计数,而Nt及Ne分别表示所述多个目标散列的所述基数及所述多个参考散列的所述基数。
26.根据权利要求18所述的系统,其中所述相似度得分被确定为以下函数:
c/nt+c/ne 其中C表示所述多个目标散列与所述多个参考散列两者共有的所述散列计数,而Nt及Ne分别表示所述多个目标散列的所述基数及所述多个参考散列的所述基数。
27.根据权利要求18所述的系统,其中所述目标对象包括计算机文件。
28.根据权利要求18所述的系统,其中所述目标对象包括计算机进程。
29.一种计算机系统,其包括: 用于接收多个目标散列的构件,每一目标散列表示目标对象的相异代码块,每一相异代码块由所述目标对象的处理器指令序列组成; 用于检索参考对象的多个参考散列的构件,所述参考对象选自根据所述多个目标散列的所选择目标散列的一组列入白名单的对象; 用于根据所述多个目标散列与所述多个参考散列两者共有的散列计数确定相似度得分的构件 '及 用于根据所述相似度得分将所述目标对象标记为非恶意的构件。
30.一种编码指令的非暂时性计算机可读存储媒体,所述指令在于处理器上执行时致使所述处理器执行以下步骤: 接收多个目标散列,每一目标散列表示目标对象的相异代码块,每一相异代码块由所述目标对象的处理器指令序列组成; 针对所述多个目标散列中的至少一目标散列: 检索参考对象的多个参考散列,所述参考对象选自根据所述目标散列的一组列入白名单的对象,及 当所述多个目标散列不完全相同于所述多个参考散列时,根据所述多个目标散列与所述多个参考散列两者共有的散列计数确定相似度得分;及 当所述相似度得分超过预定阈值时,将所述目标对象标记为非恶意的。
31.一种方法,其包括: 在服务器计算机系统处接收多个目标散列,每一目标散列表示连接到所述服务器计算机系统的客户端计算机系统的目标对象的相异数据块,每一相异代码块由所述目标对象的处理器指令序列组成; 响应于接收到所述多个目标散列,采用所述服务器计算机系统来检索表示列入白名单的数据对象的多个参考散列,及 响应于确定所述多个目标散列不完全相同于所述多个参考散列且确定所述多个目标散列与所述多个参考散列共享大多数项目,将所述目标对象标记为非恶意的。
【文档编号】G06F21/56GK104025107SQ201280064362
【公开日】2014年9月3日 申请日期:2012年9月5日 优先权日:2011年11月2日
【发明者】I·弗拉德·托凡, V·索林·杜代亚, D·维罗埃尔·卡尼亚 申请人:比特梵德知识产权管理有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1