恶意设备识别方法、装置、存储介质和计算机设备转让专利

申请号 : CN201911183931.9

文献号 : CN110912904B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 欧阳婷杨勇张杰廖晨李龙李韬郑力枪黄楠驹夏雄风

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请涉及一种恶意设备识别方法、装置、存储介质和计算机设备,所述方法包括:在监控时段内接收到的每个数据报文中提取时间戳字段;根据各数据报文的时间戳,确定每个数据报文所来自设备的启动时间;按照所述启动时间,确定来自各设备的数据报文的数量;其中,启动时间满足时间匹配条件的不同数据报文来自于相同的设备;当所确定数据报文的数量达到恶意设备判定条件时,将相应数据报文所来自设备标记为恶意设备。本申请提供的方案可以提高恶意设备识别准确性,有助于及早发现来自恶意设备的攻击,对服务器形成很好的性能防护。

权利要求 :

1.一种恶意设备识别方法,其特征在于,所述方法包括:在监控时段内接收到的每个数据报文中提取时间戳字段;

根据各数据报文中目标的数据报文的接收时间,与另一个具有相同源IP地址和源端口的数据报文的接收时间的第一时差、所述目标的数据报文的时间戳与所述另一个具有相同源IP地址和源端口的数据报文的时间戳的第二时差、所述目标的数据报文的接收时间以及所述目标的数据报文的时间戳,确定所述目标的数据报文所来自设备的启动时间;

按照所述启动时间,确定来自各设备的数据报文的数量;其中,启动时间满足时间匹配条件的不同数据报文来自于相同的设备;

当所确定数据报文的数量达到恶意设备判定条件时,将相应数据报文所来自设备标记为恶意设备。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:确定每个所述数据报文的接收时间以及对应的源IP地址和源端口;

根据具有相同源IP地址和源端口的不同数据报文的接收时间和时间戳,确定各数据报文所来自设备的启动时间。

3.根据权利要求2所述的方法,其特征在于,所述数据报文包括设备基于传输控制协议请求握手连接时发送的握手报文,所述握手报文包括SYN报文和ACK报文;所述根据具有相同源IP地址和源端口的不同数据报文的接收时间和时间戳,确定各数据报文所来自设备的启动时间包括:

计算所述SYN报文的接收时间与所述ACK报文的接收时间的握手报文第一时差;

计算所述SYN报文的时间戳与所述ACK报文的时间戳的握手报文第二时差;

根据所述握手报文第一时差与所述握手报文第二时差的比值,确定所述握手报文所来自设备的握手报文时钟周期;

基于所述握手报文时钟周期以及所述SYN报文的时间戳,计算所述SYN报文所来自设备的运行时长;

根据所述运行时长和所述SYN报文的接收时间,确定所述SYN报文所来自设备的启动时间。

4.根据权利要求1所述的方法,其特征在于,所述确定所述目标的数据报文所来自设备的启动时间包括:

根据所述第一时差与所述第二时差的比值,确定所述目标的数据报文的时钟周期;

基于所述时钟周期以及所述目标的数据报文的时间戳,计算所述目标的数据报文所来自设备的运行时长;

根据所述运行时长和所述目标的数据报文的接收时间,确定所述目标的数据报文所来自设备的启动时间。

5.根据权利要求1所述的方法,其特征在于,所述按照所述启动时间,确定来自各设备的数据报文的数量包括:

根据所述启动时间生成相应设备的设备标识;

确定每个设备标识对应设备在所述监控时段发出的数据报文的数量。

6.根据权利要求5所述的方法,其特征在于,所述根据所述启动时间生成相应设备的设备标识包括:

在所述数据报文中提取流量特征字段;

将所述流量特征字段与所述数据报文对应设备的启动时间进行拼接;

将拼接得到的字符串确定为所述设备的设备标识。

7.根据权利要求6所述的方法,其特征在于,所述方法还包括:获取多个历史报文;

在所述历史报文中提取通用的字段名;

将所述通用的字段名确定为流量特征字段名;

所述在所述数据报文中提取流量特征字段包括:在所述数据报文中提取每个流量特征字段名对应的流量特征字段值。

8.根据权利要求1所述的方法,其特征在于,所述当所确定数据报文的数量达到恶意设备判定条件时,将相应数据报文所来自设备标记为恶意设备包括:在所述数据报文中提取请求类型字段;

对启动时间满足时间匹配条件的各数据报文所记录的请求类型进行分类;

当所述数据报文的数量或者所述请求类型的类别数目达到恶意设备判定条件时,将相应数据报文所来自设备标记为恶意设备。

9.根据权利要求1所述的方法,其特征在于,所述当所确定数据报文的数量达到恶意设备判定条件时,将相应数据报文所来自设备标记为恶意设备包括:在所述数据报文中提取操作系统字段;

对启动时间满足时间匹配条件的各数据报文所记录的操作系统进行统计,得到每种操作系统的比例分布;

当所述数据报文的数量达到恶意设备判定条件,或者所述操作系统的比例分布与预设比例分布匹配失败时,将相应数据报文所来自设备标记为恶意设备。

10.根据权利要求1所述的方法,其特征在于,所述方法还包括:在当前监控时段接收数据报文;

基于所述数据报文中的时间戳字段确定数据报文所来自终端的启动时间;

当所述启动时间属于历史监控时段识别到的恶意设备的启动时间时,将所述数据报文进行丢弃。

11.根据权利要求1所述的方法,其特征在于,所述恶意设备判定条件包括多个数据报文数量区间以及每个数据报文数量区间对应的恶意等级;所述当所确定数据报文的数量达到恶意设备判定条件时,将相应数据报文所来自设备标记为恶意设备包括:当所确定数据报文的数量属于一个数据报文数量区间时,将相应数据报文所来自设备判定为所属数据报文数量区间对应恶意等级的恶意设备。

12.根据权利要求11所述的方法,其特征在于,所述方法还包括:根据所述恶意等级确定相应恶意设备的黑名单时段;当在所述黑名单时段接收到相应恶意设备发送的数据报文时,将所述数据报文进行丢弃。

13.一种恶意设备识别装置,其特征在于,所述装置包括:启动时间计算模块,用于在监控时段内接收到的每个数据报文中提取时间戳字段;根据各数据报文中目标的数据报文的接收时间,与另一个具有相同源IP地址和源端口的数据报文的接收时间的第一时差、所述目标的数据报文的时间戳与所述另一个具有相同源IP地址和源端口的数据报文的时间戳的第二时差、所述目标的数据报文的接收时间以及所述目标的数据报 文的时间戳,确定所述目标的数据报文所来自设备的启动时间;

访问流量统计模块,用于按照所述启动时间,确定来自各设备的数据报文的数量;其中,启动时间满足时间匹配条件的不同数据报文来自于相同的设备;

恶意设备识别模块,用于当所确定数据报文的数量达到恶意设备判定条件时,将相应数据报文所来自设备标记为恶意设备。

14.根据权利要求13所述的装置,其特征在于,所述启动时间计算模块还用于确定每个所述数据报文的接收时间以及对应的源IP地址和源端口;根据具有相同源IP地址和源端口的不同数据报文的接收时间和时间戳,确定各数据报文所来自设备的启动时间。

15.根据权利要求13所述的装置,其特征在于,所述数据报文包括设备基于传输控制协议请求握手连接时发送的握手报文,所述握手报文包括SYN报文和ACK报文;所述启动时间计算模块,还用于计算所述SYN报文的接收时间与所述ACK报文的接收时间的握手报文第一时差;计算所述SYN报文的时间戳与所述ACK报文的时间戳的握手报文第二时差;根据所述握手报文第一时差与所述握手报文第二时差的比值,确定所述握手报文所来自设备的握手报文时钟周期;基于所述握手报文时钟周期以及所述SYN报文的时间戳,计算所述SYN报文所来自设备的运行时长;根据所述运行时长和所述SYN报文的接收时间,确定所述SYN报文所来自设备的启动时间。

16.根据权利要求13所述的装置,其特征在于,所述启动时间计算模块,还用于根据所述第一时差与所述第二时差的比值,确定所述目标的数据报文的时钟周期;基于所述时钟周期以及所述目标的数据报文的时间戳,计算所述目标的数据报文所来自设备的运行时长;根据所述运行时长和所述目标的数据报文的接收时间,确定所述目标的数据报文所来自设备的启动时间。

17.根据权利要求13所述的装置,其特征在于,所述访问流量统计模块,还用于根据所述启动时间生成相应设备的设备标识;确定每个设备标识对应设备在所述监控时段发出的数据报文的数量。

