首页 / 专利库 / 软件 / 控制流图 / 一种病毒检测方法及装置

一种病毒检测方法及装置

阅读:378发布:2020-05-12

专利汇可以提供一种病毒检测方法及装置专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种病毒检测方法,包括:对待检测样本进行反汇编,得到反汇编后的函数对应的 控制流图 ;分别对每个控制流图进行编码,生成每个控制流图对应的标识;不同控制流图对应的标识不同;集合所有控制流图对应的标识,生成待检测样本的特征;将待检测样本的特征与病毒特征库中的特征进行匹配;当待检测样本的特征与病毒特征库中的特征匹配成功,则确定待检测样本为恶意样本。本发明还公开了一种病毒检测装置,解决了 现有技术 基于病毒样本二进制内容的特征码 光谱 性差,病毒免杀的难度低的技术问题;通过基于函数控制流图的结构化特征来进行病毒检测,可以很好地抵抗编译器优化策略引入的干扰和病毒作者对源码的 修改 引入的干扰。,下面是一种病毒检测方法及装置专利的具体信息内容。

1.一种病毒检测方法,其特征在于,包括:
对待检测样本进行反汇编,得到反汇编后的函数对应的控制流图;所述控制流图的节点由基本组成,节点之间的边表示控制流向;不同控制流图对应的标识不同;
将每个函数对应的控制流图编码为一个三元组,以生成每个控制流图对应的标识;其中所述三元组包括控制流图的基本块数、控制流图的边数和控制流图中的调用数;
集合所有控制流图对应的标识,生成所述待检测样本的特征;
将所述待检测样本的特征与病毒特征库中的特征进行匹配;
当所述待检测样本的特征与病毒特征库中的特征匹配成功,则确定所述待检测样本为恶意样本。
2.如权利要求1所述的方法,其特征在于,所述将所述待检测样本的特征与病毒特征库中的特征进行匹配之前,还包括:
对已知恶意样本进行反汇编,得到反汇编后的函数对应的控制流图;
分别对每个控制流图进行编码,生成每个控制流图对应的标识;
集合所有控制流图对应的标识,生成所述已知恶意样本的特征,并将所述已知恶意样本的特征存储在病毒特征库中。
3.如权利要求1所述的方法,其特征在于,所述将所述待检测样本的特征与病毒特征库中的特征进行匹配之后,还包括:
当所述待检测样本的特征与所述病毒特征库中的所有特征都匹配失败,则确定所述待检测样本为正常样本。
4.如权利要求1-3任一项所述的方法,其特征在于,所述将所述待检测样本的特征与病毒特征库中的特征进行匹配,包括:
计算所述待检测样本的特征与病毒特征库中的其中一个特征的公共编码集合;
根据所述待检测样本的特征和所述公共编码集合,计算所述待检测样本的特征与病毒特征库中的所述特征的相似度;
判断所述相似度是否大于预设阈值
当所述相似度大于预设阈值时,所述待检测样本的特征与病毒特征库中的所述特征匹配成功。
5.如权利要求4所述的方法,其特征在于,所述根据所述待检测样本的特征和所述公共编码集合,计算所述待检测样本的特征与病毒特征库中的所述特征的相似度,包括:
将所述公共编码集合中的标识数量除以所述待检测样本的特征对应的集合中的标识数量,得到相似度;或者
将所述公共编码集合中的标识数量除以目标标识数量,得到相似度;所述目标标识数量包括所述待检测样本的特征对应的集合中的标识数量与所述病毒特征库中的所述特征对应的集合中的标识数量之和。
6.一种病毒检测装置,其特征在于,包括:
第一反汇编模块,用于对待检测样本进行反汇编,得到反汇编后的函数对应的控制流图;所述控制流图的节点由基本块组成,节点之间的边表示控制流向;不同控制流图对应的标识不同;
第一编码模块,用于将每个函数对应的控制流图编码为一个三元组,以生成每个控制流图对应的标识;其中所述三元组包括控制流图的基本块数、控制流图的边数和控制流图中的调用数;
集合模块,用于集合所有控制流图对应的标识,生成所述待检测样本的特征;
特征匹配模块,用于将所述待检测样本的特征与病毒特征库中的特征进行匹配;
第一确定模块,用于当所述待检测样本的特征与病毒特征库中的特征匹配成功,则确定所述待检测样本为恶意样本。
7.如权利要求6所述的装置,其特征在于,还包括:
第二反汇编模块,用于在所述特征匹配模块将所述待检测样本的特征与病毒特征库中的特征进行匹配之前,对已知恶意样本进行反汇编,得到反汇编后的函数对应的控制流图;
第二编码模块,用于分别对每个控制流图进行编码,生成每个控制流图对应的标识;
存储模块,用于集合所有控制流图对应的标识,生成所述已知恶意样本的特征,并将所述已知恶意样本的特征存储在病毒特征库中。
8.如权利要求6所述的装置,其特征在于,还包括:
第二确定模块,用于在所述特征匹配模块将所述待检测样本的特征与病毒特征库中的特征进行匹配之后,当所述待检测样本的特征与所述病毒特征库中的所有特征都匹配失败,则确定所述待检测样本为正常样本。
9.如权利要求6-8任一项所述的装置,其特征在于,所述特征匹配模块包括:
公共编码计算单元,用于计算所述待检测样本的特征与病毒特征库中的特征的公共编码集合;
相似度计算单元,用于根据所述待检测样本的特征和所述公共编码集合,计算所述待检测样本的特征与病毒特征库中的特征的相似度;
判断单元,用于判断所述相似度是否大于预设阈值;
当所述相似度大于预设阈值时,所述待检测样本的特征与病毒特征库中的特征匹配成功。
10.如权利要求9所述的装置,其特征在于,所述相似度计算单元包括:
第一计算单元,用于将所述公共编码集合中的标识数量除以所述待检测样本的特征对应的集合中的标识数量,得到相似度;或者
第二计算单元,用于将所述公共编码集合中的标识数量除以目标标识数量,得到相似度;所述目标标识数量包括所述待检测样本的特征对应的集合中的标识数量与所述病毒特征库中的所述特征对应的集合中的标识数量之和。

