恶意软件的检测方法及装置、计算机装置及可读存储介质与流程

文档序号:11206428阅读:433来源:国知局
恶意软件的检测方法及装置、计算机装置及可读存储介质与流程

本发明涉及网络安全领域,具体涉及一种恶意软件的检测方法及装置、计算机装置及可读存储介质。



背景技术:

恶意软件是指在计算机系统上执行恶意任务的病毒、蠕虫和特洛伊木马的程序,通过破坏软件进程来实施控制。当前,恶意软件泛滥严重,这些恶意软件包含各种恶意行为,引发用户的隐私泄露、经济损失等安全问题。

为了保障网络安全,需要找到检测恶意软件的可靠方法。目前对恶意软件的检测方法是对恶意软件的http通信流量进行检测,具体的,是基于uri、域名的检测方法,通过主动收集恶意的uri、域名构成黑名单,或者通过自动化分析恶意软件提取流量中的uri构成黑名单。

现有技术的恶意软件检测方法是基于url、域名等的精确匹配,缺乏泛化能力,并且未考虑到网络流量的其他特征,因此制约了对同一家族恶意软件进行检测的准确性。



技术实现要素:

本发明提供一种恶意软件的检测方法及装置、计算机装置及可读存储介质,用于解决现有技术提供的恶意软件检测方法准确性低的问题。

本发明实施例的一方面提供了一种恶意软件的检测方法,包括:

获取多个恶意软件产生的网络流量;

基于所述网络流量的统计特征对所述多个恶意软件粗粒度聚类,得到第一聚类结果;

基于所述网络流量的内容特征对所述第一类聚类结果中的每一类恶意软件细粒度聚类,得到第二聚类结果;

为所述第二聚类结果中的每一类恶意软件生成签名,以利用所述签名进行恶意软件检测。

结合第一方面,在第一方面的第一种可能的实现方式中,所述统计特征包括超文本传输协议http请求数量、目标请求方法对应的http消息数量、统一资源标识符uri的平均长度和http响应数量中的一个或多个;

所述目标请求方法包括获取get、提交post和删除delete中的一个或多个。

结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述为所述第二聚类结果中的每一类恶意软件生成签名包括:

将所述第二聚类结果中的每一类恶意软件产生的网络流量按照相似性进行分组;

为分组结果中每个组的所述网络流量生成签名。

结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述为分组结果中每个组的所述网络流量生成签名包括:

步骤1:提取当前组的所述网络流量的特征字符串;

步骤2:选取重复次数最多的所述特征字符串,和/或,所述特征字符串的公共字符串,为所述当前组的所述网络流量生成签名;

步骤3:重复步骤1和步骤2,直至为分组结果中每个组的所述网络流量生成签名。

本发明实施例的第二方面提供了一种恶意软件的检测装置,包括:

获取模块,用于获取多个恶意软件产生的网络流量;

第一聚类模块,用于基于所述网络流量的统计特征对所述多个恶意软件粗粒度聚类,得到第一聚类结果;

第二聚类模块,用于基于所述网络流量的内容特征对所述第一类聚类结果中的每一类恶意软件细粒度聚类,得到第二聚类结果;

签名生成模块,用于为所述第二聚类结果中的每一类恶意软件生成签名,以利用所述签名进行恶意软件检测。

结合第二方面,在第二方面的第一种可能的实现方式中,所述统计特征包括超文本传输协议http请求数量、目标请求方法对应的http消息数量、统一资源标识符uri的平均长度和http响应数量中的一个或多个;

所述目标请求方法包括获取get、提交post和删除delete中的一个或多个。

结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述签名生成模块包括:

分组单元,用于将所述第二聚类结果中的每一类恶意软件产生的网络流量按照相似性进行分组;

签名生成单元,用于为分组结果中每个组的所述网络流量生成签名。

结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述签名生成单元包括:

提取子单元,用于提取当前组的所述网络流量的特征字符串;

签名生成子单元,用于选取重复次数最多的所述特征字符串,和/或,所述特征字符串的公共字符串,为所述当前组的所述网络流量生成签名。

本发明实施例的第三方面提供了一种计算机装置,所述计算机装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如第一方面或第一方面的任意一种可能的实现方式的步骤。

本发明实施例的第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如第一方面或第一方面的任意一种可能的实现方式的步骤。

从以上技术方案可以看出,本发明实施例具有以下优点:

