用于恶意软件签名生成的系统和方法与流程

文档序号:22760094发布日期:2020-10-31 09:58阅读:135来源:国知局
用于恶意软件签名生成的系统和方法与流程

本文描述的实施方式大体涉及恶意软件检测,并且更具体地涉及基于在存储器中找到的字符串的恶意软件检测。



背景技术:

恶意软件的发展比人类用户能够制定对策的速度更快。这使得恶意软件检测变得困难,因为对策通常在识别出非常多的恶意软件之前就已经过时了。从自动化哈希和模糊哈希识别签名到文件几何指纹,存在针对此问题的许多解决方案,但是使主动识别与误报平衡一直是挑战。期望一种更好的方法来识别恶意软件,该方法能够检测先前未知的恶意软件而不会产生过多的误报。

另外,恶意软件混淆增加了检测恶意软件所需的时间和资源。这会将存储器分析的速度减慢到取证分析(而非实时分析)。此外,静态文件扫描程序在尝试跟上混淆器变化速度方面面临艰巨的任务。期望一种处理恶意软件混淆以进行字符串提取的更好的方法。

附图说明

图1是例示了根据一个或更多个实施方式的可编程设备的网络的图。

图2是例示了根据一个或更多个实施方式的利用用于恶意软件签名生成的系统的示例系统的图。

图3是例示了根据一个或更多个实施方式的用于生成恶意软件签名的方法的流程图。

图4是例示了根据一个或更多个实施方式的用于生成恶意软件签名并在客户端的设备上确认签名的方法的流程图。

图5是例示了根据一个或更多个实施方式的用于基于相连字符串块(contiguousstringblock)生成恶意软件签名的方法的流程图。

图6a和图6b是例示了根据一个或更多个实施方式的用于基于相连字符串块生成恶意软件签名的另一方法的流程图。

图7是例示了根据一个或更多个实施方式的用于基于通配字符串生成恶意软件签名的方法的流程图。

图8a和图8b是例示了根据一个或更多个实施方式的用于基于通配字符串生成恶意软件签名的另一方法的流程图。

图9是例示了根据一个实施方式的与本文描述的技术一起使用的计算设备的图。

图10是例示了根据另一实施方式的与本文描述的技术一起使用的计算设备的框图。

具体实施方式

在下面的描述中,出于解释的目的,阐述了许多具体细节以便提供对本发明的透彻理解。然而,对本领域技术人员显而易见的是,可以在没有这些具体细节的情况下实践本发明。在其它实例中,以框图形式示出了结构和设备,以避免模糊本发明。对没有下标或后缀的数字的引用应理解为引用与所引用的数字相对应的所有下标和后缀的实例。此外,本公开中使用的语言主要是出于可读性和指导性目的而选择的,并未被选择成划定或限制发明主题,而是借助于确定该发明主题所必需的权利要求。说明书中对“一个实施方式”或“一实施方式”的提及是指结合这些实施方式描述的特定特征、结构或特性包括在本发明的至少一个实施方式中,并且对“一个实施方式”或“一实施方式”的多次提及不应被理解成必须全部指代相同的实施方式。

如本文所使用的,术语“可编程设备”可以指单个可编程设备或一起工作以执行被描述成在可编程设备上或由可编程设备执行的功能的多个可编程设备。

如本文所使用的,术语“介质”是指单个物理介质或可以共同存储被描述成存储在介质上的内容的多个介质。

如本文所使用的,术语“网络设备”可以指能够通过任何类型的网络与另一可编程设备通信的任何可编程设备。

如本文所使用的,术语“字符串”是指一个或更多个紧邻字符的序列,通常但不限于诸如字母数字字符和其它可打印符号之类的文本字符。

如本文所使用的,术语“定界符”是指指示两个相邻字符串之间的边界的区域。定界符可以是字符串结尾处的区域(诸如,空字符),也可以是字符串开头处的区域(诸如,字符串长度字段)。可以在定界的字符串的一端或两端用定界符来界定该字符串。

如本文所使用的,术语“相连字符串块”是指一个或更多个相邻定界的字符串的序列。如果两个字符串仅由定界符分隔,则认为它们是相邻的。

如本文所使用的,术语“数据库”是指可以被搜索以找到现有条目的任何数据集合。可以使用任何期望形式的数据库,包括简单的文本文件或数据存储的更结构化形式,并且使用该术语并不暗示任何数据结构或格式。

