基于模糊哈希算法的恶意代码检测系统及方法

文档序号:7983230阅读:1522来源:国知局
专利名称:基于模糊哈希算法的恶意代码检测系统及方法
技术领域
本发明涉及一种恶意代码检测技术,尤其涉及一种客户端软件与云端服务器利用模糊哈希算法协同检测恶意代码的系统及方法。
背景技术
恶意代码是信息安全领域最严重的威胁之一。如何高效、高质地检测出恶意代码,是该领域的一个核心问题。近年来,每天新出现的恶意代码样本已经数以万计,由此带来检测恶意代码所需特征数量的增长和所需硬件资源的增长。传统杀毒软件将特征库存储在客户端,并利用客户端直接进行检测,占用和消耗了用户计算机的磁盘空间和计算资源,且存在特征库升级的问题。因此,目前大部分反病毒厂商都推出了利用云计算的恶意代码检测和清除技术,即 所谓的“云查杀”。云查杀是指由反病毒厂商建立庞大的在线服务器集群,用于存储海量检测特征和检测规则,并进行匹配检测;杀毒软件客户端则将要检测对象的信息通过互联网上传至这些服务器,等待服务器检测的结果。这种设计节约了客户端的磁盘空间和计算资源,也便于检测特征的实时更新。在客户端需要上传检测对象的哪些信息上,现有云查杀技术存在两种选择策略,它们均存在不足。一种方法是,客户端将要检测的对象完全上传至服务器。但检测对象有可能较大,例如超过I兆字节的文件,在计算机中较为常见。上传这些文件会占用网络带宽,影响用户对网络的正常使用。在互联网接入速度不高的计算机上,还需要等待大量的时间才能上传完毕,用户要获得检测结果需要更长的等待时间。在大规模检测任务,例如检测磁盘中所有文件时,这种问题尤为突出。为了避免上述问题,部分客户端不上传检测对象本身,只上传其哈希值。而服务器将这个哈希值与特征库中的哈希值进行对比,如果特征库中存在完全一样的哈希值,则认为该对象是恶意代码;如果不存在完全一样的哈希值,则认为该对象不是恶意代码。目前普遍采用的哈希算法,例如MD5、SHA_1等,均为密码学意义上的哈希算法。这类哈希算法具有输入值扰动的敏感性。即对输入数据进行任何细微的变化,例如增加、删除或修改一个字节,计算得到的哈希值将完全不同,并且找不出任何规律。这一性质是用于密码学协议的哈希算法所必须具备的。正因为这一性质,这种哈希算法只能精确判断检测对象是否与已知的恶意代码完全相同,而不允许有任何一点区别。然而,恶意代码本身是可能发生变化的,原因包括但不限于感染式病毒选择了不同的宿主进行感染;恶意代码被作者加了不同的壳;作者编译恶意代码时选择了不同的参数;作者生成恶意代码时选择了不同的配置信息;恶意代码在网络上传输、在磁盘上拷贝时,发生了错误等。在现实中,由于上述原因产生的恶意代码样本占每天新出现恶意代码中绝大部分。而采用传统哈希算法的云查杀对这类恶意代码无能为力,因为其哈希值与已知恶意代码的哈希值已经相差巨大。综上,云查杀可以回传整个检测对象,但占用带宽;也可以回传其哈希值,但只能精确检测,难以检测出新的恶意代码样本。有厂商采用了先回传哈希值,如果无法匹配到特征,再回传整个检测对象的方法,试图在两种方法之间取得折中效果,但无法匹配到特征的情况太多,效果不佳。另一方面,2006年出现了所谓的“模糊哈希(Fuzzy Hashing)”算法(JesseKornbIum. Identifying Almost Identical Files Using Context Triggered PiecewiseHashing. Digital Investigation, 2006, pp. 91-97)。模糊哈希又称“内容触发分片哈希(CTPH, Context Triggered Piecewise Hashing)”,它结合了两种普通哈希算法一个轮换哈希(Rolling Hashing),用于判断要计算数据在哪些地方需要分片;另一个可以是任何一种普通哈希算法,用于单独计算每一片数据的哈希值。最后模糊哈希算法将每一片数据的哈希值组合,得到最终的模糊哈希值。模糊哈希算法的特点在于,它对计算内容的细节变化不敏感,即在原始数据上插 入、删除、修改少量字节后,对模糊哈希值的影响不大。除此以外,它具有普通哈希算法的其他所有性质。作为区分,需要介绍普通的分片哈希(Piecewise Hashing)算法,其主要特征是以固定长度对输入数据进行分片,例如每128字节进行分片,然后对每一片计算哈希值。这种算法对数据的细节修改不敏感,但在数据中插入或删除少量字节,有可能对最终结果产生极大的影响,因此达不到本发明的效果。区分分片哈希和模糊哈希的方法是,判断其分片的方法,如果是以固定长度或预先设定的长度分片,则是普通分片哈希;如果是根据要计算数据本身的情况分片,则是模糊哈希。因为模糊哈希值之间的比较是有意义的,因此模糊哈希算法中还包括一个比较方法,用来比较两个模糊哈希值的相似性。一般情况下,原始文件的相似性越高,模糊哈希值的相似性越高,反之也基本成立。模糊哈希算法有一个开放源代码的编程实现ssdeep (Jason Sherman. Fuzzyhashing and ssdeep. http://ssdeep. sourceforge. net/),学术界也有一些对其效率和准石角性的改进(Long Chen, Guoyin Wang. An Efficient Piecewise Hashing Method forComputer Forensics. First International Workshop on Knowledge Discovery andData Mining, 2008, pp.635-638)。模糊哈希算法最初用于计算机取证技术,后来学术界有尝试用于恶意代码的检测与聚类(Digital Ninja. Fuzzy Clarity: Using Fuzzy Hashing Techniques toIdentify Malicious Code. 2007. 04)(Michael Smith. Identifying Malware with ByteFrequency Distribution and Context Triggered Piecewise Hashing. James MadisonUniversity, 2008) (Daniel Raygoza. Automated Malware Similarity Analysis.BlackHat Conference USA, 2009)。但这些工作都是将模糊哈希算法视为一种普通的判断数据相似性的算法,用于判断恶意代码之间的相似程度,对已知恶意代码进行聚合从而提取通用规则;或者将检测对象与已知恶意代码进行比较来判断其是否恶意代码的想法或简单的测试。目前仍没有利用模糊哈希算法解决恶意代码云查杀中问题的方法。

发明内容
本发明将模糊哈希算法用于客户端软件与云端服务器协同检测恶意代码之中,解决了云查杀中网络带宽占用和检出效果不佳的两难问题。本发明提供的基于模糊哈希算法的恶意代码检测系统由两部分组成客户端、云端服务器。客户端的主要功能是计算待检测对象(包括但不限于文件、内存、网页、网络数据包等)的模糊哈希值;将该值传输至云端服务器;等待云端服务器返回三种判定结果之一;根据结果做出三种选择认为该检测对象是恶意代码、认为该检测对象不是恶意代码、认为该检测对象需要进一步判断;对需要进一步判断的,将该检测对象上传至云端服务器,并在此等待云端服务器返回的判定结果,根据结果判断该对象是否恶意代码。云端服务器从功能上包括四种
黑名单服务器,负责存储已知恶意代码的模糊哈希值;
白名单服务器,负责存储已知不是恶意代码的普通文件的模糊哈希值;
检测服务器,负责接收客户端传来的模糊哈希值,分别与白名单服务器和黑名单服务器中存储的模糊哈希值进行比较(采用模糊哈希算法中的比较方法),根据比较的得到的相似度,依照一定策略,形成三种判定结果之一,并将结果发给客户端;
深度分析服务器,负责接收客户端传来的需要进一步判定的检测对象,采用传统的云查杀技术进行检测,判断其是否恶意代码,并将结果发给客户端。其中,检测服务器根据上述模糊哈希值的相似度做出判定的策略依赖于两个关于相似度的阈值白名单阈值和黑名单阈值。它们既可以预先设定,又可以在系统运行过程中根据统计数据实时调整。具体判定策略是
对检测对象的模糊哈希值,如果白名单服务器中存在任何一个模糊哈希值,与其相似度超过白名单阈值,则认为检测对象不是恶意代码;否则,如果黑名单服务器中存在任何一个模糊哈希值,与其相似度超过黑名单阈值,则认为检测对象是恶意代码;否则,认为该检测对象需要进一步判断。相应的,本发明还提供了基于模糊哈希算法的恶意代码检测方法,适用于客户端的方法包括
客户端获得待检测对象,计算所述待检测对象的模糊哈希值并发送给云端的检测服务
器;
客户端接收云端的检测服务器返回的判定结果,如果所述判定结果是认为所述待检测对象是恶意代码或者认为所述待检测对象不是恶意代码,则输出所述判定结果;
否则,如果所述判定结果是认为所述待检测对象需要进一步判断,则将所述待检测对象上传至云端的深度分析服务器;
接收并输出云端的深度分析服务器传回的所述待检测对象的检测结果。其中,采用开源工具ssdeep中实现的模糊哈希算法计算所述待检测对象的模糊哈希值。适用于云端检测服务器的方法包括
检测服务器接收客户端传来的模糊哈希值;
遍历白名单服务器中存储的所有模糊哈希值,分别与客户端传来的模糊哈希值进行比较,记录下所有得到的相似度;
如果所有得到的相似度中有一个或一个以上超过预先设定的白名单阈值,则向客户端发回认为待检测对象不是恶意代码的判定结果;
遍历黑名单服务器中存储的所有模糊哈希值,分别与客户端传来的模糊哈希值进行比较,记录下所有得到的相似度;
如果所有得到的相似度中有一个或一个以上超过预先设定的黑名单阈值,则向客户端软件发回认为待检测对象是恶意代码的判定结果;
否则,向客户端发回认为待检测对象需要进一步判断的判定结果。
适用于云端深度分析服务器的方法包括
深度分析服务器从客户端接收需要进一步判断的待检测对象;
调用现有的对完整检测对象进行云查杀的技术,对所述待检测对象做进一步分析和判
断;
得出认为检测对象是恶意代码或认为检测对象不是恶意代码的判定结果,并将所述判断结果发回给客户端。本发明的有益效果是
本发明中,对任何检测对象,客户端软件先将检测对象的模糊哈希值发送到云端服务器,模糊哈希值所占内存非常小(例如在ssdeep的实现中,一个模糊哈希值不超过128字节),因此不存在大量占用网络带宽、延长传输时间的问题。模糊哈希值之间可以进行相似性的比较。如果此前已经知道检测对象不是恶意代码或者是恶意代码,则会与白名单服务器或黑名单服务器中的某个模糊哈希值具有最高的相似度,从而得到检测结果;如果检测对象与一个已知非恶意代码或恶意代码相似,例如由某个已知文件发生少量变化而成,则该检测对象会与白名单服务器或黑名单服务器的某个模糊哈希值具有较高的相似度,超过对应的白名单阈值或黑名单阈值,因而也得到检测结果。因此,这种检测方法的检出效果要优于只能发现完全相同的恶意代码的基于传统密码学哈希算法的检测方法。最后,将需要进一步判定的检测对象完全上传到云端服务器,采用传统方法做进一步检测。这种做法虽然与此前所述回传整个检测对象的云查杀从技术方法上一样,但从整个解决方案的角度来看,因为采用模糊哈希值已经检测判定了与已知情况相似的对象,因此这种需要完全回传的检测对象的数量会有所减少。事实上,随着白名单服务器和黑名单服务器中模糊哈希值的不断积累更新,采用模糊哈希值所能检测出的对象会逐渐增多,因此需要完全回传的检测对象的数量会逐渐减少,将更进一步地降低网络带宽消耗。综上所述,对现有的基于密码学意义哈希算法的云查杀、基于检测对象完全上传的云查杀、密码学意义哈希算法和检测对象完全上传混合的云查杀,在回传数据大小、网络资源消耗、恶意代码检出效果,本发明所述方案与之相比均有更好的技术效果。


为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为本发明基于模糊哈希算法的恶意代码检测系统示意 图2为本发明基于模糊哈希算法的恶意代码检测方法实施例的客户端流程 图3为本发明基于模糊哈希算法的恶意代码检测方法实施例的云端检测服务器流程
图4为本发明基于模糊哈希算法的恶意代码检测方法实施例的云端深度分析服务器流程图。
具体实施例方式为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的 上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明。如图I所示,为本发明基于模糊哈希算法的恶意代码检测系统示意图,包括 客户端101和云端服务器102,其中,客户端101用于计算待检测对象的模糊哈希值,并
传输给云端服务器102,等待云端服务器102返回判定结果,认为所述待检测对象是恶意代码或者认为所述待检测对象不是恶意代码或者认为所述待检测对象需要进一步判断;如果所述判定结果是认为所述待检测对象需要进一步判断,则客户端101将所述待检测对象上传至云端服务器102,并等待云端服务器102再次返回所述待检测对象是否为恶意代码的判定结果;所述待检测对象包括文件、内存、网页、网络数据包。云端服务器102包括黑名单服务器1021、白名单服务器1022、检测服务器1023和深度分析服务器1024 ;
黑名单服务器1021用于存储已知恶意代码的模糊哈希值;
白名单服务器1022用于存储已知不是恶意代码的普通文件的模糊哈希值;
检测服务器1023用于接收客户端101传来的模糊哈希值,分别与所述白名单服务器1021和所述黑名单服务器1022中存储的模糊哈希值进行比较,采用模糊哈希算法中的比较方法进行比较。然后将比较得到的模糊哈希值的相似度依照判定策略形成判定结果发送给客户端101 ;
其中,判定策略包括如果白名单服务器1022中存在任何一个模糊哈希值与所述待检测对象的模糊哈希值的相似度超过白名单阈值,则认为所述待检测对象不是恶意代码;否贝U,如果黑名单服务器1021中存在任何一个模糊哈希值与所述待检测对象的模糊哈希值的相似度超过黑名单阈值,则认为所述待检测对象是恶意代码;否则,认为所述待检测对象需要进一步判断。深度分析服务器1024用于接收客户端101传来的需要进一步判断的待检测对象,采用传统的云查杀技术进行检测,判断所述待检测对象是否为恶意代码,并将判定结果发给客户端101。如图2所示,为本发明基于模糊哈希算法的恶意代码检测方法实施例的客户端流程图,包括
COl :获得要检测对象,检测对象可以由用户指定,也可以由该软件自动监控到。检测对象的形式包括文件、内存、网页、网络数据包,以及它们的部分内容。
C02 :采用开源工具ssdeep中实现的模糊哈希算法,计算得到要检测对象的模糊哈希值。C03 :将上述模糊哈希值发送给云端的检测服务器。C04 :等待云端的检测服务器传回上述模糊哈希值的检测结果。C05 :若上述返回结果是0,跳转至C09 ;若上述返回结果是1,跳转至ClO ;若上述返回结果是2,跳转至C06。C06 :将检测对象完全发送至云端的深度分析服务器。C07 :等待云端的深度分析服务器传回上述检测对象的检测结果。C08 :若上述返回结果是3,跳转至C09 ;若上述返回结果是4,跳转至C10。
C09 :认为检测对象不是恶意代码,输出检测结果。ClO :认为检测对象是恶意代码,输出检测结果,向用户报警。如图3所示,为本发明基于模糊哈希算法的恶意代码检测方法实施例的云端检测服务器流程图,包括
SlOl :接收客户端软件在C03步传来的模糊哈希值,记为HLS102:遍历白名单服务器中存储的所有模糊哈希值,逐一与进行比较,采用开源工具ssdeep中实现的比较方法,并记录下所有得到的相似度。ssdeep中对相似度的输出是一个O到100的整数值。S103 :检查S102中得到的所有相似度,如果其中有一个或一个以上超过预先设定的白名单阈值,则跳转至S107,否则跳转至S104。S104:遍历黑名单服务器中存储的所有模糊哈希值,逐一与ra进行比较,采用开源工具ssdeep中实现的比较方法,并记录下所有得到的相似度。S105 :检查S104中得到的所有相似度,如果其中有一个或一个以上超过预先设定的黑名单阈值,则跳转至S108,否则跳转至S106。S106 :认为检测对象需要进一步检测,向客户端软件发回检测结果2。S107 :认为检测对象不是恶意代码,向客户端软件发回检测结果O。S108 :认为检测对象是恶意代码,向客户端软件发回检测结果I。如图4所示,为本发明基于模糊哈希算法的恶意代码检测方法实施例的云端深度分析服务器流程图,包括
S201 :从客户端软件接收需要进一步检测的检测对象。S202 :调用现有的对完整检测对象进行云查杀的技术,对该检测对象做进一步分析和判断。S203 :从S202步骤得到对该对象的检测结果,如果是恶意代码,跳转S205,否则,跳转至S204。S204 :认为检测对象不是恶意代码,向客户端软件发回检测结果3。S205 :认为检测对象是恶意代码,向客户端软件发回检测结果4。虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化而不脱离本发明的精神。
权利要求
1.一种基于模糊哈希算法的恶意代码检测系统,包括客户端和云端服务器,其特征在于, 所述客户端用于计算待检测对象的模糊哈希值,并传输给云端服务器,等待云端服务器返回判定结果,认为所述待检测对象是恶意代码或者认为所述待检测对象不是恶意代码或者认为所述待检测对象需要进一步判断;如果所述判定结果是认为所述待检测对象需要进一步判断,则所述客户端将所述待检测对象上传至云端服务器,并等待云端服务器再次返回所述待检测对象是否为恶意代码的判定结果; 所述云端服务器包括黑名单服务器、白名单服务器、检测服务器和深度分析服务器; 所述黑名单服务器用于存储已知恶意代码的模糊哈希值; 所述白名单服务器用于存储已知不是恶意代码的普通文件的模糊哈希值; 所述检测服务器用于接收客户端传来的模糊哈希值,分别与所述白名单服务器和所述黑名单服务器中存储的模糊哈希值进行比较,将比较得到的模糊哈希值的相似度依照判定策略形成判定结果发送给客户端; 所述深度分析服务器用于接收客户端传来的需要进一步判断的待检测对象,采用传统的云查杀技术进行检测,判断所述待检测对象是否为恶意代码,并将判定结果发给客户端。
2.如权利要求I所述的基于模糊哈希算法的恶意代码检测系统,其特征在于,所述待检测对象包括文件、内存、网页、网络数据包。
3.如权利要求I所述的基于模糊哈希算法的恶意代码检测系统,其特征在于,所述检测服务器用于接收客户端传来的模糊哈希值,分别与所述白名单服务器和所述黑名单服务器中存储的模糊哈希值进行比较,采用模糊哈希算法中的比较方法进行比较。
4.如权利要求I所述的基于模糊哈希算法的恶意代码检测系统,其特征在于,所述判定策略包括如果白名单服务器中存在任何一个模糊哈希值与所述待检测对象的模糊哈希值的相似度超过白名单阈值,则认为所述待检测对象不是恶意代码;否则,如果黑名单服务器中存在任何一个模糊哈希值与所述待检测对象的模糊哈希值的相似度超过黑名单阈值,则认为所述待检测对象是恶意代码;否则,认为所述待检测对象需要进一步判断。
5.如权利要求4所述的基于模糊哈希算法的恶意代码检测系统,其特征在于,所述白名单阈值和黑名单阈值是预先设定或者在系统运行过程中根据统计数据实时调整的白名单阈值和黑名单阈值。
6.一种基于模糊哈希算法的恶意代码检测方法,其特征在于,适用于权利要求I所述的系统,所述方法包括 客户端获得待检测对象,计算所述待检测对象的模糊哈希值并发送给云端的检测服务器; 客户端接收云端的检测服务器返回的判定结果,如果所述判定结果是认为所述待检测对象是恶意代码或者认为所述待检测对象不是恶意代码,则输出所述判定结果; 否则,如果所述判定结果是认为所述待检测对象需要进一步判断,则将所述待检测对象上传至云端的深度分析服务器; 接收并输出云端的深度分析服务器传回的所述待检测对象的检测结果。
7.如权利要求6所述的基于模糊哈希算法的恶意代码检测方法,其特征在于,采用开源工具ssdeep中实现的模糊哈希算法计算所述待检测对象的模糊哈希值。
8.一种基于模糊哈希算法的恶意代码检测方法,其特征在于,适用于权利要求I所述的系统,所述方法包括 检测服务器接收客户端传来的模糊哈希值; 遍历白名单服务器中存储的所有模糊哈希值,分别与客户端传来的模糊哈希值进行比较,记录下所有得到的相似度; 如果所有得到的相似度中有一个或一个以上超过预先设定的白名单阈值,则向客户端发回认为待检测对象不是恶意代码的判定结果; 遍历黑名单服务器中存储的所有模糊哈希值,分别与客户端传来的模糊哈希值进行比较,记录下所有得到的相似度; 如果所有得到的相似度中有一个或一个以上超过预先设定的黑名单阈值,则向客户端软件发回认为待检测对象是恶意代码的判定结果; 否则,向客户端发回认为待检测对象需要进一步判断的判定结果。
9.一种基于模糊哈希算法的恶意代码检测方法,其特征在于,适用于权利要求I所述的系统,所述方法包括 深度分析服务器从客户端接收需要进一步判断的待检测对象; 调用现有的对完整检测对象进行云查杀的技术,对所述待检测对象做进一步分析和判断; 得出认为检测对象是恶意代码或认为检测对象不是恶意代码的判定结果,并将所述判断结果发回给客户端。
全文摘要
本发明公开一种利用模糊哈希算法检测恶意代码的系统及方法。该系统由客户端软件与云端服务器组成。客户端计算要检测对象的模糊哈希值,将其发送给云端服务器。云端服务器将该模糊哈希值与已知正常文件的模糊哈希值进行比较,得到的相似度中若有一个高于白名单阈值,认为检测对象是正常文件。云端服务器将该模糊哈希值与已知恶意代码的模糊哈希值进行比较,得到的相似度中若有一个高于黑名单阈值,认为检测对象是恶意代码。对其他情况,由客户端回传整个检测对象,采用传统云查杀方法作进一步检测。在传输数据大小、网络资源消耗、恶意代码检出效果上,本发明所述方法及系统相比现有基于云的恶意代码检测技术有更好的技术效果。
文档编号H04L12/26GK102811213SQ20111037516
公开日2012年12月5日 申请日期2011年11月23日 优先权日2011年11月23日
发明者肖梓航, 李柏松, 肖新光 申请人:北京安天电子设备有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1