一种实时识别网络协议的方法与流程

文档序号:12730246阅读:325来源:国知局
本发明涉及网络安全
技术领域
,具体而言,涉及一种网络协议识别方法。
背景技术
:随着网络技术的不断发展,网络流量激增,这些流量中不仅包含了已知网络协议,还包含了大量的未知网络协议流量,面对这些大量的数据流量时,需要分别进行识别。现有的针对已知网络协议的识别方法,大多分为两类:一类是是基于端口进行的,但是端口识别法会出现大量误报漏报的情况;另一类是基于单个数据包进行字符串匹配的方式,这种方式需要人为不断收集样本和不断更新协议库,工作量很大。而现有针对未知网络协议识别的方法,大多基于机器学习的,这些方法或者采用了非监督机器学习,或者采用了监督机器学习,要么无法准确分类,要么依赖大量标定数据集,另一方面,这些方法大多是基于整个流的协议匹配,这种误报比较少,但是识别速度无法满足未知网络协议实时识别的要求。综上所述,现有技术中对采用同一种方式来识别现有网络协议以及未知网络协议的研究较少,且现有技术都需要人为的进行收集大量样本和分析,并更新协议库。因此我们需要一种技术能够同时识别已知网络协议以及未知网络协议,并且能够自适应的去更新协议库,提高未知网络协议的识别率和识别速度,做到对网络协议的实时识别。技术实现要素:本发明的目的在于提供一种网络协议识别方法,能够同时识别已知网络协议以及未知网络协议,并且能够自适应的去更新协议库,提高未知网络协议的识别率和识别速度。为了实现上述目的,本发明实施例采用的技术方案如下:一种网络协议识别方法,所述方法包括:获取在传输网络数据时同一会话开始时的多个数据包作为待识别网络数据包;将所述待识别网络数据包构造成网络协议模型;将所述网络协议模型与已知网络协议模型库中模型进行匹配,其中已知网络协议模型库中模型是由已知网络协议的网络数据包构造的;如果与已知网络协议模型库中模型匹配成功,则所述网络协议模型为已知网络协议模型;如果与已知网络协议模型库中所有模型匹配失败,则所述网络协议模型为未知网络协议模型,将所述网络协议模型与未知网络协议模型库中已有模型进行匹配,并采用未知网络协议更新策略对未知网络协议模型库进行更新,其中未知网络协议模型库中模型是由未知网络协议的网络数据包构造的。本发明提供的网络协议识别方法,采用同一套网络协议识别算法,能够同时识别已知网络协议以及未知网络协议,并通过独特的网络协议模型构造方法和更新策略能够自适应的去更新网络协议模型库,提高未知网络协议的识别率和识别速度,做到对网络协议的实时识别。为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。通过附图所示,本发明的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本发明的主旨。图1示出了本发明实施例提供的一种网络协议识别方法的流程图;图2示出了本发明实施例提供的一种网络协议模型构造方法的流程图;图3示出了本发明实施例提供的一种将所述网络协议模型与已知网络协议模型库中模型匹配方法的流程图;图4示出了本发明实施例提供的一种将所述网络协议模型与未知网络协议模型库中模型匹配并更新未知网络协议模型库方法的流程图;图5示出了本发明实施例提供的另一种将所述网络协议模型与未知网络协议模型库中模型匹配并更新未知网络协议模型库方法的流程图;图6示出了本发明实施例提供的另一种网络协议识别方法的流程图。具体实施方式下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。参阅图1,本发明实施例提供的一种网络协议识别的方法,所述方法包括:步骤S101,获取在传输网络数据时的同一会话开始时的多个数据包作为待识别网络数据包;步骤S102,将所述待识别网络数据包构造成网络协议模型;步骤S103,将所述网络协议模型与已知网络协议模型库中模型进行匹配,其中已知网络协议模型库中模型是由已知网络协议的网络数据包构造的;步骤S104,判断将所述网络协议模型与已知网络协议模型库中已有模型是否匹配成功;步骤S105,如果与已知网络协议模型库中模型匹配成功,则所述网络协议模型为已知网络协议模型;步骤S106,如果与已知网络协议模型库中所有模型匹配失败,则所述网络协议模型为未知网络协议模型,将所述网络协议模型与未知网络协议模型库中已有模型进行匹配,并采用未知网络协议更新策略对未知网络协议模型库进行更新,其中未知网络协议模型库中模型是由未知网络协议的网络数据包构造的。本实施例提供的网络协议识别方法中,通过采用相同的网络协议模型构造方法对已知网络协议和未知网络协议进行模型构造,能够在同一机制下统一识别已知网络协议以及未知网络协议,并且通过不断的匹配和更新协议模型,能够自适应的去更新协议库,提高未知网络协议的识别率和识别速度。参阅图2,本发明实施例提供的一种网络协议模型构造的方法,所述方法包括:步骤S201,人工指定至少一个构造所述网络协议模型所需的模型属性参数;步骤S202,根据所述待识别网络数据包,计算所述网络协议模型的各个属性参数对应的频率分布,各个频率分布共同构成了所述网络协议模型。例如,假设指定的网络协议模型所需的模型属性参数为以下两个参数:(1)一个TCP链接的前8个包的前四次变化时的每个方向发送的字节数;(2)一个TCP链接的前5个包的字符出现频率。首先计算第一个模型参数的频率分布,即一个TCP链接的前8个包的前四次变化时的每个方向发送的字节数的频率分布。需要注意的是,如果此TCP链接中前8个包中不止包含四次方向的变化,则只记录前四次方向变化的的统计值;如果此TCP链接中前8个包中不足包含四次方向的变化,则记录实际方向变化的情况的统计值。假设前8个包中有四次方向的变化,每次方向改变时,前一个传输方向上的传输的总字节,记做NumOfByte,假设分别为:65,128,257,300。将第每次变化时所对应的总字节数除以64,即NNumOfByte/64,得出结果记为ChunkNum。此时求出前四次变化所对应的ChunkNum分别为1,2,4,4。将前四次方向变化的索引记为IndexDirection,IndexDirection的取值为00,01,10,11,表示四次变化。将ChunkNum与IndexDirection组成一个8比特无符号整数,记为IndexADB,作为对应的输出,其中低六位表示ChunkNum,高2位表示其对应的变化索引IndexDirection。根据此规则,求出前四次方向变化对应的IndexADB,如下表所示,分别为:1,66,132,196。初始化一个容量为256,初始值全为0的统计数组,如下表所示:012…66…132…196…255000…0…0…0…0此时,更新统计数组,将数组索引为1,66,132,196对应的值加1,如下表所示:012…66…132…196…255010…1…1…1…0其对应的频率数组为:012…66…132…196…25500.250…0.25…0.25…0.25…0即网络协议模型的第一个模型参数的频率分布:一个TCP链接的前8个包的前四次变化时的每个方向发送的字节数对应的频率分布为:其中,设集合U为0到255之间所有整数的集合,A1={1,66,132,196},B1=U-A1。其次,计算第二个模型参数的频率分布,一个TCP链接的前5个包的字符出现频率的频率分布。假设一个TCP链接的前5个包中所携带载荷以字符串表示分别为:“AAA”,“BBB”,“CCC”,“DDD”,“EEE”。统计这前5个包中的字符出现的频率,其中A出现3次,B出现了3次,C出现了3次,D出现了3次,E出现了3次,而A,B,C,D,E分别对应的ASCII码分别为:65,66,67,68,69。初始化一个容量为256,初始值全为O的统计数组,如下袁所示:012…66…132…196…255000…0…0…0…0此时,更新统计数组,将数组索引为65,66,67,68,69对应的值加上对应出现的次数,这样统计数组如下表所示:012…6566676869…255000…33333…0其对应的频率数组为:012…6566676869…255000…0.20.20.20.20.2…0即网络协议模型的第二个模型参数的频率分布:一个TCP链接的前5个包的字符出现频率的频率分布为:其中,设集合U为0到255之间所有整数的集合,A2={65,66,67,68,69},B2=U-A2。此时,所述网络协议模型由这两个模型参数的频率分布共同构成。通过这种方法可以统一的对已知网络协议和未知网络协议构造协议模型,统一的对已知网络协议和未知网络协议进行识别。参阅图3,本发明实施例提供的一种将所述网络协议模型与已知网络协议模型库中模型匹配的方法,所述方法包括:步骤S301,将所述网络协议模型与已知网络协议模型库中的模型按照从头到尾的顺序逐一进行匹配;步骤S302,将所述网络协议模型的各个属性参数的频率分布逐一与已知网络协议模型库中取出的模型对应的各个属性参数的频率分布计算KL距离,并对所有KL距离求和;步骤S303,如果所述KL距离之和小于预设的第一距离阈值,则认为匹配成功,即认为该待识别网络数据包为已知网络协议;步骤S304,如果所述KL距离之和大于等于预设的第一距离阈值,则认为匹配失败;步骤S305,如果匹配失败,判断是否匹配到已知网络协议模型库中的最后一个模型;步骤S306,如果是已知网络协议模型库中的最后一个模型,则结束匹配,所述网络协议模型为未知网络协议;步骤S307,如果不是已知网络协议模型库中的最后一个模型,则继续匹配。例如,假设当前从已知网络协议模型库中取出的模型如下所示,包含两个模型参数的频率分布,第一个模型参数为:一个TCP链接的前8个包的前四次变化时的每个方向发送的字节数,对应的频率分布为:其中,设集合U为0到255之间所有整数的集合,A1={2,66},B1=U-A1。第二个模型参数为:一个TCP链接的前5个包的字符出现频率,对应的频率分布为:其中,设集合U为0到255之间所有整数的集合,A2={32,33,34,65,66},B2=U-A2。假设此时所述网络协议模型对应的两个模型参数的频率分布如下,第一个模型参数为:一个TCP链接的前8个包的前四次变化时的每个方向发送的字节数,对应的频率分布为:其中,设集合U为0到255之间所有整数的集合,A3={1,66,132,196},B3=U-A3。第二个模型参数为:一个TCP链接的前5个包的字符出现频率,对应的频率分布为:其中,设集合U为0到255之间所有整数的集合,A4={65,66,67,68,69},B4=U-A4。计算所述网络协议模型与当前已知网络协议模型库中取出的模型的第一个模型参数的KL距离,记为KL1,计算公式为:D(P||Q)=∑p(i)log(p(i)/q(i))其中P表示真实分布,Q表示拟合分布。根据公式,计算出KL1=0.15。同理,计算出第二个模型参数的KL距离,记为KL2,KL2=0。则此时KL距离的和为:0.15,若假设预设的第一距离阈值为1,则认为匹配成功,即认为该待识别网络数据包所对应的会话属于已知网络协议;若假设预设的第一距离阈值为0.1,则认为匹配失败,此时判断是否匹配到已知网络协议模型库中的最后一个模型,如果是已知网络协议模型库中的最后一个模型,则结束匹配,所述网络协议模型为未知网络协议,如果不是已知网络协议模型库中的最后一个模型,则继续按照上述方法进行匹配。在匹配的过程中,采用KL距离来度量协议模型之间的差异,对于每次匹配成功之后的更新,不需要大量复杂运算即可更新模型,计算量大大减少,从而减少网络协议识别的时间,保障了未知协议识别的实时性。参阅图4,本发明实施例提供的一种将所述网络协议模型与未知网络协议模型库中模型匹配并更新未知网络协议模型库的方法,所述方法包括:步骤S401,将所述网络协议模型与未知网络协议模型库中的模型按照从头到尾的顺序逐一进行匹配;步骤S402,将所述网络协议模型的各个属性参数的频率分布逐一与未知网络协议模型库中取出的模型对应的各个属性参数的频率分布计算KL距离,并对所有KL距离求和;步骤S403,判断KL距离之和是否小于预设的第二距离阈值;步骤S404,如果所述KL距离之和小于预设的第二距离阈值,则认为匹配成功,更新匹配成功的未知网络协议模型,并将所述匹配成功的未知网络协议模型的位置在未知网络协议模型库中向前移动一位,并结束匹配;步骤S405,如果所述KL距离之和大于等于预设的第二距离阈值,则认为匹配失败,继续匹配,直到匹配完未知网络协议模型库中的所有模型,则将所述网络协议模型插入未知网络协议模型库中。例如,假设未知网络协议模型库中当前存放了3个未知网络协议模型,如下表所示:未知协议模型1未知协议模型2未知协议模型3此时将所述网络协议模型与未知网络协议模型库中的3个未知模型按照从头到尾的顺序逐一进行匹配,将所述网络协议模型的各个属性参数的频率分布逐一与未知网络协议模型库中取出的模型对应的各个属性参数的频率分布计算KL距离,并对所述所有KL距离求和,并对所述所有KL距离求和;判断KL距离之和是否小于预设的第二距离阈值;如果上述KL距离之和大于等于预设的第二距离阈值,即首先与未知协议模型1匹配,如果未成功,则继续与未知协议模型2匹配,如果此时匹配成功,则首先更新未知协议模型2的模型参数的频率分布。假设所述网络协议模型只由一个模型参数的频率分布构成,其对应的统计数组如下表所示:012…66…132…196…255010…1…1…1…0其对应的频率数组为:012…66…132…196…25500.250…0.25…0.25…0.25…0假设与所述网络协议模型匹配成功的网络协议库中协议模型的统计数组如下表所示:012…6566255000…330其对应的频率数组为:012…6566…255000…0.50.5…0首先更新对应的统计数组,即对应索引号的统计值相加,得出更新后的统计数组如下结果:则其对应的更新后的频率数组为:012…6566…132…196…25500.10…0.30.4…0.1…0.1…0即更新后的未知网络协议的模型为:其中,设集合U为0到255之间所有整数的集合,A1={1,132,196},A2={65},A3={66},B4=U-A1-A2-A3。接着把未知协议模型2在模型库中的位置往前移动一位,移动后,未知网络协议模型库如下表所示:若假设此时所述网络协议模型与未知网络协议模型库中全部匹配完,且全部匹配失败,则该所述未知网络协议模型插入未知网络协议模型库中,此时未知网络协议模型库如下表所示:所述未知协议模型未知协议模型1未知协议模型2未知协议模型3本实施例提供的网络协议识别方法中,通过不断的插入新的未知协议模型到未知网络协议模型库中,使得该未知网络协议模型库能够自适应的更新,而无需在系统开始前收集大量的未知网络协议的样本;并且每次命中,将该命中的未知网络协议模型的位置在未知网络协议模型库中向前移动一位,这种方式可以保证高频未知网络协议的位置一直在未知网络协议库的前面,保证高频未知网络协议能够优先匹配,减少匹配时间;同时,对于每次匹配成功的协议模型重新调整模型参数的频率分布,能够动态的更新协议模型,结合高频协议优先匹配的特点,可以保证高频协议能够获得更多样本,使其更加精确,保证属于同一协议的样本能够趋向集中于此协议的高频协议模型,降低了同一协议生成多个低频的网络协议模型的几率,提高了识别的准确性和速度。参阅图5,作为本发明更新未知网络协议模型库的优选实施方式,本发明实施例提供的另一种将所述网络协议模型与未知网络协议模型库中模型匹配并更新未知网络协议模型库的方法,所述方法包括:步骤S501,设置未知网络协议模型库为一个有序表,大小阈值为N,初始状态时,未知网络协议模型库为空;步骤S502,将所述网络协议模型与未知网络协议模型库中的模型按照从头到尾的顺序逐一进行匹配;步骤S503,将所述网络协议模型的各个属性参数的频率分布逐一与未知网络协议模型库中取出的模型对应的各个属性参数的频率分布计算KL距离,并对所有KL距离求和;步骤S504,判断KL距离之和是否小于预设的第二距离阈值;步骤S505,如果所述KL距离之和小于预设的第二距离阈值,则认为匹配成功,更新匹配成功的未知网络协议模型,并将所述匹配成功的未知网络协议模型的位置在未知网络协议模型库中向前移动一位,并结束匹配;步骤S506,如果所述KL距离之和大于等于预设的第二距离阈值,则认为匹配失败,判断当前模型是否为未知网络协议模型库中的最后一个模型;步骤S507,如果当前模型不是未知网络协议模型库中的最后一个模型,则继续匹配;步骤S508,如果当前模型是未知网络协议模型库中的最后一个模型,判断当前未知网络协议模型库中存放的未知网络协议模型数量是否为N;步骤S509,如果不是,则将所述网络协议模型插入未知网络协议模型库的最前面;步骤S510,如果是,则淘汰未知网络协议模型库中位于最末位置的未知网络协议,并将所述网络协议模型插入未知网络协议模型库的最前面。例如,假设未知网络协议模型库的大小阈值为N=5,初始状态为空,若假设此时未知网络协议模型库已经全部放满,即如下表所示:未知协议模型1未知协议模型2未知协议模型3未知协议模型4未知协议模型5假设此时所述网络协议模型与未知网络协议模型库中全部匹配完,且全部匹配失败,则此时淘汰未知网络协议模型库中位于最末位置的未知网络协议,即未知协议模型5,并该所述未知网络协议模型插入未知网络协议模型库的最前面,此时未知网络协议模型库如下表所示:所述未知协议模型未知协议模型1未知协议模型2未知协议模型3未知协议模型4本实施例提供的网络协议识别方法中,通过限制未知网络协议模型库大小以并设置淘汰策略,可以减少匹配次数以及计算机内存空间的消耗;另外,将该未知网络协议模型插入未知网络协议模型库的最前面,可以保证新的未知网络协议在未知网络协议库中停留时间更长,防止一些低频率的未知网络协议被不断的淘汰和插入。参阅图6,作为本发明的优选实施方式,本发明实施例提供的另一种网络协议识别的方法,所述方法包括:步骤S601,获取在传输网络数据时的同一会话开始时的多个数据包作为待识别网络数据包;步骤S602,将所述待识别网络数据包构造成网络协议模型;步骤S603,将所述网络协议模型与已知网络协议模型库中模型进行匹配,其中已知网络协议模型库中模型是由已知网络协议的网络数据包构造的;步骤S604,判断将所述网络协议模型与已知网络协议模型库中已有模型是否匹配成功;步骤S605,如果与已知网络协议模型库中模型匹配成功,则所述网络协议模型为已知网络协议模型;步骤S606,如果与已知网络协议模型库中所有模型匹配失败,则所述网络协议模型为未知网络协议模型,将所述网络协议模型与未知网络协议模型库中已有模型进行匹配,并采用未知网络协议更新策略对未知网络协议模型库进行更新,其中未知网络协议模型库中模型是由未知网络协议的网络数据包构造的;步骤S607,采取更新策略对已知网络协议模型库进行更新,具体为:设置时间周期阈值,周期性地检查未知网络协议模型库中各个模型被命中的次数,如果某个未知网络协议模型的命中次数大于预设的次数阈值,则将该未知网络协议模型从未知网络协议模型库中移除,加入已知网络协议模型库中。本实施例提供的网络协议识别方法中,不仅能够做到同时识别已知网络协议以及未知网络协议,并且把高频未知网络协议当做已知网络协议放入已知网络协议模型库中,当累积大量样本后,可以当做一个固定的模型,不再动态更新,节约识别时间;另一方面把高频未知网络协议从未知网络协议模型库中移出后,增大低频的未知协议被匹配到的可能性,减少匹配时间,提高未知网络协议的识别率和识别速度,做到对网络协议的实时识别。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1