18.根据权利要求17所述的装置,其特征在于,所述访问流量统计模块,还用于在所述数据报文中提取流量特征字段;将所述流量特征字段与所述数据报文对应设备的启动时间进行拼接;将拼接得到的字符串确定为所述设备的设备标识。

19.根据权利要求18所述的装置,其特征在于,所述装置还包括:拼接字段确定模块,用于获取多个历史报文;在所述历史报文中提取通用的字段名;将所述通用的字段名确定为流量特征字段名;

所述访问流量统计模块,还用于在所述数据报文中提取每个流量特征字段名对应的流量特征字段值。

20.根据权利要求13所述的装置,其特征在于,所述恶意设备识别模块,还用于在所述数据报文中提取请求类型字段;对启动时间满足时间匹配条件的各数据报文所记录的请求类型进行分类;当所述数据报文的数量或者所述请求类型的类别数目达到恶意设备判定条件时,将相应数据报文所来自设备标记为恶意设备。

21.根据权利要求13所述的装置,其特征在于,所述恶意设备识别模块,还用于在所述数据报文中提取操作系统字段;对启动时间满足时间匹配条件的各数据报文所记录的操作系统进行统计,得到每种操作系统的比例分布;当所述数据报文的数量达到恶意设备判定条件,或者所述操作系统的比例分布与预设比例分布匹配失败时,将相应数据报文所来自设备标记为恶意设备。

22.根据权利要求13所述的装置,其特征在于,所述装置还包括:恶意设备跟踪模块,用于在当前监控时段接收数据报文;基于所述数据报文中的时间戳字段确定数据报文所来自终端的启动时间;当所述启动时间属于历史监控时段识别到的恶意设备的启动时间时,将所述数据报文进行丢弃。

23.根据权利要求13所述的装置,其特征在于,所述恶意设备判定条件包括多个数据报文数量区间以及每个数据报文数量区间对应的恶意等级;

所述恶意设备识别模块,还用于当所确定数据报文的数量属于一个数据报文数量区间时,将相应数据报文所来自设备判定为所属数据报文数量区间对应恶意等级的恶意设备。

24.根据权利要求23所述的装置,其特征在于,所述装置还包括:恶意设备跟踪模块,根据所述恶意等级确定相应恶意设备的黑名单时段;当在所述黑名单时段接收到相应恶意设备发送的数据报文时,将所述数据报文进行丢弃。

25.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至12中任一项所述方法的步骤。

26.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至12中任一项所述方法的步骤。

说明书 :

恶意设备识别方法、装置、存储介质和计算机设备

技术领域

[0001] 本申请涉及计算机技术领域,特别是涉及一种恶意设备识别方法、装置、存储介质和计算机设备。

背景技术

[0002] 在互联网领域,服务器每天都要处理大量的请求,其中有一些请求为恶意请求,会造成服务器资源的占用。例如,恶意用户常采用程序化方式批量登录社交应用进行广告推
送。这样就会给社交应用服务器带来极大的压力,同时也会严重影响正常用户对社交应用
的使用体验。
[0003] 传统识别恶意请求的方式主要是通过扫描服务器访问日志来统计每个IP地址的访问次数,将访问次数超过阈值的IP地址对应的设备判定为恶意请求设备。然而,对于同一
设备采用不同IP地址、局域网内多个设备共用同一IP地址的情形,笼统基于IP地址访问次
数识别恶意设备,常使恶意设备识别准确性较低。

发明内容

[0004] 基于此,有必要针对恶意设备识别准确性低的技术问题,提供一种恶意设备识别方法、装置、存储介质和计算机设备。
[0005] 一种恶意设备识别方法,包括:
[0006] 在监控时段内接收到的每个数据报文中提取时间戳字段;
[0007] 根据各数据报文的时间戳,确定每个数据报文所来自设备的启动时间;
[0008] 按照所述启动时间,确定来自各设备的数据报文的数量;其中,启动时间满足时间匹配条件的不同数据报文来自于相同的设备;
[0009] 当所确定数据报文的数量达到恶意设备判定条件时,将相应数据报文所来自设备标记为恶意设备。
[0010] 在一个实施例中,所述数据报文包括设备基于传输控制协议请求握手连接时发送的握手报文,所述握手报文包括SYN报文和ACK报文;所述根据具有相同源IP地址和源端口
的不同数据报文的接收时间和时间戳,确定各数据报文所来自设备的启动时间包括:计算
SYN报文的接收时间与ACK报文的接收时间的第一时差;计算SYN报文的时间戳与ACK报文的
时间戳的第二时差;根据第一时差与第二时差的比值,确定握手报文所来自设备的时钟周
期;基于始终周期以及SYN报文的时间戳,计算所述握手报文所来自设备的运行时长;根据
运行时长和SYN报文的接收时间,确定所述握手报文所来自设备的启动时间。
[0011] 在一个实施例中,所述恶意设备判定条件包括多个数据报文数量区间以及每个数据报文数量区间对应的恶意等级;所述当所确定数据报文的数量达到恶意设备判定条件
时,将相应数据报文所来自设备标记为恶意设备包括:当所确定数据报文的数量属于一个
数据报文数量区间时,将相应数据报文所来自设备判定为所属数据报文数量区间对应恶意
等级的恶意设备。
[0012] 在一个实施例中,所述方法还包括:根据所述恶意等级确定相应恶意设备的黑名单时段;当在所述黑名单时段接收到相应恶意设备发送的数据报文时,将所述数据报文进
行丢弃。
[0013] 一种恶意设备识别装置,所述装置包括:
[0014] 启动时间计算模块,用于在监控时段内接收到的每个数据报文中提取时间戳字段;根据各数据报文的时间戳,确定每个数据报文所来自设备的启动时间;
[0015] 访问流量统计模块,用于按照所述启动时间,确定来自各设备的数据报文的数量;其中,启动时间满足时间匹配条件的不同数据报文来自于相同的设备;
[0016] 恶意设备识别模块,用于当所确定数据报文的数量达到恶意设备判定条件时,将相应数据报文所来自设备标记为恶意设备。
[0017] 在一个实施例中,所述数据报文包括设备基于传输控制协议请求握手连接时发送的握手报文,所述握手报文包括SYN报文和ACK报文;所述启动时间计算模块还用于计算SYN
报文的接收时间与ACK报文的接收时间的第一时差;计算SYN报文的时间戳与ACK报文的时
间戳的第二时差;根据第一时差与第二时差的比值,确定握手报文所来自设备的时钟周期;
基于始终周期以及SYN报文的时间戳,计算所述握手报文所来自设备的运行时长;根据运行
时长和SYN报文的接收时间,确定所述握手报文所来自设备的启动时间。
[0018] 在一个实施例中,所述恶意设备判定条件包括多个数据报文数量区间以及每个数据报文数量区间对应的恶意等级;所述恶意设备识别模块还用于当所确定数据报文的数量
属于一个数据报文数量区间时,将相应数据报文所来自设备判定为所属数据报文数量区间
对应恶意等级的恶意设备。
[0019] 在一个实施例中,所述恶意设备识别装置还包括恶意设备跟踪模块,用于根据所述恶意等级确定相应恶意设备的黑名单时段;当在所述黑名单时段接收到相应恶意设备发
送的数据报文时,将所述数据报文进行丢弃。
[0020] 一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行所述恶意设备识别方法的步骤。
[0021] 一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行所述恶意设备识别方法的步骤。
[0022] 上述恶意设备识别方法、装置、计算机可读存储介质和计算机设备,根据数据报文所携带的难以被篡改的时间戳字段,计算数据报文所来自设备的启动时间,可以提高启动
时间计算准确性。启动时间作为设备一个重要的标识,根据启动时间可以识别来自同一设
备的数据报文数量,进而可以识别监控时段发送数据报文数量达到恶意设备判定条件的恶
意设备。基于启动时间进行不同设备之间的区分,能够唯一定位到具体一个设备,即可以从
单个设备层面进行恶意设备识别,避开了单纯根据IP地址进行恶意设备识别的局限性,可
以提高恶意设备识别准确率。

附图说明

