使用上下文触发分段哈希的计算机安全的制作方法

文档序号:31126351发布日期:2022-08-13 03:35阅读:37来源:国知局
使用上下文触发分段哈希的计算机安全的制作方法
使用上下文触发分段哈希的计算机安全


背景技术:

1.计算机安全中的相似性分析已经使用了很多年。上下文触发分段哈希(ctph)是相似性分析技术的一个示例。其他技术使用基于数据的ctph哈希的莱文斯坦(levenshtein)距离来确定数据是否相似。然而,这种分析在计算资源和计算时间方面过于昂贵。此外,聚类百分比(确定是否对ctph字符串进行聚类的阈值距离)的确定是任意的,并且提供不可预测的结果。期望更有效的相似性分析技术和更确定性的技术。


技术实现要素:

2.该发明内容章节被提供来以简化形式引入实施例的各个方面,并且在详细描述中进一步解释以下实施例。该发明内容章节不旨在标识所要求保护的主题的必要或所需特征,并且在该发明内容章节中列出的元件的组合和顺序不旨在向所要求保护的主题的元件提供限制。
3.系统、方法、设备和计算机或其他机器可读介质可以提供对现有ctph字符串比较技术或恶意软件检测技术的改进。改进可以包括更快的处理时间和减少的存储器开销,来决定ctph字符串与另一个ctph字符串是否匹配。改进可以至少部分来自于从ctph字符串比较去除莱文斯坦距离计算。代替确定ctph字符串之间的距离,实施例可以比较ctph字符串的索引,并且如果索引匹配,则将ctph字符串相关联。实施例的另一个优点可以包括确定性。先前的距离计算需要用户定义一个距离,低于该距离会将ctph字符串相关联。这个要求使得距离计算依赖于定义的距离并且是不确定的。更多优点和关于这些优点的另外细节在本文别处讨论。
4.一种系统可以包括处理电路装置和存储器。存储器可以包括指令,指令在由处理电路装置执行时,使处理电路装置执行用于确定文件包括恶意软件的操作。操作可以包括确定文件的第一上下文触发分段哈希(ctph)字符串的第一索引,第一索引包括ctph字符串的连续位。第一索引可以是ctph字符串的真子集。ctph字符串和真子集不能包含空集。操作可以包括确定第一索引与文件的集群的第二索引相匹配。操作可以包括:响应于确定第一索引与集群的第二索引相匹配,将文件与集群相关联。操作可以包括基于集群,确定文件包括恶意软件。操作可以包括将文件标记为可能的恶意软件,防止用户打开文件、删除文件,向处理恶意软件的人员等提供指示文件、相关联的集群等的报告。
5.确定第一ctph字符串的第一索引可以包括将第一ctph字符串拆分为连续、非重叠位的不相交的多个部分。第一索引可以被确定为第一ctph字符串的多个部分中的部分的第一数目的连续(例如,非重叠)位。集群可以包括文件的相应多个集群中的一个集群。
6.第一索引可以包括ctph字符串的最高有效字节。操作还可以包括:确定ctph字符串的对应于ctph字符串的最低有效字节的第三索引与第二索引相匹配。操作还可以包括:响应于确定ctph字符串的第三索引与第二索引相匹配,将文件与多个集群中的集群相关联。
7.第三索引可以(仅)响应于第一索引不匹配相应的第二索引中的任何一个第二索
引而被确定。
8.操作还可以包括:针对部分中的每个部分,确定包括该部分的第二最高有效字节的第四索引;针对部分中的每个部分,确定包括该部分的第三最高有效字节的第五索引。操作还可以包括:响应于确定多个部分中的部分的第一索引、第四索引和第五索引中的一个与第二索引相匹配,将文件与集群相关联。
9.第三索引包括该部分的最低有效字节,并且针对该部分中的每个部分而被确定。操作还可以包括:针对部分中的每个部分,确定包括该部分的第二最低有效字节的第六索引。操作还可以包括:响应于确定第三索引或第六索引中的一个与第二索引相匹配,将文件与集群相关联。
10.一种方法可以包括执行系统的操作。机器可读介质可以包括指令,该指令在由机器执行时,使机器执行系统的操作。
附图说明
11.图1以示例方式图示了用于ctph聚类和基于集群的索引检测恶意软件的方法的实施例的流程图。
12.图2以示例方式图示了基于计算机文件生成ctph字符串的实施例的流程图。
13.图3以示例方式图示了将ctph字符串拆分为l个部分并且确定l个部分中的部分的索引的实施例的流程图。
14.图4以示例方式图示了ctph聚类方法的聚类操作的实施例的图。
15.图5以示例方式图示了256位安全哈希算法(sha256)的集群计数与集群大小的图。
16.图6以示例方式图示了实施例的ctph聚类方法的集群计数与集群大小的图。
17.图7以示例方式图示了恶意软件检测设备的实施例的图。
18.图8以示例方式图示了用于使用ctph字符串进行恶意软件检测的方法的实施例的图。
19.图9以示例方式图示了用于实现一个或多个实施例的机器(例如,计算机系统)的实施例的框图。
具体实施方式
20.在以下描述中,参考形成本发明的一部分并且以图示的方式示出可以被实践的特定实施例的附图。这些实施例用足够的细节被描述,以使本领域的技术人员能够实践实施例。应当理解,其他实施例可以被使用,并且在不脱离实施例的范围的情况下,结构、逻辑和/或电气改变可以被进行。因此,实施例的以下描述不是限制意义的,并且实施例的范围由所附权利要求限定。
21.在一些实施例中,本文描述的操作、功能或技术可以在软件中被实现。软件可以包括存储在计算机或者其他机器可读介质或存储设备(诸如一个或多个非暂态存储器(例如非暂态机器可读介质)或其他类型的基于硬件的存储设备(本地的或联网的))上的计算机可执行指令。此外,这种功能可以对应于子系统,该子系统可以是软件、硬件、固件或其组合。多个功能可以在一个或多个子系统中根据需要被执行,并且所描述的实施例仅是示例。软件可以在数字信号处理器、专用集成电路装置(asic)、微处理器、中央处理单元(cpu)、图
形处理单元(gpu)、现场可编程门阵列(fpga)或者其他类型的处理器上被执行,该其他类型的处理器在计算机系统(诸如个人计算机、服务器或其他计算机系统)上操作、将这种计算机系统转变为专门编程的机器。功能或算法可以使用处理电路装置系统来实现,诸如可以包括电气和/或电子组件(例如一个或多个晶体管、电阻器、电容器、电感器、放大器、调制器、解调器、天线、无线电、调节器、二极管、振荡器、复用器、逻辑门、缓冲器、缓存、存储器、gpu、cpu、fpga、asic等)。
22.上下文触发分段哈希(ctph)以被用于信息安全行业中的相似性分析超过10年,并且已成为最流行和最标准的模糊哈希算法之一。ctph已被用于样本聚类分析和恶意软件分类。然而,使用当前的ctph聚类技术,找到具有一定相似性的样本组过于昂贵。为了在减少的时间内找到相似样本,实施例提供了一种简化的ctph相似性分析解决方案,以帮助降低成本并且仍然保持聚类准确性。
23.模糊哈希允许调查人员专注于使用其他哈希方法未出现的潜在犯罪文档。模糊哈希的使用类似于模糊逻辑搜索。模糊哈希可以查找相似但不完全相等的文档(有时被称为“同源”文件)。
24.模糊哈希的过程是将文件拆分为块,对每个块进行哈希,并且将所有块哈希组合成最终哈希值。ctph是一种具有可变块大小的模糊哈希技术。它最初由jesse kornblum在2006年提出。ctph哈希的输出是字符串(“ctph字符串”)。ctph聚类分析是使用ctph字符串将样本集合分组到集群中的任务,以便相同集群中的样本彼此之间比其他集群中的样本更相似。
25.如先前在背景技术中讨论的,现有ctph聚类技术依赖于相似性指标阈值(莱文斯坦距离阈值)来确定是否将ctph字符串与集群相关联。然而,阈值的选择是任意的并且提供非确定性的结果。这在表1中被说明:
26.24:hmc5oci9ez+frbj1nvlplb8fc3lbmcgi7bccllycy0k04n3