说明书全文

一种病毒检测方法及装置

技术领域

[0001] 本发明涉及计算机领域,尤其涉及病毒检测方法及病毒检测装置。

背景技术

[0002] 随着电子科技以及移动互联网技术的发展,电子设备(特别是智能移动设备)的功能越来越强大,只要用户按照自身的需求在电子设备上安装各种应用程序,便可以通过移动互联网完成各种事务,例如移动支付、移动办公等等。然而,当电子设备上网成为非常普遍的事情的同时,电子设备感染病毒木的几率也越来越高,很容易给用户造成巨大损失。
[0003] 目前基于特征码的反病毒引擎大多数是基于文件哈希匹配和内容二进制字节匹配的。比如著名的开源反病毒软件Clam AntiVirus(ClamAV)的特征码:
[0004] 1.格式:HashString:FileSize:MalwareName
[0005] 举例:507d8f868c27feb88b18e6f8426adf1c:12391:Win.Exploit.CVE_2013_3163[0006] 2.格式:MalwareName=HexSignature
[0007] 举例:Trojan.URLspoof.gen(Clam)=2e687265663d756e6573636170652827*3a2f2f*
[0008] 现有技术中的基于病毒样本二进制内容的特征码没有语义分析,缺乏对程序逻辑的理解,对样本的变化是非常敏感的,只要病毒样本有轻微的变化,特征码就可能失效。这使得特征码的广谱性非常差:一方面,病毒作者可以通过对源码进行轻微的修改即可达到改变病毒哈希值和二进制数据从而绕过反病毒软件的目的;另一方面,大部分编译器存在指令重排、寄存器重分配等优化机制,使得即使是相同的源码编译出来的目标文件的二进制内容也可能不一致。
[0009] 如何提高特征码的光谱性以及病毒免杀的难度,是当前研发人员关注的问题。

发明内容

