一种融合多检测结果的恶意程序检测方法与流程

文档序号:11156188阅读:762来源:国知局
一种融合多检测结果的恶意程序检测方法与制造工艺

本发明属于信息安全领域,具体涉及一种融合多检测结果的恶意程序检测方法。



背景技术:

随着互联网应用的不断普及和发展,涌现了大量基于网络的服务,使网络空间成为继陆、海、空、天后的第五疆域。网络空间安全也成为了全球共同关注的热点话题,受到广泛关注。在各类网络安全事件中,以计算机病毒为代表的恶意程序已经成为威胁网络和信息安全的主要因素之一。恶意程序通常是指带有攻击意图所编写的一段程序,主要包括:计算机病毒、陷门、逻辑炸弹、特洛伊木马、蠕虫等。从某种意义上说,21世纪是计算机病毒与反病毒激烈角逐的时代,而智能化、人性化、隐蔽化、多样化也在逐渐成为新世纪计算机病毒的发展趋势。

一般来讲,恶意代码检测方法可以分为两种:一种是静态检测方法,另一种是动态检测方法。

静态检测方法主要包括:基于特征码的检测法和启发式扫描方法等。

动态分析方法主要包括:系统监控法和动态跟踪法等。

基于特征码的检测法是现有的商业反病毒软件中广泛应用的一种方法,几乎现有的所有反病毒软件都具有这一功能。首先,采集已知病毒样本,抽取其特征码并将其纳入病毒数据库。检测时,打开被检测文件,在文件中搜索,检查文件中是否含有病毒数据库中的病毒特征代码。如果发现病毒特征码,由于特征码与病毒一一对应,便可以断定,被查文件中患有何种病毒。但这种方法不能检测未知病毒;搜集已知病毒的特征代码,费用开销大;恶意代码的种类、数量越来越多,特征库的维护也变得越来越困难,并且过多的特征码会影响检测效率。启发式扫描技术其实就是对基于特征码检测方法的一种改进,这种方法不仅能检测出己知的恶意代码,还能识别出一些变种、变形和未知的恶意代码。但是该方法仍然离不开特征码的提取。

系统监控法—般是将恶意代码运行在一个可控的环境中,通过对比系统某些标志性的状态信息在执行恶意代码前后发生的变化来确定恶意代码的功能和目的。系统监控方法可以监控程序对系统资源的一切操作,实时检测出状态变化,所以能够快速的发现已知和未知的恶意代码。动态跟踪法是指实时监控恶意代码运行时的动态行为,从而分析恶意代码的功能和目的。这种检测方法能有效地分析出恶意代码的行为,但是其实现的技术难度比较大。此外,动态分析方法的高度敏感性可能产生误报警、不能识别病毒名称,不利于感染文件病毒的清除。现有的杀毒软件大多都具有行为监测的功能,但往往由于配置不当而形同虚设。

网络时代的恶意程序更隐秘,潜伏程度更高,传播范围更广,带来的损失更为严重。加上代码混淆技术的流行,恶意程序自动生成引擎的广泛传播,造成恶意程序数目不断增长,对网络空间安全造成了严重的威胁。因此,研制新型恶意程序检测技术对确保网络空间安全具有重要意义。



技术实现要素:

本发明的目的是针对基于特征码的检测方法不能检测出未知恶意程序和已知恶意程序变种的问题,提供一种融合多种检测结果的恶意程序检测方法。对未知恶意程序及已知恶意程序具有良好的检测效果,为恶意程序的检测及与现有检测方法的融合提供了一种有益的方法。

为实现本发明目的,本发明的技术方案如下:一种融合多检测结果的恶意程序检测方法,包括以下步骤:

步骤S1、建立字符串集合:所述建立字符串集合包括在计算机系统中收集正常程序,构成正常程序集合Bp,收集一部分有代表性的恶意程序构成恶意程序集Mp;在正常程序集合Bp中选取一部分常见的程序构成正常程序子集Bp1,在恶意程序集合Bp中选取一部分常见的程序构成恶意程序子集Mp1;在正常程序子集Bp1和恶意程序子集Mp1中提取长度为len的、不重复的十六进制字符串,并将其添加到字符串集合中,len的取值范围为2-20字节。

