恶意程序检测方法及装置与流程

文档序号:12467779阅读:217来源:国知局
恶意程序检测方法及装置与流程

本发明涉及系统安全与网络安全技术领域,尤其是涉及一种恶意程序检测方法及装置。



背景技术:

恶意程序通常是指带有攻击意图的一段程序,是编写者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码,包括但不限于蠕虫、病毒和木马。现在计算机和通信基础设施非常容易遭受恶意程序的攻击,网络连接的高速发展使得恶意程序以更快的速度传播并感染主机,进而损害个人、商业公司和政府的利益。

传统的恶意程序检测方法主要采用基于签名的方式,具体的检测过程如下:选取已知的恶意文件,从恶意文件中提取签名,其中,该签名为一些短小且唯一的字符串,然后将提取出的签名作为特征组成特征库;检测未知文件时,若未知文件包含特征库中的特征,则判定该未知文件为恶意程序;若未知文件不包含特征库中的特征,则判定该未知文件为正常程序。

传统的恶意程序检测方法主要是通过检测未知文件中是否包含特征库中的特征来确定该未知文件是否为恶意程序,由于特征库中只存储有已知的恶意文件的特征,因此现有的恶意程序检测方法只能识别已知的恶意程序,无法有效地识别新型的恶意程序。



技术实现要素:

有鉴于此,本发明的目的在于提供一种恶意程序检测方法及装置,以解决现有的恶意程序检测方法只能识别已知的恶意程序,无法有效地识别新型的恶意程序的技术问题。

第一方面,本发明实施例提供了一种恶意程序检测方法,包括:获取待检测程序,提取所述待检测程序的特征;根据所述待检测程序的特征和预先获得的特征库,确定所述待检测程序对应的特征向量;利用训练好的分类器对所述特征向量进行检测,以确定所述待检测程序是否为恶意程序。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,提取所述待检测程序的特征,包括:提取所述待检测程序的操作码,根据所述操作码确定所述待检测程序的特征。

结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,根据所述待检测程序的特征和预先获得的特征库,确定所述待检测程序对应的特征向量,包括:在所述待检测程序的多个特征中,逐一查找所述特征库中的每个特征;当查找到所述特征库中的特征时,将所述特征库中被查找到的特征标记为第一预设值,否则,将所述特征库中未被查找到的特征标记为第二预设值;根据所述特征库中各个特征的标记结果和各个特征的排列顺序,确定所述待检测程序对应的特征向量。

结合第一方面、第一方面的第一种、第一方面的第二种中任一种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述特征库通过以下方法获得:获取满足预设样本要求的程序样本,提取所述程序样本的特征,其中,所述程序样本包括正常样本和恶意样本;对所述程序样本的特征进行筛选,得到分类效果满足预设分类要求的特征;将所述分类效果满足预设分类要求的特征进行组合,得到所述特征库。

结合第一方面的第三种可能的实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,其中,所述分类器通过以下方式训练:根据所述程序样本的特征和所述特征库,确定所述程序样本对应的特征向量;根据所述程序样本对应的特征向量对所述分类器进行训练。

第二方面,本发明实施例还提供一种恶意程序检测装置,包括:特征提取模块,用于获取待检测程序,提取所述待检测程序的特征;特征向量确定模块,用于根据所述待检测程序的特征和预先获得的特征库,确定所述待检测程序对应的特征向量;检测模块,用于利用训练好的分类器对所述特征向量进行检测,以确定所述待检测程序是否为恶意程序。

结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,所述特征提取模块具体用于:提取所述待检测程序的操作码,根据所述操作码确定所述待检测程序的特征。

结合第二方面,本发明实施例提供了第二方面的第二种可能的实施方式,其中,所述特征向量确定模块包括:特征查找单元,用于在所述待检测程序的多个特征中,逐一查找所述特征库中的每个特征;标记单元,用于当所述特征查找单元查找到所述特征库中的特征时,将所述特征库中被查找到的特征标记为第一预设值,否则,将所述特征库中未被查找到的特征标记为第二预设值;第一确定单元,用于根据所述特征库中各个特征的标记结果和各个特征的排列顺序,确定所述待检测程序对应的特征向量。