[0010] 本发明实施例所要解决的技术问题在于,提供病毒检测方法及病毒检测装置,解决现有技术基于病毒样本二进制内容的特征码光谱性差,病毒免杀的难度低的技术问题。
[0011] 为了解决上述技术问题,本发明实施例第一方面公开了一种病毒检测方法,包括:
[0012] 对待检测样本进行反汇编,得到反汇编后的函数对应的控制流图
[0013] 分别对每个控制流图进行编码,生成每个控制流图对应的标识;不同控制流图对应的标识不同;
[0014] 集合所有控制流图对应的标识,生成所述待检测样本的特征;
[0015] 将所述待检测样本的特征与病毒特征库中的特征进行匹配;
[0016] 当所述待检测样本的特征与病毒特征库中的特征匹配成功,则确定所述待检测样本为恶意样本。
[0017] 结合第一方面,在第一种可能的实现方式中,所述将所述待检测样本的特征与病毒特征库中的特征进行匹配之前,还包括:
[0018] 对已知恶意样本进行反汇编,得到反汇编后的函数对应的控制流图;
[0019] 分别对每个控制流图进行编码,生成每个控制流图对应的标识;
[0020] 集合所有控制流图对应的标识,生成所述已知恶意样本的特征,并将所述已知恶意样本的特征存储在病毒特征库中。
[0021] 结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述分别对每个控制流图进行编码,生成每个控制流图对应的标识,包括:
[0022] 将每个函数对应的控制流图编码为一个三元组;其中所述三元组包括控制流图的基本数、控制流图的边数和控制流图中的调用数。
[0023] 结合第一方面,在第三种可能的实现方式中,所述将所述待检测样本的特征与病毒特征库中的特征进行匹配之后,还包括:
[0024] 当所述待检测样本的特征与所述病毒特征库中的所有特征都匹配失败,则确定所述待检测样本为正常样本。
[0025] 结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,或者第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述将所述待检测样本的特征与病毒特征库中的特征进行匹配,包括:
[0026] 计算所述待检测样本的特征与病毒特征库中的其中一个特征的公共编码集合;
[0027] 根据所述待检测样本的特征和所述公共编码集合,计算所述待检测样本的特征与病毒特征库中的所述特征的相似度;
[0028] 判断所述相似度是否大于预设阈值
[0029] 当所述相似度大于预设阈值时,所述待检测样本的特征与病毒特征库中的所述特征匹配成功。
[0030] 结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述根据所述待检测样本的特征和所述公共编码集合,计算所述待检测样本的特征与病毒特征库中的所述特征的相似度,包括:
[0031] 将所述公共编码集合中的标识数量除以所述待检测样本的特征对应的集合中的标识数量,得到相似度;或者
[0032] 将所述公共编码集合中的标识数量除以目标标识数量,得到相似度;所述目标标识数量包括所述待检测样本的特征对应的集合中的标识数量与所述病毒特征库中的所述特征对应的集合中的标识数量之和。
[0033] 本发明实施例第二方面公开了一种病毒检测装置,包括:
[0034] 第一反汇编模块,用于对待检测样本进行反汇编,得到反汇编后的函数对应的控制流图;
[0035] 第一编码模块,用于分别对每个控制流图进行编码,生成每个控制流图对应的标识;不同控制流图对应的标识不同;
[0036] 集合模块,用于集合所有控制流图对应的标识,生成所述待检测样本的特征;
[0037] 特征匹配模块,用于将所述待检测样本的特征与病毒特征库中的特征进行匹配;
[0038] 第一确定模块,用于当所述待检测样本的特征与病毒特征库中的特征匹配成功,则确定所述待检测样本为恶意样本。
[0039] 结合第二方面,在第一种可能的实现方式中,还包括:
[0040] 第二反汇编模块,用于在所述特征匹配模块将所述待检测样本的特征与病毒特征库中的特征进行匹配之前,对已知恶意样本进行反汇编,得到反汇编后的函数对应的控制流图;
[0041] 第二编码模块,用于分别对每个控制流图进行编码,生成每个控制流图对应的标识;
[0042] 存储模块,用于集合所有控制流图对应的标识,生成所述已知恶意样本的特征,并将所述已知恶意样本的特征存储在病毒特征库中。
[0043] 结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第一编码模块具体用于,将每个函数对应的控制流图编码为一个三元组;其中所述三元组包括控制流图的基本块数、控制流图的边数和控制流图中的调用数。
[0044] 结合第二方面,在第三种可能的实现方式中,还包括:
[0045] 第二确定模块,用于在所述特征匹配模块将所述待检测样本的特征与病毒特征库中的特征进行匹配之后,当所述待检测样本的特征与所述病毒特征库中的所有特征都匹配失败,则确定所述待检测样本为正常样本。
[0046] 结合第二方面,或者第二方面的第一种可能的实现方式,或者第二方面的第二种可能的实现方式,或者第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述特征匹配模块包括:
[0047] 公共编码计算单元,用于计算所述待检测样本的特征与病毒特征库中的特征的公共编码集合;
[0048] 相似度计算单元,用于根据所述待检测样本的特征和所述公共编码集合,计算所述待检测样本的特征与病毒特征库中的特征的相似度;
[0049] 判断单元,用于判断所述相似度是否大于预设阈值;
[0050] 当所述相似度大于预设阈值时,所述待检测样本的特征与病毒特征库中的特征匹配成功。
[0051] 结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,所述相似度计算单元包括:
[0052] 第一计算单元,用于将所述公共编码集合中的标识数量除以所述待检测样本的特征对应的集合中的标识数量,得到相似度;或者
[0053] 第二计算单元,用于将所述公共编码集合中的标识数量除以目标标识数量,得到相似度;所述目标标识数量包括所述待检测样本的特征对应的集合中的标识数量与所述病毒特征库中的所述特征对应的集合中的标识数量之和。
[0054] 实施本发明实施例,通过对待检测样本进行反汇编后得到函数对应的控制流图,分别对每个控制流图进行编码,生成每个控制流图对应的标识,然后集合所有控制流图对应的标识,生成该待检测样本的特征;最终将该待检测样本的特征与病毒特征库中的特征进行匹配,来进行病毒检测。解决了现有技术基于病毒样本二进制内容的特征码光谱性差,病毒免杀的难度低的技术问题;本发明实施例通过基于函数控制流图的结构化特征来进行病毒检测,将样本的每个函数视为一个有向图并对其编码后作为特征,从而考虑到了程序的逻辑流程,可以很好地抵抗编译器优化策略引入的干扰和病毒作者对源码的修改引入的干扰,极大的提高了特征码的广谱性和病毒免杀的难度。附图说明
[0055] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0056] 图1是本发明实施例公开的一种病毒检测的场景架构示意图;
[0057] 图2是本发明实施例提供的病毒检测方法的流程示意图;
[0058] 图3是本发明实施例提供的一个函数控制流图的示意图;
[0059] 图4是本发明实施例提供的对控制流图进行编码的原理示意图;
[0060] 图5是本发明提供的病毒检测方法的另一实施例的流程示意图;
[0061] 图6是本发明实施例提供的特征计算原理示意图;
[0062] 图7是本发明实施例提供的病毒检测装置的结构示意图;
[0063] 图8是本发明提供的病毒检测装置的另一实施例的结构示意图;
[0064] 图9是本发明实施例提供的特征匹配模块的结构示意图;
[0065] 图10是本发明提供的病毒检测装置的另一实施例的结构示意图。