本发明可以获取多个恶意软件产生的网络流量,基于所述网络流量的统计特征对所述多个恶意软件粗粒度聚类,得到第一聚类结果,基于所述网络流量的内容特征对所述第一类聚类结果中的每一类恶意软件细粒度聚类,得到第二聚类结果,为所述第二聚类结果中的每一类恶意软件生成签名,以利用所述签名进行恶意软件检测。本发明对恶意软件的聚类过程中,将网络流量的统计特征考虑在内,聚类结果更加准确,签名是基于一类恶意软件产生的,和现有技术相比,利用本发明方法生成的签名检测恶意软件准确性更高、泛化能力强。

附图说明

图1是本发明恶意软件的检测方法一个实施例示意图;

图2是本发明恶意软件的检测方法另一个实施例示意图;

图3是本发明为所述第二聚类结果中的每一类恶意软件生成签名的方法一个实施例示意图;

图4是本发明恶意软件的检测装置一个实施例示意图;

图5是本发明恶意软件的检测装置另一个实施例示意图;

图6是本发明计算机装置一个实施例示意图。

具体实施方式

本发明实施例提供了一种恶意软件的检测方法及装置、计算机装置及可读存储介质,用于提高恶意软件检测的准确性。

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

请参阅图1,本发明恶意软件的检测方法一个实施例包括:

101、获取多个恶意软件产生的网络流量;

可以选取多个恶意软件用于聚类,选取的恶意软件越多、类型越广,聚类的效果越好。将收集到的恶意软件在沙箱环境中运行的过程中,可以捕获恶意软件在沙箱环境中运行的过程中产生的网络流量,即为恶意软件的网络流量。网络流量的存在形式通常为pcap文件,pcap文件格式是常用的数据包存储格式,包括wireshark在内的主流抓包软件都可以生成这种格式的数据包。

上述获取恶意软件的网络流量的方法仅作为举例,此处不对本方案中恶意软件的网络流量的来源做限制。也就是说,本步骤收集的恶意软件的网络流量可以如上所述,是来自在隔离环境中运行恶意软件后捕获的网络流量,在实际使用中,本步骤收集的恶意软件的网络流量也可以是来自于从互联网中直接搜集到的恶意软件的网络流量,或者还可以通过其它方式获取。

102、基于网络流量的统计特征对多个恶意软件粗粒度聚类,得到第一聚类结果;

获取多个恶意软件产生的网络流量之后,可以提取网络流量的统计特征和内容特征。网络流量的统计特征和内容特征都可以用来反映网络流量特征,而由于网络流量的统计特征可以用来刻画网络流量的宏观特征,这种刻画是粗粒度的,因此可以基于网络流量的统计特征对多个恶意软件粗粒度聚类,得到第一聚类结果。

103、基于网络流量的内容特征对第一类聚类结果中的每一类恶意软件细粒度聚类,得到第二聚类结果;

在对恶意软件进行粗粒度聚类之后,由于网络流量的内容特征关注网络流量中的某些字段,可以用来刻画网络流量的微观特征,这种刻画是细粒度的,因此可以基于网络流量的内容特征对第一类聚类结果中的每一类恶意软件细粒度聚类,得到第二聚类结果。

所谓聚类,就是将相似的事物聚集在一起,而将不相似的事物划分到不同的类别的过程。虽然网络上活跃的恶意软件种类众多,但是大量的恶意软件实际上都是某一种特定恶意软件的变种,这些恶意软件的相似性体现在产生的网络流量的相似性,因此可以将产生的网络流量具有相似性的恶意软件归为一个家族。选取多个恶意软件作为聚类的恶意软件之后,可以利用聚类算法将产生相似的网络流量的恶意软件划分为同一类。当前已有多种聚类算法可用于粗粒度聚类和细粒度聚类中,最基本的聚类算法包括k-means算法和层次聚类算法等。

104、为第二聚类结果中的每一类恶意软件生成签名,以利用签名进行恶意软件检测。

由于产生相似的网络流量的恶意软件被划分为同一类,因此同一类恶意软件产生的网络流量具有共同特征,为了方便描述,将目标类的恶意软件产生的网络流量的共同特征称作目标共同特征,其中目标类可以是分类结果中的任意一类。那么对恶意软件聚类后,可以为第二聚类结果中的每一类恶意软件生成签名,以利用签名进行恶意软件检测,该签名可以用于检测产生的网络流量具有目标共同特征的恶意软件。这里所说的签名可以理解为用于匹配特定模式的标识或规格。

