一种病毒文件识别方法与流程

文档序号:17490646发布日期:2019-04-23 20:27阅读:149来源:国知局
一种病毒文件识别方法与流程

本申请涉及信息处理技术领域,尤其涉及一种病毒文件识别方法。



背景技术:

病毒文件检测通常采用消息摘要算法md5等方法进行,但随着病毒软件的爆发式增长,很多病毒文件通过修改字节、插入、删除字节等方式,形成多种形式的变种病毒文件,现有的检测无法对该类变种病毒文件进行有效的检测。



技术实现要素:

本发明实施例提供了一种能够有效的提升病毒文件检测准确性以及效率的病毒文件识别方法、设备以及计算机可读存储介质。

本发明实施例第一方面提供了一种病毒文件识别方法,包括:

通过专用链路获取目标文件;

将所述目标文件拆分成多个第一分片单元文件;

基于哈希算法分别计算多个所述第一分片单元文件的信息熵;

根据所述第一分片单元文件的信息熵和预先设置的权重参数确定第一系数,其中所述第一系数为所述第一分片单元文件的信息熵和所述权重参数的乘积;

根据所述第一系数获取第一熵向量,所述第一系数为所述第一熵向量的元素;

获取基准文件,所述基准文件包含有病毒标签;

将所述基准文件拆分成多个第二分片单元文件,所述第一分片单元文件和所述第二分片单元文件的数量相同;

根据所述第二分片单元文件的信息熵和预先设置的权重参数的乘积获取第二系数,根据所述第二系数获取所述第二熵向量,所述第二系数为所述第二熵向量的元素;

计算所述第一熵向量与第二熵向量的关联度系数值;

根据所述关联度系数值确定所述目标文件是否与所述基准文件相关联,当所述关联度系数值大于预设门限值时,确定所述目标文件和所述基准文件相关联,将所述目标文件打上与所述基准文件相同的病毒标签。

优选地,所述病毒文件识别方法中:

所述第一熵向量为x=(x1,x2,x3,...,xn)t

其中,xn为所述第一熵向量所包括的第n个元素;

所述第二熵向量为y=(y1,y2,y3,...,yn)t

其中,yn为所述第二熵向量所包括的第n个元素,维度t为所述第一熵向量或第二熵向量包括的元素的数量;

所述计算所述第一熵向量与第二熵向量的关联度系数值包括:

基于下述计算式计算所述第一熵向量与第二熵向量的关联度系数值s:

优选地,所述病毒文件识别方法中:

所述第一熵向量为x=(x1,x2,x3,...,xn)t

其中,xn为所述第一熵向量所包括的第n个元素;

所述第二熵向量为y=(y1,y2,y3,...,yn)t

其中,yn为所述第二熵向量所包括的第n个元素,维度t为所述第一熵向量或第二熵向量包括的元素的数量;

所述计算所述第一熵向量与第二熵向量的关联度系数值包括:

基于以下数学式计算所述第一熵向量与第二熵向量的关联度系数值d,其中,所述第二公式为:

其中,xi为所述第一熵向量所包括的任一元素,yi为所述第二熵向量所包括的任一元素。

本申请提供了一种病毒文件识别方法,在判断目标文件是否为基准文件的变种的过程中,以第一分片单元文件的信息熵作为目标文件的哈希,有较强的鲁棒性,能够准确的识别出基准病毒文件的变种。

附图说明

图1为本发明实施例提供的病毒文件识别方法的流程示意图。

具体实施方式

参考图1,本发明实施例第一方面提供了一种病毒文件识别方法,包括:

步骤1、通过专用链路获取目标文件。

本实施例中,通过专用链路从文件库获取目标文件,可以避免在文件传输过程中引入杂志,例如传输过程中受到病毒感染,使得所述目标文件为非病毒文件的情形下而感染病毒,导致最终对所述文件库中的目标文件是否为病毒文件的识别结论出现误差。

本实施例需要识别出所述目标文件的文件属性,且本实施例对目标文件的具体类型不做限定,例如,所述目标文件可以指被操作系统运行的二进制文件,内容除了包含系统规定的必须的信息,还会根据要实现的功能以及开发者的编码风格呈现不同的特点。如目标文件可为android(安卓)系统下的dex文件。

步骤2、将所述目标文件拆分成多个第一分片单元文件。例如本实施例基于内容分割的分片哈希算法ctph对所述目标文件进行拆分处理,形成多个第一分片单元文件。

步骤3、基于哈希算法分别计算多个所述第一分片单元文件的信息熵。

其中,信息熵为所述第一分片单元文件所包含的信息的平均量,又称信源熵、平均自信息量。信息熵为不确定的量度而不是确定性的量度,因为越随机的第一分片单元文件的信息熵越大,还可以这样理解,来自第一分片单元文件的概率分布和第一分片单元文件的信息量构成了一个随机变量,这个随机变量的均值(即期望)就是这个分布产生的信息量的平均值,(即信息熵)。

