CN104657662A - 用于检测感染型病毒的方法及装置 - Google Patents

用于检测感染型病毒的方法及装置 Download PDF

Info

Publication number
CN104657662A
CN104657662A CN201510038774.8A CN201510038774A CN104657662A CN 104657662 A CN104657662 A CN 104657662A CN 201510038774 A CN201510038774 A CN 201510038774A CN 104657662 A CN104657662 A CN 104657662A
Authority
CN
China
Prior art keywords
entrance
entropy
type virus
proper vector
immediate
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.)
Granted
Application number
CN201510038774.8A
Other languages
English (en)
Other versions
CN104657662B (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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Anyi Hengtong Beijing Technology 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 Anyi Hengtong Beijing Technology Co Ltd filed Critical Anyi Hengtong Beijing Technology Co Ltd
Priority to CN201510038774.8A priority Critical patent/CN104657662B/zh
Publication of CN104657662A publication Critical patent/CN104657662A/zh
Priority to BR102015032819A priority patent/BR102015032819A2/pt
Application granted granted Critical
Publication of CN104657662B publication Critical patent/CN104657662B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

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)
  • Investigating Or Analysing Biological Materials (AREA)

Abstract

本发明提供了用于检测感染型病毒的方法及装置,其中的方法包括:提取待检测文件的特征向量;所述特征向量包括:易被感染型病毒感染的结构性特征;利用基于所述特征向量进行机器学习得到的感染型病毒识别模型依据所述特征向量检测所述待检测文件是否为感染型病毒文件。本发明克服了人工分析识别和人工启动规则人工成本高的问题,且该基于感染型病毒识别模型的感染型病毒检测方法大大提高了检测速度,并可有效检测出未知感染型病毒。

Description

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

Claims (14)

1.一种用于检测感染型病毒的方法,其中,包括:
提取待检测文件的特征向量;所述特征向量包括:易被感染型病毒感染的结构性特征;
利用基于所述特征向量进行机器学习得到的感染型病毒识别模型依据所述特征向量检测所述待检测文件是否为感染型病毒文件。
2.根据权利要求1所述的方法,其中,所述结构性特征包括以下至少一个:
入口点所在节、可执行节的个数、可执行节的名称、入口点所在节的熵值、入口点所在节内位置。
3.根据权利要求1所述的方法,其中,所述特征向量还包括:
入口点的代码的指令频率。
4.根据权利要求3所述的方法,其中,提取待检测文件的特征向量包括:
采用深度优先原则从入口点开始遍历指定深度的函数,直到所遍历的函数所包含的指令数量达到规定数量为止;
统计所遍历的函数所包含的所有指令的出现频率,得到入口点的代码的指令频率。
5.根据权利要求1或3所述的方法,其中,所述特征向量还包括:
入口点的立即数的熵值的分布频率。
6.根据权利要求5所述的方法,其中,提取待检测文件的特征向量包括:
采用深度优先原则从入口点开始遍历指定深度的函数,直到所遍历的函数所包含的指令数量达到规定数量为止;
统计所遍历的函数所包含的所有指令的立即数;
计算所述立即数的熵值;
统计所述立即数的熵值的分布频率,得到入口点的立即数的熵值的分布频率。
7.根据权利要求6所述的方法,其中,所述熵值包括:
二进制熵值、十进制熵值和十六进制熵值。
8.一种用于检测感染型病毒的装置,其中,包括:
用于提取待检测文件的特征向量的单元;所述特征向量包括:易被感染型病毒感染的结构性特征;
用于利用基于所述特征向量进行机器学习得到的感染型病毒识别模型依据所述特征向量检测所述待检测文件是否为感染型病毒文件的单元。
9.根据权利要求8所述的装置,其中,所述结构性特征包括以下至少一个:
入口点所在节、可执行节的个数、可执行节的名称、入口点所在节的熵值、入口点所在节内位置。
10.根据权利要求8所述的装置,其中,所述特征向量还包括:
入口点的代码的指令频率。
11.根据权利要求10所述的装置,其中,用于提取待检测文件的特征向量的单元包括:
用于采用深度优先原则从入口点开始遍历指定深度的函数,直到所遍历的函数所包含的指令数量达到规定数量为止的子单元;
用于统计所遍历的函数所包含的所有指令的出现频率,得到入口点的代码的指令频率的子单元。
12.根据权利要求8或10所述的装置,其中,所述特征向量还包括:
入口点的立即数的熵值的分布频率。
13.根据权利要求12所述的装置,其中,用于提取待检测文件的特征向量的单元包括:
用于采用深度优先原则从入口点开始遍历指定深度的函数,直到所遍历的函数所包含的指令数量达到规定数量为止的子单元;
用于统计所遍历的函数所包含的所有指令的立即数的子单元;
用于计算所述立即数的熵值的子单元;
用于统计所述立即数的熵值的分布频率,得到入口点的立即数的熵值的分布频率的子单元。
14.根据权利要求13所述的装置,其中,所述熵值包括:
二进制熵值、十进制熵值和十六进制熵值。
CN201510038774.8A 2015-01-26 2015-01-26 用于检测感染型病毒的方法及装置 Active CN104657662B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510038774.8A CN104657662B (zh) 2015-01-26 2015-01-26 用于检测感染型病毒的方法及装置
BR102015032819A BR102015032819A2 (pt) 2015-01-26 2015-12-29 método e aparelho para detecção de vírus do tipo infeccioso

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510038774.8A CN104657662B (zh) 2015-01-26 2015-01-26 用于检测感染型病毒的方法及装置

Publications (2)

Publication Number Publication Date
CN104657662A true CN104657662A (zh) 2015-05-27
CN104657662B CN104657662B (zh) 2017-11-03

Family

ID=53248773

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510038774.8A Active CN104657662B (zh) 2015-01-26 2015-01-26 用于检测感染型病毒的方法及装置

Country Status (2)

Country Link
CN (1) CN104657662B (zh)
BR (1) BR102015032819A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105740706A (zh) * 2015-12-25 2016-07-06 哈尔滨安天科技股份有限公司 基于api名称和立即数的启发式样本检测方法及系统
CN107315955A (zh) * 2016-04-27 2017-11-03 百度在线网络技术(北京)有限公司 文件安全性识别方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060026675A1 (en) * 2004-07-28 2006-02-02 Cai Dongming M Detection of malicious computer executables
US20100162400A1 (en) * 2008-12-11 2010-06-24 Scansafe Limited Malware detection
CN102542190A (zh) * 2010-12-31 2012-07-04 北京奇虎科技有限公司 基于机器学习的程序识别方法及装置
CN103839006A (zh) * 2010-11-29 2014-06-04 北京奇虎科技有限公司 基于机器学习的程序识别方法及装置
CN103927483A (zh) * 2014-04-04 2014-07-16 西安电子科技大学 用于检测恶意程序的判定模型及恶意程序的检测方法
CN104077524A (zh) * 2013-03-25 2014-10-01 腾讯科技(深圳)有限公司 用于病毒鉴定的训练方法和病毒鉴定方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060026675A1 (en) * 2004-07-28 2006-02-02 Cai Dongming M Detection of malicious computer executables
US20100162400A1 (en) * 2008-12-11 2010-06-24 Scansafe Limited Malware detection
CN103839006A (zh) * 2010-11-29 2014-06-04 北京奇虎科技有限公司 基于机器学习的程序识别方法及装置
CN102542190A (zh) * 2010-12-31 2012-07-04 北京奇虎科技有限公司 基于机器学习的程序识别方法及装置
CN104077524A (zh) * 2013-03-25 2014-10-01 腾讯科技(深圳)有限公司 用于病毒鉴定的训练方法和病毒鉴定方法及装置
CN103927483A (zh) * 2014-04-04 2014-07-16 西安电子科技大学 用于检测恶意程序的判定模型及恶意程序的检测方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105740706A (zh) * 2015-12-25 2016-07-06 哈尔滨安天科技股份有限公司 基于api名称和立即数的启发式样本检测方法及系统
CN105740706B (zh) * 2015-12-25 2019-05-07 哈尔滨安天科技股份有限公司 基于api名称和立即数的启发式样本检测方法及系统
CN107315955A (zh) * 2016-04-27 2017-11-03 百度在线网络技术(北京)有限公司 文件安全性识别方法和装置

Also Published As

Publication number Publication date
BR102015032819A2 (pt) 2016-09-20
CN104657662B (zh) 2017-11-03

Similar Documents

Publication Publication Date Title
EP4058916B1 (en) Detecting unknown malicious content in computer systems
Baldwin et al. Leveraging support vector machine for opcode density based detection of crypto-ransomware
Chen et al. Achieving accuracy and scalability simultaneously in detecting application clones on android markets
Sæbjørnsen et al. Detecting code clones in binary executables
CN104850493A (zh) 一种检测源代码漏洞的方法和装置
CN101964036B (zh) 漏洞检测方法及装置
KR101228899B1 (ko) 벡터량 산출을 이용한 악성코드의 분류 및 진단 방법과 장치
US9389852B2 (en) Technique for plagiarism detection in program source code files based on design pattern
KR101858620B1 (ko) 기계 학습을 이용한 자바스크립트 분석 장치 및 방법
CN111600894B (zh) 一种网络攻击检测方法及装置
US20220318383A1 (en) Methods and apparatus for malware classification through convolutional neural networks using raw bytes
CN104680065A (zh) 病毒检测方法、装置及设备
Mitsuhashi et al. High-accuracy malware classification with a malware-optimized deep learning model
Ficco Comparing API call sequence algorithms for malware detection
KR101541603B1 (ko) 콘트롤 플로우 그래프들을 이용하는 프로그램의 표절 판단 방법 및 장치
Suhuan et al. Android malware detection based on logistic regression and XGBoost
CN104657662A (zh) 用于检测感染型病毒的方法及装置
CN105793864A (zh) 检测恶意多媒体文件的系统和方法
KR102299525B1 (ko) 제품 평가 마이닝 방법 및 이를 수행하는 장치
CN105893842A (zh) 用于检测感染型病毒的方法及装置
CN112100618B (zh) 一种病毒文件检测方法、系统、设备及计算机存储介质
CN105653954A (zh) 一种检测恶意代码的方法及装置
CN105893843A (zh) 用于检测感染型病毒的方法及装置
Shaw et al. Mining android apps to predict market ratings
Liu et al. SELF: A method of searching for library functions in stripped binary code

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20190830

Address after: 100085 Beijing, Haidian District, No. ten on the ground floor, No. 10 Baidu building, layer 2

Patentee after: BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY Co.,Ltd.

Address before: 100091 C, block, building No. 4, Zhongguancun Software Park, No. 8, West flourishing West Road, Beijing, China 1-03

Patentee before: Pacify a Heng Tong (Beijing) Science and Technology Ltd.

TR01 Transfer of patent right