[0023] 图1为一个实施例中恶意设备识别方法的应用环境图;
[0024] 图2为一个实施例中恶意设备识别方法的流程示意图;
[0025] 图3为另一个实施例中恶意设备识别方法的流程示意图;
[0026] 图4为一个实施例中基于时间戳确定数据报文所来自设备的启动时间步骤的流程示意图;
[0027] 图5为一个实施例中基于时间戳确定数据报文所来自终端的启动时间的数据处理过程的示意图;
[0028] 图6为另一个实施例中基于时间戳确定数据报文所来自设备的启动时间步骤的流程示意图;
[0029] 图7为一个实施例中基于TCP三次握手时的SYN包和ACK包计算访问设备启动时间的原理示意图;
[0030] 图8示出了一个实施例中基于恶意设备识别结果对数据报文进行区分处理步骤的流程示意图;
[0031] 图9为一个具体实施例中恶意设备识别方法的流程示意图;
[0032] 图10为一个实施例中恶意设备识别装置的结构框图;
[0033] 图11为另一个实施例中恶意设备识别装置的结构框图;
[0034] 图12为一个实施例中计算机设备的结构框图。

具体实施方式

[0035] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并
不用于限定本申请。
[0036] 图1为一个实施例中恶意设备识别方法的应用环境图。参照图1,该恶意设备识别方法应用于恶意设备识别系统。该恶意设备识别系统包括访问设备110和服务器120。访问
设备110和服务器120可以通过有线或无线通信方式进行直接或间接地连接。访问设备110
可以是终端110a,也可以是服务器110b。访问设备110上运行了目标应用。目标应用是能够
向服务器120发起数据请求的应用程序,如社交应用、支付应用、游戏应用等。服务器120可
以是目标应用提供服务的应用服务器,也可以是区别与目标应用所对应应用服务器的代理
服务器。服务器120用于识别每个访问设备110是否属于恶意设备,对来自恶意设备的数据
报文进行拦截。当服务器120为代理服务器时,代理服务器将不属于来自恶意设备的数据报
文转发至应用服务器。终端110a具体可以是台式终端或移动终端,移动终端具体可以智能
手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。服务器
110b与服务器120分别可以是独立的物理服务器,也可以是多个物理服务器构成的服务器
集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、
云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算
服务的云服务器。
[0037] 云计算(cloud computing)指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易
扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。云计
算是网格计算(Grid Computing)、分布式计算(DistributedComputing)、并行计算
(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network Storage 
Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络
技术发展融合的产物。
[0038] 随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计
算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。
[0039] 云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统
等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软
件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系
统。
[0040] 目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。
客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成
许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity)
等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记
录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象
的存储位置信息让客户端对数据进行访问。
[0041] 存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘
阵列(RAID,Redundant Array of Independent Disk)的组别,预先将物理存储空间划分成
分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
[0042] 云安全(Cloud Security)是指基于云计算商业模式应用的安全软件、硬件、用户、机构、安全云平台的总称。云安全融合了并行处理、网格计算、未知病毒行为判断等新兴技
术和概念,通过网状的大量客户端对网络中软件行为的异常监测,获取互联网中木马、恶意
程序的最新信息,并发送到服务端进行自动分析和处理,再把病毒和木马的解决方案分发
到每一个客户端。
[0043] 云安全主要研究方向包括:1.云计算安全,主要研究如何保障云自身及云上各种应用的安全,包括云计算机系统安全、用户数据的安全存储与隔离、用户接入认证、信息传
输安全、网络攻击防护、合规审计等;2.安全基础设施的云化,主要研究如何采用云计算新
建与整合安全基础设施资源,优化安全防护机制,包括通过云计算技术构建超大规模安全
事件、信息采集与处理平台,实现对海量信息的采集与关联分析,提升全网安全事件把控能
力及风险控制能力;3.云安全服务,主要研究各种基于云计算平台为用户提供的安全服务,
如防病毒服务等。
[0044] 如图2所示,在一个实施例中,提供了一种恶意设备识别方法。本实施例主要以该方法应用于上述图1中的服务器120来举例说明。参照图2,该恶意设备识别方法具体包括如
下步骤:
[0045] S202,在监控时段内接收到的每个数据报文中提取时间戳字段。
[0046] 其中,监控时段是指需要对所接收到的数据报文进行恶意识别的时间区间,包括监控起始时间和监控结束时间。监控时段的时间长度可以根据需求自由设定,如1天。监控
时段可以划分为多个监控子时段。比如,监控时段“8:00(am)~10:00(pm)”可以划分为“8:
00(am)~8:05(am)”、“8:05(am)~8:10(am)”等多个时间长度为5分钟的监控子时段。在每
个监控子时段结束时,服务器基于该监控子时段接收的数据报文进行恶意设备识别,并根
据识别结果对数据报文进行响应或丢弃。
[0047] 数据报文是指网络中交换与传输的数据单元,即站点一次性要发送的数据块。在本申请的实施例中,数据报文具体可以是访问设备基于传输层通信协议向服务器发送的报
文段(segment)。传输层通信协议是指访问设备与服务器双方实体完成通信或服务所必须
遵循的规则和约定,具体可以是TCP协议(Transmission Control Protocol,传输控制协
议)。换言之,数据报文具体可以是基于TCP协议的数据报文(以下简称TCP报文)。可以理解,
直接基于传输层的数据报文进行恶意设备识别,能够尽可能早的发现恶意设备。
[0048] 数据报文包括报文头和报文体。报文头记录了数据报文的报文类型,报文版本,报文长度,报文实体等信息。报文体记录了具体的请求数据。比如,TCP报文的报文头包括源端
口source  port、目标端口destination port、序号Sequence Number、确认号
Acknowledgemt Number、TCP首部长度、窗口大小、校验和、紧急指针和选项部分。其中,选项
部分包括:最大报文段长度(Maxium Segment Size,MSS)、窗口扩大选项(Windows 
Scaling)、SACK选择确认项(Selective Acknowledgements)、时间戳选项(Timestamps)等。
[0049] TCP报文中的时间戳字段是指报文头中的时间戳选项中的参数。时间戳字段包括选项类型kind、选项长度length和选项具体信息info三个部分。其中,TCP报文中不同选项
具有不同的编号,该编号即为选项类型kind。比如,kind=0表示结束选项,kind=8表示时
间戳选项。选项长度length是指一个选项的字节数量,时间戳选项的选项长度为10,其中选
项类型kind为1个字节、选项长度length为1个字节,选项具体信息info为8个字节。选项具
体信息info由timestamp和timestamp echo两个值组成,各4个字节的长度。Timestamp字段
记录了发送所属数据报文时访问设备的内核时刻,即数据报文的发送时间。
[0050] 具体地,服务器在一个监控时段结束时,在该监控时段内接收到的每个TCP报文中提取时间戳字段。TCP报文中Timestamps选项是一个双向的选项。当发送方(访问设备)与接
收方(服务器)有一方未开启该选项,则双方均将停用Timestamp选项。比如,当访问设备发
送的SYN包中带有Timestamps选项,但服务器并未开启该选项,则回复的SYN+ACK包中将不
带Timestamps选项,同时访问设备后续回复的ACK包也不会携带Timestamps选项。可以理
解,当访问设备发送的SYN包本身就未携带Timestamps选项,则访问设备和服务器均将停用
Timestamps选项。
[0051] 在一个实施例中,访问设备中Timestamps选项默认是开启的。但对于少数未开启Timestamps选项的访问设备发送的数据报文,服务器向未携带时间戳字段的TCP报文所来
自设备发送开启Timestamps选项的指令,以指示相应访问设备开启Timestamps选项。
[0052] S204,根据各数据报文的时间戳,确定每个数据报文所来自设备的启动时间。
[0053] 其中,时间戳是一个能表示一份数据在某个特定时间之前已经存在的、完整的、可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。数据报文所来自设备是指发
送相应数据报文的访问设备。访问设备的启动时间是指启动访问设备的电源使访问设备处
于开机工作状态的时间。访问设备中CPU(central processing unit,中央处理器)具有对
应的时钟周期。CPU时钟周期通常为节拍脉冲或T周期,是指CPU在内存中读取一个指令字的
最短时间。不同访问设备的CPU时钟周期可能不同。访问设备在启动后,CPU内部维持一个64
位计数器。每过一个时钟周期,计数器进行加一计数,如此可以统计得到不同时刻访问设备
所经历的时钟周期数量。TCP报文所记录的时间戳字段本质上是自访问设备启动至发送该
TCP报文所经历的时钟周期数量,可以视作TCP报文的发送时间。
[0054] 具体地,数据报文时间戳字段Timestamps与访问设备的启动时间具有相关性。服务器针对每个数据报文(记作目标报文)确定一个对应的同源报文。同源报文可以是同一监
控时间服务器接收到的一个与目标报文具有相同源IP地址(Internet Protocol Address,
互联网协议地址)的数据报文、或者与目标报文具有相同源IP地址和源端口的数据报文等。
[0055] 数据利用网络在不同设备之间传输时,为了可靠和准确地发送到目的地,并且高效地利用传输资源,事先需要对数据进行封装。数据封装是指将数据记录在一组协议头和
协议尾中的过程。在OSI7层参考模型中,发送方的每层主要负责与接收方上的对等层进行
通信。OSI7层参考模型包括应用层、会话层、表示层、传输层、网络层、数据链路层和物理层。
不同网络层可以采用不同的通信协议。
[0056] 当访问设备需要将应用程序中的某项数据发送至服务器时,访问设备的应用层将应用程序中的该项数据转换为可传输的数据单元,并通过接口将数据单元下发至访问设备
的传输层。当传输层协议为TCP协议时,访问设备的传输层在数据单元的基础上添加TCP报
文头,得到TCP报文。TCP报文头记录了源端口和目标端口等信息。访问设备的传输层通过接
口将TCP报文下发至访问设备的网络层。当网络层协议为IP协议时,网络层在TCP报文的基
础上添加IP报文头,得到IP数据包。IP报文头记录了源IP地址和目标IP地址等信息。访问设
备的网络层通过接口将IP数据包下发至访问设备的数据链路层。数据链路层在IP数据包的
基础上添加LLC(Logical Link Control,逻辑链路控制)帧头,得到帧。访问设备的数据链
路层通过接口将帧下发至物理层。访问设备的物理层层通过接口将帧转化为字节流传输至
服务器的物理层。
[0057] 服务器按照上述方式对字节流反向解封装。服务器的网络层从数据链路层上传的帧进行解封装,得到IP数据包。IP数据包记录了源IP地址和目的IP地址。服务器的传输层从
网络层上传的IP数据包进行解封装,得到TCP报文。TCP报文记录了源端口和目的端口。如
此,服务器可以确定每个数据报文的源IP地址和源端口。
[0058] 目标报文与同源报文可以认为来自同一访问设备。但一个访问设备在不同时间点可能会基于不同的IP地址向服务器发送数据报文。但短时间内IP地址发生变更的概率较
小,可以认为在短时间内同一访问设备只能基于一种源IP地址发起数据请求。如此,在较短
的一个监控子时段接收到的具有相同源IP地址的不同数据报文可以认为是来自同一访问
设备的数据报文。
[0059] 服务器根据接收到目标报文和同源报文的时间差以及目标报文与同源报文分别记录的时间戳的时间差可以计算目标报文所来自设备的CPU时钟周期T。服务器在接收到每
个数据报文时记录该数据报文的接收时间。服务器根据时间戳所记录的自访问设备启动至
发送该数据报文所经历的时钟周期数量,以及CPU时钟周期T可以计算得到数据报文所来自
设备已运行时长。服务器根据数据报文接收时间及其已运行时长即可推算得到访问设备的
启动时间。
[0060] 传统方式获取一个设备的启动时间,通常是在设备本机调动脚本或函数来实现。比如,基于Java脚本运行systeminfo命令行程序获取设备自启动到当前的时长;基于C或C+
+语言编写的命令行程序通过GetSystemTimes函数计算并打印本机启动时间等。但无论那
种方式该参数只能设备自行获取,也就是说,设备自己获取自己的启动时间参数。这种方式
由于一个设备是难以获取到其他设备的启动时间参数的,对应到本申请服务器难以获取到
各个访问设备的启动时间,也就不适用于本申请服务器识别恶意访问设备的场景。
[0061] 在一个实施例中,服务器在一个监控子时段结束时,在该监控子时段内接收到的每个TCP报文中提取时间戳字段,并基于时间戳字段计算相应数据报文所来自终端的启动
时间。如此,在整个监控时段结束时,只需要基于启动时间统计识别恶意设备,而将启动时
间计算分散在监控时段内不同时间节点进行,不仅有助于环节服务器集中计算的压力,且
有助于提高恶意设备识别效率。
[0062] 在一个实施例中,服务器可以数据库空闲时间进行启动时间计算。例如,晚上8:00~凌晨5:00的时间段等非工作时间的时间段为数据库性能最优的空闲时间。服务器在数据
库的空闲时间进行启动时间计算可以缓解服务器资源消耗。
[0063] S206,按照启动时间,确定来自各设备的数据报文的数量;其中,启动时间满足时间匹配条件的不同数据报文来自于相同的设备。
[0064] 其中,时间匹配条件是指能够将不同数据报文所来自设备判定为同一设备的时间条件,如不同数据报文所来自设备的启动时间相同,或者不同数据报文所来自设备的启动
时间的差值小于阈值。阈值可以根据自由设,如5分钟等。
[0065] 具体地,服务器按照上述方式计算得到监控时段内每个数据报文所来自设备的启动时间后,将启动时间满足时间匹配条件的不同数据报文所来自设备判定为同一设备。比
如,服务器在监控时段8:00(am)‑9:00(am)共计接收到1000个数据报文,其中100个数据报
文所来自设备的启动时间均接近8:10,即启动时间差值在阈值范围内,则可以将该100个数
据报文所来自设备判定为同一设备。
[0066] 在一个实施例中,按照启动时间,确定来自各设备的数据报文的数量包括:根据启动时间生成相应设备的设备标识;确定每个设备标识对应设备在监控时段发出的数据报文
的数量。
[0067] 其中,设备标识是能够唯一标识一个设备的标识信息。容易理解,具有相同设备标识的设备即为同一设备。在本申请的实施例中设备标识是根据启动时间生成的字符串,具
体可以是启动时间本身、基于启动时间生成的哈希值、将启动时间与其他字段拼接而成的
字符串等。其他字段可以是在数据报文中提取得到的字段信息,如TCP报文选项部分中除
timestamp选项之外的其他字段。
[0068] 具体地,服务器根据启动时间生成对应的设备标识。如此每个数据报文具有对应的一个设备标识。服务器统计每个设备标识所对应设备在监控时段发出的数据报文的数
量。
[0069] S208,当所确定数据报文的数量达到恶意设备判定条件时,将相应数据报文所来自设备标记为恶意设备。
[0070] 其中,恶意设备判定条件是指将一个设备判定为恶意访问设备时访问设备在监控时段所发送的数据报文的数量阈值条件。比如,访问设备在监控时段所发送的数据报文的
数量超过第一预设值,访问设备在监控时段不同监控子时段所发送数据报文数量的变化趋
势是否符合正常分布趋势等。第一预设值可以根据需求自由设定,如100等。
[0071] 具体地,服务器判断每个设备标识对应设备在监控时段所发送数据报文的数量是否满足恶意设备判定条件。比如,当服务器比较一个设备标识对应设备在监控时段所发送
数据报文的总数量是否达到第一预设值。或者,服务器计算设备标识对应设备在每个监控
子时段所发送数据报文的数量与预存储的相应监控子时段设备发送数据报文的常规数量
的差值,对计算得到的每个监控子时段的数据报文数量差值进行加权求和或加权求平均等
计算,得到数据报文数量分布差异度,比较数据报文数量分布差异度是否超过第二预设值。
当一个设备标识对应设备在监控时段所发送数据报文的总数量达到第一预设值,或者数据
报文数量分布差异度超过第二预设值时,服务器针对该设备标识添加对应的恶意标记。
[0072] 参考图3,图3为另一个实施例中恶意设备识别方法的流程示意图。如图3所示,服务器在监控时段接收到的TCP报文中提取timestamp字段等其他关键参数,基于提取到的
timestamp计算启动时间,利用启动时间及提取到的其他关键参数生成设备标识,统计同一
设备标识对应访问设备在监控时段内的访问次数,通过判断访问次数是否符合预设的访问
次数流量分布来进行恶意设备识别。
[0073] 在一个实施例中,恶意设备判定条件包括多个数据报文数量区间以及每个数据报文数量区间对应的恶意等级。可以理解,一个访问设备在监控时段发送的数据报文数量越
多,对应的恶意等级越高。
[0074] 上述恶意设备识别方法,根据数据报文所携带的难以被篡改的时间戳字段,计算数据报文所来自设备的启动时间,可以提高启动时间计算准确性。启动时间作为设备一个
重要的标识,根据启动时间可以识别来自同一设备的数据报文数量,进而可以识别监控时
段发送数据报文数量达到恶意设备判定条件的恶意设备。基于启动时间进行不同设备之间
的区分,能够唯一定位到具体一个设备,即可以从单个设备层面进行恶意设备识别,避开了
单纯根据IP地址进行恶意设备识别的局限性,可以提高恶意设备识别准确率。
[0075] 在一个实施例中,参考图4,图4示出了一个实施例中基于时间戳确定数据报文所来自设备的启动时间步骤的流程示意图。如图4所示,根据各数据报文的时间戳,确定每个
数据报文所来自设备的启动时间包括:
[0076] S402,确定每个数据报文的接收时间以及对应的源IP地址和源端口。
[0077] S404,根据具有相同源IP地址和源端口的不同数据报文的接收时间和时间戳,确定各数据报文所来自设备的启动时间。
[0078] 其中,接收时间是指服务器接收到数据报文的时间。同一访问设备可能具有不同的IP地址,比如,在网络连接状态下是一个IP地址,在网络断连状态下可以是另一个IP地
址。同一访问设备对应的源端口也是多变的,只要改变其CGI(Common Gateway Interface,
通用网关接口)配置,对应的源端口随即发生变化。也就是说,同一访问设备可以基于多种
源IP地址和源端口组合发起数据请求。
[0079] 比如,参考图5,图5示出了一个实施例中基于时间戳确定数据报文所来自终端的启动时间的数据处理过程示意图。如图5所示,假设访问设备M在监控时段基于IP1+Port1发
送了数据报文A1,基于IP2+Port2发送了数据报文A2;基于IP1+Port1发送了数据报文A3等
100个数据报文。访问设备N在监控时段基于IP1+Port2发送了数据报文B1,基于IP3+Port2
发送了数据报文B2;基于IP1+Port3发送了数据报文B3等50个数据报文。
[0080] 传统方式只能将同一IP地址发送的数据报文的数量来统计对应访问设备的访问次数,而实际上这样只能统计到该访问设备一部分的访问次数,因为同一访问设备基于不
同IP地址发出的数据报文的数量被统计为不同访问设备的访问次数。比如,上述数据报文
A1与数据报文A2会被统计为不同访问设备发出的数据报文,而实际上数据报文A1与数据报
文A2均为访问设备M发出的。容易发现,这样会造成恶意设备的遗漏识别。
[0081] 对于局域网内多个访问设备共享同一IP地址的情形,不同访问设备可能基于同一共享IP地址发送数据报文,按照传统方式这些基于同一IP地址但实质来自不同访问设备的
数据报文均会被笼统的统计为一个访问设备发出的数据报文。比如,上述数据报文A1与数
据报文B1会被统计为同一访问设备发出的数据报文,而实际上数据报文A1与数据报文B1分
别由访问设备M和访问设备N发出的。如此会造成基于同一IP地址的正常访问请求因为访问
次数过高而被误识别为恶意请求,及造成恶意设备的过渡识别。
[0082] 而本申请的实施例不再单纯根据访问设备的IP地址识别恶意设备,而是基于访问设备的启动时间识别恶意设备。具体地,一个访问设备自启动并运行一定时长后发送数据
报文,数据报文在访问设备和服务器之间传输,待传输完毕后到达服务器,此时服务器确定
数据报文接收时间。容易理解,访问设备的启动时间(记作Tboot)、发送数据报文前访问设
备已运行时长(Tk)、数据报文传输时长(记作t)以及数据报文的接收时间(记作Tnow)之间
存在如下关系:
[0083] Tboot+Tk+t=Tnow;其中,Tk=K*timestamps。
[0084] 其中,K表示访问设备的CPU时间周期(记作K),timestamps表示数据报文在时间戳字段所记录的自访问设备启动至发送该数据报文所经历的时钟周期数量。此外,数据报文
传输时长t相对访问设备已运行时长Tk较小,可以忽略不计,如此,上式可以转换为:
[0085] Tnow‑Tboot=K*timestamps。
[0086] 短时间内访问设备的源IP地址或源端口发生变更的概率较小,而短时间内IP地址和源端口同时发生变更的概率更小,可以认为在短时间内同一访问设备只能基于一种源IP
地址和源端口组合发起数据请求。如此,在较短的一个监控子时段接收到的具有相同源IP
地址和源端口的不同数据报文可以认为是来自同一访问设备的数据报文。监控子时段的时
间长度不宜过长。一个访问设备的CPU时钟周期和启动时间是唯一确定的。因而,具有相同
源IP地址和源端口的各数据报文可以认为具有相同的CPU时钟周期K和访问设备启动时间
Tboot。
[0087] 进一步地,如图5所示,服务器根据源IP地址和源端口对监控子时段接收到的数据报文进行分组,将具有相同源IP地址和源端口的各数据报文分为一组,得到多个数据报文
组。换言之,同一数据报文组中的各个数据报文互为同源报文。如上文,同组数据报文可以
认为来自同一访问设备,即每组数据报文具有对应的一个访问设备。为了描述方便,下文将
每组数据报文对应的访问设备称作一个候选设备。可以理解,监控子时段接收的数据报文
可能来自多个候选设备,而实际上这些候选设备中的一个或多个可以是同一个访问设备,
比如图4中候选设备1和候选设备2实质上是同一访问设备1。
[0088] 服务器通过计算每个数据报文所来自设备的启动时间,即可识别出哪些候选设备为实际的同一访问设备。因为同一访问设备发送数据报文所基于的源IP地址和源端口可能
不同,但启动时间却是唯一确定的。具体地,服务器接收到一个数据报文时记录对应的数据
报文接收时间Tnow。服务器根据每个候选设备对应数据报文组中任意两个数据报文所记录
的时间戳可以推算相应候选设备的CPU时钟周期K。服务器将CPU时钟周期K、其中一个数据
报文接收时间Tnow和时间戳timestamps代入上式即可计算得到候选设备对应的启动时间。
[0089] 本实施例中,在基于源IP地址和源端口确定数据报文所来自设备的身份标识之外,还结合数据报文中的时间戳计算各数据报文的启动时间进行恶意设备识别,可以避开
传统方式单纯根据IP地址识别恶意设备时遗漏识别或过度识别的问题,提高恶意设备识别
准确性。
[0090] 在一个实施例中,如图6所示,根据具有相同源IP地址和源端口的不同数据报文的接收时间和时间戳,确定各数据报文所来自设备的启动时间包括:
[0091] S602,计算目标的数据报文的接收时间与另一个具有相同源IP地址和源端口的数据报文的接收时间的第一时差。
[0092] S604,计算目标的数据报文的时间戳与另一个具有相同源IP地址和源端口的数据报文的时间戳的第二时差。
[0093] S606,根据第一时差、第二时差以及目标的数据报文的接收时间,确定目标的数据报文所来自设备的启动时间。
[0094] 其中,目标的数据报文的时间戳与另一个具有相同源IP地址和源端口的数据报文为同一候选设备发出的两个不同数据报文。
[0095] 具体地,服务器根据每个候选设备对应数据报文组中任意两个数据报文所记录的时间戳可以推算相应候选设备的CPU时钟周期K。比如,在上述举例中,数据报文A1和数据报
文A3具有相同的源IP地址和源端口,为同一候选设备发送的数据报文。基于候选设备对应
数据报文组中每个数据报文可以得到一个计算对应候选设备启动时间的计算公式,如基于
数据报文A1的候选设备启动时间计算公式(1)与基于数据报文A3的候选设备启动时间计算
公式(2)分别如下:
[0096] TnowA1‑Tboot=K*timestampsA1……(1);
[0097] TnowA3‑Tboot=K*timestampsA3……(2)。
[0098] 其中,TnowA1表示数据报文A1接收时间;TnowA3表示数据报文A3接收时间;timestampsA1表示自访问设备启动至发送数据报文A1所经历的时钟周期数量;
timestampsA3表示自访问设备启动至发送数据报文A3所经历的时钟周期数量。
[0099] 服务器对上述(1)式和(2)式相减消项即可确定相应候选设备的CPU始终周期K。将上述(A)和(B)两式相减得到:
[0100] TnowA1‑TnowA3=K*(timestampsA1‑timestampsA3)……(3)
[0101] 对(3)式进行转化即可得到计算得到候选设备的CPU始终周期K:
[0102] K=(TnowA1‑TnowA3)/(timestampsA1‑timestampsA3)……(4)
[0103] 将(4)式代入(1)式或(2)式即可得到相应候选设备的启动时间:Tboot=TnowA1‑(TnowA1‑TnowA3)/(timestampsA1‑timestampsA3)*timestampsA1。
[0104] 按照上述方式,服务器可以计算得到每个候选设备的启动时间。即计算数据报文组中任意两个数据报文的接收时间的差值(记作第一时差),计算该两个数据报文的的时间
戳的差值(记作第二时差),计算第一时差与第二时差的比值,将该比值确定为数据报文组
对应候选设备的CPU始终周期,将CPU始终周期代入数据报文组中任意一个数据报文对应的
候选设备启动时间计算公式即可得到相应候选设备的启动时间。
[0105] 本实施例中,巧妙利用来自同一访问设备即具有相同源IP地址和源端口的不同数据报文的发送时间和接收时间,确定相应访问设备的CPU时钟周期,进而根据CPU始终周期
以及数据报文所记录的经历CPU始终周期的数量即可计算得到访问设备的启动时间。
[0106] 在一个实施例中,根据第一时差和第二时差,确定握手报文所来自设备的启动时间包括:根据第一时差与第二时差的比值,确定目标的数据报文的时钟周期;基于时钟周期
以及目标的数据报文的时间戳,计算目标的数据报文所来自设备的运行时长;根据运行时
长和目标的数据报文的接收时间,确定目标的数据报文所来自设备的启动时间。
[0107] 其中,时钟周期是指上文的CPU时钟周期。运行时长是指访问设备自启动至发送携带相应时间戳的数据报文时已运行的时间长度。
[0108] 在一个实施例中,数据报文包括设备基于传输控制协议请求握手连接时发送的握手报文,握手报文包括SYN报文和ACK报文;根据具有相同源IP地址和源端口的不同数据报
文的接收时间和时间戳,确定各数据报文所来自设备的启动时间包括:计算SYN报文的接收
时间与ACK报文的接收时间的第一时差;计算SYN报文的时间戳与ACK报文的时间戳的第二
时差;根据第一时差与第二时差的比值,确定握手报文所来自设备的时钟周期;基于始终周
期以及SYN报文的时间戳,计算SYN报文所来自设备的运行时长;根据运行时长和SYN报文的
接收时间,确定SYN报文所来自设备的启动时间。
[0109] 其中,用于计算候选设备的启动时间的两个数据报文可以是SYN(Synchronize Sequence Numbers,同步序列编号)报文和ACK报文。SYN报文和ACK(Acknowledge 
character,确认字符)报文均为基于TCP协议的数据报文,分别包括各自的时间戳字段。
[0110] 访问设备与服务器之间建立TCP连接时需要进行经过“三次握手”的过程。三次握手是指访问设备与服务器之间进行三次数据交互。第一次握手过程中,访问设备发送SYN报
文到服务器,并进入SYN_SEND(请求连接)状态,等待服务器确认。SYN报文中syn标志位置为
j。第二次握手过程中,服务器收到SYN报文,对访问设备的SYN报文进行确认,同时服务器向
访问设备发送一个SYN+ACK报文,此时服务器进入SYN_RECV(请求应答)状态。SYN+ACK报文
中ack标志位置为j+1,syn标志位置为k。在第三次握手过程中,访问设备收到服务器的SYN+
ACK报文,向服务器发送ACK报文。ACK报文中ack标志位置为k+1。当ACK报文发送完毕时,访
问设备与服务器进入ESTABLISHED(连接成功)状态,完成三次握手。
[0111] 具体地,参考图7,图7示出了一个实施例中基于TCP三次握手时的SYN包和ACK包计算访问设备启动时间的原理示意图。如图7所示,SYN包与ACK包来自同一访问设备,所以具
有相同的启动时间Tboot和时钟周期K,其中,发送SYN包时访问设备的运行时间为TSYN=K*
timestampsSYN,服务器接收到SYN包的时间为TnowSYN;发送ACK包时访问设备的运行时间
为Tack=K*timestampsACK,服务器接收到ACK包的时间为TnowACK。其中,K为K=(TnowACK‑
TnowSYN)/(timestampsACK‑timestampsSYN)。根据SYN包计算启动时间的公式计算得到SYN
包与ACK包对应访问设备的启动时间Tboot=TnowSYN‑K*timestampsSYN。
[0112] 本实施例中,握手报文用于在访问设备和服务器之间建立连接,在连接建立阶段即进行恶意设备识别,可以进一步提高发现恶意设备的及时性。由于握手过程中传送的数
据包里不包含数据,三次握手完毕后,访问设备与服务器才正式开始传送数据,还可以提前
避免恶意设备建立连接后对服务器资源的无端占据消耗。
[0113] 在一个实施例中,根据启动时间生成相应设备的设备标识包括:在数据报文中提取流量特征字段;将流量特征字段与数据报文对应设备的启动时间进行拼接;将拼接得到
的字符串确定为设备的设备标识。
[0114] 其中,流量特征字段是指数据报文中能够一定程度上表征数据报文数据特性的字段。流量特征字段可以是基于TCP协议的RFC文档(Request For Comments,一系列以编号排
定的文件)在TCP报文数据部分解析出的字段。RFC文档是收集了互联网通信协议相关信息,
以及UNIX和互联网社区的软件文件。在本申请的实施例中,流量特征字段具体可以是DF
(Dedicated File,专用文件)字段、ttl(Time To Live,IP包被路由器丢弃之前允许通过的
最大网段数量)、IP option len(IP选项部分长度)、Window size(滑动窗口)、Protocol 
version(协议版本)、Client version(LTLS支持的最大版本)、cipher_cnt(加密套件数)、
cipher_str(加密套件字符串)、exttype_str(扩展类型字符串),supported_groups(列举
了客户端支持的用于密钥交换的命名组)、ec_point_formats(列举了客户端支持的椭圆曲
线算法)、signature_algorithms(列举了客户端支持的签名算法)中的一项或多项。
[0115] 具体地,服务器根据TCP协议的RFC文档(Request For Comments,一系列以编号排定的文件)在TCP报文数据部分提取流量特征字段,并按照预设的拼接顺序与启动时间进行
拼接,将拼接得到的字符串确定为相应访问设备的设备标识。直接将不同的流量特征字段
进行拼接作为设备标识,可能会造成设备标识冲突,启动时间能够用于标识一个访问设备,
将启动时间加入可以解决设备标识冲突问题。
[0116] 本实施例中,将流量特征字段与数据报文对应设备的启动时间拼接作为相应访问设备的设备标识,增加了设备标识信息含量,用于生成设备标识的信息越多,设备标识对相
应访问设备的唯一标识能力越强,有助于基于设备标识统计每个访问设备所发送数据报文
的数量,进而有助于提高恶意设备识别准确性。
[0117] 在一个实施例中,上述恶意设备识别方法还包括:获取多个历史报文;在历史报文中提取通用的字段名;将通用的字段名确定为流量特征字段名;在数据报文中提取流量特
征字段包括:在数据报文中提取每个流量特征字段名对应的流量特征字段值。
[0118] 其中,历史报文是指指定时间之前接收到的数据报文。通用的字段名是指不同数据报文中均会涉及,但在不同数据报文中国对应的字段值可能不同的字段名。通用的字段
名可以是相关人员根据RFC文档或者经验需求自行制定的。比如,相关人员基于pof、namp等
探测工具确定比较重要的字段名。流量特征字段值是指数据报文中与通用的字段名对应的
字段值。
[0119] 流量特征字段值也可以是相关人员通过对离线数据报文进行统计分析,筛选出的字段名。比如,相关人员基于多个字段名构建训练样本并以期望的字段名作为标签进行训
练得到的字段名。流量特征字段值还可以是用户访问目标应用时输入的特定参数。其中,特
定参数可以通过预先在目标应用中嵌入JS脚本实现。
[0120] 具体地,服务器获取多个历史报文,确定每个历史报文所记录的字段名,可以将出现频次超过阈值的字段名确定为通用字段名。阈值可以是小于或等于历史报文的数量等。
当阈值小于历史报文数量时,根据所确定的通用字段名在某些数据报文可能提取不到对应
的流量特征字段值,此时可以将预设拼接顺序中该特征字段值对应的拼接位置填充为预设
字符,即采用预设字符代替为空的流量特征字段值参与拼接。
[0121] 本实施例中,基于历史报文自行筛选比较重要的通用字段名,用于指导提取流量特征字段值,不仅能够提高流量特征字段值提取效率,还使所提取流量特征字段值更具代
表性,更能够反映数据报文的数据特性,进而有助于提高设备指纹对访问设备的唯一标识
能力。
[0122] 在一个实施例中,当所确定数据报文的数量达到恶意设备判定条件时,将相应数据报文所来自设备标记为恶意设备包括:在数据报文中提取请求类型字段;对启动时间满
足时间匹配条件的各数据报文所记录的请求类型进行分类;当数据报文的数量或者请求类
型的类别数目达到恶意设备判定条件时,将相应数据报文所来自设备标记为恶意设备。
[0123] 其中,请求类型字段是指能够表征数据报文所请求业务类型的字段信息。目标应用能够提供多种不同业务功能,如登录、下载等。每种业务功能对应一种请求类型。请求类
型字段可以是服务器在数据报文的数据部分提取得到。恶意设备判定条件还包括将一个设
备判定为恶意访问设备时访问设备在监控时段所发送的数据报文的请求类型类别数目阈
值条件。比如,访问设备在监控时段所发送的数据报文的请求类型类别数目小于第二预设
值,如5等。
[0124] 具体地,服务器在每个数据报文中提取请求类型字段,根据请求类型对每个设备标识对应的全部数据报文中每种请求类型数据报文进行分类,得到每个设备标识对应的请
求类型类别数目。比如,设备标识M对应的访问设备具有对应的100个请求类型为X、Y或X或Z
的数据报文,则设备标识M对应的请求类型类别数据为3。
[0125] 进一步地,服务器综合根据数据报文的数量和请求类型的类别数目进行恶意设备识别。如果一个设备标识对应的监控时段数据报文数量多但请求类型的类别数目少,表明
相应访问设备的业务请求比较多,但是所请求的业务类型比较单一,一定置信度上可以认
为该访问设备为用于刷机或养号批量操作等的恶意设备。服务器将数据报文的数量与请求
类型的类别数目中任意一者不符合恶意设备判定条件的设备标识对应的访问设备判定为
恶意设备。
[0126] 在一个实施例中,服务器可以预存储多种数据报文的数量应当符合的恶意设备判定条件和请求类型的类别数目应当符合的恶意设备判定条件的组合,并针对不同恶意设备
判定条件组合设定不同的恶意等级。
[0127] 在一个实施例中,服务器统计每个设备标识对应的全部数据报文中每种请求类型数据报文出现的概率。比如,设备标识M对应的访问设备具有对应的100个数据报文,其中,
请求类型为X的数据报文30个,请求类型为Y的数据报文60个,请求类型为Z的数据报文10
个,则请求类型X的数据报文的概率分布为30%。服务器将数据报文的数量不符合恶意设备
判定条件,或请求类型概率分布与预设的标准概率分布的差异超过阈值的设备标识对应的
访问设备判定为恶意设备。
[0128] 本实施例中,综合根据数据报文的数量和请求类型的类别数目进行恶意设备识别,可以提高恶意设备识别准确性。
[0129] 在一个实施例中,当所确定数据报文的数量达到恶意设备判定条件时,将相应数据报文所来自设备标记为恶意设备包括:在数据报文中提取操作系统字段;对启动时间满
足时间匹配条件的各数据报文所记录的操作系统进行统计,得到每种操作系统的比例分
布;当数据报文的数量达到恶意设备判定条件,或者操作系统的比例分布与预设比例分布
匹配失败时,将相应数据报文所来自设备标记为恶意设备。
[0130] 其中,操作系统字段是用于指示相应数据报文所来自终端采用的操作系统类型的字段。操作系统字段可以是服务器在数据报文的数据部分提取得到。操作系统是管理计算
机硬件与软件资源的计算机程序。不同的访问设备可能采用不同的操作系统,如iOS、
Android、Windows等。恶意设备判定条件还包括将一个设备判定为恶意访问设备时访问设
备在监控时段所发送的数据报文的操作系统分布与预设操作系统大盘分布的匹配度阈值
条件。
[0131] 具体地,服务器在每个数据报文中提取操作系统字段,对监控时段接收到的全部数据报文所来自设备的操作系统概率分布。比如,监控时段接收到1000个数据报文,其中,
来自操作系统为iOS的访问设备的数据报文30个,则对应操作系统为iOS的访问设备的数据
报文的概率分布为30%。假设预存储的操作系统大盘分布中iOS操作系统的分布为50%,来
自操作系统为iOS的访问设备的数据报文的概率分布与预设操作系统大盘分布的匹配度
低,服务器可以确定当前监控时段接收到的每个操作系统为iOS的数据报文所记录的源IP
地址,并查询该IP地址对应为访问设备在前一监控时段是否被判定为恶意设备,若是,则在
当前监控时段也可以对应数据报文所来自设备判定为恶意设备。可以理解,本领域技术人
员还可以利用操作系统字段辅助识别恶意设备,对此不作限定。
[0132] 在本实施例中,综合根据数据报文的数量和操作系统分布进行恶意设备识别,可以提高恶意设备识别准确性。
[0133] 在一个实施例中,上述恶意设备识别方法还包括:在当前监控时段接收数据报文;基于数据报文中的时间戳字段确定数据报文所来自终端的启动时间;当启动时间属于历史
监控时段识别到的恶意设备的启动时间时,将数据报文进行丢弃。
[0134] 其中,历史监控时段是指在当前监控时段之前的一个或多个监控时段。
[0135] 具体地,在当前监控时段内,服务器按照上述方式在每个监控子时段结束时计算该监控子时段接收到的每个数据报文所来自设备的启动时间,服务器识别该启动时间是否
属于历史监控时段识别到的恶意设备的启动时间。启动时间属于历史监控时段识别到的恶
意设备的启动时间,则标识当前该数据报文为已经标记为恶意设备的访问设备所发送的数
据报文,服务器对该数据报文进行拦截丢弃。若启动时间并不属于历史监控时段识别到的
恶意设备的启动时间,则表示当前该数据报文为正常访问数据报文,服务器直接放行,即响
应数据报文。
[0136] 参考图8,图8示出了一个实施例中基于恶意设备识别结果对数据报文进行区分处理的流程示意图。如图8所示,服务器可以按照上述方式计算当前监控时段接收到的每个数
据报文所来自设备的启动时间,并判断是否与历史监控时段被判定为恶意设备的启动时间
符合时间匹配条件。若是,服务器可以将该数据报文判定为来自恶意设备的数据报文,进行
拦截丢弃。否则,服务器将该数据报文判定为正常访问数据报文,对该数据报文进行处理。
[0137] 在一个实施例中,所述恶意设备判定条件包括多个数据报文数量区间以及每个数据报文数量区间对应的恶意等级;所述当所确定数据报文的数量达到恶意设备判定条件
时,将相应数据报文所来自设备标记为恶意设备包括:当所确定数据报文的数量属于一个
数据报文数量区间时,将相应数据报文所来自设备判定为所属数据报文数量区间对应恶意
等级的恶意设备。
[0138] 在一个实施例中,所述方法还包括:根据所述恶意等级确定相应恶意设备的黑名单时段;当在所述黑名单时段接收到相应恶意设备发送的数据报文时,将所述数据报文进
行丢弃。
[0139] 当恶意设备判定条件包括多个数据报文数量区间以及每个数据报文数量区间对应的恶意等级时,服务器预存储了每个恶意等级对应的处理策略。比如,当一个设备标识对
应访问设备被判定为恶意设备,则服务器将监控时段之后的一段时间确定为该设备标识对
应的访问设备的黑名单时段,并将该设备标识对应的访问设备在黑名单时段发送的数据报
文进行丢弃处理,而在黑名单时段之外继续响应该访问设备发送的数据报文。可以理解,黑
名单时段的时长与恶意等级正相关。恶意等级越低,对应的黑名单时段时长越短;恶意等级
越高,对应的黑名单时段时长越长。也可以在恶意等级达到预设等级时,对应的黑名单时段
时长可以是无限长,即服务器将永久不再响应该设备标识对应访问设备发送的数据报文。
[0140] 本实施例中,根据历史监控时段的恶意设备识别结果对当前监控时段进行数据报文选择性响应作出指导,可以使当前监控时段及早发现来自恶意设备的数据报文并丢弃,
可以减少恶意请求对服务器资源的消耗。
[0141] 如图9所示,在一个具体的实施例中,本申请实施例提供的恶意设备识别方法包括:
[0142] S902,在监控时段内接收到的每个数据报文中提取时间戳字段。
[0143] S904,确定每个数据报文的接收时间以及对应的源IP地址和源端口。
[0144] S906,计算目标的数据报文的接收时间与另一个具有相同源IP地址和源端口的数据报文的接收时间的第一时差。
[0145] S908,计算目标的数据报文的时间戳与另一个具有相同源IP地址和源端口的数据报文的时间戳的第二时差。
[0146] S910,根据第一时差与第二时差的比值,确定目标的数据报文的时钟周期。
[0147] S912,基于时钟周期以及目标的数据报文的时间戳,计算目标的数据报文所来自设备的运行时长。
[0148] S914,根据运行时长和目标的数据报文的接收时间,确定目标的数据报文所来自设备的启动时间。
[0149] S916,在数据报文中提取流量特征字段。
[0150] S918,将流量特征字段与数据报文对应设备的启动时间进行拼接。
[0151] S920,将拼接得到的字符串确定为设备的设备标识。
[0152] S922,确定每个设备标识对应设备在监控时段发出的数据报文的数量。其中,启动时间满足时间匹配条件的不同数据报文来自于相同的设备。
[0153] S924,在数据报文中提取请求类型字段。
[0154] S926,对启动时间满足时间匹配条件的各数据报文所记录的请求类型进行分类。
[0155] S928,当数据报文的数量或者请求类型的类别数目达到恶意设备判定条件时,将相应数据报文所来自设备标记为恶意设备。
[0156] 上述恶意设备识别方法,根据数据报文所携带的难以被篡改的时间戳字段,计算数据报文所来自设备的启动时间,可以提高启动时间计算准确性。启动时间作为设备一个
重要的标识,根据启动时间可以识别来自同一设备的数据报文数量,进而可以识别监控时
段发送数据报文数量达到恶意设备判定条件的恶意设备。基于启动时间进行不同设备之间
的区分,能够唯一定位到具体一个设备,即可以从单个设备层面进行恶意设备识别,避开了
单纯根据IP地址进行恶意设备识别的局限性,可以提高恶意设备识别准确率。
[0157] 图2、4、6和9为一个实施例中恶意设备识别方法的流程示意图。应该理解的是,虽然图2、4、6和9的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然
按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的
顺序限制,这些步骤可以以其它的顺序执行。而且,图2、4、6和9中的至少一部分步骤可以包
括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是
可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以
与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0158] 如图10所示,在一个实施例中,提供了恶意设备识别装置1000,包括启动时间计算模块1002、访问流量统计模块1004和恶意设备识别模块1006,其中,
[0159] 启动时间计算模块1002,用于在监控时段内接收到的每个数据报文中提取时间戳字段;根据各数据报文的时间戳,确定每个数据报文所来自设备的启动时间。
[0160] 访问流量统计模块1004,用于按照启动时间,确定来自各设备的数据报文的数量;其中,启动时间满足时间匹配条件的不同数据报文来自于相同的设备。
[0161] 恶意设备识别模块1006,用于当所确定数据报文的数量达到恶意设备判定条件时,将相应数据报文所来自设备标记为恶意设备。
[0162] 在一个实施例中,启动时间计算模块1002还用于确定每个数据报文的接收时间以及对应的源IP地址和源端口;根据具有相同源IP地址和源端口的不同数据报文的接收时间
和时间戳,确定各数据报文所来自设备的启动时间。
[0163] 在一个实施例中,启动时间计算模块1002还用于计算目标的数据报文的接收时间与另一个具有相同源IP地址和源端口的数据报文的接收时间的第一时差;计算目标的数据
报文的时间戳与另一个具有相同源IP地址和源端口的数据报文的时间戳的第二时差;根据
第一时差、第二时差以及目标的数据报文的接收时间,确定目标的数据报文所来自设备的
启动时间。
[0164] 在一个实施例中,数据报文包括设备基于传输控制协议请求握手连接时发送的握手报文,所述握手报文包括SYN报文和ACK报文;启动时间计算模块1002还用于计算SYN报文
的接收时间与ACK报文的接收时间的第一时差;计算SYN报文的时间戳与ACK报文的时间戳
的第二时差;根据第一时差与第二时差的比值,确定握手报文所来自设备的时钟周期;基于
始终周期以及SYN报文的时间戳,计算所述握手报文所来自设备的运行时长;根据运行时长
和SYN报文的接收时间,确定所述握手报文所来自设备的启动时间。
[0165] 在一个实施例中,启动时间计算模块1002还用于根据第一时差与第二时差的比值,确定目标的数据报文的时钟周期;基于时钟周期以及目标的数据报文的时间戳,计算目
标的数据报文所来自设备的运行时长;根据运行时长和目标的数据报文的接收时间,确定
目标的数据报文所来自设备的启动时间。
[0166] 在一个实施例中,访问流量统计模块1004还用于根据启动时间生成相应设备的设备标识;确定每个设备标识对应设备在监控时段发出的数据报文的数量。
[0167] 在一个实施例中,访问流量统计模块1004还用于根据启动时间生成相应设备的设备标识包括:在数据报文中提取流量特征字段;将流量特征字段与数据报文对应设备的启
动时间进行拼接;将拼接得到的字符串确定为设备的设备标识。
[0168] 在一个实施例中,如图11所示,恶意设备识别装置1000还包括拼接字段确定模块1008,用于获取多个历史报文;在历史报文中提取通用的字段名;将通用的字段名确定为流
量特征字段名;访问流量统计模块1004还用于在数据报文中提取每个流量特征字段名对应
的流量特征字段值。
[0169] 在一个实施例中,恶意设备识别模块1006还用于在数据报文中提取请求类型字段;对启动时间满足时间匹配条件的各数据报文所记录的请求类型进行分类;当数据报文
的数量或者请求类型的类别数目达到恶意设备判定条件时,将相应数据报文所来自设备标
记为恶意设备。
[0170] 在一个实施例中,恶意设备识别模块1006还用于在数据报文中提取操作系统字段;对启动时间满足时间匹配条件的各数据报文所记录的操作系统进行统计,得到每种操
作系统的比例分布;当数据报文的数量达到恶意设备判定条件,或者操作系统的比例分布
与预设比例分布匹配失败时,将相应数据报文所来自设备标记为恶意设备。
[0171] 在一个实施例中,恶意设备识别装置1000还包括恶意设备跟踪模块1010,用于在当前监控时段接收数据报文;基于数据报文中的时间戳字段确定数据报文所来自终端的启
动时间;当启动时间属于历史监控时段识别到的恶意设备的启动时间时,将数据报文进行
丢弃。
[0172] 在一个实施例中,恶意设备判定条件包括多个数据报文数量区间以及每个数据报文数量区间对应的恶意等级;恶意设备识别模块1006还用于当所确定数据报文的数量属于
一个数据报文数量区间时,将相应数据报文所来自设备判定为所属数据报文数量区间对应
恶意等级的恶意设备。
[0173] 在一个实施例中,恶意设备跟踪模块1010还用于根据恶意等级确定相应恶意设备的黑名单时段;当在黑名单时段接收到相应恶意设备发送的数据报文时,将数据报文进行
丢弃。
[0174] 图12示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的服务器120。如图12所示,该计算机设备包括该计算机设备包括通过系统总线连接的
处理器、存储器和网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设
备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器
执行时,可使得处理器实现恶意设备识别方法。该内存储器中也可储存有计算机程序,该计
算机程序被处理器执行时,可使得处理器执行恶意设备识别方法。
[0175] 本领域技术人员可以理解,图12中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设
备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0176] 在一个实施例中,本申请提供的恶意设备识别装置可以实现为一种计算机程序的形式,计算机程序可在如图12所示的计算机设备上运行。计算机设备的存储器中可存储组
成该恶意设备识别装置的各个程序模块,比如,图10所示的启动时间计算模块、访问流量统
计模块和恶意设备识别模块。各个程序模块构成的计算机程序使得处理器执行本说明书中
描述的本申请各个实施例的恶意设备识别方法中的步骤。
[0177] 例如,图12所示的计算机设备可以通过如图10所示的恶意设备识别装置中的启动时间计算模块执行步骤S202和S204。计算机设备可通过访问流量统计模块执行步骤S206。
计算机设备可通过恶意设备识别模块执行步骤S208。
[0178] 在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述恶意设备识别方法的步骤。此
处恶意设备识别方法的步骤可以是上述各个实施例的恶意设备识别方法中的步骤。
[0179] 在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述恶意设备识别方法的步骤。此处恶意设备识别方
法的步骤可以是上述各个实施例的恶意设备识别方法中的步骤。
[0180] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的程序可存储于一非易失性计算机可读取存储
介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各
实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/
或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程
ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器
(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM
(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM
(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直
接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0181] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛
盾,都应当认为是本说明书记载的范围。
[0182] 以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,
在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范
围。因此,本申请专利的保护范围应以所附权利要求为准。