本发明可以获取多个恶意软件产生的网络流量,基于所述网络流量的统计特征对所述多个恶意软件粗粒度聚类,得到第一聚类结果,基于所述网络流量的内容特征对所述第一类聚类结果中的每一类恶意软件细粒度聚类,得到第二聚类结果,为所述第二聚类结果中的每一类恶意软件生成签名,以利用所述签名进行恶意软件检测。本发明对恶意软件的聚类过程中,将网络流量的统计特征考虑在内,聚类结果更加准确,签名是基于一类恶意软件产生的,和现有技术相比,利用本发明方法生成的签名检测恶意软件准确性更高、泛化能力强。并且,为了提高聚类结果的准确性,通常会选取大量恶意软件作为聚类的恶意软件,聚类过程通常要花费很长时间,通过本发明方法的先后对恶意软件进行粗粒度和细粒度聚类,可以快速的将网络流量具有相似性的恶意软件归为一类,提高聚类效率。

由于同一个家族的恶意软件在网络流量上具有很强的相似性,而网络流量中常见的数据为http消息,因此下面通过分析网络流量中的http消息的相似性来分析恶意软件产生的网络流量的相似性,从恶意软件产生的网络流量中提取http消息,利用http消息对恶意软件进行分类,以对恶意软件划分家族。请参阅图2,本发明恶意软件的检测方法另一个实施例包括:

201、选取多个恶意软件用于聚类;

可以选取多个恶意软件用于聚类,之后可以将收集到的大量恶意软件分别在沙箱环境中运行。

202、获取恶意软件的网络流量;

将收集到的恶意软件在沙箱环境中运行的过程中,可以捕获恶意软件在沙箱环境中运行的过程中产生的网络流量,即为恶意软件的网络流量。网络流量的存在形式通常为pcap文件,pcap文件格式是常用的数据包存储格式,包括wireshark在内的主流抓包软件都可以生成这种格式的数据包。

上述获取恶意软件的网络流量的方法仅作为举例,此处不对本方案中恶意软件的网络流量的来源做限制。也就是说,本步骤收集的恶意软件的网络流量可以如上所述,是来自在隔离环境中运行恶意软件后捕获的网络流量,在实际使用中,本步骤收集的恶意软件的网络流量也可以是来自于从互联网中直接搜集到的恶意软件的网络流量,或者还可以通过其它方式获取。

203、从恶意软件的网络流量中提取http消息;

对于收集到的恶意软件的网络流量,可以从中提取http消息,也就是从步骤202获取到的pcap文件中提取http消息,可以理解的是,恶意软件在运行过程中可能产生多条http消息。

为了提高聚类效率,可以从提取到的http消息中过滤掉白名单中的http消息。白名单中的http消息可以为白名单域名对应的http消息,还可以为白名单资源对应的http消息。白名单域名主要指“www.bing.com”等知名网站的域名,白名单资源可以指http请求的资源类型为“.jpg”等。

204、基于http消息的统计特征对多个恶意软件进行粗粒度聚类,得到第一聚类结果;

从恶意软件的网络流量中提取到http消息之后,可以提取http消息的统计特征和内容特征。http消息的统计特征和http消息的内容特征都可以用来反映网络流量特征,而由于http消息的统计特征可以用来刻画网络流量的宏观特征,这种刻画是粗粒度的,因此可以根据http消息的统计特征对多个恶意软件进行粗粒度聚类,得到第一聚类结果。

某个恶意软件的http消息的统计特征为该恶意软件的所有http消息的统计信息,一般包括http请求数量、method为“get”的http消息数量、method为“post”的http消息数量、平均uri长度、http响应数量等。提取到各个恶意软件的http消息的统计特征之后,可以根据http消息的统计特征对恶意软件进行聚类,将http消息的统计特征相近的恶意软件归为一类。比如,可以将每个恶意软件抽象为多维空间的一个点,提取到各个恶意软件的http消息的统计特征之后,相当于确定各个恶意软件的坐标,之后可以用数据点之间的欧式距离来判断,两个点之间的距离越近,则这两个点对应的恶意软件越相似。明确了恶意软件间相似性的判定标准之后,可以利用现有的聚类算法对恶意软件进行粗粒度聚类,得到第一聚类结果。

通过根据统计特征进行粗粒度聚类可以加速对海量恶意软件进行聚类的效率,提升整体处理能力和实际可用性。

205、基于http消息的内容特征对第一聚类结果中的每一类恶意软件进行细粒度聚类,得到第二聚类结果;