步骤S2、计算每个字符串的信息增益,选取特定数量的字符串构成基因库:即计算字符串集合中的每个十六进制字符串的信息增益值,然后按信息增益从大到小按降序进行排序,选取信息增益量较大的N个十六进制字符串构成基因库,N大于或等于100小于或等于2000。

步骤S3、提取正常程序的特征向量,形成正常程序向量空间:具体为基于步骤S2建立的基因库,对计算机系统中的正常程序建立特征向量,并进一步构建在当前基因库下的正常程序的向量空间。

步骤S4、生成恶意程序检测器:即基于步骤S3建立的正常程序向量空间,进一步生成覆盖恶意程序特征向量空间的恶意程序检测器。

步骤S5、初步判定待检程序是否为恶意程序:即对每一个待检测程序进行特征提取,生成待检测程序的特征向量,计算待检测程序的特征向量与检测器之间的r连续位距离,若所述r连续位距离大于或等于设定的阈值,判定待检测程序为恶意程序,否则为正常程序。

步骤S6、根据融合规则判断待检程序是否为恶意程序:具体为在步骤S1采用不同的值,通过步骤S2得到不同长度的基因库,重复步骤S3至步骤S5,对待检测程序再次进行检测,得到新的检测结果,并至少重复一次,再次得到新的检测结果,由多个检测结果,运用融合规则,计算其为正常程序或者是恶意程序的基本信任分配,最终判定待检测程序是恶意程序或者是正常程序。

进一步的,步骤1所述的建立字符串集合的步骤还包括:

步骤S11、对正常程序子集Bp1和恶意程序子Mp1中的每一个程序p,从它的开始位置每次滑动一个字节,依次提取长度为len的十六进制字符串,直至程序结尾为止。

步骤S12、对提取到的每一个十六进制字符串进行判定其是否出现在长度为len的字符串集合中,若是,则执行骤S13,若否则执行步骤S14。

步骤S13、丢弃。

步骤S14、将此字符串加入到字符串集合中。

步骤S15:改变基因长度len的值,重复以上操作,得到不同长度的字符串集合,len的取值范围为2至20。

进一步的,步骤2所述的建立基因库的步骤还包括:

步骤S21、定义信息增益IG(Information Gain)为:

其中,Ci={Bp,Mp},Str表示提取的十六进制字符串,vStr=1表示字符串在程序中出现,否则vStr=0,P(vStr,C)为字符串取值为vStr时在集合C中的比例,P(vStr)为Str取值为vStr时在整个测试集中的比例,P(C)表示程序属于C的概率,对长度相同的字符串集合中的每一个字符串,按照上式计算其信息增益的值。

步骤S22、对信息增益按照降序进行排列,选取信息增益值较大的N个十六进制字符串作为基因库,基因库的大小N取值范围为:100-2000。

步骤S23:对不同长度字符串集合重复以上操作,通过对不同长度的字符串集合的大小进行削减后得到不同长度的基因库。

进一步的,步骤3还包括以下步骤:

步骤S31、对每一个正常程序集合中的程序从第一个字节开始,提取长度为len的十六进制字符串,每次向后滑动一个字节,直到文件结尾为止。

步骤S32、判断长度为len的基因库中是否存在提取的十六进制字符串;如是,则执行步骤S34,若否则执行步骤S33。

步骤S33、采用默认值0,不做任何处理。

步骤S34、将特征向量的对应位设置为1。

步骤S35、对正常程序集合中的每个程序重复以上操作,则可以构建正常程序在当前基因库下的正常程序向量空间。

步骤S36:对正常程序集合中的所有程序依次用不同长度的基因库进行特征提取,构建出不同长度基因库下的正常程序向量空间。

进一步的,步骤4所述生成恶意程序检测器还包括以下步骤:

步骤S41、随机生成一个维数与基因库基因数量相等的二进制串,将其视为一个可能的检测器,计算该检测器与正常程序向量空间中的每个向量的r连续位距离值。

步骤S42、判断检测器是否与所有正常程序向量空间中的向量的r连续位距离值是否小于预先设定的阈值,若是,则执行步骤S44,若否,则执行步骤S43。

