CN113051566B - 一种病毒检测方法、装置、电子设备及存储介质 - Google Patents

一种病毒检测方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN113051566B
CN113051566B CN202110335752.3A CN202110335752A CN113051566B CN 113051566 B CN113051566 B CN 113051566B CN 202110335752 A CN202110335752 A CN 202110335752A CN 113051566 B CN113051566 B CN 113051566B
Authority
CN
China
Prior art keywords
file
virus
bloom filter
stage
rule
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110335752.3A
Other languages
English (en)
Other versions
CN113051566A (zh
Inventor
闫华
位凯志
古亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sangfor Technologies Co Ltd
Original Assignee
Sangfor Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sangfor Technologies Co Ltd filed Critical Sangfor Technologies Co Ltd
Priority to CN202110335752.3A priority Critical patent/CN113051566B/zh
Publication of CN113051566A publication Critical patent/CN113051566A/zh
Application granted granted Critical
Publication of CN113051566B publication Critical patent/CN113051566B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明实施例适用于计算机安全技术领域,提供了一种病毒检测方法、装置、电子设备及存储介质,其中,病毒检测方法包括:基于布隆过滤器集群对待测文件进行处理,布隆过滤器集群包括至少两级布隆过滤器,至少两级布隆过滤器中的各级布隆过滤器分别对应病毒规则库中不同长度的规则片段,各级布隆过滤器依次用于检测待测文件是否匹配所对应的规则片段;基于待测文件的匹配结果确定是否需要通过病毒规则库进行病毒检测。本发明提高了病毒检测的效率,缩短了病毒检测的时间。

Description

一种病毒检测方法、装置、电子设备及存储介质
技术领域
本发明涉及计算机安全技术领域,尤其涉及一种病毒检测方法、装置、电子设备及存储介质。
背景技术
相关技术在进行病毒检测时,由病毒分析师人工地或由算法自动地对病毒样本做分析,提取病毒样本中的病毒规则。病毒规则是一个连续字符串。将大量的病毒规则聚集在一起,形成病毒规则库。在对未知文件做病毒检测时,将未知文件中的字符串与病毒规则库中的病毒规则做匹配,如果匹配成功,则认为未知文件是病毒文件。相关技术中,随着病毒规则库的不断扩大,病毒检测耗时越来越长。
发明内容
为了解决上述问题,本发明实施例提供了一种病毒检测方法、装置、电子设备及存储介质,以至少解决相关技术由于病毒规则库中规则数量过多导致的检测耗时长的问题。
本发明的技术方案是这样实现的:
第一方面,本发明实施例提供了一种病毒检测方法,该方法包括:
基于布隆过滤器集群对待测文件进行处理,所述布隆过滤器集群包括至少两级布隆过滤器,所述至少两级布隆过滤器中的各级布隆过滤器分别对应病毒规则库中不同长度的规则片段,所述各级布隆过滤器依次用于检测所述待测文件是否匹配所对应的规则片段;
基于所述待测文件的匹配结果确定是否需要通过所述病毒规则库进行病毒检测。
上述方案中,所述基于所述待测文件的匹配结果确定是否需要通过所述病毒规则库进行病毒检测,包括:
在所述匹配结果表征所述待测文件与所述各级布隆过滤器所对应的规则片段都匹配的情况下,基于所述病毒规则库对所述待测文件进行病毒检测。
上述方案中,所述基于所述待测文件的匹配结果确定是否需要通过所述病毒规则库进行病毒检测,包括:
在所述匹配结果表征所述待测文件与所述各级布隆过滤器中的任意一级布隆过滤器所对应的规则片段不匹配的情况下,确定所述待测文件为正常文件。
上述方案中,所述基于所述病毒规则库对所述待测文件进行病毒检测,包括:
接收来自所述病毒规则库的检测结果;所述病毒规则库用于检测所述待测文件是否匹配所述病毒规则库中的病毒规则。
上述方案中,所述基于布隆过滤器集群对待测文件进行处理,包括:
在所述布隆过滤器集群中的任意一级布隆过滤器检测到所述待测文件匹配所对应的规则片段的情况下,由下一级布隆过滤器进行匹配。
上述方案中,在基于布隆过滤器集群对待测文件进行处理之前,所方法还包括:
基于所述病毒规则库创建所述至少两级布隆过滤器;
基于所述各级布隆过滤器对应的规则片段的长度,按照长度从短至长的顺序对所述至少两级布隆过滤器进行拼接,得到所述布隆过滤器集群。
上述方案中,在各级布隆过滤器检测所述待测文件是否匹配所对应的规则片段时,所述方法包括:
基于滑动窗口获取所述待测文件中的连续字符串,将所述连续字符串与各级布隆过滤器对应的规则片段进行匹配,以确定所述待测文件是否匹配所对应的规则片段;所述滑动窗口的窗口宽度与各级布隆过滤器对应的规则片段的长度相同。
第二方面,本发明实施例提供了一种病毒检测装置,该装置包括:
处理模块,用于基于布隆过滤器集群对待测文件进行处理,所述布隆过滤器集群包括至少两级布隆过滤器,所述至少两级布隆过滤器中的各级布隆过滤器分别对应病毒规则库中不同长度的规则片段,所述各级布隆过滤器依次用于检测所述待测文件是否匹配所对应的规则片段;
确定模块,用于基于所述待测文件的匹配结果确定是否需要通过所述病毒规则库进行病毒检测。
第三方面,本发明实施例提供了一种电子设备,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行本发明实施例第一方面提供的病毒检测方法的步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,包括:所述计算机可读存储介质存储有计算机程序。所述计算机程序被处理器执行时实现如本发明实施例第一方面提供的病毒检测方法的步骤。
本发明实施例基于布隆过滤器集群对待测文件进行处理,布隆过滤器集群包括至少两级布隆过滤器,至少两级布隆过滤器中的各级布隆过滤器分别对应病毒规则库中不同长度的规则片段,各级布隆过滤器依次用于检测待测文件是否匹配所对应的规则片段。基于待测文件的匹配结果确定是否需要通过病毒规则库进行病毒检测。本发明实施例通过至少两级布隆过滤器对待测文件进行处理,在进行病毒检测时,可以将大多数不是病毒文件的被测文件尽早排除掉,提高了病毒检测的效率,减少了病毒检测的时间。
附图说明
图1是相关技术进行病毒检测的流程示意图;
图2是本发明实施例提供的一种病毒检测方法的实现流程示意图;
图3是本发明实施例提供的一种布隆过滤器集群的示意图;
图4是本发明实施例提供的另一种病毒检测方法的实现流程示意图;
图5是本发明应用实施例提供的一种多级布隆过滤器的架构示意图;
图6是本发明应用实施例提供的一种多级布隆过滤器的创建流程图;
图7是本发明应用实施例提供的一种病毒检测流程示意图;
图8是本发明实施例提供的一种病毒检测装置的示意图;
图9是本发明一实施例提供的电子设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参考图1,图1是相关技术进行病毒检测的流程示意图。相关技术通过对已知的病毒样本做分析,提取病毒样本中的病毒规则,病毒规则即为病毒样本中的一段连续的字符串,将大量的病毒规则聚集在一起,形成一个病毒规则库。在对未知文件做病毒检测时,提取未知文件中设定长度的连续字符串,将设定长度的连续字符串与病毒规则库中的病毒规则进行匹配,如果匹配成功,说明未知文件中包含了病毒规则,该未知文件是病毒文件。但是,随着不同种类的病毒越来越多,病毒规则库中的病毒规则数量越来越多。在病毒检测时,对病毒规则的匹配,一般采用经典多模匹配算法,例如Aho-Corasick算法和Boyer-Moore算法。当病毒规则库中的病毒规则数量较多时,多模匹配算法的cache命中率降低,甚至出现内存抖动,导致极大的时间性能开销,病毒检测时间较长,影响用户体验。
在相关技术中,有几种常规的反病毒规则引擎性能优化方案。第一种方案是云端分离的分布式架构,具体地,在云服务器上存储大量病毒文件的全文哈希值,在对被测文件进行病毒检测时,计算被测文件的全文哈希值,通过网络将该全文哈希值传输到云服务器。云服务器比对后返回检测结果,如果被测文件的全文哈希值与云服务器存储的全文哈希值一致,则认为被测文件是病毒文件。该方案的缺点是:1、哈希值不具备泛化能力,若病毒发生小幅变形,则方案失效;2、必须联网,否则方案失效。第二种方案是轻量级病毒规则库,根据历史经验对病毒规则库中的病毒规则做裁剪,保留经常出现的、影响较大的病毒规则,删除其他出现较少、影响较小的病毒规则,从而达到提升检测性能的目的。该方案的缺点是:减弱了病毒查杀能力。第三种方案是对病毒规则按文件类型分库,具体地,按照文件类型,将病毒文件相应的病毒规则分别存储在不同的病毒规则库中。在进行病毒检测时,根据文件类型在相应的病毒规则库中进行匹配。该方案的缺点是:当某种文件类型的病毒规则过多时,同样会导致性能问题。
针对上述相关技术的缺点,本发明实施例提供了一种病毒检测方法,至少能够提高病毒检测效率,减少病毒检测时长。为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
图2是本发明实施例提供的一种病毒检测方法的实现流程示意图,所述病毒检测方法的执行主体为电子设备,电子设备可以是移动终端、台式电脑、笔记本电脑、或服务器等。参考图2,病毒检测方法包括:
S201,基于布隆过滤器集群对待测文件进行处理,所述布隆过滤器集群包括至少两级布隆过滤器,所述至少两级布隆过滤器中的各级布隆过滤器分别对应病毒规则库中不同长度的规则片段,所述各级布隆过滤器依次用于检测所述待测文件是否匹配所对应的规则片段。
在步骤S201之前,还需要将待测文件输入布隆过滤器集群。
在本发明实施例中,布隆过滤器集群由至少两级布隆过滤器组成,至少两级布隆过滤器中的每级布隆过滤器对应的规则片段的长度不相同,各级布隆过滤器串行拼接。
布隆过滤器(Bloom Filter)由一个长的二进制向量和若干哈希函数组成,可用于快速检索一个元素是否属于一个集合。
当一个元素加入布隆过滤器中的时候,会进行如下操作:
使用布隆过滤器中的哈希函数对元素值进行计算,得到哈希值,有几个哈希函数得到几个哈希值。根据得到的哈希值,在位数组中把对应下标的值置为1。
当需要判断一个元素是否存在于布隆过滤器的时候,会进行如下操作:
对给定元素再次进行相同的哈希计算,得到哈希值之后判断位数组中的每个元素是否都为1,如果值都为1,那么说明这个元素在布隆过滤器中,如果存在一个值不为1,说明该元素不在布隆过滤器中。
图3是本发明实施例提供的一种布隆过滤器集群的示意图,如图3所示,布隆过滤器集群包括多个串行拼接的布隆过滤器,在一实施例中,按照布隆过滤器集群中的每级布隆过滤器对应的规则片段的长度,从短至长拼接布隆过滤器集群中的布隆过滤器。这里,规则片段指病毒规则库中存储的病毒规则中的连续字符串,假设一个病毒规则为dDR0ZzQ9OFBzdmVic0ZQMVhuaFJ,该病毒规则中的一个规则片段为dDR0ZzQ9OFB。假设一级布隆过滤器对应的规则片段的长度为5,二级布隆过滤器对应的规则片段的长度为7,三级布隆过滤器对应的规则片段的长度为10,则按照一级布隆过滤器-二级布隆过滤器-三级布隆过滤器的顺序进行拼接,得到布隆过滤器集群。在对待测文件进行病毒检测时,将待测文件输入布隆过滤器集群中的一级布隆过滤器,一级布隆过滤器对应的规则片段的长度最短,从一级布隆过滤器开始进行病毒检测。
在本发明实施例中,各级布隆过滤器用于检测待测文件是否匹配所对应的规则片段,在一实施例中,在各级布隆过滤器检测所述待测文件是否匹配所对应的规则片段时,所述方法包括:
基于滑动窗口获取所述待测文件中的连续字符串,将所述连续字符串与各级布隆过滤器对应的规则片段进行匹配,以确定所述待测文件是否匹配所对应的规则片段;所述滑动窗口的窗口宽度与各级布隆过滤器对应的规则片段的长度相同。
滑动窗口(SlidingWindows)是一种连续字符串的生成方式,给定一个连续字符串,用一个固定宽度的虚拟窗口置于连续字符串的起始位置,然后从左向右滑动该窗口,依次产生窗口宽度的连续字符串。通过滑动窗口可以获取待测文件中的连续字符串。这里,滑动窗口的窗口宽度需要与布隆过滤器对应的规则片段的长度相同,这样才能提取出与规则片段相同长度的连续字符串进行匹配。
例如,在一级布隆过滤器检测待测文件是否匹配所对应的规则片段时,假设一级布隆过滤器对应的规则片段的长度为10,将滑动窗口的窗口宽度设置为10,通过滑动窗口获取待测文件中字符串长度为10的连续字符串,一级布隆过滤器将待测文件中的连续字符串与对应的规则片段进行匹配,这里匹配指的是确定待测文件中的连续字符串是否与一级布隆过滤器对应的规则片段相同。
在一实施例中,所述基于布隆过滤器集群对待测文件进行处理,包括:
在所述布隆过滤器集群中的任意一级布隆过滤器检测到所述待测文件匹配所对应的规则片段的情况下,由下一级布隆过滤器进行匹配。
这里,布隆过滤器集群每次只使用一级布隆过滤器检测到待测文件是否匹配所对应的规则片段,而不是同时使用多级布隆过滤器检测,在一实施例中,各级布隆过滤器串行拼接,在其中某一级布隆过滤器检测到待测文件匹配所对应的规则片段的情况下,将待测文件发送至该级布隆过滤器的下一级布隆过滤器进行匹配,以此类推。
在进行病毒检测之前,需要基于病毒规则库和预先设定的规则片段的长度创建所述布隆过滤器集群。
参考图4,在一实施例中,所述方法还包括:
S401,基于所述病毒规则库创建所述至少两级布隆过滤器。
至少两级布隆过滤器中的每一级布隆过滤器对应的规则片段都来自于病毒规则库,从病毒规则库的病毒规则中获取布隆过滤器对应的规则片段。例如,设定一级布隆过滤器对应的规则片段的长度为15,病毒规则库在的一个病毒规则为dDR0ZzQ9OFBzdmVic0ZQMVhuaFJ,提取该病毒规则中长度为15的规则片段,比如其中一个规则片段为0ZzQ9OFBzdmVic0,从该病毒规则中可以提取多个长度为15规则片段,同样可以从病毒规则库中的其他病毒规则中提取长度为15的规则片段。根据从病毒规则中提取出的长度为15的规则片段创建一级布隆过滤器。同理,按照上述方法可以创建其他各级布隆过滤器。
这里,从病毒规则库的病毒规则中提取出的规则片段越多,对应的布隆过滤器在病毒检测时准确率越高、误报率越小。
在实际应用中,在创建布隆过滤器时,需要基于设定的哈希函数创建对应的布隆过滤器。布隆过滤器是由一个长的二进制向量和若干哈希函数组成的,在创建布隆过滤器时,设定的哈希函数可采用乘法哈希,哈希种子值可设为13、1313、1331、17和1717等质数或质因子较少的合数。这里,每级布隆过滤器对应的设定的哈希函数可以为多个,每级布隆过滤器对应的设定的哈希函数可以互相不同。
当规则片段需要加入到布隆过滤器中时,该规则片段首先由多个设定的哈希函数生成不同的哈希值,然后在对应的位数组的下表的元素设置为1,当位数组初始化时,所有位置均为0。当第二次存储相同的规则片段时,因为先前的对应位置已设置为1,所以很容易知道此值已经存在,去重非常方便。
当需要判断待测文件中的连续字符串是否存在于布隆过滤器中时,只需要对该连续字符串进行哈希计算,得到哈希值之后判断位数组中的每个元素是否都为1,如果值都为1,那么说明这个连续字符串在布隆过滤器中,即该待测文件匹配所对应的规则片段。如果存在一个值不为1,说明该连续字符串不在布隆过滤器中,即该待测文件不匹配所对应的规则片段。其中,不同的连续字符串可能哈希出来的位置相同,这种情况可以适当增加位数组大小或者调整设定的哈希函数。
S402,基于所述各级布隆过滤器对应的规则片段的长度,按照长度从短至长的顺序对所述至少两级布隆过滤器进行拼接,得到所述布隆过滤器集群。
按照规则片段的长度从短至长的顺序拼接至少两级布隆过滤器。例如,假设布隆过滤器集群中包括3级布隆过滤器,其中一级布隆过滤器对应的规则片段的长度为8,二级布隆过滤器对应的规则片段的长度为15,三级布隆过滤器对应的规则片段的长度为30。则按照一级布隆过滤器-二级布隆过滤器-三级布隆过滤器的顺序进行拼接,得到布隆过滤器集群。经过实验,按照规则片段的长度从短至长的顺序拼接至少两级布隆过滤器,得到的布隆过滤器集群病毒检测效率最高,耗时最短。
S202,基于所述待测文件的匹配结果确定是否需要通过所述病毒规则库进行病毒检测。
这里,一共可以得到3种匹配结果。其中,一种匹配结果表示待测文件与各级布隆过滤器所对应的规则片段都匹配。一种匹配结果表示待测文件与布隆过滤器集群中的个别布隆过滤器所对应的规则片段匹配,个别布隆过滤器所对应的规则片段不匹配。一种匹配结果表示待测文件与各级布隆过滤器所对应的规则片段都不匹配。
在一实施例中,所述基于所述待测文件的匹配结果确定是否需要通过所述病毒规则库进行病毒检测,包括:
在所述匹配结果表征所述待测文件与所述各级布隆过滤器所对应的规则片段都匹配的情况下,基于所述病毒规则库对所述待测文件进行病毒检测。
如果布隆过滤器集群中的每一级布隆过滤器都检测到待测文件与所对应的规则片段匹配,则需要将该待测文件发送给病毒规则库,由病毒规则库对待测文件进行病毒检测。
在一实施例中,所述基于所述病毒规则库对所述待测文件进行病毒检测,包括:
接收来自所述病毒规则库的检测结果;所述病毒规则库用于检测所述待测文件是否匹配所述病毒规则库中的病毒规则。
这里,病毒规则库可以存储在本地,也可以存储在云端服务器中。如果病毒规则库存储在本地,电子设备可以直接利用病毒规则库进行病毒检测,得到检测结果。如果病毒规则库存储在云端服务器,则需要将待测文件发送给云端服务器,电子设备接收云端服务器对待测文件的检测结果。
在一实施例中,所述基于所述待测文件的匹配结果确定是否需要通过所述病毒规则库进行病毒检测,包括:
在所述匹配结果表征所述待测文件与所述各级布隆过滤器中的任意一级布隆过滤器所对应的规则片段不匹配的情况下,确定所述待测文件为正常文件。
如果待测文件与布隆过滤器集群中的某一级布隆过滤器所对应的规则片段不匹配,或待测文件与各级布隆过滤器所对应的规则片段都不匹配,说明待测文件不包括病毒规则中的规则片段,确定待测文件为正常文件。
在实际应用中,只要有一级布隆过滤器检测到待测文件与所对应的规则片段不匹配,则后续的布隆过滤器不再进行检测,确定待测文件为正常文件。
在实际应用中,假设布隆过滤器集群一共包括三级布隆过滤器,按照设定长度从短至长的顺序拼接三级布隆过滤器。这样,布隆过滤器集群在进行病毒检测时,首先使用设定长度较短的第一级布隆过滤器做过滤,由于在实际设备上的大多数文件为正常文件,只有很少数可能是病毒文件,第一级布隆过滤器可以将大部分被测文件较早地排除。而且由于布隆过滤器集群部署在内存中,布隆过滤器集群的查杀速度快,第一级布隆过滤器的性能在布隆过滤器集群中最强,因此可以提高病毒检测的效率,将大多数不是病毒的文件进行排除。如果第一级布隆过滤器拦截到被测文件,则继续使用第二级布隆过滤器对被第一级布隆过滤器拦截的被测文件进行过滤,如果第二级布隆过滤器再次拦截了被测文件,则继续使用第三级布隆过滤器对被测文件进行过滤,在所有布隆过滤器都拦截了被测文件的情况下,基于病毒规则库检测被测文件是否为病毒文件。反之,只要有一级布隆过滤器没有拦截被测文件,则确定该被测文件是正常文件,不再对该被测文件进行病毒检测。
相比直接通过病毒规则库进行匹配,布隆过滤器集群的检测速度更快,通过一级级布隆过滤器进行过滤,只要任意一级布隆过滤器检测到待测文件与所对应的规则片段不匹配,直接确定待测文件为正常文件,这样可以尽早将大多数不是病毒文件的被测文件排除掉。对于有可能是病毒文件的被测文件,则在经过一级级布隆过滤器检测后,再通过病毒规则库进行病毒检测,从而确保了病毒检测结果的准确性,不会出现误判。
相比只使用一级布隆过滤器,一级布隆过滤器只能过滤一部分正常文件,剩余的被测文件都需要通过设定数据库进行检测,这样任然需要耗费较长检测时间。而通过多级布隆过滤器进行过滤,大部分正常文件都能较快过滤掉,加快了检测速度,检测耗时少。
对于所有布隆过滤器都匹配到的待测文件,通过病毒规则库进行病毒检测。对于有可能是病毒文件的被测文件,则在经过一级级布隆过滤器检测后,再通过病毒规则库进行病毒检测进行病毒检测,从而确保了病毒检测结果的准确性,不会出现误判。
在本发明实施例中,布隆过滤器集群中只要有一级布隆过滤器检测到待测文件与所对应的规则片段不匹配,则认为待测文件是正常文件,继续检测下一个待测文件。如果布隆过滤器集群中的所有布隆过滤器都检测到待测文件与所对应的规则片段匹配,则通过病毒规则库进行病毒检测。
在实际应用中,还可以在布隆过滤器集群中的所有布隆过滤器都检测到待测文件与所对应的规则片段匹配时,可以直接确定待测文件为病毒文件。或者,布隆过滤器集群中的某级布隆过滤器检测到待测文件与所对应的规则片段匹配时,确定待测文件为病毒文件。这样可以提高病毒检测的速度。
本发明实施例基于布隆过滤器集群对待测文件进行处理,布隆过滤器集群包括至少两级布隆过滤器,至少两级布隆过滤器中的各级布隆过滤器分别对应病毒规则库中不同长度的规则片段,各级布隆过滤器依次用于检测待测文件是否匹配所对应的规则片段。基于待测文件的匹配结果确定是否需要通过病毒规则库进行病毒检测。本发明实施例通过至少两级布隆过滤器对待测文件进行处理,在进行病毒检测时,可以将大多数不是病毒文件的被测文件尽早排除掉,提高了病毒检测的效率,减少了病毒检测的时间。
参考图5,图5是本发明应用实施例提供的一种多级布隆过滤器的架构示意图,在图5中布隆过滤器集群一共包括3级布隆过滤器,在对样本进行病毒检测时,并不直接查询病毒规则库,而是通过滑动窗口获取样本中的连续字符串,通过布隆过滤器对连续字符串进行过滤。如果其中某一级布隆过滤器能够判断样本为正常样本,则病毒检测流程提前终止,从而节省了病毒检测的时间。如果所有布隆过滤器都判断样本为病毒样本,则通过病毒规则库对样本进行病毒检测,如果通过病毒规则库认为该样本为病毒样本,则确定该样本是病毒样本。对于有可能是病毒文件的样本,在经过一级级布隆过滤器检测后,再通过病毒规则库进行病毒检测,从而确保了病毒检测结果的准确性,不会出现误判。本发明应用实施例既可以提高病毒检测的效率,又可以确保病毒检测结果的准确性。
参考图6,图6是本发明应用实施例提供的一种多级布隆过滤器的创建流程图,多级布隆过滤器即布隆过滤器集群,图6中布隆过滤器集群一共包括3级布隆过滤器,对于其中的每一级布隆过滤器,按照预先设定好的长度从病毒规则库中提取病毒规则的规则片段。其中,1级过滤器对应规则片段的长度为k1,2级过滤器对应规则片段的长度为k2,3级过滤器对应规则片段的长度为k3。根据提取的k1长度的规则片段和设定的哈希函数,实例化1级布隆过滤器,同理,实例化2级布隆过滤器和3级布隆过滤器。将1级布隆过滤器,2级布隆过滤器和3级布隆过滤器进行拼接,得到多级布隆过滤器。
参考图7,图7是本发明应用实施例提供的一种病毒检测流程示意图,在对被测文件进行病毒检测时,首先通过1级布隆过滤器对被测文件进行拦截,如果1级布隆过滤器无法拦截被测文件,则确定被测文件是正常文件。如果1级布隆过滤器拦截到了被测文件,则使用2级布隆过滤器对被测文件进行拦截,如果2级布隆过滤器无法拦截被测文件,则确定被测文件是正常文件。如果2级级布隆过滤器拦截到了被测文件,则使用3级布隆过滤器对被测文件进行拦截,如果3级布隆过滤器无法拦截被测文件,则确定被测文件是正常文件。如果3级级布隆过滤器拦截到了被测文件,则检索被测文件是否包括病毒规则库中的病毒规则,如果被测文件不包括病毒规则库中的病毒规则,则确定被测文件是正常文件。如果被测文件包括病毒规则库中的病毒规则,则确定被测文件是病毒文件。其中,1级布隆过滤器对应图7中的1级过滤器,命中表示1级过滤器拦截到了被测文件,不命中表示1级布隆过滤器没有拦截到被测文件。2级过滤器和3级过滤器同理。本发明应用实施例通过多级布隆过滤器对待测文件进行处理,在对计算机进行病毒检测时,可以将计算机中大多数不是病毒文件的被测文件尽早排除掉,提高了病毒检测的效率,减少了病毒检测的时间。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
需要说明的是,本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
另外,在本发明实施例中,“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
参考图8,图8是本发明实施例提供的一种病毒检测装置的示意图,如图8所示,该装置包括:处理模块和确定模块。
处理模块,用于基于布隆过滤器集群对待测文件进行处理,所述布隆过滤器集群包括至少两级布隆过滤器,所述至少两级布隆过滤器中的各级布隆过滤器分别对应病毒规则库中不同长度的规则片段,所述各级布隆过滤器依次用于检测所述待测文件是否匹配所对应的规则片段;
确定模块,用于基于所述待测文件的匹配结果确定是否需要通过所述病毒规则库进行病毒检测。
确定模块具体用于:
在所述匹配结果表征所述待测文件与所述各级布隆过滤器所对应的规则片段都匹配的情况下,基于所述病毒规则库对所述待测文件进行病毒检测。
确定模块具体用于:
在所述匹配结果表征所述待测文件与所述各级布隆过滤器中的任意一级布隆过滤器所对应的规则片段不匹配的情况下,确定所述待测文件为正常文件。
所述装置还包括:
接收模块,用于接收来自所述病毒规则库的检测结果;所述病毒规则库用于检测所述待测文件是否匹配所述病毒规则库中的病毒规则。
处理模块具体用于:
在所述布隆过滤器集群中的任意一级布隆过滤器检测到所述待测文件匹配所对应的规则片段的情况下,由下一级布隆过滤器进行匹配。
装置还包括:
创建模块,用于基于所述病毒规则库创建所述至少两级布隆过滤器;
拼接模块,用于基于所述各级布隆过滤器对应的规则片段的长度,按照长度从短至长的顺序对所述至少两级布隆过滤器进行拼接,得到所述布隆过滤器集群。
处理模块具体用于:
基于滑动窗口获取所述待测文件中的连续字符串,将所述连续字符串与各级布隆过滤器对应的规则片段进行匹配,以确定所述待测文件是否匹配所对应的规则片段;所述滑动窗口的窗口宽度与各级布隆过滤器对应的规则片段的长度相同。
实际应用时,所述处理模块和确定模块可通过电子设备中的处理器,比如中央处理器(CPU,Central Processing Unit)、数字信号处理器(DSP,Digital SignalProcessor)、微控制单元(MCU,MicrocontrollerUnit)或可编程门阵列(FPGA,Field-Programmable GateArray)等实现。
需要说明的是:上述实施例提供的病毒检测装置在进行病毒检测时,仅以上述各模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的模块完成,即将装置的内部结构划分成不同的模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的病毒检测装置与病毒检测方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
基于上述程序模块的硬件实现,且为了实现本申请实施例的方法,本申请实施例还提供了一种电子设备。图9为本申请实施例电子设备的硬件组成结构示意图,如图9所示,电子设备包括:
通信接口,能够与其它设备比如网络设备等进行信息交互;
处理器,与所述通信接口连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述电子设备侧一个或多个技术方案提供的方法。而所述计算机程序存储在存储器上。
当然,实际应用时,电子设备中的各个组件通过总线***耦合在一起。可理解,总线***用于实现这些组件之间的连接通信。总线***除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图9中将各种总线都标为总线***。
本申请实施例中的存储器用于存储各种类型的数据以支持电子设备的操作。这些数据的示例包括:用于在电子设备上操作的任何计算机程序。
可以理解,存储器可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(FlashMemory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-OnlyMemory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,RandomAccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static RandomAccess Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic RandomAccess Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic RandomAccess Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus RandomAccess Memory)。本申请实施例描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
上述本申请实施例揭示的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、DSP,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器,处理器读取存储器中的程序,结合其硬件完成前述方法的步骤。
可选地,所述处理器执行所述程序时实现本申请实施例的各个方法中由电子设备实现的相应流程,为了简洁,在此不再赘述。
在示例性实施例中,本申请实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的第一存储器,上述计算机程序可由电子设备的处理器执行,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置、电子设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,本申请实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
另外,在本申请实例中,“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (9)

1.一种病毒检测方法,其特征在于,所述方法包括:
基于布隆过滤器集群对待测文件进行处理,所述布隆过滤器集群包括至少两级布隆过滤器,所述至少两级布隆过滤器中的各级布隆过滤器分别对应病毒规则库中不同长度的规则片段,所述各级布隆过滤器依次用于检测所述待测文件是否匹配所对应的规则片段;所述基于布隆过滤器集群对待测文件进行处理,包括:将所述待测文件输入所述布隆过滤器集群中的一级布隆过滤器,所述一级布隆过滤器对应的规则片段的长度最短;
基于所述待测文件的匹配结果确定是否需要通过所述病毒规则库进行病毒检测;
在基于布隆过滤器集群对待测文件进行处理之前,所方法还包括:
基于所述病毒规则库创建所述至少两级布隆过滤器;
基于所述各级布隆过滤器对应的规则片段的长度,按照长度从短至长的顺序对所述至少两级布隆过滤器进行拼接,得到所述布隆过滤器集群。
2.根据权利要求1所述的方法,其特征在于,所述基于所述待测文件的匹配结果确定是否需要通过所述病毒规则库进行病毒检测,包括:
在所述匹配结果表征所述待测文件与所述各级布隆过滤器所对应的规则片段都匹配的情况下,基于所述病毒规则库对所述待测文件进行病毒检测。
3.根据权利要求1所述的方法,其特征在于,所述基于所述待测文件的匹配结果确定是否需要通过所述病毒规则库进行病毒检测,包括:
在所述匹配结果表征所述待测文件与所述各级布隆过滤器中的任意一级布隆过滤器所对应的规则片段不匹配的情况下,确定所述待测文件为正常文件。
4.根据权利要求2所述的方法,其特征在于,所述基于所述病毒规则库对所述待测文件进行病毒检测,包括:
接收来自所述病毒规则库的检测结果;所述病毒规则库用于检测所述待测文件是否匹配所述病毒规则库中的病毒规则。
5.根据权利要求1至2任一项所述的方法,其特征在于,所述基于布隆过滤器集群对待测文件进行处理,包括:
在所述布隆过滤器集群中的任意一级布隆过滤器检测到所述待测文件匹配所对应的规则片段的情况下,由下一级布隆过滤器进行匹配。
6.根据权利要求1至3任一项所述的方法,其特征在于,在各级布隆过滤器检测所述待测文件是否匹配所对应的规则片段时,所述方法包括:
基于滑动窗口获取所述待测文件中的连续字符串,将所述连续字符串与各级布隆过滤器对应的规则片段进行匹配,以确定所述待测文件是否匹配所对应的规则片段;所述滑动窗口的窗口宽度与各级布隆过滤器对应的规则片段的长度相同。
7.一种病毒检测装置,其特征在于,包括:
处理模块,用于基于布隆过滤器集群对待测文件进行处理,所述布隆过滤器集群包括至少两级布隆过滤器,所述至少两级布隆过滤器中的各级布隆过滤器分别对应病毒规则库中不同长度的规则片段,所述各级布隆过滤器依次用于检测所述待测文件是否匹配所对应的规则片段;所述处理模块具体用于:将所述待测文件输入所述布隆过滤器集群中的一级布隆过滤器,所述一级布隆过滤器对应的规则片段的长度最短;
确定模块,用于基于所述待测文件的匹配结果确定是否需要通过所述病毒规则库进行病毒检测;
创建模块,用于基于所述病毒规则库创建所述至少两级布隆过滤器;
拼接模块,用于基于所述各级布隆过滤器对应的规则片段的长度,按照长度从短至长的顺序对所述至少两级布隆过滤器进行拼接,得到所述布隆过滤器集群。
8.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述的病毒检测方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1至6任一项所述的病毒检测方法。
CN202110335752.3A 2021-03-29 2021-03-29 一种病毒检测方法、装置、电子设备及存储介质 Active CN113051566B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110335752.3A CN113051566B (zh) 2021-03-29 2021-03-29 一种病毒检测方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110335752.3A CN113051566B (zh) 2021-03-29 2021-03-29 一种病毒检测方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN113051566A CN113051566A (zh) 2021-06-29
CN113051566B true CN113051566B (zh) 2023-07-14

Family

ID=76516132

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110335752.3A Active CN113051566B (zh) 2021-03-29 2021-03-29 一种病毒检测方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN113051566B (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100396057C (zh) * 2005-10-21 2008-06-18 清华大学 基于有状态过滤引擎的高速分组检测方法
CN101398820B (zh) * 2007-09-24 2010-11-17 北京启明星辰信息技术股份有限公司 一种大规模关键词匹配方法
CN101848222B (zh) * 2010-05-28 2013-05-01 武汉烽火网络有限责任公司 互联网深度报文检测方法和装置
US8949371B1 (en) * 2011-09-29 2015-02-03 Symantec Corporation Time and space efficient method and system for detecting structured data in free text
CN104850656B (zh) * 2015-06-05 2018-04-10 中国信息安全研究院有限公司 一种动态自适应多级Bloom滤波器装置
CN110865982A (zh) * 2019-11-19 2020-03-06 深信服科技股份有限公司 一种数据匹配方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN113051566A (zh) 2021-06-29

Similar Documents

Publication Publication Date Title
US20210256127A1 (en) System and method for automated machine-learning, zero-day malware detection
US9171153B2 (en) Bloom filter with memory element
US8955120B2 (en) Flexible fingerprint for detection of malware
Drew et al. Polymorphic malware detection using sequence classification methods
CN111382434B (zh) 用于检测恶意文件的***和方法
EP3346664B1 (en) Binary search of byte sequences using inverted indices
Breitinger et al. Performance issues about context-triggered piecewise hashing
US11080398B2 (en) Identifying signatures for data sets
US11687534B2 (en) Method and system for detecting sensitive data
CN111869176B (zh) 用于恶意软件签名生成的***和方法
Naik et al. Evaluating automatically generated YARA rules and enhancing their effectiveness
KR20210054799A (ko) Url 클러스터링을 위한 url의 요약을 생성하는 방법 및 장치
CN113051568A (zh) 一种病毒检测方法、装置、电子设备及存储介质
CN113051566B (zh) 一种病毒检测方法、装置、电子设备及存储介质
CN109858249A (zh) 移动恶意软件大数据的快速智能比对和安全检测方法
Oliver et al. Designing the elements of a fuzzy hashing scheme
US11223641B2 (en) Apparatus and method for reconfiguring signature
CN108491718B (zh) 一种实现信息分类的方法及装置
CN112347477A (zh) 家族变种恶意文件挖掘方法和装置
CN113051569B (zh) 一种病毒检测方法、装置、电子设备及存储介质
EP2819054B1 (en) Flexible fingerprint for detection of malware
CN111310176B (zh) 一种基于特征选择的入侵检测方法和装置
Mahmud et al. An improved hashing approach for biological sequence to solve exact pattern matching problems
KR101465132B1 (ko) 다중바이트 처리 프리필터를 사용한 심층 패킷 검사 가속화 방법 및 이를 이용한 장치
Moeini et al. Improved Rabin-Karp Algorithm Using Bloom Filter

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant