CN106709350A - 一种病毒检测方法及装置 - Google Patents
一种病毒检测方法及装置 Download PDFInfo
- Publication number
- CN106709350A CN106709350A CN201611257005.8A CN201611257005A CN106709350A CN 106709350 A CN106709350 A CN 106709350A CN 201611257005 A CN201611257005 A CN 201611257005A CN 106709350 A CN106709350 A CN 106709350A
- Authority
- CN
- China
- Prior art keywords
- sample
- feature
- detected
- controlling stream
- virus
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
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)
- Apparatus Associated With Microorganisms And Enzymes (AREA)
Abstract
本发明公开了一种病毒检测方法,包括:对待检测样本进行反汇编,得到反汇编后的函数对应的控制流图;分别对每个控制流图进行编码,生成每个控制流图对应的标识;不同控制流图对应的标识不同;集合所有控制流图对应的标识,生成待检测样本的特征;将待检测样本的特征与病毒特征库中的特征进行匹配;当待检测样本的特征与病毒特征库中的特征匹配成功,则确定待检测样本为恶意样本。本发明还公开了一种病毒检测装置,解决了现有技术基于病毒样本二进制内容的特征码光谱性差,病毒免杀的难度低的技术问题;通过基于函数控制流图的结构化特征来进行病毒检测,可以很好地抵抗编译器优化策略引入的干扰和病毒作者对源码的修改引入的干扰。
Description
技术领域
本发明涉及计算机领域,尤其涉及病毒检测方法及病毒检测装置。
背景技术
随着电子科技以及移动互联网技术的发展,电子设备(特别是智能移动设备)的功能越来越强大,只要用户按照自身的需求在电子设备上安装各种应用程序,便可以通过移动互联网完成各种事务,例如移动支付、移动办公等等。然而,当电子设备上网成为非常普遍的事情的同时,电子设备感染病毒木马的几率也越来越高,很容易给用户造成巨大损失。
目前基于特征码的反病毒引擎大多数是基于文件哈希匹配和内容二进制字节匹配的。比如著名的开源反病毒软件Clam AntiVirus(ClamAV)的特征码:
1.格式:HashString:FileSize:MalwareName
举例:507d8f868c27feb88b18e6f8426adf1c:12391:Win.Exploit.CVE_2013_3163
2.格式:MalwareName=HexSignature
举例:Trojan.URLspoof.gen(Clam)=2e687265663d756e6573636170652827*3a2f2f*
现有技术中的基于病毒样本二进制内容的特征码没有语义分析,缺乏对程序逻辑的理解,对样本的变化是非常敏感的,只要病毒样本有轻微的变化,特征码就可能失效。这使得特征码的广谱性非常差:一方面,病毒作者可以通过对源码进行轻微的修改即可达到改变病毒哈希值和二进制数据从而绕过反病毒软件的目的;另一方面,大部分编译器存在指令重排、寄存器重分配等优化机制,使得即使是相同的源码编译出来的目标文件的二进制内容也可能不一致。
如何提高特征码的光谱性以及病毒免杀的难度,是当前研发人员关注的问题。
发明内容
本发明实施例所要解决的技术问题在于,提供病毒检测方法及病毒检测装置,解决现有技术基于病毒样本二进制内容的特征码光谱性差,病毒免杀的难度低的技术问题。
为了解决上述技术问题,本发明实施例第一方面公开了一种病毒检测方法,包括:
对待检测样本进行反汇编,得到反汇编后的函数对应的控制流图;
分别对每个控制流图进行编码,生成每个控制流图对应的标识;不同控制流图对应的标识不同;
集合所有控制流图对应的标识,生成所述待检测样本的特征;
将所述待检测样本的特征与病毒特征库中的特征进行匹配;
当所述待检测样本的特征与病毒特征库中的特征匹配成功,则确定所述待检测样本为恶意样本。
结合第一方面,在第一种可能的实现方式中,所述将所述待检测样本的特征与病毒特征库中的特征进行匹配之前,还包括:
对已知恶意样本进行反汇编,得到反汇编后的函数对应的控制流图;
分别对每个控制流图进行编码,生成每个控制流图对应的标识;
集合所有控制流图对应的标识,生成所述已知恶意样本的特征,并将所述已知恶意样本的特征存储在病毒特征库中。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述分别对每个控制流图进行编码,生成每个控制流图对应的标识,包括:
将每个函数对应的控制流图编码为一个三元组;其中所述三元组包括控制流图的基本块数、控制流图的边数和控制流图中的调用数。
结合第一方面,在第三种可能的实现方式中,所述将所述待检测样本的特征与病毒特征库中的特征进行匹配之后,还包括:
当所述待检测样本的特征与所述病毒特征库中的所有特征都匹配失败,则确定所述待检测样本为正常样本。
结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,或者第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述将所述待检测样本的特征与病毒特征库中的特征进行匹配,包括:
计算所述待检测样本的特征与病毒特征库中的其中一个特征的公共编码集合;
根据所述待检测样本的特征和所述公共编码集合,计算所述待检测样本的特征与病毒特征库中的所述特征的相似度;
判断所述相似度是否大于预设阈值;
当所述相似度大于预设阈值时,所述待检测样本的特征与病毒特征库中的所述特征匹配成功。
结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述根据所述待检测样本的特征和所述公共编码集合,计算所述待检测样本的特征与病毒特征库中的所述特征的相似度,包括:
将所述公共编码集合中的标识数量除以所述待检测样本的特征对应的集合中的标识数量,得到相似度;或者
将所述公共编码集合中的标识数量除以目标标识数量,得到相似度;所述目标标识数量包括所述待检测样本的特征对应的集合中的标识数量与所述病毒特征库中的所述特征对应的集合中的标识数量之和。
本发明实施例第二方面公开了一种病毒检测装置,包括:
第一反汇编模块,用于对待检测样本进行反汇编,得到反汇编后的函数对应的控制流图;
第一编码模块,用于分别对每个控制流图进行编码,生成每个控制流图对应的标识;不同控制流图对应的标识不同;
集合模块,用于集合所有控制流图对应的标识,生成所述待检测样本的特征;
特征匹配模块,用于将所述待检测样本的特征与病毒特征库中的特征进行匹配;
第一确定模块,用于当所述待检测样本的特征与病毒特征库中的特征匹配成功,则确定所述待检测样本为恶意样本。
结合第二方面,在第一种可能的实现方式中,还包括:
第二反汇编模块,用于在所述特征匹配模块将所述待检测样本的特征与病毒特征库中的特征进行匹配之前,对已知恶意样本进行反汇编,得到反汇编后的函数对应的控制流图;
第二编码模块,用于分别对每个控制流图进行编码,生成每个控制流图对应的标识;
存储模块,用于集合所有控制流图对应的标识,生成所述已知恶意样本的特征,并将所述已知恶意样本的特征存储在病毒特征库中。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第一编码模块具体用于,将每个函数对应的控制流图编码为一个三元组;其中所述三元组包括控制流图的基本块数、控制流图的边数和控制流图中的调用数。
结合第二方面,在第三种可能的实现方式中,还包括:
第二确定模块,用于在所述特征匹配模块将所述待检测样本的特征与病毒特征库中的特征进行匹配之后,当所述待检测样本的特征与所述病毒特征库中的所有特征都匹配失败,则确定所述待检测样本为正常样本。
结合第二方面,或者第二方面的第一种可能的实现方式,或者第二方面的第二种可能的实现方式,或者第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述特征匹配模块包括:
公共编码计算单元,用于计算所述待检测样本的特征与病毒特征库中的特征的公共编码集合;
相似度计算单元,用于根据所述待检测样本的特征和所述公共编码集合,计算所述待检测样本的特征与病毒特征库中的特征的相似度;
判断单元,用于判断所述相似度是否大于预设阈值;
当所述相似度大于预设阈值时,所述待检测样本的特征与病毒特征库中的特征匹配成功。
结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,所述相似度计算单元包括:
第一计算单元,用于将所述公共编码集合中的标识数量除以所述待检测样本的特征对应的集合中的标识数量,得到相似度;或者
第二计算单元,用于将所述公共编码集合中的标识数量除以目标标识数量,得到相似度;所述目标标识数量包括所述待检测样本的特征对应的集合中的标识数量与所述病毒特征库中的所述特征对应的集合中的标识数量之和。
实施本发明实施例,通过对待检测样本进行反汇编后得到函数对应的控制流图,分别对每个控制流图进行编码,生成每个控制流图对应的标识,然后集合所有控制流图对应的标识,生成该待检测样本的特征;最终将该待检测样本的特征与病毒特征库中的特征进行匹配,来进行病毒检测。解决了现有技术基于病毒样本二进制内容的特征码光谱性差,病毒免杀的难度低的技术问题;本发明实施例通过基于函数控制流图的结构化特征来进行病毒检测,将样本的每个函数视为一个有向图并对其编码后作为特征,从而考虑到了程序的逻辑流程,可以很好地抵抗编译器优化策略引入的干扰和病毒作者对源码的修改引入的干扰,极大的提高了特征码的广谱性和病毒免杀的难度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例公开的一种病毒检测的场景架构示意图;
图2是本发明实施例提供的病毒检测方法的流程示意图;
图3是本发明实施例提供的一个函数控制流图的示意图;
图4是本发明实施例提供的对控制流图进行编码的原理示意图;
图5是本发明提供的病毒检测方法的另一实施例的流程示意图;
图6是本发明实施例提供的特征计算原理示意图;
图7是本发明实施例提供的病毒检测装置的结构示意图;
图8是本发明提供的病毒检测装置的另一实施例的结构示意图;
图9是本发明实施例提供的特征匹配模块的结构示意图;
图10是本发明提供的病毒检测装置的另一实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
为了更好理解本发明实施例公开的一种病毒检测方法及装置,下面先对本发明实施例的场景架构进行描述。请参阅图1,图1是本发明实施例公开的一种病毒检测的场景架构示意图。如图1所示,首先需要生成病毒特征库,针对已知恶意样本(即病毒样本),提取其特征,然后存入病毒特征库中。那么当获取到待检测样本后,通过同样的提取特征的方式对该待检测样本进行特征提取,然后进行特征扫描,看该待检测样本的特征是否与病毒特征库中的特征匹配,若匹配,那么该待检测样本即为恶意样本,若不匹配,那么该待检测样本即为正常样本。
本发明实施例中的样本可以包括可执行文件,具体地,根据操作***不同,可执行文件格式也不同,比如Windows下面的可执行文件是exe格式、Linux下面的可执行文件是elf格式、Android安卓下面的可执行文件是dex格式、elf格式等等。
本发明实施例的病毒检测方法可以适用于个人计算机、智能移动终端(如移动电话、移动电脑、平板电脑)、个人数字助理(Personal Digital Assistant,PDA)、智能电视、智能手表、智能眼镜、智能手环等带有操作***的电子设备上。
基于图1所示的场景架构,结合图2,图2是本发明实施例提供的病毒检测方法的流程示意图,详细说明本发明实施例如何进行病毒检测,可以包括以下步骤:
步骤S200:对待检测样本进行反汇编,得到反汇编后的函数对应的控制流图;
具体地,在获取到待检测样本后,对该待检测样本进行反汇编,把目标代码转为汇编代码,也可以说是把机器语言转换为汇编语言代码,从而得到反汇编后的函数对应的控制流图。例如,本发明其中一个实施例可以通过IDA对待检测样本进行反汇编,得到反汇编后的函数对应的控制流图,如图3示出本发明实施例提供的一个函数控制流图的示意图。
需要说明的是,反编译后的函数可以使用一个有向图来描述,此编译原理即为本发明实施例中的控制流图。一个函数所有的汇编语句序列可以被分为若干基本块。基本块是一个连续的汇编语句序列,控制流从它的开始进入,并从它的末尾离开,不可能有中断或者分支(末尾除外)。控制流图的节点由基本块组成,表示计算;结点之间的边表示控制流向。每一个函数控制流图都只有一个入口(入度为0的点),但可以有多个出口(出度为0的点)。如图3示出的一个函数控制流图示例,此函数控制流图包含5个基本块,6条边。
步骤S202:分别对每个控制流图进行编码,生成每个控制流图对应的标识;
具体地,本发明实施例中的不同控制流图对应的标识不同,也就是说,本发明实施例不限定对控制流图进行编码的方式,只需要保证相同控制流图的编码一致,不同控制流图的编码不一致即可。例如,本发明其中一个实施例可以将每个函数对应的控制流图编码为一个三元组;其中该三元组包括控制流图的基本块数Node、控制流图的边数Edge和控制流图中的调用数Call。那么以图3示出的一个函数控制流图示例来说,如图4示出的本发明实施例提供的对控制流图进行编码的原理示意图,编码后得出基本块数Node为5,控制流图的边数Edge为7,控制流图中的调用数Call为4(即图3中BL语句的数量),因此编码后的该控制流图对应的标识为(5,7,4)。
步骤S204:集合所有控制流图对应的标识,生成所述待检测样本的特征;
具体地,待检测样本中存在多个反汇编后的函数,那么对每一函数进行编码,都得到一个控制流图对应的标识,因此集合所有控制流图对应的标识,即可生成所述待检测样本的特征,也就是说,每个待检测样本都将得到一个元素为编码的集合,这个集合即为该待检测样本的特征。
步骤S206:将所述待检测样本的特征与病毒特征库中的特征进行匹配;
具体地,病毒特征库中预先存储了至少一个已知病毒样本对应的特征,那么通过将待检测样本的特征(一个元素为编码的集合)去匹配特征库里的每一个特征(一个元素为编码的集合),也就是说,会遍历匹配该病毒特征库中的每一特征,在遍历的过程中若发现匹配成功,则可以执行步骤S208,若遍历完所有该病毒特征库中的特征都没有发现匹配成功,则可以执行步骤S210。从而完成判断该待检测样本是否为恶意样本。
步骤S208:当所述待检测样本的特征与病毒特征库中的特征匹配成功,则确定所述待检测样本为恶意样本。
步骤S210:当所述待检测样本的特征与所述病毒特征库中的所有特征都匹配失败,则确定所述待检测样本为正常样本。
进一步地,如图5示出的本发明提供的病毒检测方法的另一实施例的流程示意图,再详细说明本发明实施例如何进行病毒检测,可以包括以下步骤:
步骤S500:对已知恶意样本进行反汇编,得到反汇编后的函数对应的控制流图;
步骤S502:分别对每个控制流图进行编码,生成每个控制流图对应的标识;
步骤S504:集合所有控制流图对应的标识,生成所述已知恶意样本的特征,并将所述已知恶意样本的特征存储在病毒特征库中;
具体地,步骤S500至步骤S504的原理可以参考上述图2实施例中的步骤S200至步骤S204,这里不再赘述。只不过针对的对象不同而已,该步骤S500至步骤S504是针对已知恶意样本,上述步骤S200至步骤S204是针对待检测样本。
步骤S506:对待检测样本进行反汇编,得到反汇编后的函数对应的控制流图;
步骤S508:分别对每个控制流图进行编码,生成每个控制流图对应的标识;
步骤S510:集合所有控制流图对应的标识,生成所述待检测样本的特征;
具体地,步骤S506至步骤S510的原理可以参考上述图2实施例中的步骤S200至步骤S204,这里不再赘述。
步骤S512:计算所述待检测样本的特征与病毒特征库中的特征的公共编码集合;
具体地,本发明实施例是通过计算两个特征的公共编码集合的方式来进行匹配,如图6示出的本发明实施例提供的特征计算原理示意图,计算出特征A与特征B之间的公共编码集合。本发明实施例可以以特征A指代待检测样本的特征,特征B指代病毒特征库中的特征。
步骤S514:根据所述待检测样本的特征和所述公共编码集合,计算所述待检测样本的特征与病毒特征库中的特征的相似度;
具体地,可以将所述公共编码集合中的标识数量除以所述待检测样本的特征对应的集合中的标识数量,得到相似度;或者将所述公共编码集合中的标识数量除以目标标识数量,得到相似度;所述目标标识数量包括所述待检测样本的特征对应的集合中的标识数量与所述病毒特征库中的所述特征对应的集合中的标识数量之和。举例来说明:
计算特征A和特征B的相似度:similarity(A,B)=A和B的公共编码数/A的编码数。
例如:
特征A={(12,3,4),(5,7,4),(22,11,2),(56,90,5),(32,54,1),(123,34,15)};
特征B={(54,32,1),(56,90,5),(22,11,2),(5,7,4),(12,3,4)};
A和B的公共编码集合={(12,3,4),(5,7,4),(22,11,2),(56,90,5)}
similarity(A,B)=count({(12,3,4),(5,7,4),(22,11,2),(56,90,5)})/count(A)=4/6=0.67;
或者
similarity(A,B)=count({(12,3,4),(5,7,4),(22,11,2),(56,90,5)})/count(A)+count(B)=4/11=0.36;
步骤S516:判断所述相似度是否大于预设阈值;
具体地,本发明实施例预先设置了阈值(即该预设阈值),该阈值可以基于步骤S514中不同的计算算法设置不同的阈值,该预设阈值可以根据经验或者实验来选取,例如在将所述公共编码集合中的标识数量除以所述待检测样本的特征对应的集合中的标识数量的情况下,阈值可以为0.8等,在将所述公共编码集合中的标识数量除以目标标识数量,得到相似度的情况下,阈值可以为0.4等,本发明不作限制。
当该相似度大于预设阈值时,相当于待检测样本的特征与病毒特征库中的特征匹配成功,执行步骤S518,否则执行步骤S520。
步骤S518:确定所述待检测样本为恶意样本;
步骤S520:确定所述待检测样本为正常样本。
实施本发明实施例,通过对待检测样本进行反汇编后得到函数对应的控制流图,分别对每个控制流图进行编码,生成每个控制流图对应的标识,然后集合所有控制流图对应的标识,生成该待检测样本的特征;最终将该待检测样本的特征与病毒特征库中的特征进行匹配,来进行病毒检测。解决了现有技术基于病毒样本二进制内容的特征码光谱性差,病毒免杀的难度低的技术问题;本发明实施例通过基于函数控制流图的结构化特征来进行病毒检测,将样本的每个函数视为一个有向图并对其编码后作为特征,从而考虑到了程序的逻辑流程,可以很好地抵抗编译器优化策略引入的干扰和病毒作者对源码的修改引入的干扰,极大的提高了特征码的广谱性和病毒免杀的难度。
为了便于更好地实施本发明实施例的上述方案,本发明还对应提供了一种病毒检测装置,下面结合附图来进行详细说明:
如图7示出的本发明实施例提供的病毒检测装置的结构示意图,病毒检测装置70可以包括:第一反汇编模块700、第一编码模块702、集合模块704、特征匹配模块706和第一确定模块708,其中,
第一反汇编模块700用于对待检测样本进行反汇编,得到反汇编后的函数对应的控制流图;
第一编码模块702用于分别对每个控制流图进行编码,生成每个控制流图对应的标识;不同控制流图对应的标识不同;
集合模块704用于集合所有控制流图对应的标识,生成所述待检测样本的特征;
特征匹配模块706用于将所述待检测样本的特征与病毒特征库中的特征进行匹配;
第一确定模块708用于当所述待检测样本的特征与病毒特征库中的特征匹配成功,则确定所述待检测样本为恶意样本。
具体地,如图8示出的本发明提供的病毒检测装置的另一实施例的结构示意图,病毒检测装置70包括第一反汇编模块700、第一编码模块702、集合模块704、特征匹配模块706和第一确定模块708外,还可以包括:第二反汇编模块7010、第二编码模块7012、存储模块7014和第二确定模块7016,其中,
第二反汇编模块7010用于在特征匹配模块706将所述待检测样本的特征与病毒特征库中的特征进行匹配之前,对已知恶意样本进行反汇编,得到反汇编后的函数对应的控制流图;
第二编码模块7012用于分别对每个控制流图进行编码,生成每个控制流图对应的标识;
存储模块7014用于集合所有控制流图对应的标识,生成所述已知恶意样本的特征,并将所述已知恶意样本的特征存储在病毒特征库中。
第二确定模块7016用于在特征匹配模块706将所述待检测样本的特征与病毒特征库中的特征进行匹配之后,当所述待检测样本的特征与所述病毒特征库中的所有特征都匹配失败,则确定所述待检测样本为正常样本。
需要说明的是,病毒检测装置70中的第一反汇编模块700、第一编码模块702也可以分别执行第二反汇编模块7010和第二编码模块7012的操作,也就是说,病毒检测装置70也可以不包括第二反汇编模块7010和第二编码模块7012,直接通过第一反汇编模块700来在特征匹配模块706将所述待检测样本的特征与病毒特征库中的特征进行匹配之前,对已知恶意样本进行反汇编,得到反汇编后的函数对应的控制流图,以及通过第一编码模块702分别对每个控制流图进行编码,生成每个控制流图对应的标识。
进一步地,如图9示出的本发明实施例提供的特征匹配模块的结构示意图,特征匹配模块706可以包括:公共编码计算单元7060、相似度计算单元7062和判断单元7063,其中,
公共编码计算单元7060用于计算所述待检测样本的特征与病毒特征库中的特征的公共编码集合;
相似度计算单元7062用于根据所述待检测样本的特征和所述公共编码集合,计算所述待检测样本的特征与病毒特征库中的特征的相似度;
判断单元7063用于判断所述相似度是否大于预设阈值;
当所述相似度大于预设阈值时,所述待检测样本的特征与病毒特征库中的特征匹配成功。
相似度计算单元7062可以包括第一计算单元或第二计算单元,其中,
该第一计算单元用于将所述公共编码集合中的标识数量除以所述待检测样本的特征对应的集合中的标识数量,得到相似度;或者
该第二计算单元用于将所述公共编码集合中的标识数量除以目标标识数量,得到相似度;所述目标标识数量包括所述待检测样本的特征对应的集合中的标识数量与所述病毒特征库中的所述特征对应的集合中的标识数量之和。
再进一步地,本发明实施例中的第一编码模块702或第二编码模块7012可以具体用于,将每个函数对应的控制流图编码为一个三元组;其中所述三元组包括控制流图的基本块数、控制流图的边数和控制流图中的调用数。
请参阅图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中可以包括操作***、网络通信模块、用户接口模块以及病毒检测程序。
在图10所示的病毒检测装置100中,处理器1001可以用于调用存储器1005中存储的病毒检测程序,并执行以下操作:
对待检测样本进行反汇编,得到反汇编后的函数对应的控制流图;
分别对每个控制流图进行编码,生成每个控制流图对应的标识;不同控制流图对应的标识不同;
集合所有控制流图对应的标识,生成所述待检测样本的特征;
将所述待检测样本的特征与病毒特征库中的特征进行匹配;具体地,该病毒特征库可以存储在该存储器1005中;
当所述待检测样本的特征与病毒特征库中的特征匹配成功,则确定所述待检测样本为恶意样本。
具体地,处理器1001将所述待检测样本的特征与病毒特征库中的特征进行匹配之前,还可以执行:
对已知恶意样本进行反汇编,得到反汇编后的函数对应的控制流图;
分别对每个控制流图进行编码,生成每个控制流图对应的标识;
集合所有控制流图对应的标识,生成所述已知恶意样本的特征,并将所述已知恶意样本的特征存储在病毒特征库中。
具体地,处理器1001将所述待检测样本的特征与病毒特征库中的特征进行匹配,包括:
计算所述待检测样本的特征与病毒特征库中的特征的公共编码集合;
根据所述待检测样本的特征和所述公共编码集合,计算所述待检测样本的特征与病毒特征库中的特征的相似度;
判断所述相似度是否大于预设阈值;
当所述相似度大于预设阈值时,所述待检测样本的特征与病毒特征库中的特征匹配成功。
具体地,处理器1001分别对每个控制流图进行编码,生成每个控制流图对应的标识,包括:
将每个函数对应的控制流图编码为一个三元组;其中所述三元组包括控制流图的基本块数、控制流图的边数和控制流图中的调用数。
具体地,处理器1001将所述待检测样本的特征与病毒特征库中的特征进行匹配之后,还可以执行:
当所述待检测样本的特征与所述病毒特征库中的所有特征都匹配失败,则确定所述待检测样本为正常样本。
具体地,处理器1001根据所述待检测样本的特征和所述公共编码集合,计算所述待检测样本的特征与病毒特征库中的所述特征的相似度,可以包括:
将所述公共编码集合中的标识数量除以所述待检测样本的特征对应的集合中的标识数量,得到相似度;或者
将所述公共编码集合中的标识数量除以目标标识数量,得到相似度;所述目标标识数量包括所述待检测样本的特征对应的集合中的标识数量与所述病毒特征库中的所述特征对应的集合中的标识数量之和。
需要说明的是,本发明实施例中的病毒检测装置70或病毒检测装置100中各模块的功能可对应参考上述各方法实施例中图1至图6任意实施例的具体实现方式,这里不再赘述。
实施本发明实施例,通过对待检测样本进行反汇编后得到函数对应的控制流图,分别对每个控制流图进行编码,生成每个控制流图对应的标识,然后集合所有控制流图对应的标识,生成该待检测样本的特征;最终将该待检测样本的特征与病毒特征库中的特征进行匹配,来进行病毒检测。解决了现有技术基于病毒样本二进制内容的特征码光谱性差,病毒免杀的难度低的技术问题;本发明实施例通过基于函数控制流图的结构化特征来进行病毒检测,将样本的每个函数视为一个有向图并对其编码后作为特征,从而考虑到了程序的逻辑流程,可以很好地抵抗编译器优化策略引入的干扰和病毒作者对源码的修改引入的干扰,极大的提高了特征码的广谱性和病毒免杀的难度。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (12)
1.一种病毒检测方法,其特征在于,包括:
对待检测样本进行反汇编,得到反汇编后的函数对应的控制流图;
分别对每个控制流图进行编码,生成每个控制流图对应的标识;不同控制流图对应的标识不同;
集合所有控制流图对应的标识,生成所述待检测样本的特征;
将所述待检测样本的特征与病毒特征库中的特征进行匹配;
当所述待检测样本的特征与病毒特征库中的特征匹配成功,则确定所述待检测样本为恶意样本。
2.如权利要求1所述的方法,其特征在于,所述将所述待检测样本的特征与病毒特征库中的特征进行匹配之前,还包括:
对已知恶意样本进行反汇编,得到反汇编后的函数对应的控制流图;
分别对每个控制流图进行编码,生成每个控制流图对应的标识;
集合所有控制流图对应的标识,生成所述已知恶意样本的特征,并将所述已知恶意样本的特征存储在病毒特征库中。
3.如权利要求2所述的方法,其特征在于,所述分别对每个控制流图进行编码,生成每个控制流图对应的标识,包括:
将每个函数对应的控制流图编码为一个三元组;其中所述三元组包括控制流图的基本块数、控制流图的边数和控制流图中的调用数。
4.如权利要求1所述的方法,其特征在于,所述将所述待检测样本的特征与病毒特征库中的特征进行匹配之后,还包括:
当所述待检测样本的特征与所述病毒特征库中的所有特征都匹配失败,则确定所述待检测样本为正常样本。
5.如权利要求1-4任一项所述的方法,其特征在于,所述将所述待检测样本的特征与病毒特征库中的特征进行匹配,包括:
计算所述待检测样本的特征与病毒特征库中的其中一个特征的公共编码集合;
根据所述待检测样本的特征和所述公共编码集合,计算所述待检测样本的特征与病毒特征库中的所述特征的相似度;
判断所述相似度是否大于预设阈值;
当所述相似度大于预设阈值时,所述待检测样本的特征与病毒特征库中的所述特征匹配成功。
6.如权利要求5所述的方法,其特征在于,所述根据所述待检测样本的特征和所述公共编码集合,计算所述待检测样本的特征与病毒特征库中的所述特征的相似度,包括:
将所述公共编码集合中的标识数量除以所述待检测样本的特征对应的集合中的标识数量,得到相似度;或者
将所述公共编码集合中的标识数量除以目标标识数量,得到相似度;所述目标标识数量包括所述待检测样本的特征对应的集合中的标识数量与所述病毒特征库中的所述特征对应的集合中的标识数量之和。
7.一种病毒检测装置,其特征在于,包括:
第一反汇编模块,用于对待检测样本进行反汇编,得到反汇编后的函数对应的控制流图;
第一编码模块,用于分别对每个控制流图进行编码,生成每个控制流图对应的标识;不同控制流图对应的标识不同;
集合模块,用于集合所有控制流图对应的标识,生成所述待检测样本的特征;
特征匹配模块,用于将所述待检测样本的特征与病毒特征库中的特征进行匹配;
第一确定模块,用于当所述待检测样本的特征与病毒特征库中的特征匹配成功,则确定所述待检测样本为恶意样本。
8.如权利要求7所述的装置,其特征在于,还包括:
第二反汇编模块,用于在所述特征匹配模块将所述待检测样本的特征与病毒特征库中的特征进行匹配之前,对已知恶意样本进行反汇编,得到反汇编后的函数对应的控制流图;
第二编码模块,用于分别对每个控制流图进行编码,生成每个控制流图对应的标识;
存储模块,用于集合所有控制流图对应的标识,生成所述已知恶意样本的特征,并将所述已知恶意样本的特征存储在病毒特征库中。
9.如权利要求8所述的装置,其特征在于,所述第一编码模块具体用于,将每个函数对应的控制流图编码为一个三元组;其中所述三元组包括控制流图的基本块数、控制流图的边数和控制流图中的调用数。
10.如权利要求7所述的装置,其特征在于,还包括:
第二确定模块,用于在所述特征匹配模块将所述待检测样本的特征与病毒特征库中的特征进行匹配之后,当所述待检测样本的特征与所述病毒特征库中的所有特征都匹配失败,则确定所述待检测样本为正常样本。
11.如权利要求7-10任一项所述的装置,其特征在于,所述特征匹配模块包括:
公共编码计算单元,用于计算所述待检测样本的特征与病毒特征库中的特征的公共编码集合;
相似度计算单元,用于根据所述待检测样本的特征和所述公共编码集合,计算所述待检测样本的特征与病毒特征库中的特征的相似度;
判断单元,用于判断所述相似度是否大于预设阈值;
当所述相似度大于预设阈值时,所述待检测样本的特征与病毒特征库中的特征匹配成功。
12.如权利要求11所述的装置,其特征在于,所述相似度计算单元包括:
第一计算单元,用于将所述公共编码集合中的标识数量除以所述待检测样本的特征对应的集合中的标识数量,得到相似度;或者
第二计算单元,用于将所述公共编码集合中的标识数量除以目标标识数量,得到相似度;所述目标标识数量包括所述待检测样本的特征对应的集合中的标识数量与所述病毒特征库中的所述特征对应的集合中的标识数量之和。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611257005.8A CN106709350B (zh) | 2016-12-30 | 2016-12-30 | 一种病毒检测方法及装置 |
PCT/CN2017/118195 WO2018121464A1 (zh) | 2016-12-30 | 2017-12-25 | 一种病毒检测方法及装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611257005.8A CN106709350B (zh) | 2016-12-30 | 2016-12-30 | 一种病毒检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106709350A true CN106709350A (zh) | 2017-05-24 |
CN106709350B CN106709350B (zh) | 2020-01-14 |
Family
ID=58906816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611257005.8A Active CN106709350B (zh) | 2016-12-30 | 2016-12-30 | 一种病毒检测方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106709350B (zh) |
WO (1) | WO2018121464A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018121464A1 (zh) * | 2016-12-30 | 2018-07-05 | 腾讯科技(深圳)有限公司 | 一种病毒检测方法及装置、存储介质 |
WO2020048392A1 (zh) * | 2018-09-06 | 2020-03-12 | 腾讯科技(深圳)有限公司 | 应用程序的病毒检测方法、装置、计算机设备及存储介质 |
CN113360910A (zh) * | 2021-06-30 | 2021-09-07 | 中国农业银行股份有限公司 | 恶意应用的检测方法、装置、服务器和可读存储介质 |
WO2021258789A1 (zh) * | 2020-06-22 | 2021-12-30 | 深信服科技股份有限公司 | 一种恶意软件识别的方法、***、设备及可读存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140611A (zh) * | 2007-09-18 | 2008-03-12 | 北京大学 | 一种恶意代码自动识别方法 |
CN101359352A (zh) * | 2008-09-25 | 2009-02-04 | 中国人民解放军信息工程大学 | 分层协同的混淆后api调用行为发现及其恶意性判定方法 |
KR20120069162A (ko) * | 2010-12-20 | 2012-06-28 | 한국인터넷진흥원 | Cfg 분석 기법에 따른 악성코드 자동 분석 시스템 및 그 방법 |
CN103793650A (zh) * | 2013-12-02 | 2014-05-14 | 北京邮电大学 | Android应用程序的静态分析方法及装置 |
CN104021346A (zh) * | 2014-06-06 | 2014-09-03 | 东南大学 | 基于程序流程图的Android恶意软件检测方法 |
CN104077527A (zh) * | 2014-06-20 | 2014-10-01 | 珠海市君天电子科技有限公司 | 病毒检测机的生成方法和装置及病毒检测方法和装置 |
CN104091121A (zh) * | 2014-06-12 | 2014-10-08 | 上海交通大学 | 对Android重打包恶意软件的恶意代码的检测、切除和恢复的方法 |
CN104318161A (zh) * | 2014-11-18 | 2015-01-28 | 北京奇虎科技有限公司 | 一种安卓样本的病毒检测方法及装置 |
CN104700033A (zh) * | 2015-03-30 | 2015-06-10 | 北京瑞星信息技术有限公司 | 病毒检测的方法及装置 |
CN105046152A (zh) * | 2015-07-24 | 2015-11-11 | 四川大学 | 基于函数调用图指纹的恶意软件检测方法 |
CN106162648A (zh) * | 2015-04-17 | 2016-11-23 | 上海墨贝网络科技有限公司 | 一种应用安装包的行为检测方法、服务器及*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106709350B (zh) * | 2016-12-30 | 2020-01-14 | 腾讯科技(深圳)有限公司 | 一种病毒检测方法及装置 |
-
2016
- 2016-12-30 CN CN201611257005.8A patent/CN106709350B/zh active Active
-
2017
- 2017-12-25 WO PCT/CN2017/118195 patent/WO2018121464A1/zh active Application Filing
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140611A (zh) * | 2007-09-18 | 2008-03-12 | 北京大学 | 一种恶意代码自动识别方法 |
CN101359352A (zh) * | 2008-09-25 | 2009-02-04 | 中国人民解放军信息工程大学 | 分层协同的混淆后api调用行为发现及其恶意性判定方法 |
KR20120069162A (ko) * | 2010-12-20 | 2012-06-28 | 한국인터넷진흥원 | Cfg 분석 기법에 따른 악성코드 자동 분석 시스템 및 그 방법 |
CN103793650A (zh) * | 2013-12-02 | 2014-05-14 | 北京邮电大学 | Android应用程序的静态分析方法及装置 |
CN104021346A (zh) * | 2014-06-06 | 2014-09-03 | 东南大学 | 基于程序流程图的Android恶意软件检测方法 |
CN104091121A (zh) * | 2014-06-12 | 2014-10-08 | 上海交通大学 | 对Android重打包恶意软件的恶意代码的检测、切除和恢复的方法 |
CN104077527A (zh) * | 2014-06-20 | 2014-10-01 | 珠海市君天电子科技有限公司 | 病毒检测机的生成方法和装置及病毒检测方法和装置 |
CN104318161A (zh) * | 2014-11-18 | 2015-01-28 | 北京奇虎科技有限公司 | 一种安卓样本的病毒检测方法及装置 |
CN104700033A (zh) * | 2015-03-30 | 2015-06-10 | 北京瑞星信息技术有限公司 | 病毒检测的方法及装置 |
CN106162648A (zh) * | 2015-04-17 | 2016-11-23 | 上海墨贝网络科技有限公司 | 一种应用安装包的行为检测方法、服务器及*** |
CN105046152A (zh) * | 2015-07-24 | 2015-11-11 | 四川大学 | 基于函数调用图指纹的恶意软件检测方法 |
Non-Patent Citations (1)
Title |
---|
庞建民 等: "《编译与反编译技术》", 30 April 2016 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018121464A1 (zh) * | 2016-12-30 | 2018-07-05 | 腾讯科技(深圳)有限公司 | 一种病毒检测方法及装置、存储介质 |
WO2020048392A1 (zh) * | 2018-09-06 | 2020-03-12 | 腾讯科技(深圳)有限公司 | 应用程序的病毒检测方法、装置、计算机设备及存储介质 |
WO2021258789A1 (zh) * | 2020-06-22 | 2021-12-30 | 深信服科技股份有限公司 | 一种恶意软件识别的方法、***、设备及可读存储介质 |
CN113901457A (zh) * | 2020-06-22 | 2022-01-07 | 深信服科技股份有限公司 | 一种恶意软件识别的方法、***、设备及可读存储介质 |
CN113360910A (zh) * | 2021-06-30 | 2021-09-07 | 中国农业银行股份有限公司 | 恶意应用的检测方法、装置、服务器和可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106709350B (zh) | 2020-01-14 |
WO2018121464A1 (zh) | 2018-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bao et al. | {BYTEWEIGHT}: Learning to recognize functions in binary code | |
CN111639344B (zh) | 一种基于神经网络的漏洞检测方法及装置 | |
US10277617B2 (en) | Method and device for feature extraction | |
CN105989283B (zh) | 一种识别病毒变种的方法及装置 | |
CN111400719B (zh) | 基于开源组件版本识别的固件脆弱性判别方法及*** | |
CN106326737B (zh) | 用于检测可在虚拟堆栈机上执行的有害文件的***和方法 | |
CN106709350A (zh) | 一种病毒检测方法及装置 | |
CN112005532B (zh) | 用于对可执行文件进行分类的方法、***和存储介质 | |
Gao et al. | Semantic learning based cross-platform binary vulnerability search for IoT devices | |
CN106295346B (zh) | 一种应用漏洞检测方法、装置及计算设备 | |
Zhang et al. | BDA: practical dependence analysis for binary executables by unbiased whole-program path sampling and per-path abstract interpretation | |
CN112749389B (zh) | 一种检测智能合约破坏敏感数据漏洞的检测方法及装置 | |
CN111444513A (zh) | 一种电网嵌入式终端的固件编译优化选项识别方法及装置 | |
CN109815697A (zh) | 误报行为处理方法及装置 | |
Dahl et al. | Stack-based buffer overflow detection using recurrent neural networks | |
CN106709335B (zh) | 漏洞检测方法和装置 | |
CN105793864A (zh) | 检测恶意多媒体文件的***和方法 | |
CN116663018A (zh) | 一种基于代码可执行路径的漏洞检测方法及装置 | |
CN113901459B (zh) | 固件内部二进制程序脆弱性发现方法及装置 | |
Gu et al. | BinAIV: Semantic-enhanced vulnerability detection for Linux x86 binaries | |
CN109670317A (zh) | 一种基于原子控制流图的物联网设备继承性漏洞挖掘方法 | |
CN113886836A (zh) | 一种智能合约漏洞的检测方法及相关设备 | |
CN114417347A (zh) | 应用程序的漏洞检测方法、装置、设备、存储介质和程序 | |
Wu et al. | Identifying latent android malware from application’s description using LSTM | |
Zhu et al. | Constructing a Hybrid Taint Analysis Framework for Diagnosing Attacks on Binary Programs. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230625 Address after: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |