一种流量检测方法、装置、设备及可读存储介质转让专利

申请号 : CN202210762426.5

文献号 : CN115150159B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈晨李达黄磊薛聪明段彦忠嵇中旭刘涛王运沈一平袁楠丁

申请人 : 深信服科技股份有限公司

摘要 :

本申请公开了计算机技术领域内的一种流量检测方法、装置、设备及可读存储介质。本申请针对某一个设备主动发往目标主机的流量,可以按照该流量在滚动时间窗口内的流量出现次数选择对应的算法来检测其是否具有周期性。例如:流量在滚动时间窗口内的流量出现次数多(即次数序列中的各个元素的数值均比较大)时,说明通信频繁,故选择适用于检测较小周期的算法;若流量在滚动时间窗口内的流量出现次数少(即次数序列中的各个元素的数值均比较小)时,说明通信不是很频繁,故选择适用于检测较大周期的算法,由此可以提升周期检测的准确性和恶意流量的检测准确性。本申请提供的一种流量检测装置、设备及可读存储介质,同样具有上述技术效果。

权利要求 :

1.一种流量检测方法,其特征在于,包括:

获取其他设备访问目标主机的流量;

针对所述流量中的同路径流量,通过滚动时间窗口统计相应时间窗口内的流量出现次数,得到次数序列;

基于所述次数序列中的元素确定与所述次数序列对应的周期检测算法,并利用所述周期检测算法检测所述次数序列,以确定所述同路径流量是否具有周期性;所述周期检测算法为第一算法或第二算法,第一算法适用于检测的周期大于第二算法适用于检测的周期。

2.根据权利要求1所述的流量检测方法,其特征在于,还包括:若所述同路径流量中的各流量具有相似性,则执行所述通过滚动时间窗口统计相应时间窗口内的流量出现次数,得到次数序列;基于所述次数序列中的元素确定与所述次数序列对应的周期检测算法,并利用所述周期检测算法检测所述次数序列,以确定所述同路径流量是否具有周期性的步骤。

3.根据权利要求2所述的流量检测方法,其特征在于,所述同路径流量中的各流量具有相似性,包括:分别计算所述同路径流量中每个流量的流量指纹;

对所述同路径流量中各流量的流量指纹进行聚类,得到多个簇;

若任一簇中的流量占比大于预设第一阈值,则确定所述同路径流量中的各流量具有相似性。

4.根据权利要求1所述的流量检测方法,其特征在于,所述基于所述次数序列中的元素确定与所述次数序列对应的周期检测算法,包括:将所述次数序列中的元素按照数值大小降序排列,得到降序序列;

在所述降序序列中选择预设位置的元素;

若所选元素不大于预设第二阈值,则确定与所述次数序列对应的周期检测算法为第一算法;否则,确定与所述次数序列对应的周期检测算法为第二算法。

5.根据权利要求4所述的流量检测方法,其特征在于,利用所述第一算法检测所述次数序列,包括:调小所述次数序列中的极大值,并通过滑动平均滤波方式对调小后的次数序列进行平滑处理,得到目标序列;

基于所述目标序列中的各元素绘制波动曲线,并统计所述波动曲线中的峰值和低谷值,得到峰值序列和低谷值序列;

删除所述峰值序列中的首元素和尾元素,得到峰值新序列;

删除所述低谷值序列中的首元素和尾元素,得到低谷值新序列;

若所述峰值新序列和所述低谷值新序列中的元素个数相等,则将所述峰值新序列和所述低谷值新序列中的元素对位相减,得到对位元素差序列;使所述峰值新序列中相邻的后一位置元素减去前一位置元素,得到峰值差序列;使所述低谷值新序列中相邻的后一位置元素减去前一位置元素,得到低谷值差序列;若所述峰值新序列和所述低谷值新序列中的元素个数不相等,则确定所述同路径流量不具有周期性;

若所述对位元素差序列、所述峰值差序列和所述低谷值差序列中的元素离散程度均不大于离散程度阈值,则基于所述对位元素差序列中各元素的均值和所述目标序列中各元素的均值计算所述同路径流量的访问周期,并确定所述同路径流量具有周期性;若所述对位元素差序列、所述峰值差序列和所述低谷值差序列中任一个的元素离散程度大于离散程度阈值,则确定所述同路径流量不具有周期性。

6.根据权利要求4所述的流量检测方法,其特征在于,利用所述第二算法检测所述次数序列,包括:获取所述降序序列中排列在第E个位置的元素e以及排列在第F个位置的元素f;

删除所述次数序列中未落入区间[e,f]内的元素,并计算剩余元素的均值;

将所述时间窗口的时间长度与所述均值的比值确定为所述同路径流量的访问周期,并确定所述同路径流量具有周期性。

7.根据权利要求1至6任一项所述的流量检测方法,其特征在于,确定所述同路径流量具有周期性之后,还包括:记录所述同路径流量的源IP、目的IP以及所述周期检测算法输出的访问周期,并为所述源IP和/或所述同路径流量添加异常标识。

8.一种流量检测装置,其特征在于,包括:

获取模块,用于获取其他设备访问目标主机的流量;

统计模块,用于针对所述流量中的同路径流量,通过滚动时间窗口统计相应时间窗口内的流量出现次数,得到次数序列;

检测模块,用于基于所述次数序列中的元素确定与所述次数序列对应的周期检测算法,并利用所述周期检测算法检测所述次数序列,以确定所述同路径流量是否具有周期性;

所述周期检测算法为第一算法或第二算法,第一算法适用于检测的周期大于第二算法适用于检测的周期。

9.一种电子设备,其特征在于,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序,以实现如权利要求1至7任一项所述的流量检测方法。

10.一种可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的流量检测方法。

说明书 :

一种流量检测方法、装置、设备及可读存储介质

技术领域

[0001] 本申请涉及计算机技术领域,特别涉及一种流量检测方法、装置、设备及可读存储介质。

背景技术

[0002] 通常情况下,恶意软件一般与C2(Command&Control Server,C&C)服务器采用心跳上线的方式通信,恶意软件会周期性地发送心跳报文给C2服务器,C2服务器也会按照相应周期转发恶意报文到被攻击主机,可见C2服务器访问被攻击主机的报文一般具有周期性特点。
[0003] 由此,可以检测访问被攻击主机的流量是否有周期性,来确定相应流量是否恶意。但当前使用的周期性检测算法无法同时适应较大周期和较小周期的检测。也即:当前的周期性检测算法对C2服务器与攻击主机之间的较快频率的恶意流量和较小频率的恶意流量所检测的周期不够准确,降低了恶意流量的检测准确性。
[0004] 因此,如何提升流量的周期检测准确性,是本领域技术人员需要解决的问题。

发明内容

[0005] 有鉴于此,本申请的目的在于提供一种流量检测方法、装置、设备及可读存储介质,以提升流量的周期检测准确性。其具体方案如下:
[0006] 第一方面,本申请提供了一种流量检测方法,包括:
[0007] 获取其他设备访问目标主机的流量;
[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] 确定所述降序序列中排列在第Q个位置的目标元素;Q为上九分位数所处位置;
[0035] 将所述次数序列中大于所述目标元素的元素确定为所述极大值,并将所述极大值修改为所述目标元素。
[0036] 可选地,利用所述第二算法检测所述次数序列,包括:
[0037] 获取所述降序序列中排列在第E个位置的元素e以及排列在第F个位置的元素f;
[0038] 删除所述次数序列中未落入区间[e,f]内的元素,并计算剩余元素的均值;
[0039] 将所述时间窗口的时间长度与所述均值的比值确定为所述同路径流量的访问周期,并确定所述同路径流量具有周期性。
[0040] 可选地,确定所述同路径流量具有周期性之后,还包括:
[0041] 记录所述同路径流量的源IP、目的IP以及所述周期检测算法输出的访问周期,并为所述源IP和/或所述同路径流量添加异常标识。
[0042] 第二方面,本申请提供了一种流量检测装置,包括:
[0043] 获取模块,用于获取其他设备访问目标主机的流量;
[0044] 统计模块,用于针对所述流量中的同路径流量,通过滚动时间窗口统计相应时间窗口内的流量出现次数,得到次数序列;
[0045] 检测模块,用于确定与所述次数序列对应的周期检测算法,并利用所述周期检测算法检测所述次数序列,以确定所述同路径流量是否具有周期性。
[0046] 第三方面,本申请提供了一种电子设备,包括:
[0047] 存储器,用于存储计算机程序;
[0048] 处理器,用于执行所述计算机程序,以实现前述公开的流量检测方法。
[0049] 第四方面,本申请提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的流量检测方法。
[0050] 通过以上方案可知,本申请提供了一种流量检测方法,包括:获取其他设备访问目标主机的流量;针对所述流量中的同路径流量,通过滚动时间窗口统计相应时间窗口内的流量出现次数,得到次数序列;确定与所述次数序列对应的周期检测算法,并利用所述周期检测算法检测所述次数序列,以确定所述同路径流量是否具有周期性。
[0051] 可见,本申请在其他设备访问目标主机的流量中,确定了属于同一传输路径的同路径流量,本申请中的同路径流量也就是:某一个设备主动发往目标主机的流量。针对此流量,本申请通过滚动时间窗口统计相应时间窗口内的流量出现次数,得到次数序列,之后确定与次数序列对应的周期检测算法,并利用周期检测算法检测次数序列,以确定同路径流量是否具有周期性。可见,本申请针对某一个设备主动发往目标主机的流量,可以按照该流量在滚动时间窗口内的流量出现次数选择对应的算法来检测其是否有周期性。例如:流量在滚动时间窗口内的流量出现次数多(即次数序列中的各个元素的数值均比较大)时,说明通信频繁,故选择适用于检测较小周期的周期检测算法;反之,流量在滚动时间窗口内的流量出现次数少(即次数序列中的各个元素的数值均比较小)时,说明通信不是很频繁,故选择适用于检测较大周期的周期检测算法,由此可以提升周期检测的准确性,也就提升了恶意流量的检测准确性。
[0052] 相应地,本申请提供的一种流量检测装置、设备及可读存储介质,也同样具有上述技术效果。

附图说明

[0053] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0054] 图1为本申请公开的一种流量检测方法流程图;
[0055] 图2为本申请公开的一种多个设备访问目标主机的示意图;
[0056] 图3为本申请公开的另一种流量检测方法流程图;
[0057] 图4为本申请公开的一种流量检测装置示意图;
[0058] 图5为本申请公开的一种电子设备示意图;
[0059] 图6为本申请公开的另一种电子设备示意图。

具体实施方式

[0060] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0061] 目前,周期性检测算法对C2服务器与攻击主机之间的较快频率的恶意流量和较小频率的恶意流量所检测的周期不够准确,降低了恶意流量的检测准确性。为此,本申请提供了一种流量检测方案,能够提升周期检测的准确性,也就提升了恶意流量的检测准确性。
[0062] 参见图1所示,本申请实施例公开了一种流量检测方法,包括:
[0063] S101、获取其他设备访问目标主机的流量。
[0064] S102、针对流量中的同路径流量,通过滚动时间窗口统计相应时间窗口内的流量出现次数,得到次数序列。
[0065] 其中,S101获取的流量是:一段时间内的“多个设备发往目标主机”这一方向的流量,因此该流量中的同路径流量就是:某一个设备发往目标主机的流量。具体的,多个设备访问目标主机的示意图可以参照图2,图2中各条传输路径上往目标主机方向传输的流量总和就是S101获取的流量。其中,该流量可以是HTTP报文。
[0066] 针对图2中任一条传输路径上往目标主机方向传输的流量,通过滚动时间窗口可以统计在每次时间窗口内的流量出现次数,从而可得到一个次数序列。例如:假设时间窗口为30秒,且窗口每次滚动2秒,那么在第0秒至第29秒内,可以统计得到一个流量出现次数,在第2秒至第31秒内,又可以统计得到一个流量出现次数,其他以此类推。如此可获得一个次数序列{x1,x2,……,xn},x1即:第0秒至第29秒内统计得到这一个流量出现次数。其中,一个时间窗口内的流量出现次数即:该时间窗口内的通信次数,具体可以用数据的发送次数表示。
[0067] S103、确定与次数序列对应的周期检测算法,并利用周期检测算法检测次数序列,以确定同路径流量是否具有周期性。
[0068] 本实施例针对上述步骤得到的次数序列{x1,x2,……,xn},可以选择对应的周期检测算法,并以次数序列{x1,x2,……,xn}作为周期检测算法的输入,检测一条传输路径上往目标主机方向传输的流量是否具有周期性特点。
[0069] 本实施例为了避免针对无周期特性的同路径流量进行检测,在统计次数序列之前,先判断同路径流量中的各流量是否具有相似性。如果同路径流量中的各流量具有相似性,那么这些流量具备周期特性的概率较大,故执行通过滚动时间窗口统计相应时间窗口内的流量出现次数,得到次数序列;确定与次数序列对应的周期检测算法,并利用周期检测算法检测次数序列的步骤,以检测出同路径流量是否具有周期性特点,在有周期性特点的情况下输出访问周期。
[0070] 由于C2服务器访问被攻击主机的报文一般具有周期性特点,因此基于周期检测算法可以判定目标主机对端的设备是否是被恶意控制的C2服务器。因此在一种实施方式中,确定同路径流量有周期性之后,还包括:记录同路径流量的源IP、目的IP以及周期检测算法输出的访问周期,并为源IP和/或同路径流量添加异常标识,以便后续对有异常标识的流量进一步具体分析,如:判别其中的具体恶意行为是什么。
[0071] 可见,本申请在其他设备访问目标主机的流量中,确定了属于同一传输路径的同路径流量,本申请中的同路径流量也就是:某一个设备主动发往目标主机的流量。针对此流量,本申请通过滚动时间窗口统计相应时间窗口内的流量出现次数,得到次数序列,之后确定与次数序列对应的周期检测算法,并利用周期检测算法检测次数序列,以确定同路径流量是否具有周期性。可见,本申请针对某一个设备主动发往目标主机的流量,可以按照该流量在滚动时间窗口内的流量出现次数选择对应的算法来检测其是否有周期性。例如:流量在滚动时间窗口内的流量出现次数多(即次数序列中的各个元素的数值均比较大)时,说明通信频繁,故选择适用于检测较小周期的周期检测算法;反之,流量在滚动时间窗口内的流量出现次数少(即次数序列中的各个元素的数值均比较小)时,说明通信不是很频繁,故选择适用于检测较大周期的周期检测算法,由此可以提升周期检测的准确性,也就提升了恶意流量的检测准确性。
[0072] 基于上述实施例,需要说明的是,为了避免对无周期特性的同路径流量检测周期,在统计次数序列之前,先判断同路径流量中的各流量是否具有相似性。如果同路径流量中的各流量具有相似性,那么这些流量具备周期特性的概率较大,此时再检测其是否具有周期。因此在一种实施方式中,若同路径流量中的各流量具有相似性,则执行通过滚动时间窗口统计相应时间窗口内的流量出现次数,得到次数序列;确定与次数序列对应的周期检测算法,并利用周期检测算法检测次数序列,以确定同路径流量是否具有周期性的步骤。
[0073] 在一种实施方式中,同路径流量中的各流量具有相似性,包括:分别计算同路径流量中每个流量的流量指纹;对同路径流量中各流量的流量指纹进行聚类,得到多个簇;若任一簇中的流量占比大于预设第一阈值,则确定同路径流量中的各流量具有相似性。假设对S个流量指纹聚类获得3个簇:a、b、c,且a簇中包括A个流量指纹,b簇中包括B个流量指纹,c簇中包括C个流量指纹,那么a簇中的流量占比为:A/S,b簇中的流量占比为:B/S,c簇中的流量占比为:C/S,因此将A/S、B/S、C/S分别与预设第一阈值对比,在其中任一个比值大于预设第一阈值的情况下,说明同路径流量中的大部分流量都具有相似性,因此可以认为同路径流量中的各流量具有相似性。其中,可以采用DBSCAN等算法实现聚类。DBSCAN是一种基于高密度连通区域的聚类算法,能够将足够高密度的区域划分为簇,并在噪声数据中找到任意形状的簇。
[0074] 在一种实施方式中,分别计算同路径流量中每个流量的流量指纹,包括:将同路径流量中的每个流量分别作为计算对象,并执行下述步骤:计算当前计算对象的请求头指纹和请求体指纹,拼接请求头指纹和请求体指纹,得到当前计算对象的流量指纹;其中,请求头指纹包括:指定域值的局部敏感哈希值。
[0075] 具体的,请求头指纹可以包括以下任一项或组合:请求参数总长度的对数、请求参数的数量、请求参数的平均长度的对数、uri的长度的对数、uri目录层级数、文件扩展名、请求方法类型、HTTP的版本、HTTP各个请求头头域域名的缩写、部分请求头头域域名缩写和部分请求头头域域值的局部敏感hash。计算局部敏感hash的部分请求头可以包括以下任一项或组合:Connection、Accept‑Encoding、Content‑Encoding、Cache‑Control、Te、Accept‑Charset、Content‑Type、Accept、Accept‑Language、User‑Agent等。请求头指纹中的这些特征以空格为间隔进行记录。
[0076] 具体的,请求体指纹包括以下任一项或组合:请求体的熵、请求体的长度的对数等。请求体指纹中的这些特征以空格为间隔进行记录。
[0077] 在一种实施方式中,对同路径流量中各流量的流量指纹进行聚类,包括:将同路径流量中每个流量的流量指纹分别作为变换对象,并执行下述步骤:计算当前变换对象中各组成部分对当前变换对象的重要程度值,将当前变换对象中的各组成部分变换为相应的重要程度值,以将当前变换对象变换为词向量;对变换得到的所有词向量进行聚类。其中,可以采用TF‑IDF算法将一个流量指纹变换为词向量。具体的,可以将流量指纹中的hash值按字符拆分,将流量指纹中的其他特征按照空格进行拆分,如此则可得到一个流量指纹的各组成部分,针对每个组成部分计算相应重要程度值,然后将每个组成部分映射为相应的重要程度值,那么映射得到的这一组数据即为一个流量指纹变换得到的词向量。TF‑IDF是一种用于信息检索与文本挖掘的常用加权技术,能够评估一字词对于一个文件集或一个语料库中的一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。
[0078] 在TF‑IDF中,文档频率(TF)指的是:某一个给定的词在该文件中出现的频率,通过对词数的归一化,以防止它偏向长的文件。针对某一特定文档中的词语,TF计算公式为:其中ni,j是词语ti在文件dj中出现的词数,而分母则是在文件dj中所有词语
出现的次数之和。逆文档频率(IDF)是一个词语普遍重要性的度量。某一特定词语的IDF计算公式为: 其中,|D|是语料库中的文件总数,|{j:ti∈dj}|
表示语料库中包含词语ti的文件数目。TF‑IDFi,j=TFi,j*IDFi。基于TF和IDF可确定出一个给定的词对文件的重要程度。据此原理可以变换流量指纹为词向量。
[0079] 基于上述实施例,需要说明的是,本实施例为了给某一次数序列选择出合适的周期检测算法,可以基于次数序列中的特定元素进行确定。因此在一种实施方式中,确定与次数序列对应的周期检测算法,包括:将次数序列中的元素按照数值大小降序排列,得到降序序列;在所述降序序列中选择预设位置的元素;若所选元素不大于预设第二阈值,则确定与次数序列对应的周期检测算法为第一算法;否则,确定与次数序列对应的周期检测算法为第二算法;其中,第一算法适用于检测的周期大于所述第二算法适用于检测的周期。其中,预设位置如上四分位数所在位置,那么可以在降序序列中选择上四分位数与预设第二阈值进行比较。
[0080] 需要说明的是,周期小即通信频繁,周期大即通信不频繁。那么第一算法适用于检测通信不频繁的流量,而第二算法适用于检测通信频繁的流量。具体的,如果次数序列中的各个元素的数值均比较大,说明通信频繁,故选择适用于检测较小周期的第二算法;反之,如果次数序列中的各个元素的数值均比较小,说明通信不是很频繁,故选择适用于检测较大周期的第一算法。因此第一算法也可称为慢周期检测算法,第二算法可称为快周期检测算法。
[0081] 在一种实施方式中,利用第一算法检测次数序列,包括:调小次数序列中的极大值,并通过滑动平均滤波方式对调小后的次数序列进行平滑处理,得到目标序列;基于目标序列中的各元素绘制波动曲线,并统计波动曲线中的峰值和低谷值,得到峰值序列和低谷值序列;删除峰值序列中的首元素和尾元素,得到峰值新序列;删除低谷值序列中的首元素和尾元素,得到低谷值新序列;若峰值新序列和低谷值新序列中的元素个数相等,则将峰值新序列和低谷值新序列中的元素对位相减,得到对位元素差序列;使峰值新序列中相邻的后一位置元素减去前一位置元素,得到峰值差序列;使低谷值新序列中相邻的后一位置元素减去前一位置元素,得到低谷值差序列;若峰值新序列和低谷值新序列中的元素个数不相等,则确定同路径流量不具有周期性;若对位元素差序列、峰值差序列和低谷值差序列中的元素离散程度均不大于离散程度阈值,则基于所述对位元素差序列中各元素的均值和所述目标序列中各元素的均值计算所述同路径流量的访问周期,并确定所述同路径流量具有周期性;若对位元素差序列、峰值差序列和低谷值差序列中任一个的元素离散程度大于离散程度阈值,则确定同路径流量不具有周期性。在一种实施方式中,调小次数序列中的极大值,包括:确定降序序列中排列在第Q个位置的目标元素;Q为上九分位数所处位置;将次数序列中大于目标元素的元素确定为极大值,并将极大值修改为目标元素。
[0082] 其中,基于所述对位元素差序列中各元素的均值和所述目标序列中各元素的均值计算所述同路径流量的访问周期,包括:将对位元素差序列中各元素的均值除以目标序列中各元素的均值,得到同路径流量的访问周期。
[0083] 在一种示例中,第一算法(慢周期检测算法)的具体检测过程包括:
[0084] (1)针对次数序列X={x1,x2,……,xn},求上九分位点,将此上九分位点作为目标元素,然后将次数序列X中大于目标元素的元素调整为目标元素。
[0085] (2)针对调整后的X,通过滑动平均滤波方式进行平滑处理,由此可得到一个新序列,即:目标序列。通过此目标序列画出的波形图会更为平滑、规整。由于均值滤波会受个别差异很大的值的影响,无法剔除一些特别大差异的异常值,所以添加了步骤(1)。
[0086] 其中,滑动平均滤波可以把连续采样得到的序列变成一个新序列,具体过程是:设定一个大小为w的滑动窗口,将序列X中的元素依次逐个进入滑动窗口w,每次滑动窗口中新增一个元素且滑动窗口中的元素个数不超过w,那么计算滑动窗口中各元素的均值,并记录此均值。如果滑动窗口中新增了一个元素且滑动窗口中的元素个数为w+1,那么去掉滑动窗口中开头的一个元素,使滑动窗口中的元素个数为w,然后计算滑动窗口中各元素的均值并记录。
[0087] 基于上述原理,针对次数序列X={x1,x2,……,xn},各均值为:但是,如此一来,均值的个数会大于n,为了与原始次数序列的长度
保持一致,选择各均值中间的n个均值组成目标序列。例如:针对上述各均值,先去掉头部的一个均值,然后看均值个数是否为n,不是的话再去掉尾部的一个均值,然后看均值个数是否为n,如此重复,直至剩余n个均值。
[0088] (3)基于目标序列中的各元素绘制波动曲线,并统计得到峰值序列A和低谷值序列B。A={a1,a2,...,an‑1,an},B={b1,b2,...,bn‑1,bn},其中a1,a2,...,an‑1,an按时间先后排列,b1,b2,...,bn‑1,bn按时间先后排列。
[0089] (4)为了保证最后输出的周期的完整性,去掉峰值序列和低谷值序列中的首尾元素,得到峰值新序列As和低谷值新序列Bs。As={a2,...,ai,...,an‑1},Bs={b2,...,bj,...,bn‑1}。
[0090] (5)判断As和Bs中的元素个数是否相等,相等则可以计算出周期,不相等则认为不能计算出周期,此时可以输出相应流量没有周期性的提示信息。可见,周期检测算法可以输出:是否有周期性这一判定结果以及在有周期性的情况下,输出周期。
[0091] (6)在可以计算周期时,将As和Bs对位相减,得到对位元素差序列C;将As中各元素逐位相减,得到峰值差序列E;将Bs中各元素逐位相减,得到低谷值差序列F。C={c2,...,ck,...,cn‑1},ck=ak‑bk,ak∈As,bk∈Bs。E={a3‑a2,...,ai‑ai‑1,...,an‑an‑1},F参照E即可获得。
[0092] (7)判断C、E、F的离散程度,如果C、E、F的离散程度均不大于离散程度阈值,则取C中各元素的均值除以目标序列的均值,为访问周期。否则,认为流量没有周期性。
[0093] 其中,离散程度阈值可以为C、E或F中各元素的均值与预设比例r的乘积。C、E、F的离散程度可以用标准差表示。也即:判断C的离散程度时,离散程度阈值取C中各元素的均值与预设比例r的乘积。判断E的离散程度时,离散程度阈值取E中各元素的均值与预设比例r的乘积。判断F的离散程度时,离散程度阈值取F中各元素的均值与预设比例r的乘积。
[0094] 在一种实施方式中,利用第二算法检测次数序列,包括:获取降序序列中排列在第E个位置的元素e以及排列在第F个位置的元素f;删除次数序列中未落入区间[e,f]内的元素,并计算剩余元素的均值;将时间窗口的时间长度与均值的比值所述同路径流量的访问周期,并确定所述同路径流量具有周期性。元素e为:上四分位数。元素f为:下四分位数。
[0095] 在一种示例中,第二算法(快周期检测算法)的具体检测过程包括:
[0096] (1)针对次数序列X={x1,x2,……,xn},求上四分位点p和下四分位点q。
[0097] (2)删除次数序列X中未落入区间[p,q](即区间[e,f])内的元素,并计算剩余元素的均值。
[0098] (3)用滚动时间窗口的时间长度T除以均值作为访问周期,并确定流量具有周期性。
[0099] 请参见图3,下述实施例以HTTP流量为例介绍本申请。图3所示方案具体包括以下过程。
[0100] 1、读取日志。
[0101] 将访问目标主机的HTTP流量作为日志文件进行读取。
[0102] 2、计算流量的指纹。
[0103] HTTP流量的指纹由请求头指纹和请求体指纹构成,指纹是由其中各个元素按照空格为分隔符组合的字符串。请求头指纹组成:请求参数总长度的对数、请求参数的数量、请求参数的平均长度的对数、uri的长度的对数、uri目录层级数、文件扩展名、请求方法类型、HTTP的版本、HTTP各个请求头头域域名的缩写、部分请求头头域域名缩写和部分请求头头域域值的局部敏感hash。计算局部敏感hash的部分请求头可以包括以下任一项或组合:Connection、Accept‑Encoding、Content‑Encoding、Cache‑Control、Te、Accept‑Charset、Content‑Type、Accept、Accept‑Language、User‑Agent。请求体指纹组成:请求体的熵、请求体的长度的对数。当然,请求头指纹和请求体指纹也可以包括其他信息。
[0104] 3、进行滚动时间窗口的流量特征统计。
[0105] 针对HTTP流量,以源IP、目的IP(目标主机的IP)、目的端口、host指定一条传输路径,对该传输路径上的流量进行滚动时间窗口,以统计每次时间窗口内流量出现的次数。
[0106] 4、针对固定源IP、目的IP、目的端口、host下的流量的流量指纹,为了衡量其指纹间的相似性,将指纹构建成向量空间模型。具体可以使用TF‑IDF算法来转换指纹。
[0107] 5、对流量指纹的词向量使用DBSCAN进行聚类分析,判断指纹是否趋于一致(即具有相似度),如果趋于一致,则进行步骤6,否则直接结束。
[0108] 6、针对趋于一致的同一传输路径上的流量所得的次数序列X,计算上四分位点,如果上四分位点大于某个阈值,则采用快周期检测算法进行检测;否则,采用慢周期检测算法检测。检测后,生成相应的报告。
[0109] 可见,本实施例可有效识别HTTP信标行为,并通过快慢周期检测算法准确识别信标周期,周期检测的比较准确。
[0110] 下面对本申请实施例提供的一种流量检测装置进行介绍,下文描述的一种流量检测装置与上文描述的一种流量检测方法可以相互参照。
[0111] 参见图4所示,本申请实施例公开了一种流量检测装置,包括:
[0112] 获取模块401,用于获取其他设备访问目标主机的流量;
[0113] 统计模块402,用于针对流量中的同路径流量,通过滚动时间窗口统计相应时间窗口内的流量出现次数,得到次数序列;
[0114] 检测模块403,用于确定与次数序列对应的周期检测算法,并利用周期检测算法检测次数序列,以确定同路径流量是否具有周期性。
[0115] 在一种实施方式中,还包括:
[0116] 相似性判断模块,用于若同路径流量中的各流量具有相似性,则执行通过滚动时间窗口统计相应时间窗口内的流量出现次数,得到次数序列;确定与次数序列对应的周期检测算法,并利用周期检测算法检测次数序列,以确定同路径流量是否具有周期性的步骤。
[0117] 在一种实施方式中,相似性判断模块包括:
[0118] 计算单元,用于分别计算同路径流量中每个流量的流量指纹;
[0119] 聚类单元,用于对同路径流量中各流量的流量指纹进行聚类,得到多个簇;
[0120] 确定单元,用于若任一簇中的流量占比大于预设第一阈值,则确定同路径流量中的各流量具有相似性。
[0121] 在一种实施方式中,计算单元具体用于:
[0122] 将同路径流量中的每个流量分别作为计算对象,并执行下述步骤:计算当前计算对象的请求头指纹和请求体指纹,拼接请求头指纹和请求体指纹,得到当前计算对象的流量指纹;其中,请求头指纹包括:指定域值的局部敏感哈希值。
[0123] 在一种实施方式中,聚类单元具体用于:
[0124] 将同路径流量中每个流量的流量指纹分别作为变换对象,并执行下述步骤:计算当前变换对象中各组成部分对当前变换对象的重要程度值,将当前变换对象中的各组成部分变换为相应的重要程度值,以将当前变换对象变换为词向量;
[0125] 对变换得到的所有词向量进行聚类。
[0126] 在一种实施方式中,检测模块包括:
[0127] 排列单元,用于将次数序列中的元素按照数值大小降序排列,得到降序序列;
[0128] 检测单元,用于在所述降序序列中选择预设位置的元素;若所选元素不大于预设第二阈值,则确定与次数序列对应的周期检测算法为第一算法;否则,确定与次数序列对应的周期检测算法为第二算法;其中,第一算法适用于检测的周期大于所述第二算法适用于检测的周期。
[0129] 在一种实施方式中,检测单元具体用于:
[0130] 调小次数序列中的极大值,并通过滑动平均滤波方式对调小后的次数序列进行平滑处理,得到目标序列;
[0131] 基于目标序列中的各元素绘制波动曲线,并统计波动曲线中的峰值和低谷值,得到峰值序列和低谷值序列;
[0132] 删除峰值序列中的首元素和尾元素,得到峰值新序列;
[0133] 删除低谷值序列中的首元素和尾元素,得到低谷值新序列;
[0134] 若峰值新序列和低谷值新序列中的元素个数相等,则将峰值新序列和低谷值新序列中的元素对位相减,得到对位元素差序列;使峰值新序列中相邻的后一位置元素减去前一位置元素,得到峰值差序列;使低谷值新序列中相邻的后一位置元素减去前一位置元素,得到低谷值差序列;若峰值新序列和低谷值新序列中的元素个数不相等,则确定同路径流量不具有周期性;
[0135] 若对位元素差序列、峰值差序列和低谷值差序列中的元素离散程度均不大于离散程度阈值,则基于所述对位元素差序列中各元素的均值和所述目标序列中各元素的均值计算所述同路径流量的访问周期,并确定所述同路径流量具有周期性;若对位元素差序列、峰值差序列和低谷值差序列中任一个的元素离散程度大于离散程度阈值,则确定同路径流量不具有周期性。
[0136] 在一种实施方式中,调小次数序列中的极大值,包括:
[0137] 确定降序序列中排列在第Q个位置的目标元素;Q为上九分位数所处位置;
[0138] 将次数序列中大于目标元素的元素确定为极大值,并将极大值修改为目标元素。
[0139] 在一种实施方式中,检测单元具体用于:
[0140] 获取降序序列中排列在第E个位置的元素e以及排列在第F个位置的元素f;
[0141] 删除次数序列中未落入区间[e,f]内的元素,并计算剩余元素的均值;
[0142] 将时间窗口的时间长度与均值的比值确定为所述同路径流量的访问周期,并确定所述同路径流量具有周期性。
[0143] 在一种实施方式中,还包括:
[0144] 记录模块,用于利用周期检测算法检测次数序列,确定同路径流量有周期性之后,记录同路径流量的源IP、目的IP以及周期检测算法输出的访问周期,并为源IP和/或同路径流量添加异常标识。
[0145] 其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0146] 可见,本实施例提供了一种流量检测装置,能够提升周期检测的准确性,也就提升了恶意流量的检测准确性。
[0147] 下面对本申请实施例提供的一种电子设备进行介绍,下文描述的一种电子设备与上文描述的一种流量检测方法及装置可以相互参照。
[0148] 参见图5所示,本申请实施例公开了一种电子设备,包括:
[0149] 存储器501,用于保存计算机程序;
[0150] 处理器502,用于执行所述计算机程序,以实现上述任意实施例公开的方法。
[0151] 请参考图6,图6为本实施例提供的另一种电子设备示意图,该电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,一个或一个以上存储应用程序342或数据344的存储介质330(例如一个或一个以上海量存储设备)。其中,存储器332和存储介质330可以是短暂存储或持久存储。存储在存储介质330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储介质330通信,在电子设备301上执行存储介质330中的一系列指令操作。
[0152] 电子设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。例如,Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等。
[0153] 在图6中,应用程序342可以是执行流量检测方法的程序,数据344可以是执行流量检测方法所需的或产生的数据。
[0154] 上文所描述的流量检测方法中的步骤可以由电子设备的结构实现。
[0155] 下面对本申请实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种流量检测方法、装置及设备可以相互参照。
[0156] 一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的流量检测方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0157] 本申请涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。
[0158] 需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
[0159] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
[0160] 结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD‑ROM、或技术领域内所公知的任意其它形式的可读存储介质中。
[0161] 本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。