结合第二方面、第二方面的第一种、第二方面的第二种中任一种可能的实施方式,本发明实施例提供了第二方面的第三种可能的实施方式,其中,所述装置还包括特征库建立模块,所述特征库建立模块包括:

特征提取单元,用于获取满足预设样本要求的程序样本,提取所述程序样本的特征,其中,所述程序样本包括正常样本和恶意样本;特征筛选单元,用于对所述程序样本的特征进行筛选,得到分类效果满足预设分类要求的特征;特征库建立单元,用于将所述分类效果满足预设分类要求的特征进行组合,得到所述特征库。

结合第二方面的第三种可能的实施方式,本发明实施例提供了第二方面的第四种可能的实施方式,其中,所述装置还包括训练模块,所述训练模块包括:

第二确定单元,用于根据所述程序样本的特征和所述特征库,确定所述程序样本对应的特征向量;训练单元,用于根据所述程序样本对应的特征向量对所述分类器进行训练。

本发明实施例带来了以下有益效果:

在本发明实施例中,获取待检测程序,提取待检测程序的特征,根据待检测程序的特征和预先获得的特征库,确定待检测程序对应的特征向量,利用训练好的分类器对该特征向量进行检测,以确定该待检测程序是否为恶意程序。由于已知的恶意程序和未知的恶意程序具有共同的行为模式,训练好的分类器可以根据待检测程序对应的特征向量,来识别该待检测程序是否具有恶意程序的共同的行为模式,从而确定该待检测程序是否为恶意程序,因此通过本发明实施例提供的恶意程序检测方法及装置,不仅可以准确地识别已知的恶意程序,也可以有效地识别新型的恶意程序,从而解决现有的恶意程序检测方法只能识别已知的恶意程序,无法有效地识别新型的恶意程序的技术问题。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明第一实施例提供的恶意程序检测方法的流程示意图;

图2为本发明第一实施例提供的恶意程序检测方法中确定特征向量的流程示意图;

图3为本发明第一实施例提供的建立特征库的流程示意图;

图4为本发明第一实施例提供的训练分类器的流程示意图;

图5a为本发明第一实施例提供的不同恶意样本占比对应的准确度的实验结果示意图;

图5b为本发明第一实施例提供的不同恶意样本占比对应的召回率的实验结果示意图;

图5c为本发明第一实施例提供的不同恶意样本占比对应的漏报率的实验结果示意图;

图6a为本发明第一实施例提供的不同程序样本数量对应的准确度的实验结果示意图;

图6b为本发明第一实施例提供的不同程序样本数量对应的召回率的实验结果示意图;

图6c为本发明第一实施例提供的不同程序样本数量对应的漏报率的实验结果示意图;

图7a为本发明第一实施例提供的不同特征筛选算法对应的准确度的实验结果示意图;

图7b为本发明第一实施例提供的不同特征筛选算法对应的召回率的实验结果示意图;

图7c为本发明第一实施例提供的不同特征筛选算法对应的漏报率的实验结果示意图;

图8为本发明第二实施例提供的恶意程序检测装置的模块组成示意图;

图9为本发明第二实施例提供的恶意程序检测装置中特征向量确定模块的单元组成示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前传统的恶意程序检测方法主要是通过检测未知文件中是否包含特征库中的特征来确定该未知文件是否为恶意程序,由于特征库中只存储有已知的恶意文件的特征,因此现有的恶意程序检测方法只能识别已知的恶意程序,无法有效地识别新型的恶意程序。基于此,本发明实施例提供的一种恶意程序检测方法及装置,可以解决现有的恶意程序检测方法只能识别已知的恶意程序,无法有效地识别新型的恶意程序的技术问题。

为便于对本实施例进行理解,首先对本发明实施例所公开的一种恶意程序检测方法进行详细介绍。

实施例一:

图1为本发明第一实施例提供的恶意程序检测方法的流程示意图,如图1所示,该方法包括以下步骤:

步骤S110,获取待检测程序,提取待检测程序的特征。

获取需要进行恶意程序检测的待检测程序,提取该待检测程序的操作码,根据该操作码确定该待检测程序的特征。

具体地,对待检测程序进行反汇编,可以利用OD、IDA Pro、radare2、DEBUG、C32等反汇编工具。根据反汇编的结果对该待检测程序进行操作码的提取和解析,即提取出操作码后,将提取出的操作码映射成操作码数字,多个操作码数字组合形成操作码数字序列。例如:编写JAVA程序进行操作码的提取,再根据预设的操作码和数字对应关系进行操作码的解析,若预设的操作码和数字对应关系为MOV对应数字1,PUSH对应数字2,POP对应数字3,XCHG对应数字4,XLAT对应数字5,待检测程序包含的操作码依次为MOV、PUSH、POP、XCHG和XLAT,则待检测程序对应的操作码数字序列为1.2.3.4.5。

根据上述获得的操作码数字序列,可以采用N-Gram算法对待检测程序进行特征的快速提取。优选地,N-Gram算法中,元操作码N的取值为1至15,该N值表示提取出的每个特征所包括的操作码数字的个数。例如:N取值为3,待检测程序对应的操作码数字序列为1.2.3.4.5,则提取出的特征为1.2.3,2.3.4,3.4.5。

步骤S120,根据待检测程序的特征和预先获得的特征库,确定该待检测程序对应的特征向量。

图2为本发明第一实施例提供的恶意程序检测方法中确定特征向量的流程示意图,如图2所示,步骤S120具体包括以下三个步骤:

步骤S121,在待检测程序的多个特征中,逐一查找特征库中的每个特征。

步骤S122,当查找到特征库中的特征时,将特征库中被查找到的特征标记为第一预设值,否则,将特征库中未被查找到的特征标记为第二预设值。

步骤S123,根据特征库中各个特征的标记结果和各个特征的排列顺序,确定待检测程序对应的特征向量。

具体地,特征库中包括按照一定顺序排列的多个特征,本实施例中,在待检测程序的多个特征中,逐一查找特征库中的每个特征,根据查找结果对特征库中的每个特征的值进行标记,由于特征库中的多个特征按照一定顺序排列,因此标记结束后,能够根据特征库中各个特征的值,得到一个向量,该向量即为待检测程序对应的特征向量,显然该特征向量的维度与特征库中包含的特征个数相同。

例如,特征库中包含依次排列的5个特征,第一预设值为1,第二预设值为0,其中,特征库中的第一个和第三个特征在该待检测程序的多个特征中被查找到,其他特征未被查找到,则该待检测程序对应的特征向量为(1,0,1,0,0)。

步骤S130,利用训练好的分类器对上述特征向量进行检测,以确定待检测程序是否为恶意程序。

具体地,利用训练好的分类器对上述特征向量进行检测,可以得到待检测程序是否为恶意程序的检测结果,分类器的准确度、召回率和漏报率可以为检测结果的可靠性提供参考。

基于上述分析可知,本发明实施例提供的恶意程序检测方法具有以下有益效果:

在本发明实施例中,获取待检测程序,提取待检测程序的特征,根据待检测程序的特征和预先获得的特征库,确定待检测程序对应的特征向量,利用训练好的分类器对该特征向量进行检测,以确定该待检测程序是否为恶意程序。由于已知的恶意程序和未知的恶意程序具有共同的行为模式,训练好的分类器可以根据待检测程序对应的特征向量,来识别该待检测程序是否具有恶意程序的共同的行为模式,从而确定该待检测程序是否为恶意程序,因此通过本发明实施例提供的恶意程序检测方法,不仅可以准确地识别已知的恶意程序,也可以有效地识别新型的恶意程序,从而解决现有的恶意程序检测方法只能识别已知的恶意程序,无法有效地识别新型的恶意程序的技术问题。

图3为本发明第一实施例提供的建立特征库的流程示意图,如图3所示,上述特征库可以通过步骤S210、S220和S230建立:

步骤S210,获取满足预设样本要求的程序样本,提取该程序样本的特征,其中,该程序样本包括正常样本和恶意样本。