一个或更多个实施方式提供了一种用于生成恶意软件检测中使用的恶意软件签名的方法。自动生成的恶意软件签名可以允许恶意软件接近实时地适应不断发展的恶意软件。类似地,通配允许单个签名描述整个恶意软件家族。这些和其它特征允许恶意软件检测主动检测恶意软件的新变种,同时与已识别的恶意软件变种的数量相比,保持相对较少的签名,并且不会易于产生过多误报。

在一个实施方式中,已知恶意软件可以被加载到存储器中。然后可以搜索恶意软件以获得字符串,这些字符串保存在单独的字符串数据库中。除了单独的字符串之外,其它相关联的信息也可以存储在单独的字符串数据库中,诸如,关于字符串位置的信息以及指示查找字符串的频率的信息,诸如,指示有多少恶意软件样本包括该字符串的计数。可以根据需要包括关于字符串的其它信息。

然后可以识别已知恶意软件中的相连字符串块。可以将排名得分分配给相连字符串块。在一些实施方式中,排名得分可以基于存储在单独的字符串数据库中的关于相连字符串块中的各个字符串的信息。例如,在单独的字符串数据库存储各个单独的字符串的样本计数的一个实施方式中,排名得分可以是相连字符串块中各个成分字符串(componentstring)的样本计数之和。可以根据需要使用其它因素,包括例如相连字符串块与其它相连字符串块的接近度。

然后将恶意软件样本中找到的各个相连字符串块与相连字符串块的数据库进行比较。在一个实施方式中,相连字符串块的数据库不同于单独的字符串的数据库;在其它实施方式中,两个数据库可以是相同的数据库。在一个实施方式中,可以通过排名得分对恶意软件样本中找到的相连字符串块进行排名,并且该排名用于对相连字符串块与相连字符串块的数据库的比较进行排序。

如果发现相连字符串块与标记为“干净(clean)”的数据库条目相似(表明该相连字符串块不是恶意软件的较佳指示符),则可以忽略当前相连字符串块并比较下一个相连字符串块。可以使用任何所需技术将数据库中的相连字符串块标记成“干净”。在一些实施方式中,代替将条目标记成“干净”,可以将它们标记成“不干净”,并且如果没有这样标记,则条目是干净的。在这样的实施方式中,除非数据库条目被标记成“不干净”,否则忽略与该数据库条目相似的相连字符串块。

如果相连字符串块与现有的不干净条目完全匹配,则可以更新数据库条目以指出已在另一样本中找到了该相连字符串块。如果相连字符串块与现有数据库条目不相似,则可以将该相连字符串块添加到数据库。

如果相连字符串块与现有的不干净条目相似但不相同,则可以使用通配技术将该相连字符串块和现有的不干净条目合并。可以利用在字符串中找不到的特殊通配符字符来替换一个或更多个字符,表明在比较字符串时,字符串中的此特殊通配符字符与任何字符都匹配。在一个实施方式中,通配符字符可以是“?”字符,但可以使用任何字符。通配技术在本领域中是已知的,并且可以使用用于确定用通配符字符替换哪个字符或哪些字符的任何技术。

然后可以使用相连字符串块数据库中的通配条目为恶意软件家族创建签名。这认识到恶意软件开发者可能会对恶意软件进行微小的更改以试图降低恶意软件的可识别性。然后可以将通配相连字符串块添加到相连字符串块数据库,由块标识符标记。在一些实施方式中,块标识符是自动递增的唯一整数。在一些实施方式中,由于可以以不同的顺序查找同一成分字符串集,所以可以生成多个通配相连字符串块。多个通配条目可以一起形成家族的签名。在一些实施方式中,如果多个通配条目形成签名,则可以使用通配条目的最常用子集来形成签名,而省略不太常用的子集。

块标识符、通配条目和块顺序一起形成恶意软件家族的签名。块顺序是指相连字符串块在由多个相连字符串块组成的签名中的序列位置。在一些实施方式中,块顺序可以影响应当在签名中设置多少置信度。在一些实施方式中,可以将置信度指示符分配给签名。在一个实施方式中,置信度指示符可以至少部分地基于在签名中找到的通配字符的数量,其中,较多的通配字符通常比较少的通配字符指示更少的置信度。在另一实施方式中,除了或代替使用通配字符的数量,置信度指示符可以至少部分地基于作为相连字符串块的成分的字符串的数量。在又一实施方式中,除了或代替使用通配字符的数量和作为相连字符串块的成分的字符串的数量,置信度指示符可以至少部分地基于块顺序。

前述步骤通常可以在后端服务器上执行。在生成签名之后,在一些实施方式中,可以执行学习模式以帮助消除误报。在这种学习模式下,签名可以用于检查客户端系统的已知非恶意软件进程或应用。如果在已知非恶意软件进程或应用中找到签名,则该签名很可能生成恶意软件的误报指示。因此,在非恶意软件进程或应用中检测到对应相连字符串块可能导致指示更新相连字符串块数据库,并将对应相连字符串块标记成“干净”。尽管这可能导致漏报,但是通过这种技术消除误报被这样的实施方式认为是优选的。

在执行上述误报消除训练之后,可以将签名用于恶意软件检测。根据需要,这可以在客户端或后端服务器上执行。如果在恶意软件检测期间在存储器中找到相连字符串块数据库中不干净块的签名,则可以使用置信度指示来平衡风险。例如,可以使用预定的置信度阈值,以使得与不满足阈值标准的置信度水平的匹配不会被报告成恶意软件,而超过阈值标准的置信度水平可以触发与可能的恶意软件存在有关的警报。可以使用任何阈值标准,并且可以使用与阈值标准的任何关系来确定是报告还是忽略签名匹配。

在一个或更多个实施方式中,用于生成恶意软件签名的方法可以用于在已知恶意软件上训练恶意软件检测系统,利用来自客户端系统的文件的结果来更新已经实现的恶意软件检测系统,并且并入由其它恶意软件检测系统识别的恶意软件签名。一些实施方式可以将生成恶意软件签名的方法与基于图形处理单元(gpu)的存储器扫描的方法相结合,以实现比仅生成恶意软件签名的方法更高效、处理强度更低的恶意软件检测。

参照图1,示意性地例示了可以实现实施方式的示例基础设施100。基础设施100包含计算机网络102。计算机网络102可以包括当今可用的许多不同类型的计算机网络,诸如,因特网、企业网络、局域网(lan)或个人网络(诸如,通过蓝牙连接的个人网络)。这些网络中的各个网络可以包含有线或无线可编程设备,并使用任意数量的网络协议(例如tcp/ip)进行工作。网络102可以连接到网关和路由器(由108表示)、最终用户计算机106和计算机服务器104。基础设施100还包括与移动通信设备一起使用的蜂窝网络103。移动蜂窝网络支持移动电话和许多其它类型的移动设备。基础设施100中的移动设备被示为移动电话110、膝上型计算机112和平板电脑114。诸如移动电话110之类的移动设备可以在移动设备移动时与一个或更多个移动提供商网络进行交互,通常与多个移动网络塔架120、130和140进行交互以连接到蜂窝网络103。各个网络102可以包含许多其它设备,通常称为物联网设备(微控制器、嵌入式系统、工业控制计算模块、恒温器、制冷机等)150。尽管在图1中涉及一蜂窝网络,但是移动设备可以与多于一个提供商网络的塔架以及多个非蜂窝设备(诸如无线接入点和路由器108)交互。另外,移动设备110、112和114可以与诸如计算机104和106之类的非移动设备交互以获得期望的服务。网关设备108的功能可以在图1所示的任何设备或设备的组合中实现;然而,其最通常在路由器或网关中的入侵防护系统或防火墙中实现。

图2是例示了根据一个或更多个实施方式的用于生成恶意软件签名的示例系统的图。图2包括客户端设备205和网络设备210a至210n。客户端设备205以及网络设备210a至210n中的每一者可以跨网络200连接。客户端设备205可以包括例如存储器220和处理器225,以及网络接口235,该网络接口235用于通过网络200连接到网络设备210a至210n。存储器220可以包括可以由处理器225执行的多个软件或固件模块。在一个或更多个实施方式中,存储器220可以包括安全模块230。安全模块230可以被用于执行针对网络上的数据的安全功能。

另外,安全模块230可以管理处理器225对计算机代码的处理。在一个或更多个实施方式中,安全模块230可以生成恶意软件签名。例如,安全模块230可以通过这样的方式来生成恶意软件签名:识别已知恶意软件中的相连字符串块并分配置信度指示符以表示该相连字符串块描述恶意软件的可能性。根据一个或更多个实施方式,安全模块230可以对已知恶意软件中识别的第一相连字符串块与相连字符串块的数据库中包含的第二相连字符串块之间的差异进行通配(wildcard),修改现有数据库条目并调整与相连字符串块数据库中的第二相连字符串块相关联的置信度指示符。

