用于检测感染型病毒的方法及装置与流程

文档序号:13054529阅读:149来源:国知局
技术领域本发明涉及计算机领域,尤其涉及一种用于检测感染型病毒的方法及装置。

背景技术:
感染型病毒是病毒中变种最多的一种类型的病毒。现有技术中,针对感染型病毒大多采用人工分析匹配或人工启动规则等方式来检测。由于感染型病毒会在传播自身的病毒代码的过程中,不断的变化着病毒本身的代码形式和执行逻辑,因此,需要人工不断添加更多的特征或规则以达到提高感染型病毒的检出率的目的,这就需要投入大量的人力资源,来手工处理这种不断变化的感染型病毒。该人工分析匹配或人工启动规则的方式不但存在人力成本高的问题,而且病毒检测速度难以保证,也很难及时准确的发现未知的感染型病毒。

技术实现要素:
本发明解决的技术问题之一是提供用于检测感染型病毒的方法及装置,在降低人力成本的同时,快速准确的检测出感染型病毒。根据本发明一方面的一个实施例,提供了一种用于检测感染型病毒的方法,包括:提取待检测文件的特征向量;所述特征向量包括:入口点的立即数的熵值的分布频率;利用基于所述特征向量进行机器学习得到的感染型病毒识别模型依据所述特征向量检测所述待检测文件是否为感染型病毒文件。可选地,提取待检测文件的特征向量包括:采用深度优先原则从入口点开始遍历指定深度的函数,直到所遍历的函数所包含的指令数量达到规定数量为止;统计所遍历的函数所包含的所有指令的立即数;计算所述立即数的熵值;统计所述立即数的熵值的分布频率,得到入口点的立即数的熵值的分布频率。可选地,所述熵值包括:二进制熵值、十进制熵值和十六进制熵值。可选地,所述特征向量还包括:易被感染型病毒感染的结构性特征。可选地,所述结构性特征包括以下至少一个:入口点所在节、可执行节的个数、可执行节的名称、入口点所在节的熵值、入口点所在节内位置。可选地,所述特征向量还包括:入口点的代码的指令频率。可选地,提取待检测文件的特征向量包括:采用深度优先原则从入口点开始遍历指定深度的函数,直到所遍历的函数所包含的指令数量达到规定数量为止;统计所遍历的函数所包含的所有指令的出现频率,得到入口点的代码的指令频率。根据本发明另一方面的一个实施例,提供了一种用于检测感染型病毒的装置,包括:用于提取待检测文件的特征向量的单元;所述特征向量包括:入口点的立即数的熵值的分布频率;用于利用基于所述特征向量进行机器学习得到的感染型病毒识别模型依据所述特征向量检测所述待检测文件是否为感染型病毒文件的单元。可选地,用于提取待检测文件的特征向量的单元包括:用于采用深度优先原则从入口点开始遍历指定深度的函数,直到所遍历的函数所包含的指令数量达到规定数量为止的子单元;用于统计所遍历的函数所包含的所有指令的立即数的子单元;用于计算所述立即数的熵值的子单元;用于统计所述立即数的熵值的分布频率,得到入口点的立即数的熵值的分布频率的子单元。可选地,所述熵值包括:二进制熵值、十进制熵值和十六进制熵值。可选地,所述特征向量还包括:易被感染型病毒感染的结构性特征。可选地,所述结构性特征包括以下至少一个:入口点所在节、可执行节的个数、可执行节的名称、入口点所在节的熵值、入口点所在节内位置。可选地,所述特征向量还包括:入口点的代码的指令频率。可选地,用于提取待检测文件的特征向量的单元包括:用于采用深度优先原则从入口点开始遍历指定深度的函数,直到所遍历的函数所包含的指令数量达到规定数量为止的子单元;用于统计所遍历的函数所包含的所有指令的出现频率,得到入口点的代码的指令频率的子单元。本申请实施例通过提取待检测文件的特征向量,所述特征向量包括入口点的立即数的熵值的分布频率,利用基于所述特征向量进行机器学习得到的感染型病毒识别模型,依据所述特征向量检测所述待检测文件是否为感染型病毒文件。其克服了人工分析识别和人工启动规则人工成本高的问题,且该基于感染型病毒识别模型的感染型病毒检测方法大大提高了检测速度,并可有效检测出未知感染型病毒。本领域普通技术人员将了解,虽然下面的详细说明将参考图示实施例、附图进行,但本发明并不仅限于这些实施例。而是,本发明的范围是广泛的,且意在仅通过后附的权利要求限定本发明的范围。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:图1是根据本发明一个实施例的用于检测感染型病毒的方法的流程图。图2是根据本发明另一个实施例的感染型病毒识别模型训练方法的流程图。图3是根据本发明另一个实施例的用于检测感染型病毒的方法的流程图。图4是根据本发明另一个实施例的感染型病毒识别模型训练方法的流程图。图5是根据本发明一个实施例的采用深度优先原则遍历入口点指令示意图。图6是根据本发明一个实施例的入口点的代码的指令频率分布曲线图。图7是根据本发明一个实施例的未被病毒感染文件的入口点的立即数的熵值的分布频率与被感染型病毒感染文件的入口点的立即数的熵值的分布频率对比示意图。图8是根据本发明一个实施例的用于检测感染型病毒的装置的结构示意图。图9是根据本发明一个实施例的特征向量提取单元的结构示意图。图10是根据本发明另一个实施例的特征向量提取单元的结构示意图。附图中相同或相似的附图标记代表相同或相似的部件。具体实施方式感染型病毒是将自身加入在其它的程序或动态库文件(DLL的一种)中,从而实现随被感染程序同步运行的功能,进而对感染电脑进行破坏和自身传播。感染型病毒由于其自身的特性,需要附加到其他宿主程序上进行运行,并且为了躲避杀毒软件的查杀,通常感染型病毒都会将自身分割、变形或加密后,再将自身的一部分或者全部附加到宿主程序上。一旦一个病毒文件执行,它很有可能就将系统中的绝大多数程序文件都加入病毒代码,进而传播给其它的电脑,因此,人工识别的方法很难快速准确的识别出感染型病毒,且较难发现未知的感染型病毒。本申请实施例针对感染型病毒提出一种检测方法,该方法是基于训练出的感染型病毒识别模型来检测感染型病毒。下面结合附图对本发明作进一步详细描述。图1是根据本发明一个实施例的用于检测感染型病毒的方法的流程图。本发明中的方法主要通过计算机设备中的操作系统或处理控制器来完成。将操作系统或处理控制器称为用于检测感染型病毒的装置。该计算机设备包括但不限于以下中的至少一个:用户设备、网络设备。用户设备包括但不限于计算机、智能手机、PDA等。网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。如图1中所示,该用于检测感染型病毒的方法主要包括如下步骤:S100、提取待检测文件的特征向量;所述特征向量包括:入口点的立即数的熵值的分布频率;S110、利用基于所述特征向量进行机器学习得到的感染型病毒识别模型依据所述特征向量检测所述待检测文件是否为感染型病毒文件。首先,需要说明的是,执行感染型病毒检测操作是基于感染型病毒识别模型来实现的,也就是,在执行该感染型病毒检测操作前,需要训练出一个感染型病毒识别模型。但由于并不是每次执行感染型病毒检测操作时都需要执行该训练操作,因此,该训练感染型病毒识别模型的操作并不是检测感染型病毒的必要步骤。下面首先介绍下感染型病毒识别模型的训练方法。如图2中所示,为本申请一个实施例提供的感染型病毒识别模型训练方法的流程图,该训练方法可包括如下步骤:S200、获取被感染型病毒感染的感染型病毒样本;本申请实施例对获取该感染型病毒样本的方法及数量不做具体限制,且可以理解的是,其获取的感染型病毒样本数量越多,则训练出的感染型病毒识别模型识别病毒的准确度越高。另外,需要说明的是,本申请实施例提供的训练感染型病毒识别模型的方法,可以仅基于获取的感染型病毒样本来训练,也就是,训练过程仅采用黑文件来完成;也可以基于1:1的感染型病毒样本和非感染病毒样本来训练,也就是,训练过程采用黑文件与白文件1∶1的比例来完成。此处所述的黑文件即被感染型病毒感染的文件,白文件为未被病毒感染的正常文件。S210、提取感染型病毒样本的特征向量,所述特征向量包括:入口点的立即数的熵值的分布频率;由于感染型病毒有可能修改必经流程,因此,本申请实施例可通过提取入口点的立即数的熵值的分布频率,来进行机器学习,从而识别感染型病毒对必经流程是否修改。本申请实施例中所述的立即数的定义如下:通常把在立即寻址方式指令中给出的数称为立即数。立即数可以是8位、16位或32位,该数值紧跟在操作码(即指令)之后。如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储。例如:MOVAH,80HADDAX,1234HMOVECX,123456HMOVB1,12HMOVW1,3456HADDD1,32123456H其中:B1、W1和D1分别是字节、字和双字单元。以上指令中的第二操作数(源操作数)都是立即数。在信息论中,熵是对不确定性的一种度量。信息量越大,不确定性就越小,熵也就越小;信息量越小,不确定性越大,熵也越大。根据熵的特性,我们可以通过计算熵值来判断一个事件的随机性及无序程度,也可以用熵值来判断某个指标的离散程度,指标的离散程度越大,该指标对综合评价的影响越大。由于未被病毒感染的正常文件的立即数的熵值一般为较小的值,若立即数的熵值较高,如熵值较高的立即数出现的次数超出该规定范围,则可认为该文件有可能被感染型病毒感染。因此,本申请实施例提取入口点的立即数的熵值的分布频率。其中,提取入口点的立即数的熵值的分布频率的方法包括:采用深度优先原则从入口点开始遍历指定深度的函数,直到所遍历的函数所包含的指令数量达到规定数量为止;可见,在提取入口点的立即数的熵值的分布频率时,是采用深度优先的原则遍历入口点,来获取入口点规定数量的指令。具体的遍历方法的示意图如图5中所示,逐条反编译入口点的指令代码,各圆圈所代表的点为跳转函数call所在的位置,分别用c1、c2、c3...表示,采用深度优先原则从c1开始遍历,遇到call函数,深度值加1,并进入函数;若深度值达到指定值(即指定深度),例如到达规定深度值4,则对遇到call函数,其深度值不再加1,只记录函数名称,且不进入函数,直到所遍历的所有函数中的指令达到规定数量,如2000个,则遍历完成。对图5中入口点采用深度优先原则依此遍历的点的顺序如图5中虚线箭头所示,具体为:c1-c2-c4-c8。需要说明的是,在便利过程中若在未达到规定深度值情况下,所遍历的函数包含的指令数量已达到规定数量,则可停止遍历,无需遍历到规定深度值。例如,在便利到c3时,所遍历的函数c1、c2以及c3所包含的指令数量达到规定数量2000个,则停止遍历,不再遍历c4。通过上述遍历操作可获取到入口点处规定数量的指令。之后,统计所遍历的函数所包含的所有指令的立即数;之后计算所述立即数的熵值;其中计算立即数的熵值时,由于针对一个立即数无法准确识别其所对应表示的数值具体是使用哪种进制的表示方式的所属进制,因此可同时计算该立即数的二进制熵值、十进制熵值和十六进制熵值,若为人工撰写的非感染病毒的立即数,必有一种进制的立即数的熵值比较小。最后,统计所述立即数的熵值的分布频率。未被病毒感染文件的入口点的立即数的熵值的分布频率与被感染型病毒感染文件的入口点的立即数的熵值的分布频率对比示意图如图7中所示,图7中横坐标表示立即数的熵值,纵坐标表示各熵值出现的次数。通过图7可以看出被感染型病毒感染的文件的高熵值的出现次数较多。通过上述操作可提取感染型病毒样本的入口点的立即数的熵值的分布频率,作为特征向量。S220、利用预设的机器学习分类算法进行计算,得到感染型病毒识别模型。本步骤也就是将上述所获取的样本,以及提取的特征向量输入到机器学习的分类算法中,从而得到感染型病毒识别模型。本申请实施例对所采用的分类算法不做具体限制,其可以采用已有的任一种分类算法,例如决策树算法、SVM(SupportVectorMachine,支持向量机)算法等等。通过上述训练方法得到了用于检测感染型病毒的感染型病毒识别模型。下面针对上述感染型病毒检测方法中的各步骤S100~S110做进一步解释说明。其中步骤S100,是提取待检测文件的特征向量;所述特征向量包括:入口点的立即数的熵值的分布频率;可以理解的是,在检测感染型病毒时所提取的特征向量与其使用的模型在训练时提取的特征向量是相同的。因此步骤S100所提取的待检测文件的特征向量也包括:入口点的立即数的熵值的分布频率。对于入口点的立即数的熵值的分布频率的提取方法同上面训练感染型病毒识别模型的介绍中所述,在此不再赘述。步骤S110是利用感染型病毒识别模型基于提取的上述特征向量来检测待检测文件是否为感染型病毒文件,也就是检测待检测文件是否被感染型病毒感染。本申请实施例通过提取待检测文件的特征向量,所述特征向量包括入口点的立即数的熵值的分布频率,利用基于所述特征向量进行机器学习得到的感染型病毒识别模型,依据所述特征向量检测所述待检测文件是否为感染型病毒文件。其克服了人工分析识别和人工启动规则人工成本高的问题,且该基于感染型病毒识别模型的感染型病毒检测方法大大提高了检测速度,并可有效检测出未知感染型病毒。本申请另一实施例提供的用于检测感染型病毒的方法如图3中所示,其可包括如下步骤:S300、提取待检测文件的特征向量;所述特征向量包括:入口点的立即数的熵值的分布频率,还包括:易被感染型病毒感染的结构性特征和/或入口点的代码的指令频率;S310、利用基于所述特征向量进行机器学习得到的感染型病毒识别模型依据所述特征向量检测所述待检测文件是否为感染型病毒文件。同样的,执行该感染型病毒检测操作是基于感染型病毒识别模型来实现的,也就是,在执行该感染型病毒检测操作前,需要训练出一个感染型病毒识别模型。但由于并不是每次执行感染型病毒检测操作时都需要执行该训练操作,因此,该训练感染型病毒识别模型的操作并不是检测感染型病毒的必要步骤。下面首先介绍下感染型病毒识别模型的训练方法。如图4中所示,为本申请另一实施例提供的感染型病毒识别模型训练方法的流程图,该训练方法可包括如下步骤:S400、获取被感染型病毒感染的感染型病毒样本;本申请实施例对获取该感染型病毒样本的方法及数量不做具体限制,且可以理解的是,其获取的感染型病毒样本数量越多,则训练出的感染型病毒识别模型识别病毒的准确度越高。本申请实施例提供的训练感染型病毒识别模型的方法,可以仅基于获取的感染型病毒样本来训练,也就是,训练过程仅采用黑文件来完成;也可以基于1∶1的感染型病毒样本和非感染病毒样本来训练,也就是,训练过程采用黑文件与白文件1∶1的比例来完成。此处所述的黑文件即被感染型病毒感染的文件,白文件为未被病毒感染的正常文件。S410、提取感染型病毒样本的特征向量,所述特征向量包括:入口点的立即数的熵值的分布频率,还包括:易被感染型病毒感染的结构性特征和/或入口点的代码的指令频率;由于感染型病毒有可能修改必经流程,因此,本申请实施例可通过提取入口点的立即数的熵值的分布频率,来进行机器学习,从而识别感染型病毒对必经流程是否修改。本申请实施例中所述的立即数的定义如下:通常把在立即寻址方式指令中给出的数称为立即数。立即数可以是8位、16位或32位,该数值紧跟在操作码(即指令)之后。如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储。例如:MOVAH,80HADDAX,1234HMOVECX,123456HMOVB1,12HMOVW1,3456HADDD1,32123456H其中:B1、W1和D1分别是字节、字和双字单元。以上指令中的第二操作数(源操作数)都是立即数。在信息论中,熵是对不确定性的一种度量。信息量越大,不确定性就越小,熵也就越小;信息量越小,不确定性越大,熵也越大。根据熵的特性,我们可以通过计算熵值来判断一个事件的随机性及无序程度,也可以用熵值来判断某个指标的离散程度,指标的离散程度越大,该指标对综合评价的影响越大。由于未被病毒感染的正常文件的立即数的熵值一般为较小的值,若立即数的熵值较高,如熵值较高的立即数出现的次数超出该规定范围,则可认为该文件有可能被感染型病毒感染。因此,本申请实施例提取入口点的立即数的熵值的分布频率。其中,提取入口点的立即数的熵值的分布频率的方法包括:采用深度优先原则从入口点开始遍历指定深度的函数,直到所遍历的函数所包含的指令数量达到规定数量为止;可见,在提取入口点的立即数的熵值的分布频率时,是采用深度优先的原则遍历入口点,来获取入口点规定数量的指令。具体的遍历方法的示意图如图5中所示,逐条反编译入口点的指令代码,各圆圈所代表的点为跳转函数call所在的位置,分别用c1、c2、c3...表示,采用深度优先原则从c1开始遍历,遇到call函数,深度值加1,并进入函数;若深度值达到指定值(即指定深度),例如到达规定深度值4,则对遇到call函数,其深度值不再加1,只记录函数名称,且不进入函数,直到所遍历的所有函数中的指令达到规定数量,如2000个,则遍历完成。对图5中入口点采用深度优先原则依此遍历的点的顺序如图5中虚线箭头所示,具体为:c1-c2-c4-c8。需要说明的是,在便利过程中若在未达到规定深度值情况下,所遍历的函数包含的指令数量已达到规定数量,则可停止遍历,无需遍历到规定深度值。例如,在便利到c3时,所遍历的函数c1、c2以及c3所包含的指令数量达到规定数量2000个,则停止遍历,不再遍历c4。通过上述遍历操作可获取到入口点处规定数量的指令。之后,统计所遍历的函数所包含的所有指令的立即数;之后计算所述立即数的熵值;由于针对一个立即数无法准确识别其所对应表示的数值具体是使用哪种进制的表示方式的所属进制,因此可同时计算该立即数的二进制熵值、十进制熵值和十六进制熵值,若为人工撰写的非感染病毒的立即数,必有一种进制的立即数的熵值比较小。最后,统计所述立即数的熵值的分布频率。未被病毒感染文件的入口点的立即数的熵值的分布频率与被感染型病毒感染文件的入口点的立即数的熵值的分布频率对比示意图如图7中所示,图7中横坐标表示立即数的熵值,纵坐标表示各熵值出现的次数。通过图7可以看出被感染型病毒感染的文件的高熵值的出现次数较多。通过上述操作可提取感染型病毒样本的入口点的立即数的熵值的分布频率,作为特征向量。本申请实施例提取的特征向量还可包括:入口点的代码的指令频率,从而识别感染型病毒对必经流程是否修改。其中,提取入口点的代码的指令频率需先定位到入口点,并提取入口点的指令,再统计其各指令出现频率。本申请实施例提供的提取入口点的代码的指令频率的方法包括:首先,采用深度优先原则从入口点开始遍历指定深度的函数,直到所遍历的函数所包含的指令数量达到规定数量为止;之后,统计所遍历的函数所包含的所有指令的出现频率,得到入口点的代码的指令频率。具体的遍历方法的示意图如图5中所示,逐条反编译入口点的指令代码,各圆圈所代表的点为跳转函数call所在的位置,分别用c1、c2、c3...表示,采用深度优先原则从c1开始遍历,遇到call函数,深度值加1,并进入函数;若深度值达到指定值(即指定深度),例如到达规定深度值4,则对遇到call函数,其深度值不再加1,只记录函数名称,且不进入函数,直到所遍历的所有函数中的指令达到规定数量,如2000个,则遍历完成。对图5中入口点采用深度优先原则依此遍历的点的顺序如图5中虚线箭头所示,具体为:c1-c2-c4-c8。需要说明的是,在便利过程中若在未达到规定深度值情况下,所遍历的函数包含的指令数量已达到规定数量,则可停止遍历,无需遍历到规定深度值。例如,在便利到c3时,所遍历的函数c1、c2以及c3所包含的指令数量达到规定数量2000个,则停止遍历,不再遍历c4。通过上述遍历操作可获取到入口点处规定数量的指令,其获取的指令可包括如下信息:指令名称、指令出现次数、指令对应的ID等等。且通过深度优先原则执行该遍历操作可为后续有效查出感染型病毒是否对必经流程进行修改提供便利。如图6中所示,可通过曲线表示指令的出现频率,其中该曲线的横坐标表示各指令对应的ID,纵坐标表示指令的出现次数。例如,针对add、adc、mov三个指令,其对应的ID可分别定义为1、2、3。通过上述操作可提取感染型病毒样本的入口点的代码的指令频率,作为特征向量。另外,由于被感染型病毒感染的文件的一些结构性特征会相对于未被感染的文件发生变化,其中发生变化的结构性特征统称为易被感染型病毒感染的结构性特征。因此,本申请实施例在进行机器学习时会获取这些结构性特征。本申请实施例所述的易被感染型病毒感染的结构性特征包括以下至少一个:入口点所在节、可执行节的个数、可执行节的名称、入口点所在节的熵值、入口点所在节内位置。针对上述入口点所在节,对于未被病毒感染的文件,其入口点所在节一般在第一个节,而被感染型病毒感染后,有可能在最后一个节或在各节之间的缝隙,因此,该入口点所在节可以作为判断感染型病毒的其中一个条件。针对可执行节的个数,对于未被病毒感染的文件,其可执行节一般为一个,而被感染型病毒感染后,有可能增加可执行节的个数,也就是可执行节个数非一个,因此,该可执行节的个数也可作为判断感染型病毒的其中一个条件。针对可执行节的名称,由于一个文件的可执行节的名称一般包括固定的几个,例如如下四个为经常使用的可执行节的名称:txt、dat、rsrc、loc,若非所述可执行节的名称,可认为该文件为可疑文件,有可能被感染型病毒感染,因此,该可执行节的名称同样可作为判断感染型病毒的其中一个条件。针对入口点所在节的熵值,一般未被病毒感染的文件的入口点所在节的熵值会在一个较小的范围内,例如,一般为2.0~3.0,如果被感染型病毒感染,该熵值一般会超出该范围,例如,该熵值变成一个较大的值,因此,判断入口点所在节的熵值同样可作为感染型病毒的一个识别条件。针对入口点所在节内位置,可根据对齐关系来判断是否被感染型病毒感染,未被病毒感染的文件的入口点的特点是一般会在靠近对齐的位置,则若入口点所在节内位置非靠近对齐的位置,则有可能是因为感染型病毒造成,因此,将该入口点所在节内位置作为感染型病毒的一个识别条件。通过上述分析可以看出,通过其中任一个结构性特征均可识别出感染型病毒。因此,上述结构性特征可以获取其中任一个或多个。其可以理解的是,通过上述多个结构性特征来识别感染型病毒会更准确,因此其获取的结构性特征越多,则进行机器学习时得到的训练模型进行病毒检测的准确度越高。另外,本申请一种实施例还可以利用机器学习为每个结构性特征确定权重值,从而根据各结构性特征及对应的权重值来识别感染型病毒。上述仅为发明人所列举的结构性特征中的几个具体实例,由于不可能将所有的结构性特征在此穷举,因此,其他被感染型病毒感染而发生变化的结构性特征也在本申请的保护范围内。因此本申请实施例在提取感染型病毒样本的特征向量时除提取入口点的立即数的熵值的分布频率外,还可提取入口点的代码的指令频率和/或结构性特征。上述操作获取了感染型病毒样本需要提取的特征向量。S420、利用预设的机器学习分类算法进行计算,得到感染型病毒识别模型。本步骤也就是将上述所获取的样本,以及提取的特征向量输入到机器学习的分类算法中,从而得到感染型病毒识别模型。本申请实施例对所采用的分类算法不做具体限制,其可以采用已有的任一种分类算法,例如决策树算法、SVM(SupportVectorMachine,支持向量机)算法等等。通过上述训练方法得到了用于检测感染型病毒的感染型病毒识别模型。下面针对上述感染型病毒检测方法中的各步骤S300~S310做进一步解释说明。其中步骤S300,是提取待检测文件的特征向量;所述特征向量包括:入口点的立即数的熵值的分布频率,还包括:易被感染型病毒感染的结构性特征和/或入口点的代码的指令频率;可以理解的是,在检测感染型病毒时所提取的特征向量与其使用的模型在训练时提取的特征向量是相同的。因此步骤S300所提取的待检测文件的特征向量与上述感染型病毒识别模型时提取的特征向量是相同的。其包括入口点的立即数的熵值的分布频率,针对入口点的立即数的熵值的分布频率的获取方法此处不再赘述,同上面步骤S410中所述。还包括结构性特征,所述结构性特征包括但不限于以下至少一个:入口点所在节、可执行节的个数、可执行节的名称、入口点所在节的熵值、入口点所在节内位置。对于上述各结构性特征在被感染型病毒感染后发生的变化,在此不再赘述。还可包括入口点的代码的指令频率,提取该入口点的代码的指令频率的方法同上面训练感染型病毒识别模型中所述。步骤S310是利用感染型病毒识别模型基于提取的上述特征向量来检测待检测文件是否为感染型病毒文件,也就是检测待检测文件是否被感染型病毒感染。本申请实施例通过提取待检测文件的特征向量,所述特征向量包括入口点的立即数的熵值的分布频率,还包括:易被感染型病毒感染的结构性特征和/或入口点的代码的指令频率,利用基于所述特征向量进行机器学习得到的感染型病毒识别模型,依据所述特征向量检测所述待检测文件是否为感染型病毒文件。其克服了人工分析识别和人工启动规则人工成本高的问题,且该基于感染型病毒识别模型的感染型病毒检测方法大大提高了检测速度,并可有效检测出未知感染型病毒。基于上述方法同样的思路,本申请实施例还提供一种用于检测感染型病毒的装置,如图8中所示,为该装置一种实施例结构示意图,该装置主要包括:用于提取待检测文件的特征向量的单元80;所述特征向量包括:入口点的立即数的熵值的分布频率,以下简称特征向量提取单元80;用于利用基于所述特征向量进行机器学习得到的感染型病毒识别模型依据所述特征向量检测所述待检测文件是否为感染型病毒文件的单元81,以下简称病毒检测单元81。下面对上述两个单元的功能做进一步详细介绍。由于感染型病毒有可能修改必经流程,因此,本申请实施例特征向量提取单元80可通过提取入口点的立即数的熵值的分布频率来作为感染型病毒检测的特征向量,从而识别感染型病毒对必经流程是否修改。其中,本申请实施例中所述的立即数的定义如下:通常把在立即寻址方式指令中给出的数称为立即数。立即数可以是8位、16位或32位,该数值紧跟在操作码(即指令)之后。如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储。例如:MOVAH,80HADDAX,1234HMOVECX,123456HMOVB1,12HMOVW1,3456HADDD1,32123456H其中:B1、W1和D1分别是字节、字和双字单元。以上指令中的第二操作数(源操作数)都是立即数。在信息论中,熵是对不确定性的一种度量。信息量越大,不确定性就越小,熵也就越小;信息量越小,不确定性越大,熵也越大。根据熵的特性,我们可以通过计算熵值来判断一个事件的随机性及无序程度,也可以用熵值来判断某个指标的离散程度,指标的离散程度越大,该指标对综合评价的影响越大。由于未被病毒感染的正常文件的立即数的熵值一般为较小的值,若立即数的熵值较高,如熵值较高的立即数出现的次数超出规定范围,则可认为该文件有可能被感染型病毒感染。为提取入口点的立即数的熵值的分布频率,所述特征向量提取单元80可如图10中所述,进一步包括如下子单元:用于采用深度优先原则从入口点开始遍历指定深度的函数,直到所遍历的函数所包含的指令数量达到规定数量为止的子单元803,以下简称入口点指令提取子单元803;可见,在提取入口点的立即数的熵值的分布频率时,也是采用深度优先的原则遍历入口点,来获取各指令的立即数,对于采用深度有效原则遍历入口点指定深度的函数的方法同上面实施例中所示,此处不再赘述。用于统计所遍历的函数所包含的所有指令的立即数的子单元804,以下简称立即数统计子单元804;用于计算所述立即数的熵值的子单元805,以下简称立即数的熵值计算子单元805;由于针对一个立即数无法准确识别其所表示的数值具体是使用哪种进制的表示方式,因此立即数的熵值计算子单元805可同时计算该立即数的二进制熵值、十进制熵值和十六进制熵值,若为人工撰写的非感染病毒的立即数,必有一种进制的立即数的熵值比较小。用于统计所述立即数的熵值的分布频率,得到入口点的立即数的熵值的分布频率的子单元806,以下简称分布频率统计子单元806。未被病毒感染文件的入口点的立即数的熵值的分布频率与被感染型病毒感染文件的入口点的立即数的熵值的分布频率对比示意图如图7中所示,通过图7可以看出被感染型病毒感染的文件的高熵值的出现次数较多。另外,为检测感染型病毒对必经流程的修改,所述特征向量提取单元80的另一种实施例的结构可如图9中所示,可包括如下子单元用于提取该入口点的代码的指令频率:用于采用深度优先原则从入口点开始遍历指定深度的函数,直到所遍历的函数所包含的指令数量达到规定数量为止的子单元801,以下简称入口点指令提取子单元801;用于统计所遍历的函数所包含的所有指令的出现频率,得到入口点的代码的指令频率的子单元802,以下简称入口点指令频率统计子单元802。其中,入口点指令提取子单元801提取入口点的代码的指令频率需先定位到入口点,并提取入口点的指令。本申请实施例提供的入口点指令提取子单元801提取入口点的代码的指令的方法包括:采用深度优先原则,从入口点开始遍历指定深度的函数,直到所遍历的所有函数所包含的指令数量达到规定数量为止。具体的遍历方法的示意图如图5中所示,逐条反编译入口点的指令代码,各圆圈所代表的点为跳转函数call所在的位置,分别用c1、c2、c3...表示,采用深度优先原则从c1开始遍历,遇到call函数,深度值加1,并进入函数;若深度值达到指定值(即指定深度),例如到达规定深度值4,则对遇到call函数,其深度值不再加1,只记录函数名称,且不进入函数,直到所遍历的所有函数中的指令达到规定数量,如2000个,则遍历完成。对图5中入口点采用深度优先原则依此遍历的点的顺序应为:c1-c2-c4-c8。需要说明的是,在便利过程中若在未达到规定深度值情况下,所遍历的函数包含的指令数量已达到规定数量,则可停止遍历,无需遍历到规定深度值。例如,在便利到c3时,所遍历的函数c1、c2以及c3所包含的指令数量达到规定数量2000个,则停止遍历,不再遍历c4。通过上述遍历操作可获取到入口点处规定数量的指令,其获取的指令可包括如下信息:指令名称、指令出现次数、指令对应的ID等等。且通过深度优先原则执行该遍历操作可为后续有效查出感染型病毒是否对必经流程进行修改提供便利。入口点指令频率统计子单元802可统计入口点指令提取子单元801所遍历的函数所包含的所有指令的出现频率,得到入口点的代码的指令频率。如图6中所示,可通过曲线表示所述指令的出现频率,其中该曲线的横坐标表示各指令对应的ID,纵坐标表示指令的出现次数。例如,针对add、adc、mov三个指令,其对应的ID可分别定义为1、2、3。另外,由于被感染型病毒感染的文件的一些结构性特征会相对于未被感染的文件发生变化,其中发生变化的结构性特征统称为易被感染型病毒感染的结构性特征。因此,本申请实施例特征向量提取单元80还可提取待检测文件的结构性特征,其所提取结构性特征为易被感染型病毒感染的结构性特征,包括以下至少一个:入口点所在节、可执行节的个数、可执行节的名称、入口点所在节的熵值、入口点所在节内位置。针对上述入口点所在节,对于未被病毒感染的文件,其入口点所在节一般在第一个节,而被感染型病毒感染后,有可能在最后一个节或在各节之间的缝隙,因此,该入口点所在节可以作为判断感染型病毒的其中一个条件。针对可执行节的个数,对于未被病毒感染的文件,其可执行节一般为一个,而被感染型病毒感染后,有可能增加可执行节的个数,也就是可执行节个数非一个,因此,该可执行节的个数也可作为判断感染型病毒的其中一个条件。针对可执行节的名称,由于一个文件的可执行节的名称一般包括固定的几个,例如如下四个为经常使用的可执行节的名称:txt、dat、rsrc、loc,若非所述可执行节的名称,可认为该文件为可疑文件,有可能被感染型病毒感染,因此,该可执行节的名称同样可作为判断感染型病毒的其中一个条件。针对入口点所在节的熵值,一般未被病毒感染的文件的入口点所在节的熵值会在一个较小的范围内,例如,一般为2.0~3.0,如果被感染型病毒感染,该熵值一般会超出该范围,例如,该熵值变成一个较大的值,因此,判断入口点所在节的熵值同样可作为感染型病毒的一个识别条件。针对入口点所在节内位置,可根据对齐关系来判断是否被感染型病毒感染,未被病毒感染的文件的入口点的特点是一般会在靠近对齐的位置,则若入口点所在节内位置非靠近对齐的位置,则有可能是因为感染型病毒造成,因此,将该入口点所在节内位置作为感染型病毒的一个识别条件。通过上述分析可以看出,通过其中任一个结构性特征均可识别出感染型病毒。因此,特征向量提取单元80在上述结构性特征中可以获取其中任一个或多个。其可以理解的是,通过上述多个结构性特征来识别感染型病毒会更准确,因此其获取的结构性特征越多,则进行机器学习时得到的训练模型进行病毒检测的准确度越高。另外,本申请一种实施例还可以利用机器学习为每个结构性特征确定权重值,从而根据各结构性特征及对应的权重值来识别感染型病毒。上述仅为发明人所列举的结构性特征中的几个具体实例,由于不可能将所有的结构性特征在此穷举,因此,其他被感染型病毒感染而发生变化的结构性特征也在本申请的保护范围内。因此,本申请实施例的特征向量提取单元80可仅提取待检测文件的入口点的立即数的熵值的分布频率,还可同时提取入口点的代码指令频率和/或结构性特征。病毒检测单元81是利用感染型病毒识别模型基于特征向量提取单元80提取的上述特征向量来检测待检测文件是否为感染型病毒文件,也就是检测待检测文件是否被感染型病毒感染。其中,所述感染型病毒识别模型的训练方法同上面方法实施例中所述,此处不再赘述。本申请实施例通过提取待检测文件的特征向量,所述特征向量包括入口点的立即数的熵值的分布频率,利用基于所述特征向量进行机器学习得到的感染型病毒识别模型,依据所述特征向量检测所述待检测文件是否为感染型病毒文件。其克服了人工分析识别和人工启动规则人工成本高的问题,且该基于感染型病毒识别模型的感染型病毒检测方法大大提高了检测速度,并可有效检测出未知感染型病毒。需要注意的是,本发明可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。另外,本发明的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本发明的方法和/或技术方案。而调用本发明的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本发明的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本发明的多个实施例的方法和/或技术方案。对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1