在对恶意软件进行粗粒度聚类之后,由于http消息的内容特征关注http消息中的某些字段,可以用来刻画网络流量的微观特征,这种刻画是细粒度的,因此可以根据http消息的内容特征对第一聚类结果中的每一类恶意软件进行细粒度聚类,得到第二聚类结果。某个恶意软件的http消息的内容特征主要针对该恶意软件的各个http消息的内容级别上的分析,一般可以包括http请求消息中的method(取值包括post或get)、uri中的path字符串、参数key的序列、参数value的序列等。比如某个恶意软件的一条http消息的一种可能的内容特征可以为:{method:“get”,path:“/yourpath/filename.htm”,key序列:“stove、path、id”,value序列:“10、32、4”}

对于恶意软件的这些特征集合可以使用层次聚类算法进行聚类。本次聚类作为对恶意软件恶意软件进行聚类的最终结果。

对恶意软件进行聚类最重要的是需要明确评价两个恶意软件相似程度高低的标准,或者说需要首先确定计算两个恶意软件之间距离的方法,优选的,可以利用两个恶意软件的http消息的编辑距离作为两个恶意软件之间的距离,来评价两个恶意软件的相似程度。编辑距离是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数,一般来说,编辑距离越小,两个字符串的相似度越高。也就是说,若两个http消息之间的编辑距离越小,则判定这两个http消息的相似度越高,两个恶意软件之间的相似度越高,反之,则判定这两个http消息的相似度越低,而两个恶意软件之间的相似度也越低。两个恶意软件的http消息之间的编辑距离的计算方法可以有很多,作为举例,假设恶意软件a包括http消息-a1、http消息-a2、……、http消息-am,恶意软件b包括http消息-b1、http消息-b2、……、http消息-bn,m和n为正整数,那么恶意软件a和恶意软件b的http消息之间的编辑距离的计算过程可以为:

首先计算http消息-a1与恶意软件b中所有http消息的编辑距离,选取最小的编辑距离作为http消息-a1与恶意软件b的http消息的编辑距离-a1,按照相同的方法,可以分别计算http消息-a2、……、http消息-am与恶意软件b的http消息的编辑距离,得到编辑距离-a2、……、编辑距离-am。之后可以计算http消息-b1与恶意软件a中所有http消息的编辑距离,选取最小的编辑距离作为http消息-b1与恶意软件a的http消息的编辑距离-b1,按照相同的方法,可以分别计算http消息-b2、……、http消息-bn与恶意软件a的http消息的编辑距离,得到编辑距离-b2、……、编辑距离-bn。那么恶意软件a与恶意软件b之间的距离可以为(编辑距离-a1+编辑距离-a2+……+编辑距离-am+编辑距离-b1+编辑距离-b2+……+编辑距离-bn)/(m+n)。

通过步骤204至步骤205,可以实现对恶意软件的聚类,以使得产生相似的网络流量的恶意软件被划分为同一类。

206、为第二聚类结果中的每一类恶意软件生成签名;

聚类后第二聚类结果一般可以包括多个类,每个类包括一个或多个恶意软件,每个恶意软件包括一个或多个http消息。对于聚类后的每一类恶意软件,也就是每一类恶意软件,一般包括多个http消息,通常其中的部分http消息会具有共同特征,为了方便描述,将聚类结果中的任意一类,称作目标类,将目标类的恶意软件产生的网络流量的共同特征称作目标共同特征,因此可以根据目标类的恶意软件产生的http消息为目标类的恶意软件生成签名,以使得该签名可以用于检测产生的网络流量具有目标共同特征的恶意软件。另外,由于http会话过程一般是先产生http请求消息,之后产生http响应消息,因此,为了提高检测效率,优选的是根据http请求消息生成该类恶意软件的签名,生成的签名用于恶意软件检测时,可以直接针对网络流量中的http请求消息进行检测,提高检测效率。

需要说明的是,为同一类恶意软件生产的签名是为了体现该类恶意软件的http消息共同特征,而对恶意软件进行聚类实际上是将产生的http消息具有更多的能够体现网络流量行为的共同特征的恶意软件划分为同一类,因此可以参照聚类所选用的聚类特征从http消息中提取与聚类特征相应的字段。比如聚类所选用的聚类特征包括http请求消息中的user-agent、uri和method等,那么,可以从同一类恶意软件的具有相似性的http请求消息中提取user-agent、uri和method等对应的字段,生成包含通配符的字符串形式的签名,用于体现该类恶意软件的http消息的共同特征。需要说明的是,对每一类恶意软件生成的签名不限定为一个,在实际使用中,对每一类恶意软件可以生成一个或多个签名。

207、利用签名检测恶意软件。

为第二聚类结果中每一类的恶意软件生成签名之后,可以得到多个类的多个签名,并组成签名集合,得到的签名集合可以应用于网关服务器或终端等进行的恶意软件检测,以提高网络安全。具体的,利用签名检测恶意软件的网络流量可以包括:对网络流量进行监测,从获取到的网络流量中提取http消息,之后可以过滤掉白名单中的http消息,从未被过滤掉的http消息中提取签名对应的字段,比如,若签名对应的字段为http请求消息中的user-agent、uri和method,那么可以提取网络流量中的http请求消息,并提取http请求消息中的user-agent字段、uri字段和method字段,之后将提取的字段与签名集合中的各个签名进行匹配。如果http请求消息与某一条签名匹配成功,则说明获取到的该网络流量中包含恶意软件产生的网络流量,之后可以找到该网络流量的源头恶意软件。这里的匹配是指将http请求消息中提取的字段与签名中的对应字段的进行比较,若各个字段均相同,则该http请求消息与该签名匹配成功。

本发明实施例针对现有方法的不足,提出一种基于机器学习聚类的恶意软件http流量的签名自动化生成方法及相应检测方法。通过从大量恶意软件的网络流量中提取http消息,并根据http消息对恶意软件进行聚类,对聚类后的类内恶意软件生成具有一定泛化能力的签名,并应用到网络流量中进行检测,实现从生成具有泛化能力的签名到网络流量检测的整套方法。

网络流量中不仅可以包括http消息,还可以包括其他应用层协议数据,比如smtp邮件消息,smtp,即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。图2对应的实施例中还可以从恶意软件的网络流量中提取http消息以外的其他应用层协议数据,之后提取该协议数据中的聚类特征,依据提取的聚类特征对恶意软件进行聚类。可以理解的是,由于不同的应用层协议数据之间在内容和格式上均有所不同,因此从http消息以外的其他应用层协议数据中提取的聚类特征可能与从http消息中提取的聚类特征不同。

在图1对应的实施例中,步骤104用于实现对每一类恶意软件生成签名,该签名应体现该类恶意软件或者说该家族恶意软件的网络流量的共同特征,从而用于检测产生具有该共同特征的网络流量的该家族恶意软件。为每一类恶意软件生成签名、以使得该签名能够体现该类恶意软件的网络流量的共同特征的方法可以有很多,请参阅图3,本发明提供一种为同一类恶意软件生成签名的方法,可作为步骤104的一种具体实施方式,本发明一种为第二聚类结果中的每一类恶意软件生成签名的方法一个实施例包括:

301、将第二聚类结果中的每一类恶意软件产生的网络流量按照相似性进行分组;

假设根据提取的http消息对恶意软件进行聚类,由于http通话过程一般是先产生http请求消息,之后产生http相应消息,因此,为了提高检测效率,优选的是根据http请求消息生成该类恶意软件的签名,生成的签名用于恶意软件检测时,可以直接针对网络流量中的http请求消息进行检测,提高检测效率。为了方便描述,将第二聚类结果中任意一类称作目标类,将目标类的恶意软件的http请求消息的共同特征称作目标共同特征。

可以首先将目标类恶意软件的所有http请求消息按照相似性进行分组,为了方便描述,将目标类恶意软件的所有http请求消息称作目标类的http消息集合。评价http请求消息之间的相似性的标准可以有很多,本发明以http请求消息之间的编辑距离作为评价http请求消息之间的相似性的标准。

由于对目标类恶意软件的所有http请求消息进行分组是为了给目标类恶意软件生成签名,生产的签名用于体现目标类恶意软件的http请求消息的目标共同特征,以对该类恶意软件所属家族的其他恶意软件进行检测。但是http请求消息中包含与体现同一家族恶意软件的http请求消息相似性无关的字符串,直接比较http请求消息间的编辑距离所得到的分组结果不利于后续生产的签名的有效性。因此可以从http请求消息中提取能够体现同家族恶意软件的http请求消息的目标共同特征的字符串,可以将这类字符串称作特征字符串,之后可以将两个http请求消息中特征字符串之间的编辑距离作为这两个http请求消息之间的编辑距离,进而根据两个http请求消息之间的编辑距离来评价这两个http请求消息之间的相似性。从http请求消息中提取的特征字符串可以为method、user-agent、uri中的path和key等对应的字符串中的一个或多个。由于http请求消息中的不同字符串对于分析同家族恶意软件的网络流量相似性的重要性不同,一般情况下,method、user-agent、uri中的path和参数key列表的重要性依次减弱,因此,可以为各个字符串添加计算权重。假设上述4个字符串的权重依次为50%、30%、15%和5%,若特征字符串包括method、user-agent、uri中的path和参数key列表中对应的字符串,那么两个http请求消息之间的编辑距离可以为:method字符串的编辑距离×50%+user-agent字符串的编辑距离×30%+path字符串的编辑距离×15%+key列表字符串的编辑距离×5%。