图3是例示了生成恶意软件检测中使用的恶意软件签名的方法的流程图。该方法在305处开始,并且从已知恶意软件提取字符串。已知恶意软件可能来自存储器(例如存储器220),或者从活动存储器(不包括受信库等)转储(dumped)。接下来,在310处,将单独的字符串添加到数据库,在此标记为数据库a,该数据库包含唯一字符串以及包含各个唯一字符串的唯一样本的数量。每字符串的样本计数在310中也会增加。在315处,基于相连字符串块中的各个成分字符串的合计样本计数对相连字符串块进行排名。相连字符串块被识别成由定界符彼此分隔的字符串。例如,在编程语言c中,定界符可以是空字符。根据一个或更多个实施方式,相连字符串块排名也可以基于其它因素。例如,排名还可以考虑各个成分字符串的位置以及与其它字符串的接近度;与其它已知恶意软件的匹配百分比(表明关系);指示是恶意软件的可能性的字符串特定值;等。

接下来,在320处,将相连字符串块与第二数据库中的相连字符串块进行比较以获得百分比相似度。第二数据库(这里标记为数据库b)包含从已知恶意软件提取的相连字符串块。如果在325处确定来自已知恶意软件的第一相连字符串块与数据库b中包含的相连字符串块之间的相似度低,则将数据库a中的下一个相连字符串块与数据库b中包含的相连字符串块进行比较。如果在325处确定第一相连字符串块与来自数据库b的特定相连字符串块之间的相似度高,则流程图继续到330。在330处,对第一相连字符串块与来自数据库b的特定相连字符串块之间的微小差异进行通配。在一个或更多个实施方式中,最频繁出现的通配相连字符串块可以用作识别恶意软件家族的签名。

在335处,将通配相连字符串块添加到数据库b,并在该方法的将来迭代中使用。在一个或更多个实施方式中,可以从数据库b中获取与通配相连字符串块相关联的块标识。接下来,在340处,可以创建用于通配相连字符串块的块签名并分配置信度得分。在一个或更多个实施方式中,块签名可以至少部分地基于块标识、块内的成分字符串的顺序等。在一个或更多个实施方式中,置信度指示符可以至少部分地基于该块中的通配符的数量、匹配的恶意样本的数量、匹配的非恶意软件样本的数量、块的流行度(prevalence)、它在字段中用来搜索恶意软件已经有多久等。

图4是例示了生成恶意软件检测中使用的恶意软件签名的另一方法的流程图。步骤405至440反映了图3中的步骤305至340。然而,图4所示的方法在445处继续,并且通配相连字符串块的块签名在学习模式中被部署到诸如客户端设备205之类的客户端系统。在学习模式中,块签名将不会用于标示(flag)恶意软件;仅用于更新数据库b并去除误报。如果在450处确定块签名对应于客户端设备上的干净记录,则在455处将在数据库b中将该块签名标记为干净。如果在450处确定块签名不对应于客户端设备上的干净记录,则该块签名将被返回给安全模块230,安全模块230将在440处更新通配相连字符串块的分配的置信度得分。

图5是例示了根据一个或更多个实施方式的用于基于相连字符串块生成恶意软件签名的方法的流程图。流程图在505处开始,其中,将已知恶意软件信息加载到存储器(诸如,存储器220)中。在510处,在已知恶意软件信息中查找字符串。继续到515,将字符串保存在第一数据库中。接下来,在520处,从已知恶意软件信息中识别第一相连字符串块。如前所述,相连字符串块被识别成由定界符彼此分隔的两个或更多个字符串。例如,在编程语言c中,定界符可以是空字符。

在525处,将置信度指示符分配给第一相连字符串块。如前所述,在一个或更多个实施方式中,置信度指示符可以至少部分地基于该块中的通配符、匹配的恶意样本的数量、匹配的非恶意软件样本的数量、相连字符串块的流行度、它在字段中用来搜索恶意软件已经有多久等。在530处,在包含从已知恶意软件提取的相连字符串块的第二数据库中寻找第一相连字符串块。如果在第二数据库中找到第一相连字符串块,则可以在535处对第一相连字符串块进行标记。例如,在一个实施方式中,如果第二数据库中包含的对应相连字符串块被标记为“干净”并且因此不指示恶意软件,则第一相连字符串块被标记为“干净”。在该示例中,未被标记为“干净”的相连字符串块可以被理解为“不干净”并且指示恶意软件。类似地,在另一实施方式中,如果第二数据库中包含的对应相连字符串块被标记为“不干净”并且指示恶意软件,则第一相连字符串块被标记为“不干净”。在该另一示例中,未被标记为“不干净”的相连字符串块可以被理解为“干净”并且不指示恶意软件。在其它实施方式中,可以使用“干净”和“不干净”标签的组合。在其它实施方式中,可以使用另选的标记系统。可以使用任何指示“干净”(或“不干净”)的期望的技术。