步骤S43、丢弃。

步骤S44、加入检测器集合。

步骤S45、判断生成的检测器数量达到预定的值,预定的值为300-5000,若是,则执行步骤S46,若否,则执行步骤S41继续生成检测器。

步骤S46、对不同长度基因库生成的正常程序向量空间,重复以上操作,产生与不同基因库对应的检测器。

进一步的,步骤5所述初步判定待检程序是否为恶意程序包括以下步骤:

步骤S51:对每一个待检测程序从第一个字节开始,提取长度为len的十六进制字符串,每次滑动一个字节,直到文件结尾为止。

步骤S52,判断长度为len基因库中是否存在提取的十六进制字符串;若是表明提取的十六进制字符串出现在了基因库中,执行步骤S54,若否,则表明提取的十六进制字符串没有出现在基因库中,执行步骤S53。

步骤S53:采用默认值0,不做任何处理。

步骤S54:将特征向量的对应位设置为1,以此获得待检测程序的特征向量。

步骤S55:判断待检测程序的特征向量与所有检测器的r连续距离值是否小于预先设定的阈值;如是,则待检测程序为正常程序,否则,表明该程序被恶意程序检测器识别,可以初步判断待检测程序为恶意程序。

进一步的,步骤6所述由融合规则判断待检程序是否为恶意程序还包括以下步骤:

步骤S61:取辨识框架Θ为{B,M},B为正常程序,M为恶意程序,有定义基本信任分配函数m:P({B,M})→[0,1],m(B)+m(M)=1。其中,m(M)表示支持恶意程序的基本信任分配,m(B)表示支持正常程序的基本信任分配。

步骤S62:根据融合公式对多个恶意程序检测方法的检测结果的基本信任分配进行融合,得到新的基本信任分配,即m1...n(B)和m1...n(M),分别表示n个识别结果对正常程序,恶意程序的基本信任分配。

步骤S63:比较m1...n(B)和m1...n(M)这两个值的大小,如果m1...n(B)>m1...n(V),则待检测程序为正常程序,否则,为恶意程序。

进一步的,步骤6所述对待检测程序再进行检测的次数为2至5次,选取不同的len值生成的检测器对待检测程序再进行检测的次数不宜太少,太少不利于进行多结果融合判断,也不宜太多,太多则增加检测时间,因此再进行检测的次数为2至5次为宜。

本发明的有益效果为:

1、通过构建基因库,然后生成正常程序的特征空间,进而产生覆盖恶意程序空间的检测器来实现对恶意程序的检测,有效避免了恶意程序特征码的提取和庞大特征库的维护。

2、本发明具有检测未知恶意程序的能力,由于本发明通过构建正常程序的特征向量空间,生成覆盖恶意程序特征空间的检测器,进而实现对恶意程序的检测,不需要提取未知恶意程序的特征码,因此本发明具有良好的检测未知恶意程序和已知恶意程序变种的能力。

3、本发明可以提高恶意程序检测的准确率,由于本发明是对多个(或者是多种检测方法的)检测结果进行综合评判,因此本发明可以提高恶意程序检测的准确率。

附图说明

图1为本发明一种融合多检测结果的恶意程序检测方法的系统框架图。

图2为本发明一种融合多检测结果的恶意程序检测方法生成不同长度字符串集合的流程图。

图3为本发明一种融合多检测结果的恶意程序检测方法对不同长度基因库进行大小削减的流程图。

图4为本发明一种融合多检测结果的恶意程序检测方法构建正常程序向量空间的流程图。

图5为本发明一种融合多检测结果的恶意程序检测方法生成恶意程序检测器的流程图。

图6为本发明一种融合多检测结果的恶意程序检测方法对待检测程序进行初步判断的流程图。

图7为本发明一种融合多检测结果的恶意程序检测方法对待检测程序进行融合判定的流程图。

具体实施方式

为了更加清楚地理解本发明的目的、技术方案及有益效果,下面结合附图对本发明做进一步的说明,但并不将本发明的保护范围限定在以下实施例中。

如图1所示,本发明的一种融合多检测结果的恶意程序检测方法包括如下步骤:

