发明内容
基于此,有必要针对传统的病毒检测技术受病毒样本数量增加影响大,使病毒检测的工作量大大增加,影响病毒检测效率的问题,提出一种病毒扫描速度快,数据存储量小的病毒检测的方法及装置。
为实现本发明目的提供的一种病毒检测的方法,包括以下步骤:
提取待测执行文件的结构信息构成特征向量;
使用哈希算法计算所述特征向量的特征哈希值;
将所述特征哈希值与特征库中的样本文件进行比较,得到与所述特征哈希值相似度高于预设值的比对样本;
根据所述比对样本的分析结果确定所述待测执行文件的病毒检测结果;
所述分析结果包括黑样本及白样本。
作为一种病毒检测的方法的可实施方式,还包括以下步骤中的至少一个:
根据所述病毒检测结果,将含有病毒的待测执行文件标记为黑样本,并加入到所述特征库中;
根据所述病毒检测结果,将不含有病毒的待测执行文件标记为白样本,并加入到所述特征库中。
作为一种病毒检测的方法的可实施方式,所述预设值为95%。
作为一种病毒检测的方法的可实施方式,还包括以下步骤:
当从所述特征库中未检测到相似度高于所述预设值的比对样本时,对所述待测执行文件进行特征码匹配、规则过滤及相似度匹配获得所述待测执行文件的病毒检测结果。
作为一种病毒检测的方法的可实施方式,所述将所述特征哈希值与特征库中的样本文件进行比较,得到与所述特征哈希值相似度高于预设值的比对样本,包括以下步骤:
采用前缀查询的方式将所述特征哈希值逐一与所述特征库中的样本文件进行比较,并按比较得到的相似度对所述样本文件进行排序;
按照排序结果,获取相似度高于预设值的样本文件作为比对样本。
作为一种病毒检测的方法的可实施方式,还包括以下步骤:
间隔预设时间或者预设白样本增加数量使用病毒文件对所述特征库中的所有标记为白样本的样本文件或者未进行过扫描测试的样本文件进行扫描测试,删除与病毒文件相似对高于所述预设值的样本文件,或者增大所述预设值。
基于同一发明构思的一种病毒检测的装置,包括读取模块、信息提取模块、哈希计算模块、样本比对模块、结果确定模块及存储模块,其中:
所述读取模块,被配置以读取待测试的执行文件;
所述信息提取模块,被配置以提取待测执行文件的结构信息,并将所述结构信息构成特征向量;
所述哈希计算模块,被配置以使用哈希算法计算所述信息提取模块构建的特征向量的特征哈希值;
所述样本比对模块,被配置以将所述哈希计算模块得到的特征哈希值与特征库中的样本文件进行比较,得到与所述特征哈希值相似度高于预设值的比对样本,并将所述比对样本信息传输给所述结果确定模块;
所述结果确定模块,被配置以根据所述比对样本的分析结果确定所述待测执行文件的病毒检测结果;所述分析结果包括黑样本及白样本;
所述存储模块,被配置以存储所述特征库的数据。
作为一种病毒检测的装置的可实施方式,还包括第一处理模块和/或第一处理模块,其中:
所述第一处理模块,被配置以根据所述结果确定模块得到的所述病毒检测结果,将含有病毒的待测执行文件标记为黑样本,并加入到所述特征库中;
所述第二处理模块,被配置以根据所述结果确定模块得到的所述病毒检测结果,将不含有病毒的待测执行文件标记为白样本,并加入到所述特征库中。
作为一种病毒检测的装置的可实施方式,还包括传统病毒检测模块,所述传统病毒检测模块被配置以当从所述特征库中未检测到相似度高于所述预设值的比对样本时,对所述待测执行文件进行特征码匹配、规则过滤及相似度匹配获得所述待测执行文件的病毒检测结果。
作为一种病毒检测的装置的可实施方式,还包括测试模块,所述测试模块被配置以间隔预设时间或者预设白样本增加数量使用病毒文件对所述特征库中的所有标记为白样本的样本文件或者未进行过扫描测试的样本文件进行扫描测试,删除与病毒文件相似对高于所述预设值的样本文件,或者增大所述预设值。
本发明的有益效果包括:本发明提供的病毒检测的方法及装置,不使用传统的特征码及过滤规则进行文件的病毒检测,而是根据病毒样本的文件结构机型相似性匹配。采用存储哈希值的方式在特征库中存储多个样本文件,比对待测执行文件的特征向量的哈希值与已知样本的哈希值得到相近的比对文件,并根据比对文件的结果分析得到待测执行文件的病毒检测结果,计算速度快、生成的特征库小。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明的病毒检测的方法及装置的具体实施方式进行说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明一实施例的病毒检测的方法,如图1所示,包括以下步骤:
S100,提取待测执行文件的结构信息构成特征向量。
此处需要说明的是,可执行文件是指可以被操作系统运行的二进制文件,内容除了包含系统规定的必须的信息,还会根据要实现的功能以及开发者的编码风格呈现不同的特点。通过采集待测执行文件中包含的信息,结合数据挖掘分析保留明显区别于其他可执行文件的信息值组成特征向量。
以android(安卓)系统下的dex文件为例,解析程序解析dex文件,取出文件长度、链接段长度、字符串数、类型数、原型数、字段数、方法数、类数、数据段长度等可区别于其他可执行文件的特征作为执行文件的结构信息,并根据结构信息的MD5文件构建结构信息对应的特征向量,作为待测执行文件的3个文件A文件、B文件和C文件的输出结果如下:
文件MD5特征向量
A:0291F47DF3F72706C7B52FF3C80C4ECE;[3199420,2575824,4521,6272,11793,28845,3562,3689,1185,3537,22300,22762,0,1190,400,813]
B:FB80FF7FCD375181BE9BAC961EBDAFD1;[157728,135060,203,226,156,632,48,124,47,48,279,1152,279,44,7,33]
C:CA1955C5A5AA8643D7B08ECFF945F0A6;[157729,135060,203,226,154,632,48,124,47,48,272,1152,279,44,7,31]
步骤S100特征向量确定后,继续执行步骤S200。
S200,使用哈希算法计算所述特征向量的特征哈希值。本步骤的目的是建立特征向量的索引服务,以便通过索引已知文件,根据已知文件确定未知文件是否含有病毒,或者是否为病毒文件。计算前述文件A文件B和文件C的哈希值,结果如下:
Hash特征向量
A:3f332b61a449b9b534169f3b;[3199420,2575824,4521,6272,11793,28845,3562,3689,1185,3537,22300,22762,0,1190,400,813]
B:c87d02d367df9446f4dff189;[157728,135060,203,226,156,632,48,124,47,48,279,1152,279,44,7,33]
C:c87d02d367df9047f4dff099;[157729,135060,203,226,154,632,48,124,47,48,272,1152,279,44,7,31]
此处需要说明的是,在上一步骤中得到待测执行文件的额特征向量之后,可根据多种相似性计算公式(比如欧几里得距离公式)计算出两个特征向量的相似程度,也就是两个可执行文件的相似度。
根据欧式距离公式可算计出文件A与文件B之间的欧式距离ρ(A,B)=3900153.62711,文件C与文件B之间的欧式距离ρ(C,B)=7.61577310586。最终结果显示文件A与文件B、文件C之间存在明显差别,这一结果与实际情况是相符的,事实上,举例所用的文件B与文件C为同一个软件的不同发布版本。
如上的哈希值与特征向量的对应关系可以看出,文件B与文件C对应的两个近似的特征向量生成的哈希值具有相同的前缀部分(带下划线部分)。因此,可用前缀查询快速的找到与待测执行文件相近似的已知文件,从而进一步根据已知文件是否为病毒文件确定待测执行文件的含病毒情况。
S300,将步骤S200得到的特征哈希值与特征库中的样本文件进行比较,得到与所述特征哈希值相似度高于预设值的比对样本。
此处需要说明的是,在进行待测执行文件的额病毒检测之前,工程师会先将已知的,即已分析过的文件作为样本文件存储到特征库中。其中,特征库可随查毒软件一起存储到进行文件病毒查询的服务器(计算机)中,也可存储到数据库或者云端供多台计算机共享。采用云端共享特征库的方式可使特征库的利用率更高,同时特征库也会更丰富。
此处所述的预设值可根据实际应用环境确定,这与特征库数据量的大小有关系,一般特征库中包含的样本文件的数量越多则可设置预设值的数值越大。较佳地,作为一种可实施方式,可设置相似度的预设值为95%。将获得的待测执行文件的特征向量的哈希值与特征库中存储的同样为哈希值的样本文件逐一进行比对,得到满足条件的比对样本。并继续执行步骤S400。
S400,根据所述比对样本的分析结果确定所述待测执行文件的病毒检测结果。其中,所述分析结果包括黑样本及白样本。黑样本即为病毒文件的样本,白样本即为无毒可执行文件的样本。
此处需要说明的是,步骤S300中获得的比对样本一般为一个,这也是确定哈希值相似度预设值的一个参考因素,预设值设置过小会导致比对样本的数量过多,导致根据比对样本的分析结果确定待测执行文件的检测结果时造成计算量的浪费。因此,随着特征库中样本数量的增大,可相应提高所述的相似度的预设值。另外,对于特征库中样本文件的存储,如图2所示,可按照特征库100中包含黑样本子库101和白样本子库102的方式进行存储。此时,查找到满足条件(相似度大于预设值)的样本文件后,则可直接获得比对样本的分析结果(黑样本或者白样本)。作为另一种样本文件的存储方式,也可以按照样本文件的哈希值的大小顺序进行存储,并对每个样本文件进行标记。采用按照哈希值的大小的顺序进行存储的方式,便于按照哈希值的大小查找满足条件的样本文件从而快速得到比对文件。并在找到比对文件后,查看文件的信息得到比对文件是否为病毒文件的信息。更佳的,还可以将样本文件按照哈希值的大小范围进行分组,在获得待测执行文件的哈希值后,迅速按组定位到样本文件组,并在组内进行相似度满足预设值的比对文件。使在线文件病毒检测的速度更高。
本发明实施例的病毒检测的方法,不使用传统的特征码及过滤规则进行文件的病毒检测,而是根据病毒样本的文件结构机型相似性匹配。采用存储哈希值的方式在特征库中存储多个样本文件,比对待测执行文件的特征向量的哈希值与已知样本的哈希值得到相近的比对文件,并根据比对文件的结果分析得到待测执行文件的病毒检测结果。本方法计算速度快、生成的特征库小。
作为一种病毒检测的方法的可实施方式,如图3所示,还包括以下步骤:
S501,根据所述病毒检测结果,将含有病毒的待测执行文件标记为黑样本,并加入到所述特征库中。
S502,根据所述病毒检测结果,将不含有病毒的待测执行文件标记为白样本,并加入到所述特征库中。
本发明实施例中,将检测完成的文件加入到特征库中,及时对特征库进行扩大。需要说明的是,将待测执行文件加入到特征库中时,也是将待测执行文件的哈希值存储到特征库中,存储哈希值,使病毒库数据量不至过大。且采用比对的方式及时将新的病毒样本存储到特征库中,通过提高病毒样本的处理效率间接提高反病毒软件的查杀效果。另外,如果在本地设置特征库,并在云端设置综合特征库,则将标记后的待测执行文件存储到本地特征库后,再发送标记后的待测执行文件到云端进行存储。并隔预设时间根据云端的总特征库对本地特征库进行更新。这样可使多台共享云端数据的计算机能够共享查杀结果。提高检测效率及准确率。
另外,如图4所示,在本发明的病毒检测的方法实施过程中,还包括以下步骤:
S301,当从所述特征库中未检测到相似度高于所述预设值的比对样本时,对所述待测执行文件进行特征码匹配、规则过滤及相似度匹配获得所述待测执行文件的病毒检测结果。
此处需要说明的是,从特征库中未检测到相似度满足条件的比对样本时,则说明目前特征库中的样本文件不足以对待测执行文件进行病毒检测,因此,需要对当前的待测执行文件按照传统的病毒检测方法进行检测。按传统方法对待测执行文件进行病毒检测的过程参见图5,包括如下步骤:
首先进行特征码匹配,如果特征码匹配吻合则说明当前待测执行文件为病毒文件,则输出待测执行文件为病毒文件的检测结果,并可执行后续的加入到特征库等步骤。如果特征码匹配失败,则继续对待测执行文件进行规则过滤,类似的,如果规则过滤成功,则输出待测执行文件为病毒文件的检测结果,并可执行后续的将待测执行文件作为一个新的黑样本加入到特征库等步骤。如果规则过滤失败,则继续执行病毒相似度匹配,并在匹配成功后输出待测执行文件为病毒文件的输出结果,并作为新的黑样本加入到特征库中。如果相似度匹配还不成功,则判定当前待测执行文件为无毒文件,则可标记为白样本后加入到特征库中存储。
需要说明的是,上述在进行特征匹配及病毒相似度匹配时,都是与已知的病毒文件进行比对的。且上述的特征匹配、规则过滤及病毒相似度匹配三个步骤的先后顺序可以随意设置。在按照图5所示的步骤执行时,由病毒相似度检测保证基本的检测率,一般控制在75%以上;由特征码和规则过滤进行精准的文件病毒检测。
本发明实施例中,结合传统的病毒检测方法对当前特征库没能识别的待测可执行文件及时进行病毒检测,对特征库进行扩充。使本发明的病毒检测方法更加完备,实用性更强。
作为一种可实施方式,步骤S300,将所述特征哈希值与特征库中的样本文件进行比较,得到与所述特征哈希值相似度高于预设值的比对样本,包括以下步骤:
S310,采用前缀查询的方式将所述特征哈希值逐一与所述特征库中的样本文件进行比较,并按比较得到的相似度对所述样本文件进行排序。
S320,按照排序结果,获取相似度高于预设值的样本文件作为比对样本。
本发明实施例中,按相似度对样本文件进行排序后,可以很快速的定位所有相似度超过预设值的比对文件,且在比对文件有多个时,可以很清楚的知道比对文件相似度的强度关系,从而便于对多个比对文件的分析结果进行加权确定待测执行文件的检测结果。如4个比对文件中有两个为黑样本,两个为白样本,此时可以根据在最前面的样本的状态确定待测执行文件是否为病毒文件。
在其中一个病毒检测的方法的实施例中,还包括以下步骤:
S500,间隔预设时间或者预设白样本增加数量使用病毒文件对所述特征库中的所有标记为白样本的样本文件或者未进行过扫描测试的样本文件进行扫描测试,删除与病毒文件相似对高于所述预设值的样本文件,或者增大所述预设值。
步骤S500是对特征库中的白名单进行扫描测试,通过扫描收集的所有的白样本发现可能会产生误报的记录。对发现误报的记录确认后可重新计算其安全的相似度范围。测试中发现的误报产生的原因有很多,如因为以前的失误将恶意样本标记为白样本,因此,加入步骤S500重新修正样本标记结果。降低误报风险。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分流程可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
基于同一发明构思,本发明实施例提供一种病毒检测的装置,由于此装置解决问题的原理与前述一种病毒检测的方法相似,因此,该装置的实施可以按照前述方法的具体步骤实现,重复之处不再赘述。
本发明一实施例的病毒检测的装置,如图6所示,包括读取模块210、信息提取模块220、哈希计算模块230、样本比对模块240、结果确定模块250及存储模块260。其中:读取模块210,被配置以读取待测试的执行文件;信息提取模块220,被配置以提取待测执行文件的结构信息,并将所述结构信息构成特征向量;哈希计算模块230,被配置以使用哈希算法计算所述信息提取模块构建的特征向量的特征哈希值;样本比对模块240,被配置以将所述哈希计算模块得到的特征哈希值与特征库中的样本文件进行比较,得到与所述特征哈希值相似度高于预设值的比对样本,并将所述比对样本信息传输给所述结果确定模块;结果确定模块250,被配置以根据所述比对样本的分析结果确定所述待测执行文件的病毒检测结果;所述分析结果包括黑样本及白样本;存储模块260,被配置以存储所述特征库100的数据。
如图6所示,所述样本比对模块240及所述结果确定模块250都与所述存储模块260通讯连接,从存储模块中的特征库中获取已存储的样本的哈希值及分析结果。另外,所述读取模块210负责与外部进行通讯,从计算机获取要进行病毒检测的待测执行文件,并进一步的交由信息提取模块220、哈希计算模块230、样本比对模块240及结果确定模块250进行具体的文件病毒检测。
本发明实施例的病毒检测的装置,不使用传统的特征码及过滤规则进行文件的病毒检测,而是根据病毒样本的文件结构机型相似性匹配。采用存储哈希值的方式在特征库中存储多个样本文件,比对待测执行文件的特征向量的哈希值与已知样本的哈希值得到相近的比对文件,并根据比对文件的结果分析得到待测执行文件的病毒检测结果。本装置在进行文件病毒检测时计算速度快、生成的特征库小。
如图7所示,本发明实施例的病毒检测的装置001可整体以软件的形式嵌入到本地服务器002中。但作为另一种可实施方式,如图8所示,存储特征库的存储模块260也可设置在云端003,而其他的读取模块210、信息提取模块220、哈希计算模块230、样本比对模块240及结果确定模块250仍然设置在本地服务器中。样本比对模块240及结果确定模块250通过本地服务器002与云端进行通讯过去特征库中的样本信息。
在另一实施例的病毒检测的装置中,如图9所示,还包括第一处理模块270和第一处理模块280。其中:第一处理模块270,被配置以根据所述结果确定模块250得到的所述病毒检测结果,将含有病毒的待测执行文件标记为黑样本,并加入到所述特征库中;第二处理模块280,被配置以根据所述结果确定模块250得到的所述病毒检测结果,将不含有病毒的待测执行文件标记为白样本,并加入到所述特征库中。
作为一种可实施方式,可在云端设置一个云端存储模块301,而多台本地服务器同时与云端连接,本地服务器在获得新的样本文件后,发送到云端进行存储,从而可使云端存储模块301中的总特征库接收多个本地服务器(本地计算机1、本地计算机2、……本地计算机n)的样本更新,病毒样本处理效率大大提高,同时提高本地服务器基于比较的文件病毒检测效率。如图10所示,也可在本地服务器中设置本地的存储模块260,并每隔一定时间使用云端存储模块301中的总特征库对本地存储模块260中的特征库进行更新,从而可使样本比对模块240及结果确定模块250的工作转为本地服务器内部执行,比对效率提高。
在其中一个实施例的病毒检测的装置中,如图11所示,还包括传统病毒检测模块290,所述传统病毒检测模块被配置以当从所述特征库中未检测到相似度高于所述预设值的比对样本时,对所述待测执行文件进行特征码匹配、规则过滤及相似度匹配获得所述待测执行文件的病毒检测结果。
传统病毒检测模块290对根据特征库中的样本文件不能确定文件是否为病毒文件的当前待测执行文件进行病毒检测,使文件的病毒检测更加全面。
另外,在某些实施例的病毒检测的装置中,如图12所示,还包括测试模块2100,其被配置以间隔预设时间或者预设白样本增加数量使用病毒文件对所述特征库中的所有标记为白样本的样本文件或者未进行过扫描测试的样本文件进行扫描测试,删除与病毒文件相似对高于所述预设值的样本文件,或者增大所述预设值。此模块的设置主要是一个自检测过程,对特征库中的白名单进行检测,发现可能会产生误报的记录,对误标记为白样本的样本进行修正。保证特征库的稳定性,降低误报率。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。