具体地,程序样本的获取包括但不限于以下方式:从已有的病毒库中下载多个病毒程序作为恶意样本,从Windows XP系统内下载多个系统程序作为正常样本。利用静态分析软件进行样本预处理。对获取的程序样本进行批量查壳,可以采用PEiD、Detect it Easy或者Fast Scanner等查壳工具。对获取的程序样本进行查壳后,从该程序样本中筛选满足预设样本要求的程序样本,其中,满足预设样本要求的程序样本为无壳样本,无壳样本包括不带壳样本,还可以包括脱壳后样本。为方便处理,优选地,满足预设样本要求的程序样本为不带壳样本。

提取上述满足预设样本要求的程序样本的特征,提取特征的具体过程与步骤S110相同,此处不再赘述。

步骤S220,对上述程序样本的特征进行筛选,得到分类效果满足预设分类要求的特征。

具体地,可以采用但不限于信息增益算法,对上述程序样本的特征进行筛选。一个特征的信息增益越大,分类效果越好,根据基于信息增益的特征筛选算法,可以得到按分类效果由好到差排序的多个特征,在该程序样本的多个特征中选取分类效果满足预设分类要求的特征,例如选取前50个分类效果较好的特征。

步骤S230,将分类效果满足预设分类要求的特征进行组合,得到特征库。

具体地,可以但不限于按照分类效果的排序,将满足预设分类要求的特征组成特征库,例如,按照分类效果由好到差的顺序,将满足预设分类要求的特征排序,得到特征库。

图4为本发明第一实施例提供的训练分类器的流程示意图,如图4所示,上述训练好的分类器可以通过以下步骤进行训练:

步骤S310,根据上述程序样本的特征和特征库,确定该程序样本对应的特征向量。

根据步骤S210得到的程序样本的特征和步骤S230得到的特征库,将程序样本中的正常样本和恶意样本转化成分类器可以识别的向量形式,确定该程序样本对应的特征向量,具体过程与步骤S120相同,此处不再赘述。

步骤S320,根据该程序样本对应的特征向量对分类器进行训练。

具体地,将步骤S310得到的该程序样本对应的特征向量输入分类器中,可以采用基于网格搜索法的支持向量机分类算法对分类器进行参数调优,使得分类器获得较好的分类效果。

训练好的分类器可以进行周期性的更新,以提高分类器的准确度和召回率,降低漏报率。

本发明实施例提供了分类器的准确度、召回率和漏报率分别与N-Gram算法中元操作码N取值的关系的实验结果。

图5a、图5b和图5c分别为不同恶意样本占比对应的准确度、召回率和漏报率的实验结果示意图,其中,恶意样本占比包括30%、40%、50%、60%和70%,训练分类器的程序样本数量为800,采用信息增益算法。

从图5a的准确度的实验结果示意图中可以看出:恶意样本占比为50%或者60%时,准确度均明显高于其他占比情况的准确度,其中,当N取值为1至7中任一值时,准确度较高,为0.98左右,当N大于7时,准确度逐渐降低至0.88左右。恶意样本占比为30%时,整体的准确度较低。

从图5b的召回率的实验结果示意图中可以看出:恶意样本占比为50%、60%或者70%时,召回率均明显高于其他占比情况的召回率,其中,当N取值为1至8中任一值时,召回率较高,为0.99左右,当N大于8时,召回率稍微降低至0.96左右。

从图5c的漏报率的实验结果示意图中可以看出:恶意样本占比为30%、40%、50%以及60%时,漏报率均明显低于占比为70%的漏报率,其中当N取值为1至7时,漏报率较低,为0.02左右,当N大于7时,漏报率随N的增大而升高至0.18左右。

因此,本实施例中的最佳恶意样本占比为50%,N取值为1至7。

图6a、图6b和图6c分别为不同程序样本数量对应的准确度、召回率和漏报率的实验结果示意图,其中,程序样本数量包括400、600和800,恶意样本占比为50%,采用信息增益算法。

从图6a的准确度的实验结果示意图中可以看出:程序样本数量为800时,准确度大于其他情况,其中,当N取值为1至7中任一值时,准确度较高,为0.98左右,当N大于7时,准确度逐渐降低至0.88左右。