具体实施方式

[0066] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
[0067] 为了更好理解本发明实施例公开的一种病毒检测方法及装置,下面先对本发明实施例的场景架构进行描述。请参阅图1,图1是本发明实施例公开的一种病毒检测的场景架构示意图。如图1所示,首先需要生成病毒特征库,针对已知恶意样本(即病毒样本),提取其特征,然后存入病毒特征库中。那么当获取到待检测样本后,通过同样的提取特征的方式对该待检测样本进行特征提取,然后进行特征扫描,看该待检测样本的特征是否与病毒特征库中的特征匹配,若匹配,那么该待检测样本即为恶意样本,若不匹配,那么该待检测样本即为正常样本。
[0068] 本发明实施例中的样本可以包括可执行文件,具体地,根据操作系统不同,可执行文件格式也不同,比如Windows下面的可执行文件是exe格式、Linux下面的可执行文件是elf格式、Android安卓下面的可执行文件是dex格式、elf格式等等。
[0069] 本发明实施例的病毒检测方法可以适用于个人计算机、智能移动终端(如移动电话、移动电脑、平板电脑)、个人数字助理(Personal Digital Assistant,PDA)、智能电视、智能手表、智能眼镜、智能手环等带有操作系统的电子设备上。
[0070] 基于图1所示的场景架构,结合图2,图2是本发明实施例提供的病毒检测方法的流程示意图,详细说明本发明实施例如何进行病毒检测,可以包括以下步骤:
[0071] 步骤S200:对待检测样本进行反汇编,得到反汇编后的函数对应的控制流图;
[0072] 具体地,在获取到待检测样本后,对该待检测样本进行反汇编,把目标代码转为汇编代码,也可以说是把机器语言转换为汇编语言代码,从而得到反汇编后的函数对应的控制流图。例如,本发明其中一个实施例可以通过IDA对待检测样本进行反汇编,得到反汇编后的函数对应的控制流图,如图3示出本发明实施例提供的一个函数控制流图的示意图。
[0073] 需要说明的是,反编译后的函数可以使用一个有向图来描述,此编译原理即为本发明实施例中的控制流图。一个函数所有的汇编语句序列可以被分为若干基本块。基本块是一个连续的汇编语句序列,控制流从它的开始进入,并从它的末尾离开,不可能有中断或者分支(末尾除外)。控制流图的节点由基本块组成,表示计算;结点之间的边表示控制流向。每一个函数控制流图都只有一个入口(入度为0的点),但可以有多个出口(出度为0的点)。如图3示出的一个函数控制流图示例,此函数控制流图包含5个基本块,6条边。
[0074] 步骤S202:分别对每个控制流图进行编码,生成每个控制流图对应的标识;
[0075] 具体地,本发明实施例中的不同控制流图对应的标识不同,也就是说,本发明实施例不限定对控制流图进行编码的方式,只需要保证相同控制流图的编码一致,不同控制流图的编码不一致即可。例如,本发明其中一个实施例可以将每个函数对应的控制流图编码为一个三元组;其中该三元组包括控制流图的基本块数Node、控制流图的边数Edge和控制流图中的调用数Call。那么以图3示出的一个函数控制流图示例来说,如图4示出的本发明实施例提供的对控制流图进行编码的原理示意图,编码后得出基本块数Node为5,控制流图的边数Edge为7,控制流图中的调用数Call为4(即图3中BL语句的数量),因此编码后的该控制流图对应的标识为(5,7,4)。
[0076] 步骤S204:集合所有控制流图对应的标识,生成所述待检测样本的特征;
[0077] 具体地,待检测样本中存在多个反汇编后的函数,那么对每一函数进行编码,都得到一个控制流图对应的标识,因此集合所有控制流图对应的标识,即可生成所述待检测样本的特征,也就是说,每个待检测样本都将得到一个元素为编码的集合,这个集合即为该待检测样本的特征。
[0078] 步骤S206:将所述待检测样本的特征与病毒特征库中的特征进行匹配;
[0079] 具体地,病毒特征库中预先存储了至少一个已知病毒样本对应的特征,那么通过将待检测样本的特征(一个元素为编码的集合)去匹配特征库里的每一个特征(一个元素为编码的集合),也就是说,会遍历匹配该病毒特征库中的每一特征,在遍历的过程中若发现匹配成功,则可以执行步骤S208,若遍历完所有该病毒特征库中的特征都没有发现匹配成功,则可以执行步骤S210。从而完成判断该待检测样本是否为恶意样本。
[0080] 步骤S208:当所述待检测样本的特征与病毒特征库中的特征匹配成功,则确定所述待检测样本为恶意样本。
[0081] 步骤S210:当所述待检测样本的特征与所述病毒特征库中的所有特征都匹配失败,则确定所述待检测样本为正常样本。
[0082] 进一步地,如图5示出的本发明提供的病毒检测方法的另一实施例的流程示意图,再详细说明本发明实施例如何进行病毒检测,可以包括以下步骤:
[0083] 步骤S500:对已知恶意样本进行反汇编,得到反汇编后的函数对应的控制流图;
[0084] 步骤S502:分别对每个控制流图进行编码,生成每个控制流图对应的标识;
[0085] 步骤S504:集合所有控制流图对应的标识,生成所述已知恶意样本的特征,并将所述已知恶意样本的特征存储在病毒特征库中;
[0086] 具体地,步骤S500至步骤S504的原理可以参考上述图2实施例中的步骤S200至步骤S204,这里不再赘述。只不过针对的对象不同而已,该步骤S500至步骤S504是针对已知恶意样本,上述步骤S200至步骤S204是针对待检测样本。
[0087] 步骤S506:对待检测样本进行反汇编,得到反汇编后的函数对应的控制流图;
[0088] 步骤S508:分别对每个控制流图进行编码,生成每个控制流图对应的标识;
[0089] 步骤S510:集合所有控制流图对应的标识,生成所述待检测样本的特征;
[0090] 具体地,步骤S506至步骤S510的原理可以参考上述图2实施例中的步骤S200至步骤S204,这里不再赘述。
[0091] 步骤S512:计算所述待检测样本的特征与病毒特征库中的特征的公共编码集合;
[0092] 具体地,本发明实施例是通过计算两个特征的公共编码集合的方式来进行匹配,如图6示出的本发明实施例提供的特征计算原理示意图,计算出特征A与特征B之间的公共编码集合。本发明实施例可以以特征A指代待检测样本的特征,特征B指代病毒特征库中的特征。
[0093] 步骤S514:根据所述待检测样本的特征和所述公共编码集合,计算所述待检测样本的特征与病毒特征库中的特征的相似度;
[0094] 具体地,可以将所述公共编码集合中的标识数量除以所述待检测样本的特征对应的集合中的标识数量,得到相似度;或者将所述公共编码集合中的标识数量除以目标标识数量,得到相似度;所述目标标识数量包括所述待检测样本的特征对应的集合中的标识数量与所述病毒特征库中的所述特征对应的集合中的标识数量之和。举例来说明:
[0095] 计算特征A和特征B的相似度:similarity(A,B)=A和B的公共编码数/A的编码数。
[0096] 例如:
[0097] 特征A={(12,3,4),(5,7,4),(22,11,2),(56,90,5),(32,54,1),(123,34,15)};
[0098] 特征B={(54,32,1),(56,90,5),(22,11,2),(5,7,4),(12,3,4)};
[0099] A和B的公共编码集合={(12,3,4),(5,7,4),(22,11,2),(56,90,5)}[0100] similarity(A,B)=count({(12,3,4),(5,7,4),(22,11,2),(56,90,5)})/count(A)=4/6=0.67;
[0101] 或者
[0102] similarity(A,B)=count({(12,3,4),(5,7,4),(22,11,2),(56,90,5)})/count(A)+count(B)=4/11=0.36;
[0103] 步骤S516:判断所述相似度是否大于预设阈值;
[0104] 具体地,本发明实施例预先设置了阈值(即该预设阈值),该阈值可以基于步骤S514中不同的计算算法设置不同的阈值,该预设阈值可以根据经验或者实验来选取,例如在将所述公共编码集合中的标识数量除以所述待检测样本的特征对应的集合中的标识数量的情况下,阈值可以为0.8等,在将所述公共编码集合中的标识数量除以目标标识数量,得到相似度的情况下,阈值可以为0.4等,本发明不作限制。
[0105] 当该相似度大于预设阈值时,相当于待检测样本的特征与病毒特征库中的特征匹配成功,执行步骤S518,否则执行步骤S520。
[0106] 步骤S518:确定所述待检测样本为恶意样本;
[0107] 步骤S520:确定所述待检测样本为正常样本。
[0108] 实施本发明实施例,通过对待检测样本进行反汇编后得到函数对应的控制流图,分别对每个控制流图进行编码,生成每个控制流图对应的标识,然后集合所有控制流图对应的标识,生成该待检测样本的特征;最终将该待检测样本的特征与病毒特征库中的特征进行匹配,来进行病毒检测。解决了现有技术基于病毒样本二进制内容的特征码光谱性差,病毒免杀的难度低的技术问题;本发明实施例通过基于函数控制流图的结构化特征来进行病毒检测,将样本的每个函数视为一个有向图并对其编码后作为特征,从而考虑到了程序的逻辑流程,可以很好地抵抗编译器优化策略引入的干扰和病毒作者对源码的修改引入的干扰,极大的提高了特征码的广谱性和病毒免杀的难度。
[0109] 为了便于更好地实施本发明实施例的上述方案,本发明还对应提供了一种病毒检测装置,下面结合附图来进行详细说明:
[0110] 如图7示出的本发明实施例提供的病毒检测装置的结构示意图,病毒检测装置70可以包括:第一反汇编模块700、第一编码模块702、集合模块704、特征匹配模块706和第一确定模块708,其中,
[0111] 第一反汇编模块700用于对待检测样本进行反汇编,得到反汇编后的函数对应的控制流图;
[0112] 第一编码模块702用于分别对每个控制流图进行编码,生成每个控制流图对应的标识;不同控制流图对应的标识不同;
[0113] 集合模块704用于集合所有控制流图对应的标识,生成所述待检测样本的特征;
[0114] 特征匹配模块706用于将所述待检测样本的特征与病毒特征库中的特征进行匹配;
[0115] 第一确定模块708用于当所述待检测样本的特征与病毒特征库中的特征匹配成功,则确定所述待检测样本为恶意样本。
[0116] 具体地,如图8示出的本发明提供的病毒检测装置的另一实施例的结构示意图,病毒检测装置70包括第一反汇编模块700、第一编码模块702、集合模块704、特征匹配模块706和第一确定模块708外,还可以包括:第二反汇编模块7010、第二编码模块7012、存储模块7014和第二确定模块7016,其中,
[0117] 第二反汇编模块7010用于在特征匹配模块706将所述待检测样本的特征与病毒特征库中的特征进行匹配之前,对已知恶意样本进行反汇编,得到反汇编后的函数对应的控制流图;
[0118] 第二编码模块7012用于分别对每个控制流图进行编码,生成每个控制流图对应的标识;
[0119] 存储模块7014用于集合所有控制流图对应的标识,生成所述已知恶意样本的特征,并将所述已知恶意样本的特征存储在病毒特征库中。
[0120] 第二确定模块7016用于在特征匹配模块706将所述待检测样本的特征与病毒特征库中的特征进行匹配之后,当所述待检测样本的特征与所述病毒特征库中的所有特征都匹配失败,则确定所述待检测样本为正常样本。
[0121] 需要说明的是,病毒检测装置70中的第一反汇编模块700、第一编码模块702也可以分别执行第二反汇编模块7010和第二编码模块7012的操作,也就是说,病毒检测装置70也可以不包括第二反汇编模块7010和第二编码模块7012,直接通过第一反汇编模块700来在特征匹配模块706将所述待检测样本的特征与病毒特征库中的特征进行匹配之前,对已知恶意样本进行反汇编,得到反汇编后的函数对应的控制流图,以及通过第一编码模块702分别对每个控制流图进行编码,生成每个控制流图对应的标识。
[0122] 进一步地,如图9示出的本发明实施例提供的特征匹配模块的结构示意图,特征匹配模块706可以包括:公共编码计算单元7060、相似度计算单元7062和判断单元7063,其中,[0123] 公共编码计算单元7060用于计算所述待检测样本的特征与病毒特征库中的特征的公共编码集合;
[0124] 相似度计算单元7062用于根据所述待检测样本的特征和所述公共编码集合,计算所述待检测样本的特征与病毒特征库中的特征的相似度;
[0125] 判断单元7063用于判断所述相似度是否大于预设阈值;
[0126] 当所述相似度大于预设阈值时,所述待检测样本的特征与病毒特征库中的特征匹配成功。
[0127] 相似度计算单元7062可以包括第一计算单元或第二计算单元,其中,[0128] 该第一计算单元用于将所述公共编码集合中的标识数量除以所述待检测样本的特征对应的集合中的标识数量,得到相似度;或者
[0129] 该第二计算单元用于将所述公共编码集合中的标识数量除以目标标识数量,得到相似度;所述目标标识数量包括所述待检测样本的特征对应的集合中的标识数量与所述病毒特征库中的所述特征对应的集合中的标识数量之和。
[0130] 再进一步地,本发明实施例中的第一编码模块702或第二编码模块7012可以具体用于,将每个函数对应的控制流图编码为一个三元组;其中所述三元组包括控制流图的基本块数、控制流图的边数和控制流图中的调用数。
[0131] 请参阅图10,图10是本发明提供的病毒检测装置的另一实施例的结构示意图。其中,如图10所示,病毒检测装置100可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002、显示屏1006以及摄像模块1007。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括触摸屏等等。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器,存储器1005包括本发明实施例中的flash。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储系统。如图10所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及病毒检测程序。
[0132] 在图10所示的病毒检测装置100中,处理器1001可以用于调用存储器1005中存储的病毒检测程序,并执行以下操作:
[0133] 对待检测样本进行反汇编,得到反汇编后的函数对应的控制流图;
[0134] 分别对每个控制流图进行编码,生成每个控制流图对应的标识;不同控制流图对应的标识不同;
[0135] 集合所有控制流图对应的标识,生成所述待检测样本的特征;
[0136] 将所述待检测样本的特征与病毒特征库中的特征进行匹配;具体地,该病毒特征库可以存储在该存储器1005中;
[0137] 当所述待检测样本的特征与病毒特征库中的特征匹配成功,则确定所述待检测样本为恶意样本。
[0138] 具体地,处理器1001将所述待检测样本的特征与病毒特征库中的特征进行匹配之前,还可以执行:
[0139] 对已知恶意样本进行反汇编,得到反汇编后的函数对应的控制流图;
[0140] 分别对每个控制流图进行编码,生成每个控制流图对应的标识;
[0141] 集合所有控制流图对应的标识,生成所述已知恶意样本的特征,并将所述已知恶意样本的特征存储在病毒特征库中。
[0142] 具体地,处理器1001将所述待检测样本的特征与病毒特征库中的特征进行匹配,包括:
[0143] 计算所述待检测样本的特征与病毒特征库中的特征的公共编码集合;
[0144] 根据所述待检测样本的特征和所述公共编码集合,计算所述待检测样本的特征与病毒特征库中的特征的相似度;
[0145] 判断所述相似度是否大于预设阈值;
[0146] 当所述相似度大于预设阈值时,所述待检测样本的特征与病毒特征库中的特征匹配成功。
[0147] 具体地,处理器1001分别对每个控制流图进行编码,生成每个控制流图对应的标识,包括:
[0148] 将每个函数对应的控制流图编码为一个三元组;其中所述三元组包括控制流图的基本块数、控制流图的边数和控制流图中的调用数。
[0149] 具体地,处理器1001将所述待检测样本的特征与病毒特征库中的特征进行匹配之后,还可以执行:
[0150] 当所述待检测样本的特征与所述病毒特征库中的所有特征都匹配失败,则确定所述待检测样本为正常样本。
[0151] 具体地,处理器1001根据所述待检测样本的特征和所述公共编码集合,计算所述待检测样本的特征与病毒特征库中的所述特征的相似度,可以包括:
[0152] 将所述公共编码集合中的标识数量除以所述待检测样本的特征对应的集合中的标识数量,得到相似度;或者
[0153] 将所述公共编码集合中的标识数量除以目标标识数量,得到相似度;所述目标标识数量包括所述待检测样本的特征对应的集合中的标识数量与所述病毒特征库中的所述特征对应的集合中的标识数量之和。
[0154] 需要说明的是,本发明实施例中的病毒检测装置70或病毒检测装置100中各模块的功能可对应参考上述各方法实施例中图1至图6任意实施例的具体实现方式,这里不再赘述。
[0155] 实施本发明实施例,通过对待检测样本进行反汇编后得到函数对应的控制流图,分别对每个控制流图进行编码,生成每个控制流图对应的标识,然后集合所有控制流图对应的标识,生成该待检测样本的特征;最终将该待检测样本的特征与病毒特征库中的特征进行匹配,来进行病毒检测。解决了现有技术基于病毒样本二进制内容的特征码光谱性差,病毒免杀的难度低的技术问题;本发明实施例通过基于函数控制流图的结构化特征来进行病毒检测,将样本的每个函数视为一个有向图并对其编码后作为特征,从而考虑到了程序的逻辑流程,可以很好地抵抗编译器优化策略引入的干扰和病毒作者对源码的修改引入的干扰,极大的提高了特征码的广谱性和病毒免杀的难度。
[0156] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
[0157] 以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