本实施例对通过何种算法计算出所述第一分片单元文件的信息熵的不做限定;

对所述第一分片单元文件可以使用传统的哈希算法,计算出所述第一分片单元文件的信息熵。具体的,把第一分片单元文件作为输入,通过散列算法,变换成固定长度的输出,即所述第一分片单元文件的信息熵,所述第一分片单元文件的信息熵就是散列值。本实施例所示的哈希算法其实是一种压缩映射,也就是,第一分片单元文件的信息熵的空间通常远小于作为输入的第一分片单元文件的空间。

对所述第一分片单元文件可以使用模糊哈希算法计算出所述第一分片单元文件的信息熵。具体的,模糊哈希算法ssdeep是一个用来计算ctph(基于文本的分片哈希算法)。模糊哈希算法主要包括强哈希算法,所述强哈希算法用于计算所述第一分片单元文件的信息熵。

本实施例中,在将所述目标文件分片完成后,计算所述目标文件分片处理后的第一分片单元文件的信息熵,其中,所述第一分片单元文件为所述基准文件分片后的多个第一分片单元文件中的任一个分片文件。

步骤4、根据所述第一分片单元文件的信息熵和预先设置的权重参数确定第一系数,其中所述第一系数为所述第一分片单元文件的信息熵和所述权重参数的乘积。

步骤5、根据所述第一系数获取第一熵向量,所述第一系数为所述第一熵向量的元素。

所述第一熵向量包括第一系数xn,所述第一系数xn为所述第一熵向量所包括的多个元素中的任一元素。

所述第一熵向量可表示为x=(x1,x2,x3,...,xn)t,其中,xn为所述第一熵向量所包括的第n个元素,即为所述第一系数,维度t等于所述第一熵向量所包括的元素的数量,且所述t还等于所述第二熵向量所包括的元素的数量。

其中,所述xn=fn*wn。

可选的,本实施例可对已确定出的所述权重参数wn进行修正,以使修正后的所述权重参数wn可与不同的分片文件的敏感度对应,本实施例所示的敏感度是指对所述基准文件和目标文件之间文件属性是否相同的判断准确性,即敏感度越高,则判断的准确性越高。

若第一分片单元文件位于所述基准文件的中间位置,则说明该第一分片单元文件比较重要,进而说明与所述第一分片单元文件的敏感性越高,则可提升所述权重参数的数值;

若所述第一分片单元文件所包含的词汇在所述基准文件中出现的概率大于预设值,则说明该第一分片单元文件比较重要,进而说明与所述第一分片单元文件的敏感性越高,则可提升所述权重参数的数值;

若所述第一分片单元文件位于所述基准文件的头部或尾部,则说明该第一分片单元文件不重要,进而说明与所述第一分片单元文件的敏感性越低,则可降低所述权重参数的数值。

步骤6、获取基准文件,所述基准文件包含有病毒标签。

本实施例中,可通过人工的方法预先获取多个基准文件,且识别所述多个基准文件的文件属性是安全文件属性还是病毒文件属性,当识别出所述基准文件的文件属性是病毒文件属性时,则将所述基准文件的文件属性打上病毒标签。

本实施例中,所述基准文件可以指被操作系统运行的二进制文件,内容除了包含系统规定的必须的信息,还会根据要实现的功能以及开发者的编码风格呈现不同的特点。如文件可为android(安卓)系统下的dex文件。

所述基准文件的文件长度、链接段长度、字符串数、类型数、原型数、字段数、方法数、类数、数据段长度等均不做限定。

本实施例中,可通过使用特征码的方式识别出基准文件的文件属性,具体的,因病毒文件一般都有一个特征码,则可通过识别出文件的特征码,进而将文件的特征码和已识别出的病毒文件的特征码进行比对,即可确定出文件的属性是否为病毒文件属性,若文件的属性为病毒文件属性,则可通过特征码的比对,识别出文件的病毒种类。

本实施例对提取所述特征码的具体过程以及特征码在所述文件中的具体位置不做限定,只要所提取的特征码满足条件即可,其中,所述条件可为尽量不在文件的数据区中提取特征码,因为数据区的内容很容易改变,一旦病毒程序变更版本,改变了数据内容,特征码就会失效。所述条件还可为在保持特征码的唯一性的前提下,应当尽量使得特征码短小精悍,从而减少检测过程中的时间与空间的复杂度,提高检测效率。所述条件还可为经过详细的逆向分析之后选取出来的特征码,才足以将该病毒与其它病毒或正常程序相区别。

步骤7、将所述基准文件拆分成多个第二分片单元文件,所述第一分片单元文件和所述第二分片单元文件的数量相同。

本实施例在确定出所述已识别文件的情况下,即可对所述基准文件进行分片以获取多个第二分片文件。