确定了http请求消息之间相似性的评价标准之后,需要确定将目标类恶意软件的所有http请求消息进行分组的策略。比如,可以预设距离阈值:从目标类恶意软件的http消息集合中随机选取一个http请求消息,作为第一http请求消息,之后计算第一http请求消息与http消息集合中其他所有http请求消息之间的编辑距离,选择编辑距离不超过距离阈值的http请求消息与第一http请求消息组成第一组;将http消息集合中第一组http请求消息以外的其他http请求消息组成的集合称作第一剩余http消息集合,从第一剩余http消息集合中随机选取一个http请求消息,作为第二http请求消息,之后计算第二http请求消息与第一剩余http消息集合中其他所有http请求消息之间的编辑距离,选择编辑距离不超过距离阈值的http请求消息与第二http请求消息组成第二组;依此类推,直至http消息集合中的所有http请求消息均被分组为止。但是,在实际使用中,难以确定一个合适的距离阈值,因此难以得到很好的分组结果。

由于一个攻击过程通常需要分多个阶段来完成,而同一攻击过程的不同攻击阶段具有较大的差异性,因此同一恶意软件在一个时间段内发出的不同http请求消息通常差异较大,而同一家族的不同恶意软件的攻击过程通常具有相似性,这体现在包括相似的攻击阶段,因此,优选的,是将不同恶意软件的同一攻击阶段的http请求消息划分为一组,而不同的组可以体现一个攻击过程的不同阶段。为了实现上述目的,以下提供一种将目标类恶意软件的所有http请求消息进行分组的策略,仅作为优选的方法,不做排他性限定:

s1:从目标类的恶意软件中选择第一恶意软件,并从第一恶意软件的http请求消息中选择一个http消息-ai;

可以从目标类的恶意软件中随机选择一个恶意软件,作为第一恶意软件,并从第一恶意软件的http请求消息中随机选择一个http请求消息。

s2:从目标类的恶意软件中选择第一恶意软件以外的第二恶意软件,并从第二恶意软件的http请求消息中选择http消息-bi,http消息-bi为第二恶意软件的所有http请求消息中与http消息-ai的编辑距离最近的http请求消息;

关于http请求消息间编辑距离的计算方法可以参照前述相关描述,此处不再赘述。

s3:遍历目标类的恶意软件中第一恶意软件以外的所有恶意软件,将从各个恶意软件的http请求消息中选择的http请求消息与http消息-ai组成第i组;

s4:重复执行步骤s1至步骤s3,直至目标类恶意软件的所有http请求消息均被分组。

为了便于理解,下面对步骤s1至步骤s4进行具体举例:

假设目标类包括三个恶意软件:恶意软件1、恶意软件2和恶意软件3。恶意软件1的http请求消息包括:http消息-a1、http消息-a2和http消息-a1;恶意软件2的http请求消息包括:http消息-b1和http消息-b2;恶意软件3的http消息包括:http-c1、http消息-c2、http消息-c3和http消息-c4。

组成第1组:从三个恶意软件中随机选择一个恶意软件,假设为恶意软件1,之后从恶意软件1中随机选择一个http请求消息,假设选择了http消息-a1。之后计算恶意软件2中各个http请求消息与http消息-a1之间的编辑距离,并选择编辑距离最小的http请求消息与http消息-a1组成一组,假设http消息-b1与http消息-a1的编辑距离最小,那么http消息-b1与http消息-a1为一组。同样的,计算恶意软件3中各个http请求消息与http消息-a1之间的编辑距离,并选择编辑距离最小的http请求消息与http消息-a1组成一组,假设http消息-c1与http消息-a1的编辑距离最小,那么http消息-c1与http消息-a1为一组。此时,可以得到第1组,包括http消息-a1、http消息-b1和http消息-c1。