从图6b的召回率的实验结果示意图中可以看出:程序样本数量为800时,召回率高于其他情况,其中,当N取值为1至8中任一值时,召回率较高,为0.99左右,当N大于8时,召回率稍微降低至0.96左右。

从图6c的漏报率的实验结果示意图中可以看出:当N取值为1至6中任一值时,不同程序样本数量的漏报率基本一致,为0.01左右。当N大于8时,漏报率显著升高,可达0.2。

因此,本实施例中的最佳程序样本数量为800,N取值为1至7。根据本实验结果可以推测,程序样本数量越多,训练出的分类器的分类效果越好。

图7a、图7b和图7c分别为不同特征筛选算法对应的准确度、召回率和漏报率的实验结果示意图,其中,特征筛选算法包括信息增益算法和绝对比例区分算法(CPD),恶意样本占比为50%,程序样本数量为800。

从图7a、图7b和图7c中可以看出,信息增益算法在准确度、召回率、漏报率三个方面均明显优于绝对比例区分算法,且当N取值为1至7时,效果较好。

综合上述实验结果可知,当元操作码N取值为1至7,恶意样本占比为50%,程序样本数量为800,采用信息增益算法时,获得的分类器的分类效果较好。

实施例二:

图8为本发明第二实施例提供的恶意程序检测装置的模块组成示意图,如图8所示,该恶意程序检测装置包括:特征提取模块10,用于获取待检测程序,提取待检测程序的特征;特征向量确定模块20,用于根据待检测程序的特征和预先获得的特征库,确定待检测程序对应的特征向量;检测模块30,用于利用训练好的分类器对该特征向量进行检测,以确定该待检测程序是否为恶意程序。

其中,特征提取模块10具体用于:提取待检测程序的操作码,根据该操作码确定待检测程序的特征。

图9为本发明第二实施例提供的恶意程序检测装置中特征向量确定模块的单元组成示意图,如图9所示,特征向量确定模块20包括:特征查找单元21,用于在待检测程序的多个特征中,逐一查找特征库中的每个特征;标记单元22,用于当特征查找单元21查找到特征库中的特征时,将特征库中被查找到的特征标记为第一预设值,否则,将特征库中未被查找到的特征标记为第二预设值;第一确定单元23,用于根据特征库中各个特征的标记结果和各个特征的排列顺序,确定待检测程序对应的特征向量。

基于上述分析可知,本发明实施例提供的恶意程序检测装置具有以下有益效果:

在本发明实施例中,特征提取模块10获取待检测程序,提取待检测程序的特征,特征向量确定模块20根据待检测程序的特征和预先获得的特征库,确定待检测程序对应的特征向量,检测模块30利用训练好的分类器对该特征向量进行检测,以确定该待检测程序是否为恶意程序。由于已知的恶意程序和未知的恶意程序具有共同的行为模式,训练好的分类器可以根据待检测程序对应的特征向量,来识别该待检测程序是否具有恶意程序的共同的行为模式,从而确定该待检测程序是否为恶意程序,因此通过本发明实施例提供的恶意程序检测装置,不仅可以准确地识别已知的恶意程序,也可以有效地识别新型的恶意程序,从而解决现有的恶意程序检测方法只能识别已知的恶意程序,无法有效地识别新型的恶意程序的技术问题。

本发明实施例提供的装置还包括特征库建立模块,该特征库建立模块包括:特征提取单元,用于获取满足预设样本要求的程序样本,提取该程序样本的特征,其中,该程序样本包括正常样本和恶意样本;特征筛选单元,用于对程序样本的特征进行筛选,得到分类效果满足预设分类要求的特征;特征库建立单元,用于将分类效果满足预设分类要求的特征进行组合,得到特征库。

本发明实施例提供的装置还包括训练模块,该训练模块包括:第二确定单元,用于根据程序样本的特征和特征库,确定该程序样本对应的特征向量;训练单元,用于根据程序样本对应的特征向量对分类器进行训练。

本发明实施例提供的恶意程序检测装置,与上述实施例提供的恶意程序检测方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。

本发明实施例所提供的恶意程序检测方法及装置的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

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