步骤1、在收集计算机系统中的正常程序,构成正常程序集合Bp,以安全的方式收集一部分有代表性的恶意程序构成恶意程序集Mp;在正常程序集合Bp中选取一部分常见的程序构成正常程序子集Bp1,在恶意程序集合Bp中选取一部分常见的程序构成恶意程序子集Mp1;在正常程序子集Bp1和恶意程序子集Mp1中提取长度为len的、不重复的十六进制字符串,并将其添加到字符串集合中。可以根据不同长度的len构建不同长度字符串集合,具体如图2所示,可以按以下步骤构建:步骤S11、对正常程序子集Bp1和恶意程序子集Mp1中的每一个程序p,从它的开始位置每次滑动一个字节,依次提取长度为len的十六进制字符串,直至程序结尾为止;步骤S12、对提取到的每一个十六进制字符串进行判定其是否出现在长度为len的字符串集合中,若是,表明已经存在基因集中,则执行步骤S13;若否,则表明基因集中不存在此字符串,则执行步骤S14;步骤S13、丢弃。步骤S14、将此字符串加入到字符串集合中;步骤S15:改变基因长度len的值,重复以上操作,得到不同长度的字符串集合,通常len的取值范围为2至20字符;例如第一次提取时基因长度len的值为2,则其下一次提取时的基因长度len的值为3。

步骤S2、计算每个字符串的信息增益,选取特定数量的字符串构成基因库:即计算字符串集合中的每个十六进制字符串的信息增益值,然后按信息增益从大到小按降序进行排序,信息增益量较大的100-2000个十六进制字符串构成基因库。忽略信息增益值小的十六进制串是因为随着len值的增大,从程序中提取的十六进制字符串组成的基因库也成指数级增长,使得提取程序特征的效率降低;因此,有必要对每个字符串集合大小进行削减。如图3所示,为不同长度字符串集合大小进行削减的步骤包括:步骤S21:定义信息增益IG(Information Gain)为:

其中,Ci={Bp,Mp},Str表示提取的十六进制字符串,vStr=1表示字符串在程序中出现,否则vStr=0,P(vStr,C)为字符串取值为vStr时在集合C中的比例,P(vStr)为Str取值为vStr时在整个测试集中的比例,P(C)表示程序属于C的概率;对长度相同的字符串集合中的每一个字符串,按照上式计算其信息增益的值;步骤S22:对信息增益按照降序进行排列,选取信息增益值较大的N个十六进制字符串作为基因库,基因库的大小N取值范围为:100-2000,基因越短,则基因库的大小可适当取大一些,反之,基因越长,则基因库的大小可以适当取小一些,以确保检测的效率;步骤S23:对不同长度字符串集合重复以上操作,通过对不同长度的字符串集合的大小进行削减后得到不同长度的基因库。

步骤S3、基于步骤S2建立的基因库,对计算机系统中的正常程序提取特征,建立特征向量,并进一步构建在当前基因库下的正常程序的向量空间。为正常程序集中的每个程序构建一个与基因库大小相同维数的特征向量,也就是对正常程序进行特征抽取,所有的正常程序的特征向量构建正常程序状态空间,如图4所示,具体的步骤包括:步骤S31:对每一个正常程序集合中的程序从第一个字节开始,提取长度为len的十六进制字符串,每次向后滑动一个字节,直到文件结尾为止;步骤S32、判断长度为len的基因库中是否存在提取的十六进制字符串;若是,则说明提取的十六进制字符串没有出现在基因库中,执行步骤S34,若否,则说明提取的十六进制字符串出现在了基因库中,执行步骤S33;步骤S33、采用默认值0,不做任何处理;步骤S34、将特征向量的对应位设置为1,特征向量的对应位为1,表示该基因出现在程序中;由此,可获得程序的特征向量(x1,x2,…,xn)中的每一维的数值xi(xi∈{0,1},i=1,…n),经程序特征提取后,所获得的程序特征向量为一个大小与基因库基因数量相等的二进制字符串;步骤S35、对正常程序集合中的每个程序重复以上操作,则可以构建正常程序在当前基因库下的正常程序向量空间;步骤S36、对正常程序集合中的所有程序依次用不同长度的基因库进行特征提取,构建出不同长度基因库下的正常程序向量空间。