可选的,本实施例可通过基于内容分割的分片哈希算法对所述已识别文件进行分片处理。

本实施例对所述第二分片文件的数量与第一分片文件的数量相同。

步骤8、根据所述第二分片单元文件的信息熵和预先设置的权重参数的乘积获取第二系数,根据所述第二系数获取所述第二熵向量,所述第二系数为所述第二熵向量的元素。

步骤9、计算所述第一熵向量与第二熵向量的关联度系数值。

一中实施方式中,可以基于以下公式计算所述第一熵向量与第二熵向量的关联度系数值s,其中,所述第一公式为:

其中,s为所述关联度系数值。

因所述关联度系数值s为所述第一熵向量601以及所述第二熵向量602之间夹角的余弦值,则可知所述关联度系数值s为小于或等于1的数值,在小于或等于1的范围内,所述关联度系数值s越大,则说明所述第一熵向量601以及所述第二熵量602越相似。

基于上述所示的所述第一公式计算出所述第一熵向量和所述第二熵向量的关联度系数值的情况下,则基于所述关联度系数值判断所述目标文件的文件属性与所述基准文件的文件属性是否相同的具体过程可为:

判断所述关联度系数值是否大于或等于第一预设值,本实施例对所述第一预设值的大小不做限定,本实施例以所述第一预设值小于或等于1为例进行示例性说明。

在确定出所述关联度系数值大于或等于所述第一预设值的情况下,则即可确定出所述目标文件和所述基准文件具有相同的文件属性,即若经由确定出基准文件的文件属性为病毒文件属性,则本实施例所示的目标文件的文件属性为病毒文件属性;若确定出基准文件的文件属性为安全文件属性,则本实施例所示的目标文件的文件属性为安全文件属性。

在确定出所述关联度系数值小于所述第一预设值的情况下,则即可确定出所述目标文件和所述基准文件具有不相同的文件属性,即若确定出基准文件的文件属性为病毒文件属性,则本实施例所示的目标文件的文件属性为安全文件属性;若确定出基准文件的文件属性为安全文件属性,则本实施例所示的目标文件的文件属性为病毒文件属性。

采用上述所示的方法确定所述第一熵向量601以及所述第二熵向量602之间相似度的方法,具有更好的鲁棒性,可以对于文件的变化进行更好的捕捉,因上述所示可知,本实施例因将所述目标文件分片形成有100个第一分片单元文件,则可将所述基准文件以及所述目标文件分别构建成一百维的空间中,则不管位于一百维的空间中的哪一片文件进行了轻微的修改,在一百维的空间中的坐标偏移均不大,则通过第一公式即可准确的识别出所述第一熵向量和所述第二熵向量的相似度,可见,若所述目标文件为所述基准文件的变种,则通过本实施例所示的方法可有效且准确的识别出所述目标文件和所述基准文件具有相同的文件属性。

另一实施方式中,可基于以下公式计算所述第一熵向量601与第二熵向量602的关联度系数值d,其中,所述第二公式为:

其中,d为所述关联度系数值,xi为所述第一熵向量所包括的任一元素,yi为所述第二熵向量所包括的任一元素;

具体的,本种方式所示的所述第一熵向量601与第二熵向量602的关联度系数值d为在坐标系中,所述所述第一熵向量601与第二熵向量602之间的距离。

基于上述所示的所述第二公式计算出所述第一熵向量和所述第二熵向量的关联度系数值的情况下,则基于所述关联度系数值判断所述目标文件的文件属性与所述基准文件的文件属性是否相同的具体过程可为:

判断所述关联度系数值是否小于或等于第二预设值,本实施例对所述第二预设值的大小不做限定。

在确定出所述关联度系数值小于或等于所述第二预设值的情况下,则即可确定出所述目标文件和所述基准文件具有相同的文件属性,即若确定出基准文件的文件属性为病毒文件属性,则本实施例所示的目标文件的文件属性为病毒文件属性;若确定出基准文件的文件属性为安全文件属性,则本实施例所示的目标文件的文件属性为安全文件属性。

在确定出所述关联度系数值大于所述第二预设值的情况下,则即可确定出所述目标文件和所述基准文件具有不相同的文件属性,即若确定出基准文件的文件属性为病毒文件属性,则本实施例所示的目标文件的文件属性为安全文件属性;若确定出基准文件的文件属性为安全文件属性,则本实施例所示的目标文件的文件属性为病毒文件属性。

步骤10、根据所述关联度系数值确定所述目标文件是否与所述基准文件相关联,当所述关联度系数值大于预设门限值时,确定所述目标文件和所述基准文件相关联,将所述目标文件打上与所述基准文件相同的病毒标签。

本申请提供的病毒文件识别方法,在判断目标文件是否为基准文件的变种的过程中,以第一分片单元文件的信息熵作为目标文件的哈希,有较强的鲁棒性,能够准确的识别出基准病毒文件的变种。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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