尽管流程图在535处结束,但是在一个或更多个实施方式中,第一相连字符串块在学习模式中被部署在客户端系统中。在学习模式下,第一相连字符串块将不用于标示恶意软件;仅用于更新第二数据库并去除误报。如果确定第一相连字符串块对应于客户端系统中的干净记录,则第一相连字符串块在第二数据库中将被标记为“干净”。如果确定第一相连字符串块不对应于客户端设备上的干净记录,则第一相连字符串块将被返回到安全模块230,安全模块230将更新第一相连字符串块的分配的置信度得分。

图6a和图6b是例示了根据一个或更多个实施方式的用于基于相连字符串块生成恶意软件签名的另一方法的流程图。该流程图在605处开始,其中,安全模块230扫描未知文件。接下来,在610处,将未知文件与已知恶意软件进行比较。如果在615处确定未知文件满足与已知恶意软件的相似度的预定阈值,则流程图继续到620,其中,将未知文件视为恶意软件,并且在625处,加载为已知恶意软件信息。在630处,在存储器中的恶意软件中查找字符串。在一些实施方式中,字符串可以由客户端系统提供。例如,客户端系统可以提供由另一恶意软件检测器找到的一个或更多个字符串以用于恶意软件签名生成。继续到635,将字符串保存在第一数据库中。接下来,在640处,从第一数据库中识别第一相连字符串块。如前所述,相连字符串块被识别成由定界符彼此分隔的字符串。

在645处,将排名得分分配给第一相连字符串块。在一些实施方式中,步骤645可以可选地还包括步骤650。在650处,安全模块230接收在分配排名得分时要考虑的第一相连字符串块的用户分配的可疑度值。如前所述,在一个或更多个实施方式中,排名得分还可以至少部分地基于该块中的通配符、匹配的恶意样本的数量、匹配的干净样本的数量、第一相连字符串块的流行度、它在字段中用来搜索恶意软件已经有多久等。在655处,安全模块230尝试在包含从已知恶意软件提取的相连字符串块的第二数据库中查找第一相连字符串块。在一个或更多个实施方式中,可以对第二数据库中的相连字符串块进行排名,以用于对第二数据库内的相连字符串块进行排序。例如,可以在低排名的相连字符串块之前将高排名的相连字符串块与第一相连字符串块进行比较。相连字符串块排名可以至少部分地基于与第二数据库中的各个相连字符串块相关联的置信度指示符、各个相连字符串块中的各个成分字符串出现的次数、各个成分字符串在存储器中的位置、各个成分字符串与其它成分字符串的接近度、以及各个成分字符串的特定于字符串的值。如果在660处确定第一相连字符串块不满足与第二数据库中的相连字符串块的相似度的预定阈值,则可以在665将第一相连字符串块保存在第二数据库中。如果在660处确定第一相连字符串块满足与来自第二数据库的第二相连字符串块的相似度的预定阈值,则流程图继续到670。

在670处,作为在第二数据库中找到第一相连字符串块的结果,对第一相连字符串块进行标记。如前所述,在一个示例中,如果第二数据库中包含的对应相连字符串块被标记为“干净”并且因此不指示恶意软件,则第一相连字符串块被标记为“干净”。在该示例中,未被标记为“干净”的相连字符串块可以被理解为“不干净”并且指示恶意软件。类似地,在另一实施方式中,如果第二数据库中包含的对应相连字符串块被标记为“不干净”并且指示恶意软件,则第一相连字符串块被标记为“不干净”。在该另一示例中,未被标记为“不干净”的相连字符串块可以被理解为“干净”并且不指示恶意软件。在其它实施方式中,可以使用“干净”和“不干净”标签的组合。在其它实施方式中,可以使用另选的标记系统。

在670中将第一相连字符串块标记为“干净”之后,流程图在675处继续,其中,对第一相连字符串块与第二相连字符串块之间的差异进行通配。如前所述,可以用在字符串中找不到的特殊通配符字符来替换一个或更多个字符,表明在比较字符串时,字符串中的此特殊通配符字符与任何字符都匹配。在一个实施方式中,通配符字符可以是“?”字符,但可以使用任何字符。通配技术在本领域中是已知的,并且可以使用用于确定用通配符字符替换哪个字符或哪些字符的任何技术。流程图在680处结束,其中,将第二置信度指示符分配给通配相连字符串块。第二置信度指示符可以部分地基于第一置信度指示符、通配相连字符串块中的通配符的数量、匹配的样本的数量、已知恶意软件中通配相连字符串块的流行度、使用该相连字符串块来检测恶意软件已经有多久等。

尽管流程图在680处结束,但是在一个或更多个实施方式中,通配相连字符串块在学习模式中被部署在客户端系统中。在学习模式下,通配相连字符串块将不用于标示恶意软件;仅用于更新第二数据库并去除误报。如果确定通配相连字符串块对应于客户端系统中的干净记录,则将在第二数据库中将通配相连块标记为“干净”。如果确定通配相连字符串块不对应于客户端设备上的干净记录,则通配相连字符串块将被返回到安全模块230,安全模块230将更新通配相连字符串块的分配的置信度指示符。

现在参照图7,流程图例示了根据一个或更多个实施方式的用于基于通配字符串生成恶意软件签名的方法。流程图在705处开始,在此将已知恶意软件信息加载到存储器(诸如,存储器220)中。在710处,在已知恶意软件信息中查找第一字符串。继续到715,将第一字符串保存在第一数据库中。接下来,在720处,将置信度指示符分配给第一字符串。如前所述,在一个或更多个实施方式中,置信度指示符可以至少部分地基于匹配的恶意样本的数量、匹配的干净样本的数量、字符串的流行度、它在字段中用来搜索恶意软件已经有多久等。在725处,尝试在包含从已知恶意软件提取的字符串的第二数据库中查找第一字符串。如果在730处确定第一字符串满足与来自第二数据库的第二字符串的相似度的预定阈值,则流程图在735处继续,并且可以对第一字符串与第二字符串之间的差异进行通配。流程图在740处结束,其中,将第二置信度指示符分配给通配字符串。

尽管流程图在740处结束,但是在一个或更多个实施方式中,通配字符串在学习模式中被部署在客户端系统中。在学习模式下,通配字符串将不用于标示恶意软件;仅用于更新第二数据库并去除误报。如果确定通配字符串对应于客户端系统中的干净记录,则将在第二数据库中将通配字符串标记为“干净”。如果确定通配字符串不对应于客户端设备上的干净记录,则通配字符串将被返回到安全模块230,安全模块230将更新通配字符串的分配的置信度指示符。

图8a和图8b是例示了根据一个或更多个实施方式的用于基于通配字符串生成恶意软件签名的另一方法的流程图。该流程图在805处开始,其中,安全模块230扫描未知文件。接下来,在810处,将未知文件与已知恶意软件进行比较。如果在815处确定未知文件满足与已知恶意软件的相似度的预定阈值,则流程图继续到820,其中,将未知文件视为恶意软件,并且在825处,加载为已知恶意软件信息。在830处,在已知恶意软件信息中查找第一字符串。在一些实施方式中,第一字符串可以由客户端系统提供。例如,客户端系统可以提供由另一恶意软件检测器找到的一个或更多个字符串以用于恶意软件签名生成。继续到835,将第一字符串保存在第一数据库中。步骤835可以可选地包括步骤840和845。在840处,从已知恶意软件识别第一相连字符串块。如前所述,相连字符串块被识别成由定界符彼此分隔的字符串。例如,在编程语言c中,定界符可以是空字符。在845处,将该相连字符串块视为该方法的其余部分中的第一字符串。

在850处,将置信度指示符分配给第一字符串。在一些实施方式中,步骤850可以可选地还包括步骤855。在855处,安全模块230接收在分配置信度指示符时要考虑的第一字符串的用户分配的可疑度值。如前所述,在一个或更多个实施方式中,置信度指示符还可以至少部分地基于匹配的恶意样本的数量、匹配的干净样本的数量、第一字符串的流行度、它在字段中用来搜索恶意软件已经有多久等。在860处,安全模块230尝试在包含从已知恶意软件提取的字符串的第二数据库中查找第一字符串。在一个或更多个实施方式中,可以对第二数据库中的字符串进行排名,以用于对第二数据库内的字符串进行排序。例如,可以在低排名的字符串之前将高排名的字符串与第一字符串进行比较。字符串排名可以至少部分地基于与第二数据库中的各个字符串相关联的置信度指示符、各个字符串出现的次数、各个字符串在存储器中的位置、各个字符串与其它字符串的接近度、以及各个字符串的特定于字符串的值。如果在865处确定第一字符串不满足与第二数据库中的字符串的相似度的预定阈值,则可以在870将第一字符串保存在第二数据库中。如果在865处确定第一字符串满足与来自第二数据库的第二字符串的相似度的预定阈值,则流程图继续到875。

