用于识别网络攻击行为的方法、装置、电子设备及介质与流程

文档序号:22557660发布日期:2020-10-17 03:11
用于识别网络攻击行为的方法、装置、电子设备及介质与流程
本公开涉及互联网
技术领域
,更具体地,涉及一种用于识别网络攻击行为的方法、装置、电子设备、及介质,以及一种用于识别网络攻击行为的分类器的训练方法和训练装置。
背景技术
:随着互联网技术的不断发展,互联网企业增加边界防护部署防火墙、ips(intrusionpreventionsystem,入侵防御系统)、waf(webapplicationfirewall,web应用防护系统)等安全防护工具,防止黑客攻击、拒绝恶意流量,但基于网络控制报文协议icmp(internetcontrolmessageprotocol)传输的网络流量为网络中必须启用的协议,多数防火墙等防护设备不会检测和禁用基于icmp传输的网络流量。因此黑客为达到渗透和远程命令执行的目的,可以通过icmp协议封装攻击指令来绕过防火墙等防护设备的监控,进行网络攻击。技术实现要素:有鉴于此,本公开实施例提供了一种用于识别网络攻击行为的方法和装置、一种用于识别网络攻击行为的分类器的训练方法和训练装置、一种电子设备、以及一种计算机可读存储介质。本公开实施例的第一方面,提供了一种用于识别网络攻击行为的方法。所述方法包括:获取第一数据流,所述第一数据流为在预设时长范围内基于网络控制报文协议icmp传输的数据流,其中,所述第一数据流包括在相同源端和目的端之间传输的m个数据包,其中m为大于等于1的整数;提取所述第一数据流对应的第一特征向量,其中,所述第一特征向量至少包括所述m个数据包中每个数据包的数据字段中的字符的分布特征;将所述第一特征向量输入到分类器以获取所述分类器的输出,所述分类器为用于预测基于icmp传输的数据流是否存在网络攻击行为的机器学习模型;以及在所述分类器的输出表征所述第一数据流存在网络攻击行为时,确定所述第一数据流存在网络攻击行为。根据本公开的实施例,所述提取所述第一数据流对应的第一特征向量包括:提取所述m个数据包中每个数据包对应的子特征向量,以得到m个第一子特征向量;以及基于所述m个第一子特征向量,得到所述第一特征向量。根据本公开的实施例,所述提取所述m个数据包中每个数据包对应的子特征向量包括以下任意其一或两者的组合:基于对所述数据包的数据字段中的数据以字符为分词的最小单位进行n-gram分词,得到所述数据包的分词特征,其中,至少以所述数据包的分词特征来表征所述数据包的数据字段的字符的分布特征,n为大于等于2的整数;或者提取所述数据包的数据字段中的每个字符的出现比率,得到所述数据包的字符占比,其中,至少以所述数据包的字符占比来表征所述数据包的字符的分布特征。根据本公开的实施例,所述提取所述m个数据包中每个数据包对应的子特征向量还包括以下任意一项或多项的组合:将所述数据包的数据字段中的数据依次与预先构造的词典空间中的词匹配,得到所述数据包的词分布特征,其中,所述词典空间为将基于icmp传输的不存在网络攻击行为的正常数据包的数据字段中的数据每四个字符划分为一个词构成的数据空间;获取所述数据包的数据字段的数据长度,以得到所述数据包的载荷大小特征;获取所述数据包的类型字段的取值,以得到所述数据包的协议类型特征;或者获取所述第一数据流中的数据包的个数m,以得到请求序列数。根据本公开的实施例,所述方法还包括训练所述分类器。其中训练所述分类器包括:获取至少一个第二数据流,所述第二数据流为在所述预设时长范围内基于icmp传输的不存在网络攻击行为的正常数据流,其中所述第二数据流包括在相同源端和目的端之间传输的s个数据包,其中s为大于等于1的整数;获取至少一个第三数据流,所述第三数据流为在所述预设时长范围内基于icmp传输的存在网络攻击行为的异常数据流,其中所述第三数据流包括在相同源端和目的端之间传输的r个数据包,其中r为大于等于1的整数;提取所述至少一个第二数据流中每个所述第二数据流对应的第二特征向量,得到正训练样本数据,其中,所述第二特征向量至少包括所述s个数据包中每个数据包的数据字段中的字符的分布特征;提取所述至少一个第三数据流中每个所述第三数据流对应的第三特征向量,得到负训练样本数据,其中,所述第三特征向量至少包括所述r个数据包中每个数据包的数据字段中的字符的分布特征;以及利用所述正样本训练数据和所述负样本训练数据,训练所述分类器。其中,所述第二特征向量、所述第三特征向量与所述第一特征向量的提取方式一致。本公开实施例的第二方面,提供了一种用于识别网络攻击行为的分类器的训练方法。所述训练方法包括:获取至少一个第二数据流,所述第二数据流为在预设时长范围内基于icmp传输的不存在网络攻击行为的正常数据流,其中所述第二数据流包括在相同源端和目的端之间传输的s个数据包,其中s为大于等于1的整数;获取至少一个第三数据流,所述第三数据流为在所述预设时长范围内基于icmp传输的存在网络攻击行为的异常数据流,其中所述第三数据流包括在相同源端和目的端之间传输的r个数据包,其中r为大于等于1的整数;提取所述至少一个第二数据流中每个所述第二数据流对应的第二特征向量,得到正训练样本数据,其中,所述第二特征向量至少包括所述s个数据包中每个数据包的数据字段中的字符的分布特征;提取所述至少一个第三数据流中每个所述第三数据流对应的第三特征向量,得到负训练样本数据,其中,所述第三特征向量至少包括所述r个数据包中每个数据包的数据字段中的字符的分布特征;以及利用所述正样本训练数据和所述负样本训练数据,训练所述分类器。其中,所述第二特征向量和所述第三特征向量的提取方式一致。根据本公开的实施例,所述提取所述至少一个第二数据流中每个所述第二数据流对应的第二特征向量包括:提取所述s个数据包中每个数据包对应的子特征向量,以得到s个第二子特征向量;以及基于所述s个第二子特征向量,得到所述第二特征向量。根据本公开的实施例,所述基于所述s个第二子特征向量,得到所述第二特征向量包括以下任意其一或两者的组合:基于对所述数据包的数据字段中的数据以字符为分词的最小单位进行n-gram分词,得到所述数据包的分词特征,其中,n为大于等于2的整数,其中,至少以所述数据包的分词特征来表征所述数据包的数据字段的字符的分布特征,n为大于等于2的整数;或者提取所述数据包的数据字段中的每个字符的出现比率,得到数据包的字符占比,其中,至少以所述数据包的字符占比来表征所述数据包的字符的分布特征。本公开实施例的第三方面,提供了一种用于识别网络攻击行为的装置。所述装置包括第一获取模块、第一提取模块、预测模块、以及确定模块。所述第一获取模块用于获取第一数据流,所述第一数据流为在预设时长范围内基于网络控制报文协议icmp传输的数据流,其中,所述第一数据流包括在相同源端和目的端之间传输的m个数据包,其中m为大于等于1的整数。所述第一提取模块用于提取所述第一数据流对应的第一特征向量,其中,所述第一特征向量至少包括所述m个数据包中每个数据包的数据字段中的字符的分布特征。所述预测模块用于将所述第一特征向量输入到分类器以获取所述分类器的输出,所述分类器为用于预测基于icmp传输的数据流是否存在网络攻击行为的机器学习模型。所述确定模块用于在所述分类器的输出表征所述第一数据流存在网络攻击行为时,确定所述第一数据流存在网络攻击行为。本公开实施例的第四方面,提供了一种用于识别网络攻击行为的分类器的训练装置。所述训练装置包括第二获取模块、第三获取模块、第二提取模块、第三提取模块、以及训练模块。第二获取模块用于获取至少一个第二数据流,所述第二数据流为在预设时长范围内基于icmp传输的不存在网络攻击行为的正常数据流,其中所述第二数据流包括在相同源端和目的端之间传输的s个数据包,其中s为大于等于1的整数。第三获取模块用于获取至少一个第三数据流,所述第三数据流为在所述预设时长范围内基于icmp传输的存在网络攻击行为的异常数据流,其中所述第三数据流包括在相同源端和目的端之间传输的r个数据包,其中r为大于等于1的整数。第二提取模块用于提取所述至少一个第二数据流中每个所述第二数据流对应的第二特征向量,得到正训练样本数据,其中,所述第二特征向量至少包括所述s个数据包中每个数据包的数据字段中的字符的分布特征。第三提取模块用于提取所述至少一个第三数据流中每个所述第三数据流对应的第三特征向量,得到负训练样本数据,其中,所述第三特征向量至少包括所述r个数据包中每个数据包的数据字段中的字符的分布特征,其中,所述第二特征向量和所述第三特征向量的提取方式一致。训练模块用于利用所述正样本训练数据和所述负样本训练数据,训练所述分类器。本公开实施例的第五方面,提供了一种电子设备。所述电子设备包括一个或多个存储器以及一个或多个处理器。所述存储器上存储有计算机可执行指令。所述所述处理器执行所述指令,以实现如上第一方面所述的方法,或者如上第二方面所述的训练方法。本公开实施例的第六方面,提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行如上第一方面所述的方法,或者如上第二方面所述的训练方法。上述一个或多个实施例具有如下优点或益效果:利用机器学习模型分析基于网络控制报文协议icmp传输的数据流,以此来区分不存在网络攻击行为的正常数据流和存在网络攻击行为的异常数据流,大幅提高对基于icmp传输的数据流的威胁的自动化检测能力。附图说明通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:图1示意性示出了根据本公开实施例的用于识别网络攻击行为的方法的应用场景;图2示意性示出了基于icmp协议传输的数据包的数据结构;图3示意性示出了根据本公开实施例的用于识别网络攻击行为的方法的流程图;图4示意性示出了根据本公开实施例的用于识别网络攻击行为的方法中提取所述第一数据流对应的第一特征向量的流程图;图5示意性示出了根据本公开另一实施例的用于识别网络攻击行为的方法的流程图;图6示意性示出了根据本公开实施例的用于识别网络攻击行为的分类器的训练方法的流程图;图7示意性示出了根据本公开实施例的用于识别网络攻击行为的装置的框图;图8示意性示出了根据本公开实施例的用于识别网络攻击行为的分类器的训练装置的框图;图9示意性示出了根据本公开另一实施例的用于识别网络攻击行为的装置的框图;图10示意性示出了应用图9所示的装置识别网络攻击行为的流程图;以及图11示意性示出了适于实现根据本公开实施例的方法的电子设备的方框图。具体实施方式以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。在使用类似于“a、b或c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b或c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。本公开的实施例提供了一种用于识别网络攻击行为的方法和装置、一种用于识别网络攻击行为的分类器的训练方法和训练装置、一种电子设备、以及一种计算机可读存储介质,旨在结合大数据技术和机器学习技术,对基于网络控制报文协议icmp传输的数据流中存在的网络攻击行为进行识别。具体地,该用于识别网络攻击行为的方法可以包括:获取第一数据流,第一数据流为在预设时长范围内基于网络控制报文协议icmp传输的数据流,其中,第一数据流包括在相同源端和目的端之间传输的m个数据包,其中m为大于等于1的整数;提取第一数据流对应的第一特征向量,其中,第一特征向量至少包括m个数据包中每个数据包的数据字段中的字符的分布特征;将第一特征向量输入到分类器以获取分类器的输出,该分类器为用于预测基于icmp传输的数据流是否存在网络攻击行为的机器学习模型;以及在该分类器的输出表征第一数据流存在网络攻击行为时,确定第一数据流存在网络攻击行为。本公开的实施例对基于icmp传输的数据流进行特征提取,并利用机器学习模型来预测或识别该数据流是否存在网络攻击行为,以此方式来检测非法icmp隧道产生的异常数据流,识别网络中的攻击威胁,为安全测试和测试工具决策提供支撑。图1示意性示出了根据本公开实施例的用于识别网络攻击行为的方法的应用场景100。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。如图1所示,该应用场景100可以包括内网101、互联网102、以及主机设备103、104、105。其中,主机设备103、104、105例如可以是web服务器103、终端设备104、以及服务器105。主机设备103、104、105通过互联网102访问内网101。内网101可以包括路由器111、内部网络112、以及内网虚拟机113。其中,路由器111可以实现内网101与互联网102之间的数据转接。具体地,内网虚拟机113可以通过内部网络112与路由器111进行数据交换,同时主机设备103、104、105也可以通过互联网102与路由器111进行数据交换。在主机设备103、104、105需要与路由器111之间传输控制消息(例如,网络通不通、主机是否可达、或者路由是否可用等)时,主机设备103、104、105与路由器111之间可以通过网络控制报文协议icmp进行数据传输。同样的,在内网101中,当内网虚拟机111需要与路由器111之间传输控制消息时,内网虚拟机113与路由器111之间也可以通过网络控制报文协议icmp进行数据传输。图2示意性示出了基于icmp协议传输的数据包的数据结构。icmp(internetcontrolmessagesprotocol,网络控制报文协议)是tcp/ip协议族的子协议,是一种面向无连接的协议。icmp协议的数据结构如图2所示。网络中通常使用的ping命令就是基于icmp协议,windows系统下ping命令默认传输的是:abcdefghijklmnopqrstuvwabcdefghi,共32bytes,转换为16进制填充于图2中data字段的内容为:“6162636465666768696a6b6c6d6e6t7071727374757677616263646566676869”。linux系统下,ping命令默认传输的是48bytes,前8bytes随时间变化,后面的固定不变,内容为!”#$%&’()+,-./01234567;转换为16进制填充于图2中data字段内容为:“101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637”。结合图1,正常情况下,例如主机设备103、104、105向路由器111发送ping命令后,就会将具有图2所示的数据结构的请求数据包发送给路由器111,并相应收到路由器111反馈的具有图2所示的数据结构的响应数据包。基于icmp协议的数据包中data字段的数据内容和大小是可以修改的。基于此,当黑客想要攻击内网101时,可以将木马等病毒代码附加在icmp协议的数据包中,向内网101发起访问。通常内网101的防火墙等防护设备不会检测和禁用基于icmp传输的数据,这样就会导致这些附带有网络攻击行为的数据流会进入内网101,对内网101进行网络攻击。为了避免甚至克服基于icmp传输的具有网络攻击行为的数据流进入内网101,本公开实施例对基于icmp传输的数据流进行特征提取,并利用机器学习模型来预测该数据流是否存在网络攻击行为,以此来检测非法icmp隧道产生的异常数据流,识别网络中的攻击威胁。根据本公开的各个实施例,在对基于icmp传输的数据流进行特征提取时,考虑到正常情况下通过ping命令等产生的基于icmp传输的数据包中data字段的数据内容或字符内容相对固定或者具有一定的分布规律,从而可以提取要识别的数据流的各个数据包中data字段中字符的分布特征(例如,以字符为基本单位的n-gram分词特征、或者各个字符的占比规律),然后使机器学习模型在充分学习大量正常数据流和异常数据流中的数据包的字符的分布特征等,来识别数据流中是否存在网络攻击行为。根据本公开的一些实施例,在对基于icmp传输的数据流进行特征提取时,还可以进一步提取数据流中各个数据包的词分布特征、载荷大小特征、协议类型特征、和/或预定时间范围内的请求序列数等特征,结合数据流中各个数据包的字符的分布特征,形成数据流的特征向量,可以使机器学习模型从多个维度更加充分地学习到基于icmp传输的正常数据流和异常数据流之间的差异,更准确的识别出基于icmp传输的数据流中的攻击行为。需要说明的是,本公开实施例所提供的用于识别网络攻击行为的方法、以及分类器的训练方法一般可以由路由器111执行。相应地,本公开实施例所提供的用于识别网络攻击行为的装置、以及分类器的训练装置一般可以设置于路由器111中。本公开实施例所提供的用于识别网络攻击行为的方法、以及分类器的训练方法也可以由不同于路由器111且能够与路由器111通信的服务器或服务器集群执行。相应地,本公开实施例所提供的用于识别网络攻击行为的装置、以及分类器的训练装置也可以设置于不同于路由器111且能够与路由器111通信的服务器或服务器集群中。应该理解,图1中的网络设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目和种类的网络设备、网络和服务器。图3示意性示出了根据本公开实施例的用于识别网络攻击行为的方法的流程图。如图3所示,根据本公开的实施例该用于识别网络攻击行为的方法可以包括操作s210~操作s240。在操作s210,获取第一数据流,第一数据流为在预设时长范围内基于网络控制报文协议icmp传输的数据流,其中,第一数据流包括在相同源端和目的端之间传输的m个数据包,其中m为大于等于1的整数。例如,可以按照预设时长范围设置时间窗口,然后按照时间窗口从网络数据流中提取出基于icmp协议传输的待检测数据,然后在将这些待检测数据按照源端和目的端的对应关系排列起来,将具有相同或相应源端和目的端的数据包分成一组,形成相应的数据流(例如,第一数据流)。该时间窗口的时长范围可以根据网络中的数据流量的大小来确定,例如半小时。对于按照时间窗口从网络数据流中提取出基于icmp协议传输的待检测数据,在根据源端和目的端分为多个组得到对应的数据流之前,还可以根据需要进行数据清洗。例如,在应用场景100中,如果内网虚拟机113是已知的安全的设备,可以清洗掉内网虚拟机113与路由器111之间的基于icmp传输的数据流,以此方式可以却掉冗余数据。在实际操作中,可以在路由器或者交换机端采集网络数据流。由于路由器或交换机负责网络数据的转发,因此从路由器或者交换机端采集的网络数据会比较全面。例如,在应用场景100中,可以从路由器111处获取基于icmp协议传输的待检测数据,进而可以通过数据清洗和/或数据重新排列等预处理手段,获得第一数据流。在操作s220,提取第一数据流对应的第一特征向量,其中,第一特征向量至少包括m个数据包中每个数据包的数据字段中的字符的分布特征。每个数据包的数据字段中的字符的分布特征,例如可以是基于每个数据包的数据字段(即,图2中的data字段)中的的字符的分布形成的特征,例如以字符为最小单位的n-gram统计分析得到的分词特征、或者各个字符的出现比率形成的字符占比等。在操作s230,将第一特征向量输入到分类器以获取分类器的输出,分类器为用于预测基于icmp传输的数据流是否存在网络攻击行为的机器学习模型。在操作s240,在分类器的输出表征第一数据流存在网络攻击行为时,确定第一数据流存在网络攻击行为。从而本公开实施例通过对基于icmp传输的数据流进行特征提取,并利用机器学习模型来预测或识别该数据流是否存在网络攻击行为,以此方式来检测非法icmp隧道产生的异常数据流,识别网络中的攻击威胁,为安全测试和测试工具决策提供支撑。图4示意性示出了根据本公开实施例的用于识别网络攻击行为的方法中操作s220提取第一数据流对应的第一特征向量的流程图。如图4所示,根据本公开的实施例操作s220可以包括操作s221~操作s222。首先在操作s221,提取m个数据包中每个数据包对应的子特征向量,以得到m个第一子特征向量。然后在操作s222,基于m个第一子特征向量,得到第一特征向量。例如,将m个第一子特征向量依次组合,得到第一特征向量。或者,例如将m个第一子特征向量进行一定的数据处理(例如,相加、或者赋予权重后组合)等,得到第一特征向量。根据本公开的实施例,操作s221中提取每个数据包对应的子特征向量具体可以是,基于对数据包的数据字段中的数据以字符为分词的最小单位进行n-gram分词,得到数据包的分词特征,n为大于等于2的整数。例如,将每个数据包中data字段的数据以字符为分词的最小单位进行n-gram分词,随后通过tf-idf算法计算得到该数据包的分词特征。例如,以前述windows系统下ping命令传输的数据包为例进行说明。该数据包data字段的内容显示为十六进制数,其中,十六进制的每个数位对应四个bit位,每两个数位恰好对应一个字节。在ascii编码中一个英文字母字符存储需要一个字节。故,在一个实施例中,以字符作为最小单位进行n-gram分词时该数据包的5-gram分词所得的分词特征可以如下表1所示。基于表1,该数据包对应的子特征向量可以是t1=(2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),其中t1为具有23维的一个向量。在一些实施例中,为了保证数据维度的一致性,例如可以预设t1的总维度,例如设置所有数据包的子特征向量t1为32维,其中,在t1的实际维度不满足32维时,剩余维度均取值为0。表1可以理解,以上windows系统下ping命令传输的数据包、以及5-gram分词仅给出了示例,提供了一种基于数据包的分词特征得到数据包对应的子向量的一种途径。根据本公开的另一实施例,操作s221中提取每个数据包对应的子特征向量,也可以是提取数据包的数据字段中的每个字符的出现比率,得到数据包的字符占比。例如,计算每个数据包的data字段中字符占比,即阿拉伯数字0-9和字母a-z的出现比率。其中,例如字符a的出现比率可以计算为p[a]=count[a]/len[data]。在得到数据包中data字段中阿拉伯数字0-9和字母a-z中各个字符的出现比率后,将这些字符的出现比率按照顺序排列可以得到一个16维的向量t2。在一个实施例中,该向量t2可以作为该数据包对应的子特征向量。根据本公开的另一些实施例,操作s221中提取每个数据包对应的子特征向量中除了可以包括上述的分词特征(例如,t1)和/者字符占比(例如,t2)以外,还可以包括每个数据包的词分布特征、载荷大小特征、协议类型特征、或者请求序列数中的任意一个或多个。具体内容参见下文的详细描述。具体地,在一个实施例中,操作s221中提取数据包对应的子特征向量,还可以包括将数据包的数据字段中的数据依次与预先构造的词典空间中的词匹配,得到数据包的词分布特征,其中,词典空间为将基于icmp传输的不存在网络攻击行为的正常数据包的数据字段中的数据每四个字符划分为一个词构成的数据空间。正常操作系统下通过ping命令等产生的正常数据包中的data字段的内容转换为16进制后为从00开始不断递增然后一直到ff的重复序列中的一段或几段。存在网络攻击的异常数据包中data字段的字符分布特征将不存在这样的规律。基于此可以预先构造词典空间,通过数据包中data字段的数据与词典空间的匹配情况来反映数据包在词分布维度的特征。例如,可以将windows系统下ping命令传输的数据包中data字段的数据每四个字符划分为一个词,构造词典空间hex_charset=[‘0001’,‘0203’.....‘6162’,‘6364’,‘6566’.....‘fcfe’,‘feff’],然后将第一数据流中的每个数据包中data字段的每四个字符与词典空间hex_charset匹配,例如得到如下表2所示的词分布特征。表2词典空间00010203…6162…63646566…匹配次数x1x2…xm…xsxt…从而,在操作s221中基于表2,该数据包对应的子特征向量还可以包括t3={x1,x2,…,xm,…,xs,xt,…}。例如,在一个实施例中,该数据包对应的子特征向量可以是t1、t2和t3的组合。单独的词分布特征中,如果数据包中存在与词典空间中的词匹配不上的部分,则无法体现在词分布特征中。由此可见,与上述分词特征(例如,t1)和字符占比(例如,t2)相比,表2的词分布特征可能会缺失部分信息,例如异常数据包中的匹配不上的部分词的信息将无法统计在内。根据本公开的实施例,在数据包的数据字段中的字符的分布特征的基础上,再结合数据包的词分布特征可以使机器学习模型较为有效地区分正常数据流和异常数据流。在另一个实施例中,操作s221中提取数据包对应的子特征向量还可以包括获取数据包的数据字段的数据长度,以得到数据包的载荷大小特征l。例如,上述windows系统下ping命令传输的数据包的载荷大小特征为data字段的字符个数64,即l=64。一般而言,基于icmp传输的正常数据包中数据字段的数据长度相对固定,即数据包的载荷大小特征是有特定规律的。而存在网络攻击行为的异常数据包的数据字段的内容遭到篡改,由此可能会使该数据包的载荷大小特征呈现随机性或不规律。从而根据本公开的实施例,在一定程度上可以结合载荷大小特征来区分正常数据流和异常数据流。在另一个实施例中,操作s221中获取数据包对应的子特征向量还可以包括获取数据包的类型字段的取值,以得到数据包的协议类型特征type。数据包的类型字段的取值,即为图2所示的数据结构中的type字段的取值。数据包的协议类型特征包含但不限于[0,8,13,15,17]。网络中基于icmp传输的数据包中常见的type类型有两种——0和8,其中0为请求数据,8为响应数据。另外,在网络中还存在一些type类型为13、15、17等的数据包,其中有一部分可能是存在网络攻击行为的数据包。根据本公开的实施例,在一定程度上可以结合数据包的协议类型特征来区分正常数据流和异常数据流。在另一个实施中,操作s221中获取数据包对应的子特征向量还可以包括获取第一数据流中的数据包的个数m,以得到请求序列数。在基于icmp传输的正常数据流中,每秒发送的数据包个数比较少,通常每秒最多只会发送两个数据包;请求数据包与对应的响应数据包内容一样。而基于icmp传输的异常数据流(例如,icmp隧道产生的数据),每秒发送的数据包个数可以比较多,在同一时间可能产生成百上千个icmp数据包。根据本公开的实施例,在一定程度上可以结合请求序列数来区分正常数据流和异常数据流。表3示例了根据本公开一个实施例中,一个数据包对应的子特征向量各部分的特征表:表3特征种类数据内容分词特征t1字符占比t2词分布特征t3载荷大小特征l协议类型特征type请求序列数m在一个实施例中,一个数据包的子特征向量可以是表3中该数据包的各种类型的特征的组合。例如,子特征向量t={t1,t2,t3,l,type,m}。从而,在一个实施例中可以将m个子特征向量t按照一定的序列组合得到第一特征向量。根据本公开的实施例,对于第一数据流对应的第一特征向量,也可以进行降维处理,以提高分类器的处理速率。本公开实施例运用大数据技术,基于icmp传输的数据流的分词特征、字符占比、词分布特征、载荷大小特征、协议类型特征,请求序列数等,形成数据流对应的特征向量,进而通过训练得到的机器学习模型来识别异常数据流,为提供安全测试和测试工具决策支撑和技术方法图5示意性示出了根据本公开另一实施例的用于识别网络攻击行为的方法的流程图。如图5所示,根据本公开的实施例该用于识别网络攻击行为的方法除了操作s210~操作s240以外,还可以包括操作s510。在操作s510,训练分类器。例如,可以利用大量的具有标识的icmp数据流对应的特征向量作为训练数据,训练分类器。具体训练过程可以参考如下图6的示意。图6示意性示出了根据本公开实施例的用于识别网络攻击行为的分类器的训练方法的流程图。如图6所示,根据本公开的实施例,该用于识别网络攻击行为的分类器的训练方法可以包括操作s610~操作s650。在操作s610,获取至少一个第二数据流,第二数据流为在预设时长范围内基于icmp传输的不存在网络攻击行为的正常数据流,其中第二数据流包括在相同源端和目的端之间传输的s个数据包,其中s为大于等于1的整数。在操作s620,获取至少一个第三数据流,第三数据流为在预设时长范围内基于icmp传输的存在网络攻击行为的异常数据流,其中第三数据流包括在相同源端和目的端之间传输的r个数据包,其中r为大于等于1的整数。在操作s630,提取至少一个第二数据流中每个第二数据流对应的第二特征向量,得到正训练样本数据,其中,第二特征向量至少包括s个数据包中每个数据包的数据字段中的字符的分布特征。在操作s640,提取至少一个第三数据流中每个第三数据流对应的第三特征向量,得到负训练样本数据,其中,第三特征向量至少包括r个数据包中每个数据包的数据字段中的字符的分布特征。例如,在操作s630中获取已知正常访问过程中产生的基于icmp传输的数据流,标识为0,即为正样本。具体地,例如可以搭建已知的网络系统,让该网络系统中各个设备之间进行互相访问,将这些网络设备之间产生的基于icmp传输的数据流标记为0。对这些数据流提取对应的第二特征向量,得到正训练样本数据。又例如,在操作s640中搭建基于icmp传输的网络攻击数据平台。例如,搭建一台服务器,使用攻击工具进行攻击,产生基于icmp传输的异常数据流,并将这些数据流标记为1,得到负样本。然后提取这些数据流对应的第三特征向量,作为负训练样本数据。根据本公开的实施例,操作s630和操作s640中第二特征向量、第三特征向量与第一特征向量的提取方式一致。第一特征向量、第二特征向量、以及第三特征向量均可采用降维处理,以提高机器学习模型(即,分类器)的处理效率。具体可以参考上文关于第一特征向量的提取过程,此处不再赘述。在操作s650,利用正样本训练数据和负样本训练数据,训练分类器。以此方式,使分类器学习基于icmp传输的正常数据流和异常数据流的特征差异,从而可以在预测阶段对第一数据流中是否存网络攻击行为进行识别。图7示意性示出了根据本公开实施例的用于识别网络攻击行为的装置700的框图。如图7所示,根据本公开实施例该装置700可以包括第一获取模块710、第一提取模块720、预测模块730、以及确定模块740。该装置700可以用于实现参考图2~图5所描述的方法。第一获取模块710用于获取第一数据流,第一数据流为在预设时长范围内基于网络控制报文协议icmp传输的数据流,其中,第一数据流包括在相同源端和目的端之间传输的m个数据包,其中m为大于等于1的整数。第一提取模块720用于提取第一数据流对应的第一特征向量,其中,第一特征向量至少包括m个数据包中每个数据包的数据字段中的字符的分布特征。预测模块730用于将第一特征向量输入到分类器以获取分类器的输出,分类器为用于预测基于icmp传输的数据流是否存在网络攻击行为的机器学习模型。确定模块740用于在分类器的输出表征第一数据流存在网络攻击行为时,确定第一数据流存在网络攻击行为。图8示意性示出了根据本公开实施例的用于识别网络攻击行为的分类器的训练装置800的框图。如图8所示,该训练装置800可以包括第二获取模块810、第三获取模块820、第二提取模块830、第三提取模块840、以及训练模块850。该训练装置800可以用于实现参考图6所描述的训练方法。第二获取模块810用于获取至少一个第二数据流,第二数据流为在预设时长范围内基于icmp传输的不存在网络攻击行为的正常数据流,其中第二数据流包括在相同源端和目的端之间传输的s个数据包,其中s为大于等于1的整数。第三获取模块820用于获取至少一个第三数据流,第三数据流为在预设时长范围内基于icmp传输的存在网络攻击行为的异常数据流,其中第三数据流包括在相同源端和目的端之间传输的r个数据包,其中r为大于等于1的整数。第二提取模块830用于提取至少一个第二数据流中每个第二数据流对应的第二特征向量,得到正训练样本数据,其中,第二特征向量至少包括s个数据包中每个数据包的数据字段中的字符的分布特征。第三提取模块840用于提取至少一个第三数据流中每个第三数据流对应的第三特征向量,得到负训练样本数据,其中,第三特征向量至少包括r个数据包中每个数据包的数据字段中的字符的分布特征,其中,第二特征向量和第三特征向量的提取方式一致。训练模块850用于利用正样本训练数据和负样本训练数据,训练分类器。图9示意性示出了根据本公开另一实施例的用于识别网络攻击行为的装置900的框图。如图9所示,该装置900可以包括网络数据提取模块1、流量特征模块2、以及隧道判别模块3。该装置900可以实现根据本公开实施例的方法。流量特征模块2与网络数据提取模块1、隧道判别模块3相互连接。网络数据流量送入网络数据提取模块1,通过网络数据提取模块1即可选取符合标准的信息数据送入流量特征模块2,最终通过隧道判别模块3对数据流中是否存在网络攻击行为进行识别。网络数据提取模块1可以负责按照一定时间窗口从网络数据流中提取基于icmp传输的待检测数据,并将待检测数据进行清洗并重新排列,以便送入流量特征模块2进行特征提取。该网络数据提取模块1将固定时间窗口t内的基于icmp传输的全部数据包中,具有相同源ip和目的ip的数据包分成一组,从而将时间窗口t内的数据包分成多个组,组内包含在相同的源端和目的段之间的请求数据与响应数据。流量特征模块2负责处理根据网络数据提取模块1按组传输的数据包,其中一组数据包形成一个数据流。流量特征模块2负责提取数据流对应的的特征向量(例如,第一数据流对应的第一特征向量)。隧道判别模块3负责基于流量特征模块2传入的特征向量对数据流是否存在网络攻击行为进行判别,主要是通过训练分类器来识别正常数据流和异常数据流。图10示意性示出了应用图9所示的装置900识别网络攻击行为的流程图。如图10所示,装置900的工作流程可以包括步骤s1~步骤s6。在步骤s1:装置900通过网络数据提取模块1提取基于icmp传输的数据流(例如,第一数据流、至少一个第二数据流、至少一个第三数据流)。步骤s2:根据上述关于表3的相关描述,生成数据流对应的特征向量。然后,基于第二数据流对应的第二特征向量,得到正训练样本数据;基于第三数据流对应的第三特征向量,得到负样本训练数据。步骤s3:构建决策树分类器,利用正样本训练数据和负样本训练数据训练分类器。步骤s4:使用已训练的分类器对为获取的未知数据流(例如,第一数据流)进行判别。步骤s5:若判别为异常数据流,检测结果标记为1。步骤s6:若判别为正常数据流,检测结果标记为0。根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。例如,第一获取模块710、第一提取模块720、预测模块730、确定模块740、第二获取模块810、第三获取模块820、第二提取模块830、第三提取模块840、训练模块850、网络数据提取模块1、流量特征模块2、以及隧道判别模块3中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第一获取模块710、第一提取模块720、预测模块730、确定模块740、第二获取模块810、第三获取模块820、第二提取模块830、第三提取模块840、训练模块850、网络数据提取模块1、流量特征模块2、以及隧道判别模块3中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一获取模块710、第一提取模块720、预测模块730、确定模块740、第二获取模块810、第三获取模块820、第二提取模块830、第三提取模块840、训练模块850、网络数据提取模块1、流量特征模块2、以及隧道判别模块3中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。图11示意性示出了适于实现根据本公开实施例的方法的电子设备1100的方框图。图11示出的电子设备1100仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。如图11所示,根据本公开实施例的电子设备1100包括处理器1101,其可以根据存储在只读存储器(rom)1102中的程序或者从存储部分1108加载到随机访问存储器(ram)1103中的程序而执行各种适当的动作和处理。处理器1101例如可以包括通用微处理器(例如cpu)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器1101还可以包括用于缓存用途的板载存储器。处理器1101可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。在ram1103中,存储有电子设备1100操作所需的各种程序和数据。处理器1101、rom1102以及ram1103通过总线1104彼此相连。处理器1101通过执行rom1102和/或ram1103中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除rom1102和ram1103以外的一个或多个存储器中。处理器1101也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。根据本公开的实施例,电子设备1100还可以包括输入/输出(i/o)接口1105,输入/输出(i/o)接口1105也连接至总线1104。系统1100还可以包括连接至i/o接口1105的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1106;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分1107;包括硬盘等的存储部分1108;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1109。通信部分1109经由诸如因特网的网络执行通信处理。驱动器1110也根据需要连接至i/o接口1105。可拆卸介质1111,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1110上,以便于从其上读出的计算机程序根据需要被安装入存储部分1108。根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1109从网络上被下载和安装,和/或从可拆卸介质1111被安装。在该计算机程序被处理器1101执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的rom1102和/或ram1103和/或rom1102和ram1103以外的一个或多个存储器。附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。当前第1页1 2 3 
再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1