步骤S4、基于步骤S3建立的正常程序向量空间,进一步生成覆盖恶意程序特征向量空间的恶意程序检测器。具体而言,生成恶意程序检测器可采用如图5所示的步骤:步骤S41、随机生成一个维数与基因库基因数量相等的二进制串,将其视为一个可能的检测器,计算该检测器与正常程序向量空间中的每个向量的r连续位距离值。步骤S42、判断检测器是否与所有正常程序向量空间中的向量的r连续位距离值是否小于预先设定的阈值,阈值的设定根据检测的需要进行设置,一般而言,阈值越小,检测能力越强,模型的错误否定率越低,但是模型的错误肯定率则越高,为获得满意的检测效果,用户可以根据需要自行设定,如设定为10,若是,则说明该检测器位于某个正常程序向量空间内,执行步骤S44,若否,由表明该检测器与正常程序向量空间中的任一正常程序特征向量的r连续位距离均小于10,则说明该检测器没有处于正常程序空间内,可以作为一个合法的检测器,则执行步骤S43;步骤S43、丢弃;步骤S44、加入检测器集合;步骤45、判断生成的检测器数量是否达到预定的值,预定的值为300-5000,若是,则执行步骤S46,若否,则执行步骤S41继续生成检测器;步骤S46:对不同长度基因库生成的正常程序向量空间,重复以上操作,产生与不同基因库对应的检测器。

步骤S5、对每一个待检测程序进行特征提取,生成待检测程序的特征向量,计算待检测程序的特征向量与所有检测器之间的r连续位距离,若存在一个r连续位距离大于或等于设定的阈值10,判定待检测程序为恶意程序,否则为正常程序。具体而言,为更准确的判定待检程序是否为恶意程序,如图6所示,对待检测程序进行检测的步骤包括:步骤S51:对每一个待检测程序从第一个字节开始,提取长度为len的十六进制字符串,每次滑动一个字节,直到文件结尾为止。步骤S52,判断长度为len基因库中是否存在提取的十六进制字符串;若是表明提取的十六进制字符串出现在了基因库中,执行步骤S54,若否,则表明提取的十六进制字符串没有出现在基因库中,执行步骤S53;步骤S53:采用默认值0,不做任何处理。步骤S54:将特征向量的对应位设置为1,以此获得待检测程序的特征向量;步骤S55:判断待检测程序的特征向量与所有检测器的r连续距离值是否小于预先设定的阈值10;如是,则待检测程序为正常程序,否则,表明该程序被恶意程序检测器识别,可以初步判断待检测程序为恶意程序。

步骤S6、由融合规则判断待检程序是否为恶意程序:在步骤S1采用不同的len值,通过步骤S2得到不同长度的基因库,重复步骤S3至步骤S5,对待检测程序再次进行检测,得到新的检测结果,并至少重复一次,最好是2至5次,再次得到新的检索结果,根据多个检测结果,如图7所示,根据融合规则,由以下步骤进行融合判断,步骤S61:取辨识框架Θ为{B,M},B为正常程序,M为恶意程序,有定义基本信任分配函数m:P({B,M})→[0,1],m(B)+m(M)=1。其中,m(M)表示支持恶意程序的基本信任分配,m(B)表示支持正常程序的基本信任分配;步骤S62:根据融合公式对多个恶意程序检测方法的检测结果的基本信任分配进行融合,得到新的基本信任分配,即m1...n(B)和m1...n(M),分别表示n个识别结果对正常程序,恶意程序的基本信任分配;步骤S63:比较m1...n(B)和m1...n(M)这两个值的大小,如果m1...n(B)>m1...n(V),则待检测程序为正常程序,否则,为恶意程序。

通过上述步骤,本发明的技术方案可成功通过构建基因库,然后生成正常程序的特征空间,进而产生覆盖恶意程序空间的检测器来实现对恶意程序的检测,有效避免了恶意程序特征码的提取和庞大特征库的维护,同时,通过融合多个恶意程序的检测结果,再次进行综合评判,进一步提高恶意程序检测的准确率。

以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。

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