在875处,对第一字符串与来自第二数据库的第二字符串之间的差异进行通配。如前所述,可以利用在字符串中找不到的特殊通配符字符来替换一个或更多个字符,这表明在比较字符串时,字符串中的此特殊通配符字符与任何字符都匹配。在一个实施方式中,通配符字符可以是“?”字符,但可以使用任何字符。通配技术在本领域中是已知的,并且可以使用用于确定用通配符字符替换哪个字符或哪些字符的任何技术。流程图在880处结束,其中,将第二置信度指示符分配给通配字符串。第二置信度指示符可以部分地基于第一置信度指示符、通配字符串中的通配符的数量、匹配的样本的数量、已知恶意软件中通配字符串的流行度、使用该通配字符串来检测恶意软件已经有多久等。

尽管流程图在880处结束,但是在一个或更多个实施方式中,通配字符串在学习模式中被部署在客户端系统中。在学习模式下,通配字符串将不用于标示恶意软件;仅用于更新第二数据库并去除误报。如果确定通配字符串对应于客户端系统中的干净记录,则将在第二数据库中将通配字符串标记为“干净”。如果确定通配字符串不对应于客户端设备上的干净记录,则通配字符串将被返回到安全模块230,安全模块230将更新通配字符串的分配的置信度指示符。

现在参照图9,框图例示了根据一个或更多个实施方式的可以在诸如设备205之类的网络设备内使用的可编程设备900。设备205可能不包括图9的所有元件。图9所示的可编程设备900是包括第一处理元件970和第二处理元件980的多处理器可编程设备。尽管示出了两个处理元件970和980,但是可编程设备900的实施方式也可以仅包括一个这样的处理元件。

可编程设备900被例示为点对点互连系统,其中,第一处理元件970和第二处理元件980经由点对点互连950联接。图9所示的任何或全部互连可以被实现成多点分支总线而不是点对点互连。

如图9所示,各个处理元件970和980可以是多核处理器,包括第一处理器核和第二处理器核(即,处理器核974a和974b以及处理器核984a和984b)。这样的核974a、974b、984a、984b可以被配置成以类似于以上结合图1至图8所讨论的方式来执行指令代码。然而,其它实施方式可以根据需要使用作为单核处理器的处理元件。在具有多个处理元件970、980的实施方式中,各个处理元件可以根据需要利用不同数量的核来实现。

各个处理元件970、980可以包括至少一个共享缓存946。共享缓存946a、946b可以存储分别由处理元件的一个或更多个组件(诸如,核974a、974b和984a、984b)利用的数据(例如,指令)。例如,共享缓存946a、946b可以在本地对存储在存储器932、934中的数据进行缓存,以供处理元件970、980的组件更快地访问。在一个或更多个实施方式中,共享缓存946a、946b可以包括一个或更多个中间级别的缓存(诸如,2级(l2)、3级(l3)、4级(l4)或其它级别的缓存)、最后一级缓存(llc)或其组合。

尽管为清楚起见,图9例示了具有两个处理元件970、980的可编程设备,但是本发明的范围不限于此,并且可以存在任何数量的处理元件。另选地,处理元件970、980中的一个或更多个可以是除了处理器之外的元件,诸如,图形处理单元(gpu)、数字信号处理(dsp)单元、现场可编程门阵列或任何其它可编程处理元件。处理元件980可以与处理元件970异构或不对称。就包括架构、微架构、热、功耗特性等的一系列指标的度量而言,处理元件970、980之间可能存在各种差异。这些差异可以有效地在处理元件970、980之间表现出自身的不对称性和异构性。在一些实施方式中,各种处理元件970、980可以存在于同一管芯封装中。

第一处理元件970还可以包括存储器控制器逻辑(mc)972以及点对点(p-p)互连976和978。类似地,第二处理元件980可以包括mc982和p-p互连986和988。如图9所示,mc972和982将处理元件970、980联接到相应的存储器,即,存储器932和存储器934,其可以是在本地附接到相应处理器的主存储器的部分。尽管mc逻辑972和982被例示为集成到处理元件970、980中,但是在一些实施方式中,存储器控制器逻辑可以是处理元件970、980外部的离散逻辑,而不是集成在其中。

处理元件970和处理元件980可以经由相应的p-p互连976和986通过链路952和954联接到i/o子系统990。如图9所示,i/o子系统990包括p-p互连994和998。此外,i/o子系统990包括接口992,以将i/o子系统990与高性能图形引擎938联接。在一个实施方式中,可以使用总线(未示出)将图形引擎938联接到i/o子系统990。另选地,点对点互连939可以联接这些组件。

继而,i/o子系统990可以经由接口996联接到第一链路916。在一个实施方式中,第一链路916可以是外围组件互连(pci)总线,或诸如pciexpress总线或另一i/o互连总线的总线,但是本发明的范围不限于此。

如图9所示,各种i/o设备914、924可以与桥接器918一起联接到第一链路916,该桥接器918可以将第一链路916联接到第二链路920。在一个实施方式中,第二链路920可以是低引脚数(lpc)总线。在一个实施方式中,各种设备可以联接到第二链路920,包括例如,键盘/鼠标912、通信设备926(其又可以与计算机网络903通信)以及数据存储单元928(诸如,磁盘驱动器或其它大容量存储设备),该数据存储单元928可以包括代码930。代码930可以包括用于执行上述一个或更多个技术的实施方式的指令。此外,音频i/o924可以联接到第二总线920。

注意的是,可以设想其它实施方式。例如,代替图9的点对点架构,系统可以实现多点分支总线或另一这样的通信拓扑。尽管链路916和920在图9中被示为总线,但是可以使用任何期望类型的链路。而且,可以另选地使用比图9所示的更多或更少的集成芯片来划分图9的元件。

现在参照图10,框图例示了根据另一实施方式的可编程设备1200。为了避免模糊图9的其它方面,已经从图10中省略了图9的某些方面。

图10例示了处理元件1270和1280可以分别包括集成存储器和i/o控制逻辑(“cl”)1272和1282。在一些实施方式中,1272、1282可以包括诸如以上结合图9所描述的那样的存储器控制逻辑(mc)。另外,cl1272、1282还可以包括i/o控制逻辑。图10例示了不仅存储器1232、1234可以联接到1272、1282,而且i/o设备1244也可以联接到控制逻辑1272、1282。传统i/o设备1215可以通过接口1296联接到i/o子系统1290。各个处理元件1270、1280可以包括多个处理器核,在图10中被例示为处理器核1274a、1274b、1284a和1284b。如图10所示,i/o子系统1290包括p-p互连1294和1298,它们利用链路1252和1254连接到处理元件1270和1280的p-p互连1276和1286。处理元件1270和1280也可以分别通过链路1250以及互连1278和1288互连。

图9和图10中描绘的可编程设备是可以用于实现本文所讨论的各种实施方式的可编程设备的实施方式的示意例示。图9和图10中描绘的可编程设备的各种组件可以组合在片上系统(soc)架构中。

将理解,上述流程图的各个组成部分可以以不同的顺序或者甚至同时发生。还应理解,本发明的各种实施方式可以包括上述全部或只是一些组成部分。因此,提供流程图是为了更好地理解实施方式,但是流程图的组成部分的特定顺序并不旨在是限制性的,除非另外这样说明。

程序指令可以用于引起利用该指令编程的通用或专用处理系统执行本文描述的操作。另选地,可以由包含用于执行操作的硬连线逻辑的特定硬件组件来执行操作,或者由编程计算机组件和定制硬件组件的任何组合来执行操作。本文中描述的方法可以被提供为计算机程序产品,该计算机程序产品可以包括存储有指令的机器可读介质,这些指令可以用于对处理系统或其它电子设备进行编程以执行所述方法。本文所使用的术语“机器可读介质”应包括能够存储或编码由机器执行的指令序列并且使机器执行本文所述方法中的任何一种方法的任何介质。因此,术语“机器可读介质”应包括但不限于有形的非暂时性存储器(诸如固态存储器、光盘和磁盘)。此外,在本领域中通常将软件(一种形式)或另一形式(例如,程序、过程、进程、应用、模块、逻辑等)称为采取动作或造成结果。这样的表达仅仅是表示处理系统执行软件造成处理器执行动作或产生结果的简略方式。

将理解,以上描述旨在是例示性的,而不是限制性的。例如,上述实施方式可以彼此组合使用。作为另一示例,上述流程图包括一系列动作,这些动作可能不以图中描绘的特定顺序执行。而是,各种动作可以以不同的顺序发生,或者甚至同时发生。在阅读以上描述之后,对于本领域技术人员而言显然可以有许多其它实施方式。因此,应参照所附的权利要求以及这些权利要求所赋予的等同物的全部范围来确定本发明的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1