24:hmc5oci9ez+frbj1nvlplb8fc3lbmcgi7bccllycy0k04n3

12:gxwnace61ww7n8auua7moij1mud8ztl75olbzuolxbdezs

12:gxwnace629w7n8ac96al8ij1mud8x+tl75olbzuolxbdezs

12:gxwnace671w7n8ag2oakij1mud8x+tl75olbzuolxbdezs

12:gxwnace6aw7n8ail6238af7wij1mud8x+tl75olbzuolxbd

12:gxwnace6gw7n8ahf0oqoiij1mud8x+tl75olbzuolxbdez

12:gxwnace6mw7n8an0d7oij1mud8x+tl75olbzuolxbdezs

27.表1:示例ctph字符串
28.现在考虑相似性阈值被设置为90%的示例。表1的前两行中的字符串将与第一集群相关联,而其余六个ctph字符串将保持未被聚类。接下来,考虑相似性阈值被设置为80%的示例。在该示例中,表1的前两行中的字符串将与第一集群相关联,第三、第五、第七行中的ctph字符串将与第二集群相关联,并且其余的行将与第三集群相关联。最后,考虑相似性阈值被设置为50%的另一个示例。在该示例中,表1的前两行中的字符串将与第一集群相关联,表1的其余的行将与另一个集群相关联。
29.非确定性结果使得这种聚类技术的结果充其量是有问题的并且偶然有用。此外,确定字符串之间的莱文斯坦距离在计算上是昂贵的。考虑n为ctph字符串的总数目,p为每
个集群的ctph字符串的平均数目,m为集群的数目。使用莱文斯坦距离技术的计算复杂度为o((n*m+n)/2)。此外,使用这种技术进行聚类的时间不是线性的,而是随ctph字符串的总数目而指数增长。期望一种节省计算时间和计算资源的确定性聚类技术。
30.图1以示例方式图示了用于ctph聚类和基于集群的索引检测恶意软件的方法100的实施例的流程图。所图示的方法100包括在操作110处生成针对文件的ctph字符串。操作110是可选的。在一些情况下,实体可以访问针对文件中的至少一些文件的ctph字符串,以用于使用方法100进行处理。在一些其他情况下,实体可以生成针对他们的文件中的一个或多个文件的相应的ctph字符串,以由方法100处理。关于操作110的更多细节在图2及其对应的描述中被提供。
31.在操作120处,ctph字符串被拆分为l个部分,其中l是大于一(1)的正整数。这些部分可以具有相同或相似的大小。在一些实施例中,l个部分中的每个部分包括最小字节数目。最小字节数可以是大于一(1)的正整数。在一些实施例中,最小字节数目可以是十七(17)。关于操作120的更多细节在图3及其对应的描述中被提供。
32.在操作130处,可以确定针对在操作120处生成的l个部分中的部分的索引。索引是对应于l个部分中的相应部分的子集的整数值。例如,索引可以对应于由该部分的连续数目的位表示的值。在一些实施例中,索引可以是七个连续字节,或者更多或更少的字节。关于操作130的更多细节在图3及其对应的描述中被提供。
33.在操作140处,可以基于在操作130处确定的索引对所生成的ctph字符串进行聚类。l个部分中的每个部分的所确定的索引可以与每个集群的一个或多个索引进行比较。响应于所确定的索引与集群的索引中的任何索引相匹配,ctph字符串可以被添加到该集群。响应于所确定的索引与集群的索引不匹配,可以利用ctph字符串生成新的集群。关于操作140的更多细节在图4及其对应的描述中被提供。
34.在操作150处,ctph字符串在操作140处被映射到的(多个)集群可以用于确定从其生成ctph字符串的文件是否包括恶意软件。操作150可以包括使用人工智能(ai)、机器学习(ml)、启发法或其他技术对(多个)集群进行分类。哪些文件包括恶意软件的先验知识可以用于将每个集群标记为包括恶意软件。在一些实施例中,标签可以包括集群中已知包括恶意软件的文件的百分比的指示。启发式技术可以包括响应于确定文件映射到的集群包括超过阈值百分比的已知包含映射到其中的恶意软件的文件,而指示文件包括恶意软件。
35.图2以示例方式图示了基于计算机文件202生成ctph字符串的实施例的流程图。图2提供了关于图1的操作110的更多细节。存在许多不同类型的计算机文件。文件可以被设计为存储图片、书面信息、视频、音频、文本、矢量图形、计算机程序或各种其他类型的数据。一些类型的文件可以同时存储多种类型的信息。通过使用计算机程序,用户可以打开、读取、改变、保存和关闭计算机文件。计算机文件可以被重新打开、修改和复制。文件202可以包括二进制数据或可以被转换为二进制形式的数据。在一些实施例中,文件202可以包括原始文件的块哈希。块哈希可以接收可变大小的输入,并且产生固定长度的字符串(哈希)。
36.文件202可以被拆分为块204a、204b、204c等。块204a-204c中的每个块可以包括文件202的不相交的子集或其一部分,诸如元数据。块204a、204b、204c可以具有相同或不同的大小。块204a-204c可以被缩放,使得文件202被拆分为q个块,其中q是大于一的正整数。因此,每个块大小可以z/q向上舍入到最接近的整数,其中z是以字节、位等为单位的文件大
小。
37.在操作206a、206b、206c处,可以分别对每个块204a-204c进行校验和。操作206a-206c分别使用校验和函数,来确定针对块204a-204c的数字整数值。校验和通常用于验证数据完整性。对于对输入进行的微小改变,一些校验和函数输出显著不同的值。对于加密哈希函数尤其如此,它可以用于检测数据损坏错误并且验证整体数据完整性。如果当前数据输入的计算校验和与先前计算的校验和的存储值相匹配,则数据没有被意外更改或损坏的可能性非常高。校验位和奇偶校验位是校验和的特殊情况,适用于小数据块。一些纠错码是基于特殊的校验和,其不仅检测常见错误,在某些情况下还允许恢复原始数据。
38.在操作208a、208b、208c处,可以分别对操作206a-206c的结果进行编码。ctph中的编码通常使用基础64字符(base64 char)编码。base64是二进制到文本的编码方案的组,其通过将二进制数据转换为radix-64表示,以美国信息交换标准代码(ascii)字符串格式表示二进制数据。每个base64数字表示6位数据。因此,三个8位字节(总共24位)可以由四个6位base64数字表示。base64只是一个示例,并且其他基础,诸如base32、base128、base256或其他基础是可能的。
39.为了生成ctph字符串220,可以将分别来自操作208a-208c的所有编码校验和块210a、210b、210c联接以生成ctph字符串220。编码的校验和块210a-210c在ctph字符串220中的顺序可以是分别与对应的块204a-204c的位置相同的相对位置。
40.图3以示例方式图示了将ctph字符串拆分为l个部分330a、330b、330c、330d、330e,并且对l个部分330a-330e中的每个部分确定索引350a、350b、350c、350d的实施例的流程图。l个部分可以是字节子集(例如,非重叠字节子集、连续字节子集、重叠字节子集或它们的组合)。索引350可以是l个部分的给定部分的指定数目的(例如,连续的)字节。图3提供了关于图1的操作120、130的更多细节。
41.在图3中,ctph字符串220被拆分为大小为n个字节的l个部分330a-330e。l和n都是大于一(1)的正整数。在图3的示例中,l是5。n可以具有最小值,诸如7字节、11字节、17字节、21字节、更大或更小数目的字节,或它们之间的数目的字节。n的最小值可以影响l,即ctph字符串被分成的部分的数目。例如,对于只有五十(50)个字节的ctph字符串220和十七(17)个字节的n,l可以是三。在一些情况下,部分330a-330e可以被填充(用零)以使部分330a-30e中的每个部分具有相同大小。
42.在操作130处,可以确定部分330a-330e中的每个部分的字节子集340a、340b、340c、340d(例如,连续字节子集)。字节子集340a-340d的数目可以基于n的大小、部分330a-330e中的每个部分中的字节数目来被确定。子集340a是部分330a的最高有效字节(以大端表示法),并且子集340d是部分330a的最低有效字节。在所示实施例中,使用了七(7)个字节的连续子集340a、340b、340c、340d。子集340a-340d可以是连续的(如所示那样)、重叠的、不重叠的或其组合。但是,可以使用更多或更少字节的子集。连续子集340a-340d的数目可以被称为m,其中m是大于零的正整数。在一些实施例中,m可以是五(5)、六(6)、七(7)或更多或更少的子集340a-340d。
43.考虑包括字节[1,35]的部分。最高有效字节包括字节[1,7],第二最高有效字节包括字节[2,8],第三最高有效字节包括字节[3,9],等等。最低有效字节包括字节[29,35],第二最低有效字节包括字节[28,34],第三最高有效字节包括字节[27,33],等等。
[0044]
子集340a-340d中的每个子集可以被用作操作140的索引350a、350b、350c、350d。在连续子集是七(7)字节长的示例中,冲突的概率(一个索引等于另一个索引)是1/647~=1/43980亿。这非常小,使得如果出现冲突,与索引相关联的对应文件很可能是相关的二进制序列或包括相同的二进制序列。因此,索引350a-350d可以按相等分组,以便聚类相关文件202。如果块的哈希匹配,则输出base64字符也匹配。因此,如果几个连续块哈希匹配,则对应ctph子字符串匹配。找到块哈希匹配的概率随着匹配的ctph子字符串长度而增加,文件之间的相似性随着匹配的ctph子字符串的长度的增加而增加。因此,ctph聚类可以用于找到相似文件。
[0045]
在图3的示例中,连续子集340a和340b来自部分330a的开头,而连续子集340b来自部分330a的末尾。在一些实施例中,来自部分330a的开头的连续子集340a和340b可以用于确定索引350a和350b。然后,在来自部分330a的末尾的连续子集340c和340d被用来确定索引350c和350d之前,索引350a和350b可以被用在操作140中。响应于没有找到匹配的集群440a、440b、440c,440d,参见图4,来自部分330a的末尾的连续子集340c和340d可以被用来确定索引350c和350d,并且与集群440a-440d进行比较。在一些实施例中,来自部分330a-330e中的每个部分的开头的连续子集可以被用来确定针对部分中的每个部分的索引,并且在来自部分330a-330e的末尾的连续子集被用来确定索引之前,所有确定的索引可以被用在操作140中。然后,响应于没有找到匹配的集群440a-440d,来自部分330a-330e的末尾的连续子集可以被用来确定索引,并且索引可以与集群440a-440d进行比较。
[0046]
图4以示例方式图示了聚类操作的实施例的图。图4提供了关于图1的操作140的更多细节。操作140包括将索引350a-350d与集群440a、440b、440c、440d的索引进行比较。集群440a-440d的索引可以由以下项定义:放置在集群440a-440d中的第一文件,放置在集群中的第一文件的仅唯一索引(当前不在任何其他集群中的索引),集群中启动了集群的文件的单个索引,或放置在集群440a-440d中的所有文件的所有索引,等等。
[0047]
图4图示了p个集群,其中p是大于一的正整数。但是,可以使用更多或更少的集群。关于使用的集群的数目的更多讨论关于图5和图6被提供。操作140可以包括:将每个索引350a-350d与每个集群440a-440d的索引中的至少一个索引进行比较。在图4的示例中,每个集群具有l*m个索引,因为针对每个文件存在m个索引和l个部分。然而,如前所述,更多或更少的索引可以与每个集群440a-440d相关联。响应于所确定的索引出现在集群440a-440d中,文件202可以与该集群440a-440d相关联。响应于确定文件202包括与多个集群440a-440d共同的索引350a-350d,文件202可以与多个集群440a-440d中的每个集群相关联。在图4的示例中,索引350a、350c和350d被映射到集群440a、440b、440c,而索引350b未被映射到任何集群。
[0048]
在一些实施例中,当前不在集群440a-440d中的索引350a-350d可以被添加到集群440a-44d以用于未来的集群测试。在一些其他实施例中,当前不在集群440a-440d中的索引350a-350d不被包括在未来的集群测试中。在一些实施例中,响应于确定诸如索引350b的索引没有映射到集群440a-440d,索引350b可以形成新集群440a-440d的基础。
[0049]
响应于确定ctph字符串220的索引350a-350d不匹配任何集群440a-440d中的任何集群,ctph字符串220可以用作新集群的基础(如果允许更多集群)。在一些实施例中,可以执行索引350c和350d与索引350a和350b之间的比较,以帮助标识文件202中的二进制重复。
[0050]
聚类操作140的计算复杂度仅为o(n),提供了对现有莱文斯坦距离聚类技术的显著改进。此外,在实施例中是否对ctph字符串进行聚类是确定性的(响应于确定ctph字符串的索引与集群的索引相匹配,则ctph字符串(或文件)与集群相关联)。此外,实施例的ctph字符串聚类可以检测到文件中的块哈希聚类技术(例如,sha256哈希)无法检测到的相似性。
[0051]
考虑文件的以下sha256表示:
[0052]
1:8bfb9c2c9d11c7080a72db22d8fe43c5c9508899da1f16ac55b0e9af276ab60c
[0053]
2:09bdb7514e4cce9760f23c6302623895def5d78e7265e105d5526ce1f0d75f3f
[0054]
3:49808e3beb9124702e22b333e3a11c6bde95bce659bf003d15fb733019373b6e
[0055]
4:82c3e16c825ce84981696b8615ee71b16c701c77ae63b825769ef25120c77585
[0056]
5:abb011d36eccd9493fb37724bdd939496de5a2ac7593ab01346fb2b9b2d3d7cc
[0057]
6:24d16f95b80f247b6aa390da0d027343bcd24e7b119aa82847b1e67bbad85a0c
[0058]
7:1e75ff5e4d62db3b2e41ac5f0336b0cldccae3c141645bdce7bcb79785dacca8
[0059]
这些sha256表示可以具有如下的ctph字符串表示:
[0060]
1:e7oeqtobmbjsv6twkfdu9c5ol34qteuhmkkyve
[0061]
2:e7oeqtobmbjsv6twkfdu9c5ol3aqpxzojqkj5
[0062]
3:e7oeqtobmbjsv6twkfdu9c5ol3eqgy5udm
[0063]
4:e7oeqtobmbjsv6twkfdu9c5ol3fzznpzjyj6
[0064]
5:e7oeqtobmbjsv6twkfdu9c5ol3jqpxzojqkj5
[0065]
6:e7oeqtobmbjsv6twkfdu9c5ol3uqpxzojqkj5
[0066]
7:e7oeqtobmbjsv6twkfdu9c5ol3yc+zihh
[0067]
对于每个ctph字符串,字符串的长度(例如,位或字节的数目)可以被确定。索引的长度可以被预先确定,或者可以基于要比较的索引的数目来确定。确定下一个ctph字符串的偏移可以被确定。偏移可以大于、等于或小于ctph字符串的长度。假设,对于该示例,索引的长度是7个字节。对于第一文件“1”的ctph字符串,索引数目(向下舍入)可以是5,如下:
[0068]
索引1:e7oeqto,
[0069]
索引2:bmbjsv6,
[0070]
索引3:twkfdu9,
[0071]
索引4:c5ol34q,
[0072]
索引5:teuhmkk
[0073]
可以使用相同的过程来确定针对每个ctph字符串的索引。对于文件7的ctph字符串,偏移可以是6,并且索引的长度可以是7。该配置的索引可以是:
[0074]
索引1:e7oeqto,
[0075]
索引2:obmbjsv,
[0076]
索引3:v6twkfd,
[0077]
索引4:du9c5ol,
[0078]
索引5:l3yc+zi
[0079]
在该初始位置处确定索引之后,可以对包括相等索引1的字符串进行聚类,并且索引1可以是该集群的代表索引,可以对包括相等索引2的字符串进行聚类,并且索引2可以是
该集群的代表索引,依此类推,直到最后一个索引。
[0080]
根据在该初始位置处的聚类,所有文件1-7可以被聚类在一起。在使用莱文斯坦距离计算的距离计算中可能不是这种情况。例如,文件1和文件7具有77%的相似性(距离),这不太可能被聚类,因为大多数技术要求大于80%的相似性。
[0081]
对于在第一轮聚类中未被聚类的文件,可以执行下一轮聚类。考虑以下ctph字符串:
[0082]
8:pf7oeqtobmbjsv6twkfdu9c5ol34qteuhmkkyve
[0083]
9:xf7oeqtobmbjsv6twkfdu9c5ol3yc+zihh
[0084]
第一轮聚类不会将这些文件聚类在一起,即使这些文件非常相似(ctph字符串的第二至第27个字节相等)。在第二轮聚类(或另一轮后续聚类)中,可以去除ctph字符串的第一字节。所得的较短ctph字符串的索引可以被确定、比较和聚类(如第一轮讨论的那样)。
[0085]
如果在第二轮聚类(或另一轮后续聚类)之后文件仍未被聚类,则可以将来自第二轮(或另一后续轮)的索引与来自一个或多个先前轮的索引进行比较。考虑以下ctph字符串:
[0086]
10:e7oeqtobmbjsv6twkfdu9c5ol34qteuhmkkyve
[0087]
11:xe7oeqtobmbjsv6twkfdu9c5ol3yc+zihh
[0088]
这两个文件10和11包括具有26个相同字节的ctph字符串,但基于所描述的先前轮不会聚类。在所描述的第三轮中,这两个文件可以被聚类。注意,在第三轮或后续轮中,可以将来自第1轮的索引1与来自第2轮的索引1进行比较,将来自第1轮的索引2与来自第2轮的索引2进行比较,依此类推。
[0089]
更多轮的移除位,使得从ctph字符串的开头移除两个以上位,索引被确定,然后与相同轮或不同轮的索引进行比较,并且相应地进行聚类。注意,到目前为止,该聚类包括基于最高有效字节的比较。可以对最低有效字节执行相同的过程。
[0090]
对于文件1-7,被确定为最低有效字节的索引5可以如下:
[0091]
文件1:hmkkyve
[0092]
文件2:zojqkj5
[0093]
文件3:qgy5udm
[0094]
文件4:npzjyj6
[0095]
文件5:zojqkj5
[0096]
文件6:zojqkj5
[0097]
文件7:yc+zihh
[0098]
然后,这些索引可以被比较和聚类(如果任何索引相等)。然后,如果文件仍然未被聚集,则最低有效字节可以被移除并且再次执行聚类(最低有效字节对齐)。类似于最高有效字节对齐轮,来自最低有效字节移除轮的索引可以与来自相同轮或先前轮的索引进行比较,并且如果索引相等,则可以被聚集。
[0099]
通常,将距离编辑计算复杂度(指数函数)与实施例的索引比较技术(线性函数)相比较,索引比较技术大大降低了cpu成本。可以优化许多轮,基本的解决方案是拆分字符串,并且在所有样本上比较子字符串,而不是对每一对进行距离计算。
[0100]
图5以示例方式图示了针对256位安全哈希算法(sha256)的集群计数与集群大小
的图。如可以看到的,随着集群计数增加,集群大小(就ctph字符串220(或相关联文件202)的数目而言)减小。
[0101]
图6以示例方式图示了针对方法100的集群计数与集群大小的图。如可以看到的,随着集群计数增加,集群大小减小。然而,与sha256聚类技术相比,方法100导致集群大小更逐渐的增加。尽管未被图示,但对应于图5和图6的图的两种技术中未聚类数据的百分比保持大致相同(大约14%)。
[0102]
图7以示例方式图示了恶意软件检测设备772的实施例的图。恶意软件检测设备772可以接收(多个)集群标识符770作为输入,并且使用分类电路装置774生成分类776,分类776指示对应于(多个)集群标识符770的文件202是否对应于恶意软件(是否对应于恶意软件的可能性)。(多个)集群标识符770指示文件202的ctph字符串220映射(例如,在操作140处)到的(多个)集群440a-440d。(多个)集群标识符770可以与以一个指示相关联,该指示是关于是否已知集群包括具有恶意软件的文件。在一些实施例中,集群440a-440d的已知包括恶意软件的文件的百分比可以被包括在集群标识符770中。
[0103]
分类电路装置774包括一个或多个电气或电子组件,该组件被配置为基于(多个)集群标识符770确定分类776。分类电路装置774可以实现基于启发法的技术,或被训练以实现确定分类的基于ml或ai的技术。基于启发法的技术定义了基于(多个)集群标识符770提供分类776的规则。例如,在对应于(多个)集群标识符770的集群中,响应于确定被确定为包括恶意软件的文件的百分比的某种数学组合大于或等于阈值,则分类776可以指示文件包括恶意软件或以其他方式值得进一步考虑。阈值可以是百分之二十五(25)、百分之三十(30)、百分之五十(50)、百分之七十五(75)、某个更大或更低的百分比,或介于其间的某个百分比。
[0104]
确定分类776的基于ml或ai的技术可以包括使用(多个)集群标识符770,并且对应的标签(恶意软件、包括恶意软件的文件的百分比、不是恶意软件等)可以被用来训练分类电路装置774以确定分类776。然后,分类电路装置774可以获取新的(多个)集群标识符770集合,并且基于训练来确定分类776。
[0105]
分类电路装置774或其他电路装置的电气或电子组件可以包括一个或多个晶体管、电阻器、电容器、电感器、放大器、调制器、解调器、天线、无线电、调节器、二极管、振荡器、多路复用器、逻辑门(例如,and、or、xor、否等)、缓冲器、高速缓存、存储器、gpu、cpu、fpga、asic等。
[0106]
图8以示例方式图示了用于使用文件的ctph字符串的索引来标识恶意文件的方法800的流程图。所图示的方法800包括:在操作810处,确定(例如,通过计算设备的处理电路装置(例如,设备900的处理单元902))文件202的第一ctph字符串220的第一索引(例如,索引350a);在操作820处,确定第一索引与文件的集群(例如,集群440a-440d)的第二索引相匹配;在操作830处,响应于确定第一索引与集群的第二索引相匹配,将文件与集群相关联;以及在操作840处,基于集群,确定文件包括恶意软件(例如,使用与包括处理电路装置的设备相同或不同的恶意软件检测设备772的分类电路装置774)。第一索引可以包括ctph字符串的连续位。第一索引可以小于ctph字符串,诸如是ctph字符串的真子集。集合a的真子集是a的不等于a的子集。换句话说,如果b是a的真子集,则b的所有元素都在a中,但a包含不在b中的至少一个元素。
[0107]
操作810可以包括将第一ctph字符串拆分为连续、非重叠位的不相交的多个部分(例如,部分330a-330e)。第一索引可以被确定为第一ctph字符串的多个部分中的部分的第一数目的连续的、非重叠的位。集群可以是文件的相应多个集群中的一个集群。
[0108]
第一索引可以包括ctph字符串的最高有效字节。方法800还可以包括:确定ctph字符串的对应于ctph字符串的最低有效字节的第三索引与第二索引相匹配。方法800还可以包括:响应于确定ctph字符串的第三索引与第二索引相匹配,将文件与多个集群中的集群相关联。第三索引可以响应于第一索引不匹配相应第二索引中的任何第二索引而被确定。
[0109]
第一索引可以包括该部分的最高有效字节。可以针对部分中的每个部分确定第一索引。方法800还可以包括:针对部分中的每个部分,确定包括该部分的第二最高有效字节的第四索引。方法800还可以包括:针对部分中的每个部分,确定包括该部分的第三最高有效字节的第五索引。方法800还可以包括:响应于确定多个部分中的部分的第一索引、第四索引和第五索引中的一个与第二索引相匹配,将文件与集群相关联。
[0110]
第三索引可以包括该部分的最低有效字节。可以针对部分中的每个部分确定第三索引。方法800还可以包括:针对部分中的每个部分,确定包括该部分的第二最低有效字节的第六索引。方法800还可以包括:响应于确定第三索引或第六索引中的一个索引与第二索引相匹配,将文件与集群相关联。
[0111]
图9以示例方式图示了用于实现一个或多个实施例的机器900(例如,计算机系统)的实施例的框图。机器900可以实现用于ctph字符串聚类或恶意软件检测的技术,诸如方法100或800。恶意软件检测设备772或分类电路装置774可以包括机器900的组件中的一个或多个组件。一个示例机器900(计算机的形式)可以包括处理单元902、存储器903、可移除存储装置910和不可移除存储装置912。尽管示例计算设备被图示合描述为机器900,但是计算设备在不同实施例中可以是不同形式。例如,相反,计算设备可以是智能手机、平板计算机、智能手表或者包括与关于图9图示和描述的元件相同或类似的元件的其他计算设备。诸如智能手机、平板计算机和智能手表等设备通常被统称为移动设备。此外,尽管各种数据存储元件被图示为机器900的一部分,但是存储装置也可以或者备选地包括经由网络(诸如互联网)可访问的基于云的存储装置。
[0112]
存储器903可以包括易失性存储器914和非易失性存储器908。机器900可以包括或访问计算环境,该计算环境包括各种计算机可读介质,诸如易失性存储器914和非易失性存储器908、可移除存储装置910和不可移除存储装置912。计算机存储装置包括随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom)和电可擦除可编程只读存储器(eeprom)、闪存或其他存储器技术、光盘只读存储器(cd rom)、数字通用盘(dvd)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或者能够存储用于执行的计算机可读指令以执行本文描述的功能的其他磁性存储设备。
[0113]
机器900可以包括或访问计算环境,该计算环境包括输入906、输出904和通信连接916。输出904可以包括也可以用作输入设备的显示设备,诸如触摸屏。输入906可以包括以下中的一个或多个:触摸屏、触摸板、鼠标、键盘、相机、一个或多个设备特定按钮、集成在机器900内或者经由有线或无线数据连接耦合至机器900的一个或多个传感器以及其他输入设备。计算机可以使用通信连接在联网环境中操作,以连接至一个或多个远程计算机,诸如数据库服务器,包括基于云的服务器和存储装置。远程计算机可以包括个人计算机(pc)、服
务器、路由器、网络pc、对等设备或者其他公共网络节点等。通信连接可以包括局域网(lan)、广域网(wan)、蜂窝网络、电气与电子工程师协会(ieee)802.11(wi-fi)、蓝牙或其他网络。
[0114]
存储在计算机可读存储设备上的计算机可读指令由机器900的处理单元902(有时被称为处理电路装置)可执行。硬盘驱动器、cd-rom和ram是包括诸如存储设备的非暂态计算机可读介质的物品的一些示例。例如,计算机程序918可以被用于使处理单元902执行本文描述的一种或多种方法或算法。
[0115]
附加说明和示例:
[0116]
示例1可以包括一种系统,该系统包括处理电路装置和存储器,该存储器包括存储在其上的指令,该指令在由处理电路装置执行时,使处理电路装置执行用于确定文件包括恶意软件的操作,该操作包括:确定文件的第一上下文触发分段哈希(ctph)字符串的第一索引,第一索引包括ctph字符串的连续位,第一索引小于ctph字符串;确定第一索引与文件的集群的第二索引相匹配;响应于确定第一索引与集群的第二索引相匹配,将文件与集群相关联;以及基于集群,确定文件包括恶意软件。
[0117]
在示例2中,示例1还可以包括:其中确定第一ctph字符串的第一索引包括将第一ctph字符串拆分为连续的、非重叠位的不相交的多个部分。
[0118]
在示例3中,示例2还可以包括:其中第一索引被确定为第一ctph字符串的多个部分中的部分的第一数目的连续位。
[0119]
在示例4中,示例3还可以包括:其中该集群是文件的相应多个集群中的一个集群。
[0120]
在示例5中,示例4还可以包括:其中第一索引包括ctph字符串的最高有效字节,并且操作还包括:确定ctph字符串的对应于ctph字符串的最低有效字节的第三索引与第二索引相匹配;以及响应于确定ctph字符串的第三索引与第二索引相匹配,将文件与多个集群中的集群相关联。
[0121]
在示例6中,示例5还可以包括:其中第三索引响应于第一索引不匹配相应第二索引中的任何第二索引而被确定。
[0122]
在示例7中,示例4-6中的至少一个还可以包括:其中第一索引包括该部分的最高有效字节,并且针对部分中的每个部分被确定,并且操作还包括:针对部分中的每个部分,确定包括该部分的第二最高有效字节的第四索引;针对部分中的每个部分,确定包括该部分的第三最高有效字节的第五索引;以及响应于确定多个部分中的部分的第一索引、第四索引和第五索引中的一个与第二索引相匹配,将文件与集群相关联。
[0123]
在示例8中,示例6-7中的至少一个还可以包括:其中第三索引包括该部分的最低有效字节,并且针对该部分中的每个部分而被确定,并且操作还包括:针对部分中的每个部分,确定包括该部分的第二最低有效字节的第六索引;以及响应于确定第三索引或第六索引中的一个与第二索引相匹配,将文件与集群相关联。
[0124]
示例9包括一种方法,用于使用基于上下文触发分段哈希(ctph)的聚类来确定文件包括恶意软件,方法包括:由计算设备的处理电路装置确定文件的第一ctph字符串的第一索引,第一索引包括ctph字符串的连续位,第一索引小于ctph字符串;确定第一索引与文件的集群的第二索引相匹配;响应于确定第一索引与集群的第二索引相匹配,将文件与集群相关联;以及基于集群,确定文件包括恶意软件。
[0125]
在示例10中,示例9还可以包括:其中确定第一ctph字符串的第一索引包括将第一ctph字符串拆分为连续、非重叠位的不相交的多个部分。
[0126]
在示例11中,示例10还可以包括:其中第一索引被确定为第一ctph字符串的多个部分中的部分的第一数目的连续位。
[0127]
在示例12中,示例9-11中的至少一个还可以包括:其中该集群是文件的相应多个集群中的一个集群。
[0128]
在示例13中,示例9-12中的至少一个还可以包括:其中第一索引包括ctph字符串的最高有效字节,并且方法还包括:确定ctph字符串的对应于ctph字符串的最低有效字节的第三索引与第二索引相匹配;以及响应于确定ctph字符串的第三索引与第二索引相匹配,将文件与多个集群中的集群相关联。
[0129]
在示例14中,示例13还可以包括:其中第三索引响应于第一索引不匹配相应第二索引中的任何第二索引而被确定。
[0130]
在示例15中,示例12-14中的至少一个还可以包括:其中第一索引包括该部分的最高有效字节,并且针对部分中的每个部分而被确定,并且方法还包括:针对部分中的每个部分,确定包括该部分的第二最高有效字节的第四索引;针对部分中的每个部分,确定包括该部分的第三最高有效字节的第五索引;以及响应于确定多个部分中的部分的第一索引、第四索引和第五索引中的一个与第二索引相匹配,将文件与集群相关联。
[0131]
在示例16中,示例13-15中的至少一个还可以包括:其中第三索引包括该部分的最低有效字节,并且针对部分中的每个部分而被确定,并且方法还包括:针对部分中的每个部分,确定包括该部分的第二最低有效字节的第六索引;以及响应于确定第三索引或第六索引中的一个与第二索引相匹配,将文件与集群相关联。
[0132]
示例17包括一种非暂态机器可读介质,其包括指令,该指令在由机器执行时,使机器执行用于使用上下文触发分段哈希(ctph)来确定文件包括恶意软件的操作,操作包括:由计算设备的处理电路装置确定文件的第一ctph字符串的第一索引,第一索引包括ctph字符串的连续位,第一索引小于ctph字符串;确定第一索引与文件的集群的第二索引相匹配;响应于确定第一索引与集群的第二索引相匹配,将文件与集群相关联;以及基于集群,确定文件包括恶意软件。
[0133]
在示例18中,示例17还可以包括:其中确定第一ctph字符串的第一索引包括将第一ctph字符串拆分为连续的、非重叠位的不相交的多个部分。
[0134]
在示例19中,示例17-18中的至少一个还可以包括:其中第一索引被确定为第一ctph字符串的多个部分中的部分的第一数目的连续位。
[0135]
在示例20中,示例17-19中的至少一个还可以包括:其中该集群是文件的相应多个集群中的一个集群。
[0136]
在示例21中,示例20还可以包括:其中第一索引包括ctph字符串的最高有效字节,并且操作还包括:确定ctph字符串的对应于ctph字符串的最低有效字节的第三索引与第二索引相匹配;以及响应于确定ctph字符串的第三索引与第二索引相匹配,将文件与多个集群中的集群相关联。
[0137]
在示例22中,示例21还可以包括:其中第三索引响应于第一索引不匹配相应第二索引中的任何第二索引而被确定。
[0138]
在示例23中,示例21-22中的至少一个还可以包括:其中第一索引包括该部分的最高有效字节,并且针对部分中的每个部分而被确定,并且操作还包括:针对部分中的每个部分,确定包括该部分的第二最高有效字节的第四索引;针对部分中的每个部分,确定包括该部分的第三最高有效字节的第五索引;以及响应于确定多个部分中的部分的第一索引、第四索引和第五索引中的一个与第二索引相匹配,将文件与集群相关联。
[0139]
在示例24中,示例21-23中的至少一个还可以包括:其中第三索引包括该部分的最低有效字节,并且针对部分中的每个部分而被确定,并且操作还包括:针对部分中的每个部分,确定包括该部分的第二最低有效字节的第六索引;以及响应于确定第三索引或第六索引中的一个与第二索引相匹配,将文件与集群相关联。
[0140]
一些实施例可以参考被配置为实现所讨论的方法(例如,方法100、800或其组合)的一部分的计算机软件代码来进一步被理解。为了方便参考,这里提供了这种计算机软件代码:
[0141]
[0142]
[0143]
[0144]
[0145]
[0146]
[0147]
[0148]
[0149]
[0150]
[0151]
[0152]
[0153]
[0154]
[0155]
[0156]
[0157]
[0158]
[0159]
[0160]
[0161]
[0162]
[0163]
[0164]
[0165]
[0166]
[0167]
[0168]
[0169]
[0170]
[0171]
[0172]
[0173]
[0174]
[0175]
[0176]
[0177]
[0178]
[0179]
[0180]
[0181]
[0182]
[0183]
[0184]
[0185]
[0186]
[0187]
[0188]
[0189]
[0190]
[0191]
[0192]
[0193]
[0194][0195]
尽管上面已经详细描述了几个实施例,但是其他修改也是可能的。例如,图中描绘描绘的逻辑流程不需要所示的顺序或者相继顺序,以实现期望的结果。其他步骤可以被提供或者步骤可以从所描述的流程中排除,并且其他组件可以被添加到所描述的系统或者从所描述的系统中移除。其他实施例可以在以下权利要求的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1