组成第2组:从恶意软件1的http消息-a2和http消息-a3中随机选择一个http请求消息,假设选择了http消息-a2。由于恶意软件2中只剩下http消息-b2,因此将http消息-b2与http消息-a2组为一组。分别计算恶意软件3中http消息-c2、http消息-c3、http消息-c4与http消息-a2之间的编辑距离,并选择编辑距离最小的http请求消息与http消息-a2组成一组,假设http消息-c2与http消息-a2的编辑距离最小,那么http消息-c2与http消息-a2为一组。此时,可以得到第2组,包括http消息-a2、http消息-b2和http消息-c2。

组成第3组:选择恶意软件1中仅剩的http消息-a3,由于恶意软件2中已无未分组的http请求消息,因此恶意软件2中的http请求消息不被纳入第3组。分别计算恶意软件3中http消息-c3、http消息-c4与http消息-a3之间的编辑距离,并选择编辑距离最小的http请求消息与http消息-a3组成一组,假设http消息-c3与http消息-a3的编辑距离最小,那么http消息-c3与http消息-a3为一组。此时,可以得到第3组,包括http消息-a3和http消息-c3。

组成第4组:由于恶意软件1和恶意软件2中均无未分组的http请求消息,因此恶意软件1和恶意软件2中的http请求消息均不被纳入第4组。此时,可以得到第4组,只包括http消息-c4。

这样,对目标类恶意软件的所有http请求消息进行分组的结果是:将目标类恶意软件的所有http请求消息分为4组,第1组包括http消息-a1、http消息-b1和http消息-c1,第2组包括http消息-a2、http消息-b2和http消息-c2,第3组包括http消息-a3和http消息-c3,第4组包括http消息-c4。

302、为分组结果中每个组的网络流量生成签名;

将目标类的恶意软件产生的网络流量按照相似性进行分组之后,可以为分组结果中每个组的http请求消息生成签名。为每个组的http请求消息生成签名可以采用如下方法:

步骤1:提取当前组的网络流量的特征字符串;

步骤2:选取重复次数最多的特征字符串,和/或,特征字符串的公共字符串,为当前组的网络流量生成签名;

步骤3:重复步骤1和步骤2,直至为分组结果中每个组的网络流量生成签名。

仍然以网络流量为http请求消息为例,可以为分组结果中每个组的http请求消息生成签名。具体的实施过程如下:

步骤a:提取当前组的http消息的特征字符串;

特征字符串可以为http请求消息中的method、user-agent、uri中的path和key等对应的字符串中的一个或多个。

步骤b:选取重复次数最多的特征字符串,和/或,选取特征字符串的公共字符串,为当前组的http消息生成签名;

从当前组的http请求消息中提取特征字符串之后,可以确定各个http请求消息中重复次数最多的method和user-agent,记录uri的公共字符串,可以用通配符替代公共字符串以外的部分,组成当前组对应的临时签名。其中通配符用于代替一个或多个真正的字符,常用的通配符包括“*”和“?”。作为举例,当前组对应的一种可能的临时签名为:{method:"post",user-agent:"mozilla/5.0",path:"*ls5/forum.php",key:""}。

步骤c:重复步骤a和步骤b,直至为分组结果中每个组的http消息生成签名。

由于通常当前组中的所有http请求消息中只有部分http请求消息是相似性更高的,可以理解为分布更加集中,为统计的有效数据,而其他http请求消息相似性更低,分布更加离散,可视为统计的无效数据,因此优选的是去除无效数据,利用有效数据生产当前组对应的临时签名,为了实现这个目的,可以采取随机选择、之后择优的策略。因此步骤1至步骤2可以优化为:

从当前组中的所有http请求消息中随机选择一定比例的http请求消息,从选择的http请求消息中提取特征字符串,并确定所选择的各个http请求消息中重复次数最多的method和user-agent,并记录重复次数,记录uri的公共字符串,可以用通配符替代公共字符串以外的部分,组成当前组对应的临时签名。之后重新执行上述步骤,即从当前组中的所有http请求消息中重新随机选择一定比例的http请求消息,并重新生产当前组对应的临时签名。重复若干次后,得到多个当前组对应的临时签名。之后,可以从临时签名中选择method和user-agent出现次数最多、uri中公共字符串最长的签名作为当前组的签名。

同样的,由于http请求消息中的不同字符串对于分析同家族恶意软件的网络流量相似性的重要性不同,一般情况下,method、user-agent、uri中的path和key的重要性依次减弱,因此可以相应的为各个字符串添加计算权重。比如,每个当前组对应的临时签名的评分可以为:method出现次数×50%+user-agent出现的次数×40%+uri中公共字符串长度×10%,之后可以选择评分最高的临时签名作为当前组的签名。可见,当前组的签名能够体现当前组的http请求消息的共同特征。

按照上述方法,为目标类恶意软件的各组http请求消息生成签名。

303、将目标类恶意软件的各组网络流量的签名组成集合,作为目标类恶意软件的签名。

为分组结果中每个组的网络流量生成签名之后,可以将目标类恶意软件的各组网络流量的签名组成集合,作为目标类恶意软件的签名。

仍然以网络流量为http请求消息为例,为分组结果中每个组的http请求消息生成签名之后,可以为目标类恶意软件生产多个签名,之后可以将目标类恶意软件的各组http请求消息的签名组成集合,作为目标类的恶意软件的签名,该签名集合能够体现目标类的恶意软件的http请求消息的目标共同特征。

上面对本发明实施例中恶意软件的检测方法进行了描述,下面对本发明实施例中的装置进行描述。

请参阅图4,本发明实施例中恶意软件的检测装置的一个实施例包括:

获取模块4100,用于多个恶意软件产生的网络流量;

第一聚类模块4200,用于基于网络流量的统计特征对多个恶意软件粗粒度聚类,得到第一聚类结果;

第二聚类模块4300,用于基于网络流量的内容特征对第一类聚类结果中的每一类恶意软件细粒度聚类,得到第二聚类结果。

签名生成模块4400,用于为第二聚类结果中的每一类恶意软件生成签名,以利用签名进行恶意软件检测。

请参阅图5,本发明实施例中恶意软件的检测装置的另一个实施例包括:

获取模块5100,用于多个恶意软件产生的网络流量;

第一聚类模块5200,用于基于网络流量的统计特征对多个恶意软件粗粒度聚类,得到第一聚类结果;

第二聚类模块5300,用于基于网络流量的内容特征对第一类聚类结果中的每一类恶意软件细粒度聚类,得到第二聚类结果。

签名生成模块5400,用于为第二聚类结果中的每一类恶意软件生成签名,以利用签名进行恶意软件检测。

签名生成模块5400包括:

分组单元5410,用于将第二聚类结果中的每一类恶意软件产生的网络流量按照相似性进行分组;

签名生成单元5420,用于为分组结果中每个组的网络流量生成签名。

签名生成单元5420包括:

提取子单元5421,用于提取当前组的网络流量的特征字符串;

签名生成子单元5422,用于选取重复次数最多的特征字符串,和/或,特征字符串的公共字符串,为当前组的网络流量生成签名。

本发明实施例还提供了一种计算机装置6,如图6所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该计算机装置6可以为包括任意终端设备或服务器设备。

参考图6,计算机装置6包括:电源610、存储器620、处理器630以及存储在存储器中并可在处理器上运行的计算机程序。所述处理器630执行计算机程序时实现上述各个信息处理方法实施例中的步骤,例如图1所示的步骤101至103。或者,所述处理器执行所述计算机程序时实现上述各装置实施例中各模块或单元的功能。

示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器620中,并由所述处理器630执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述计算机装置6中的执行过程。例如,参照图4对应的实施例,所述计算机程序可以被分割成选取模块4100、获取模块4200、第一聚类模块4300、第二聚类模块4400及签名生成模块4500,各模块具体功能如下:

选取模块4100,用于选取多个恶意软件作为恶意软件;

获取模块4200,用于获取恶意软件的网络流量;

第一聚类模块4300,用于根据网络流量的统计特征对恶意软件进行粗粒度聚类,得到第一聚类结果;

第二聚类模块4400,用于根据网络流量的内容特征对同一粗粒度类内的恶意软件进行细粒度聚类。

签名生成模块4500,为细粒度聚类结果中目标类的恶意软件生成签名,签名用于检测产生的网络流量具有目标共同特征的恶意软件,目标共同特征为目标类的恶意软件产生的网络流量具有的共同特征。

本领域技术人员可以理解,图6中示出的结构并不构成对计算机装置6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,例如所述计算机装置还可以包括输入输出设备、网络接入设备、总线等。

所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。

所述存储器620可用于存储所述计算机程序和/或模块,所述处理器630通过运行或执行存储在所述存储器620内的计算机程序和/或模块,以及调用存储在存储器620内的数据,实现所述计算机装置6的各种功能。所述存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

所述计算机装置集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

所述的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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