一种针对网络数据流中周期性子序列的检测方法

文档序号:7744743阅读:172来源:国知局
专利名称:一种针对网络数据流中周期性子序列的检测方法
技术领域
本发明涉及一种针对网络数据流中周期性子序列的检测方法,属于信息安全技术 领域。
背景技术
周期性子序列指在一个网络会话的数据流中周期性出现的具有相等序列特征值 并且其所包含的数据包在时序上关系紧密的一种序列类型。周期性子序列在各种网络应用 中作为在线状态检测机制、状态汇报方式、网络同步机制或其他定时任务而普遍存在。一个 网络会话是否包含周期性子序列以及该周期性子序列的特征往往可以作为区分一个会话 与其他会话的重要特征;并且由于周期性子序列所包含的数据大多与具体业务数据无关, 因此它们的存在会对网络数据流的分析造成干扰,所以识别并过滤掉周期性子序列数据将 会减少网络数据流的研究工作量,提高判断网络数据流其它特征的效率,即降低非应用数 据对所要研究的具体业务数据的干扰。目前,对于一个未知协议的网络会话是否存在周期性子序列,一般采用pcap、 wireshark, sniffer等抓包工具捕获网络数据包,然后人工分析其行为特征。即首先判断 网络数据包中是否存在周期性子序列;如果存在,进一步提取该周期性子序列的特征,如 序列周期、序列构成等,以便于在分析数据之前将其过滤,而这需要更多的人工参与。现有 技术存在以下缺点1.需人工判断是否存在周期性子序列,所以分析效率低下;2.网络数据流的采集与分析之间存在较长时间差,无法做到实时分析;3.易造成误判,将不是周期性子序列的数据判断为周期性子序列,导致具体业务 数据被过滤掉,对分析具体业务数据造成影响。

发明内容
本发明的目的是提出一种针对网络数据流的周期性子序列的检测方法。本发明通 过对网络数据包的特征进行分析来识别周期性子序列,并引入簇的概念,使提取周期性子 序列更有效、更准确。本发明的目的是通过下述技术方案实现的。首先给出相关术语的定义定义1.序列以时间为序的数据包的集合;定义2.子序列若序列X,Y满足序列X中所有的数据包均存在于序列Y中,且X 中所有的数据包的顺序与Y中数据包顺序一致,则X是Y的一个子序列;定义3.序列的特征值由既定的特征向量组成的序列的属性;定义4.簇簇是在时序上关系紧密的数据包的集合,而簇与簇之间的数据包在时 序关系上相对疏远,具体判断标准为当相邻两个数据包的时间间隔不大于一个人为设定 时间值T,则判断这两个数据包在同一个簇内;否则判断这两个数据包分属于两个簇。
一种针对网络数据流中周期性子序列的检测方法,具体操作步骤如下步骤一、获取网络数据流,并定义簇间最小时间间隔值为T,构成最小簇所需网络 包的个数为smin,smin为正整数;步骤二、对网络数据流进行分簇,得到簇集合。其具体操作步骤如下第1步构造一个簇列表Qc和一个临时数据包列表Lp ;簇列表Qc用于存储簇对 象C,;临时数据包列表Lp用于存储从网络数据流中获取的数据包;簇列表Qc包含但不限 于以下三个属性数据包序列、数据包数量、簇对象特征值;临时数据包列表Lp包含但不限 于以下四个属性数据包序列、数据包数量、簇对象特征值、最后一个数据包的时间Tlast ;第2步从步骤一获取的网络数据流中读取一个数据包;记该数据包的时间为Tp, 并设定数据包数量的初值为0 ;第3步将第2步或者第4步获取的数据包添加至临时数据包列表Lp,其数据包 数量属性值增加1,并记录临时数据包列表Lp中最后一个数据包的时间Tlast = Tp ;第4步判断网络数据流是否结束;若结束,则以临时数据包列表Lp中数据包构 造一个簇对象C,获得簇对象C的特征值,并添加至簇列表Qc中,结束分簇,转到步骤三;否 则读取网络数据流的下一个数据包,记录其时间Tp ;第5步判断Tp_Tlast > T是否成立。如果不成立,将第4步获取的数据包加入 到临时数据包列表Lp,其数据包数量的属性值增加1,并更新Tlast = Tp,回到第4步;如果 Tp-Tlast > T成立,且临时数据包列表Lp中数据包个数大于等于Smin,则以临时数据包列表 Lp中数据包构造一个簇对象C,添加至簇列表Qc中,然后回到第4步;如果Tp-Tlast > T成 立,且Lp中数据包个数小于Smin,则丢弃临时数据包列表Lp,然后回到第4步。簇集合即为簇列表Qc中存储的簇对象,用n表示包含的簇对象的数量,n为正整 数。第4步中所述获得簇对象C的特征值的方法为如果簇对象C包含的数据包数量 小于一个人为设定的正整数m,其中m > Smin,则以临时数据包列表Lp中数据包的方向和长 度序列拼接串作为特征值;否则,以该簇对象C的均值、数据包纯度、时间跨度、最值等属性 进行拼接,生成特征值。步骤三、构造周期性簇集合,并判断其是否构成周期性子序列;从步骤二得到的簇集合中挑选出具有相同特征值并且出现的时间间隔差小 于周期性最大容忍方差Ma (Ma为一个人为设定值)的簇对象,记录其数量为Mum ;如果 Mum ≥ Mumi (Mumi为一人为设定正整数),则用挑选出的簇对象构成周期性簇集合,再判断其 是否构成周期性子序列。具体操作步骤为第1步对步骤二中获取的簇集合,按照特征值进行分类,将特征值相同的簇对象 放在一个集合中,记录每个集合中的簇对象数量Mum ;第2步依次判断每个集合中的簇对象数量是否满足Mum≥ Mum”如果不满足,则 将该集合删除;第3步依次对簇对象数量Mum不小于Mrn^的集合进行操作,判断其是否存在周 期性特征。具体操作为①对该集合中每两个相邻的簇对象的起始时间做差值运算,得到相邻簇对象之间 的时间间隔;
②得到相邻簇对象之间的时间间隔的平均方差;③如果该平均方差小于人为设定的周期性最大容忍方差Ma,则认为该集合中的簇 对象构成周期性子序列;否则,执行第④步;④依次使用第①步中得到的每一个时间间隔做如下操作到原始网络数据流中, 以该时间间隔的两个相邻簇对象中,在前的簇对象的起始时间为起点,该时间间隔为步长, 分别向前和向后查询与该集合的特征值相同的数据包序列;若存在这样的数据包序列,则 将其作为簇对象按时间顺序存储到一个新的集合中,然后返回到第①步对该集合进行操 作;否则,结束对该时间间隔的操作。有益效果与已有技术相比较,本发明方法具有如下优点1.可使用程序自动判断网络数据流中是否存在周期性子序列,分析效率高;2.可做到网络数据流实时获取,实时分析;3.准确性高。


图1为本发明关于针对网络数据流中周期性子序列的检测方法的一种具体实施 方式的网络数据流时序图;图2为本发明关于针对网络数据流中周期性子序列的检测方法的一种具体实施 方式的周期性子序列时序图。
具体实施例方式下面结合附图和具体实施例对本发明技术方案进行详细描述。本实施例的操作步骤为步骤一、定义簇间最小时间间隔值为1秒,构成最小簇所需要的网络包的个数为 2。实验中,使用到主机A和主机B,主机A的IP地址为172. 16. 2. 8,主机B的IP地址为 172. 16. 2. 7,在主机A上运行与主机B通信的一个应用程序,并绘制网络数据流时序图,如 1所示,图1中的X轴为时间轴,Y轴表示网络数据包流量,柱状图形代表对应时间点通信的 网络数据包流量,X轴右侧的柱状图形代表从主机B发往主机A的数据包,X轴左侧的柱状 图形代表从主机A发往主机B的数据包。柱状图形顶端的数值为数据包大小的具体数值。 图中与Y轴平行的线为整秒分隔线,S卩两条整秒分隔线之间的数据包位于同1秒内。将获得的网络数据包存储于以数据包时间和数据包大小组成的二元组Data中, 即 Data = [(440. 45, -6), (440. 59,-308),(450.46,-6),(450. 47,3),(451. 26,4), (451. 37,28),(451.37,-6),(456. 97,4),(457. 17,28),(457.18,-6),(460.47,-6), (460. 47,3),(467.53,1),(470. 47,-6),(470. 47,3),(473. 0,4),(473. 2,32),(475.4, 4),(475.6,40),(480.22,4),(480. 41,32), (480. 51,-6),(480.51,3),(480. 55,-6), (480. 74,-20),(490. 51,-6),(490. 51,3), (490. 8,1),(490. 99,1),(500. 52,-6),(500. 52, 3),(501.35,1),(501.56,1),(510.52,-6),(510.52,3),(511.53,1),(511.72,1), (520. 52,-6),(520. 53,3), (522. 04,1),(522. 25,1),(530. 53,-6),(530. 53,3), (532. 62, 1),(532. 84,1),(540. 53,-6)]。
6
步骤二、对步骤一得到的网络数据包进行分簇,得到簇集合,并计算簇特征值,以 特征值将簇集合中簇分类。具体操作步骤如下第1步构造一个簇列表Qc和一个临时数据包列表Lp ;簇列表Qc用于存储簇对 象C,该对象代表簇特征值相同的一类簇;临时数据包列表Lp用于存储从网络数据流中获 取的数据包。第2步从步骤一中获取的网络数据流,即二元组Data中依次读取数据包到临时 数据包列表Lp。第3步在第2步的读入过程中,如果读入的数据是Data最后一个数据,即当前网 络数据流结束,则转至第5步操作;否则判断当前读入数据的时间值与Lp最后一个数据时 间值之差是否大于簇间最小间隔(1秒),如果大于则转至第4步操作,小于则将当前读入数 据添加至Lp末尾;进行第2步的操作。第4步此时临时数据包Lp里的数据为在时序关系上最紧密的数据,判断Lp里 数据包总量是否大于构成最小簇的必须个数,如果大于,则Lp里的数据包集合构成了新的 簇,计算簇特征值,并以特征值为关键字添加到簇列表Qc中。如果小于,则Lp里数据包总 量不符合成簇条件,清空Lp,并将第三步中的当前读入数据置进Lp。第5步判断临时数据包列表Lp是否符合构成簇条件,符合则计算簇特征值,将其 加入到Qc;不符合则清空。经过上述步骤,得到的簇集合及簇特征值如下第1 簇(440. 45,-6),(440. 59,-308);簇特征值:-6_308 ;第2 簇(450. 46,_6),(450. 47,3), (451. 26,4), (451. 37,28),(451. 37,-6);簇 特征值-6+3+4+28-6 ;第3 簇(456. 97,4), (457. 17,28),(457. 18,-6);簇特征值+4+28-6 ;第4 簇(460. 47,_6),(460. 47,3);簇特征值:_6+3 ;第5 簇(470. 47,_6),(470. 47,3);簇特征值:_6+3 ;第6 簇(473. 0,4), (473. 2,32);簇特征值+4+32 ;第7 簇(475. 4,4), (475. 6,40);簇特征值+4+40 ;第8 簇(480. 22,4),(480. 41,32),(480.51,-6),(480. 51,3),(480. 55,-6), (480. 74,-20);簇特征值+4+32-6+3-6-20 ;第9 簇(490. 51,-6),(490. 51,3), (490. 8,1),(490. 99, 1);簇特征 值-6+3+l+l ;第10 簇(500. 52,-6),(500. 52,3),(501. 35,1), (501. 56,1);簇特征 值-6+3+l+l ;第11 簇(510. 52,-6),(510. 52,3),(511. 53,1), (511. 72,1);簇特征 值-6+3+l+l ;第12 簇:(520. 52,_6),(520. 53,3);簇特征值:_6+3 ;第13 簇(522. 04,1),(522. 25,1);簇特征值+1+l ;第14 簇(530. 53,_6),(530. 53,3);簇特征值:_6+3 ;第15 簇(532. 62,1),(532. 84,1);簇特征值+1+l ;步骤三、构造周期性簇集合,并判断其是否构成周期性子序列;
第1步对步骤二中获取的簇集合,按照特征值进行分类,将特征值相同的簇对象 放在一个集合中,记录每个集合中的簇对象数量Mum;此时,簇列表Qc为Qc = {“-6-308”: [[(40. 45,-6),(440. 59,-308)]],‘‘-6+3+4+28-6,, [[ (450. 46,-6),(450. 47,3),(451. 26,4),(451. 37,28), (451. 37,-6)]],“+4+28-6” [[(456.97,4),(457. 17,28),(457.18,-6)]],“-6 + 3” [ [ (460. 47,-6),(460. 47, 3) ] , [ (470. 47, -6) , (470. 47, 3)], [(520. 52,-6),(520. 53,3)], [ (530. 53,-6),(530. 53,3)]],“+4+32” [[(473.0,4),(473.2,32)]],“+4+40”[[ (475.4,4),(475.6,40)]],“+4+32-6+3-6-20” [[(480. 22,4),(480. 41,32), (480.51,-6),(480.51,3), (480. 55,-6),(480. 74,-20)]],"-6 + 3 + 1 + 1,, [[(490. 51,-6),(490. 51,3), (490. 8, 1) , (490. 99, 1)], [(500. 52,-6),(500. 52,3),(501.35,1),(501.56,1)],[(510.52,-6),(510.52,3), (511. 53,1), (511. 72,1)]],“+1+1 ” [ [ (522. 04,1),(522. 25,1) ],[ (532. 62,1),(532. 84,1) ] ]}第2步依次判断每个集合中的簇对象数量是否满足Mum ^ 2,如果不满足,则将 该集合删除;此时,簇列表Qc为Qc = { “-6+3” [[(460. 47,-6),(460.47,3)],[(470. 47, -6), (470.47,3)], [(520. 52,-6),(520. 53,3)], [ (530. 53,-6),(530. 53,3)]],"-6 + 3 + 1 + 1,, [[(490. 51,-6),(490. 51,3), (490. 8, 1) , (490. 99, 1)], [(500. 52,-6),(500. 52,3),(501.35,1),(501.56,1)],[(510.52,-6),(510.52,3), (511. 53,1),(511. 72,1)]]}第3步依次对簇对象数量Mum不小于2的集合进行操作,判断其是否存在周期性 特征。具体操作为①对该集合中每两个相邻的簇对象的起始时间做差值运算,得到相邻簇对象之间 的时间间隔;②得到相邻簇对象之间的时间间隔的平均方差;③如果该平均方差小于人为设定的周期性最大容忍方差Ma = 0. 2,则认为该集合 中的簇对象构成周期性子序列;否则,执行第④步;④依次使用第①步中得到的每一个时间间隔做如下操作到原始网络数据流中, 以该时间间隔的两个相邻簇对象中,在前的簇对象的起始时间为起点,该时间间隔为步长, 分别向前和向后查询与该集合的特征值相同的数据包序列;若存在这样的数据包序列,则 将其作为簇对象按时间顺序存储到一个新的集合中,然后返回到第①步对该集合进行操 作;否则,结束对该时间间隔的操作。对Qc中簇特征值” -6+3+1+1,,处理过程为对其中相邻簇起始时间作差值运算,得到时间间隔为[10. 01,10],该时间间隔平 均方差小于最大容忍方差Ma,但是由于该簇并没有包含原始网络数据流中以“-6-3+1+1” 为周期性子序列周期性出现的所有时间点。因此该簇不能构成周期性子序列(以该簇为周期性子序列出现的时间点应为(540. 53-440. 45)/10_1 = 9个,而该簇只包含3个)。对Qc中簇特征值” -6+3”处理过程为对其中相邻簇起始时间作差值运算,得到时间间隔为[10,50. 1,10.01],因为平 均方差大于最大容忍方差Ma,则依次对10,50. 1,10.01这三个时间间隔,以该时间间隔的 两个相邻簇对象中,在前的簇对象的起始时间为起点,该时间间隔为步长,分别向前和向后 查询与该集合的特征值相同的数据包序列;若存在这样的数据包序列,则将其作为簇对象 按时间顺序存储到一个新的集合中,得到Qc = { “-6+3” [[(450. 46,-6),(450. 47,3)], [(460. 47,-6),(460.47,3)],[(470.47,-6),(470. 47,3)],[(480.51,-6),(480.51,3)], [(490. 51,-6),(490. 51,3)], [(500. 52, -6), (500. 52,3)], [(510. 52, -6), (510. 52,3)], [(520. 52,-6),(520. 53,3)], [ (530. 53,-6),(530. 53,3)]]} 然后,对更新后的簇特征值列表中的相邻簇起始时间作差值运算,得到特征值 为”-6+3”的相邻簇之间时间间隔为[10. 01,10,10. 04,10,10. 01,10,10,10. 01],该时间间 隔平均方差小于最大容忍方差Ma,又因为以原始网络数据流中以”-6+3”为周期性子序列出 现的时间点应为(540. 53-440. 45)/10_1 = 9个,而该簇集合包含了所以的周期性子序列时 间点,因此认为该集合中簇对象构成周期性子序列。以该簇集合中的数据绘制时序图,如图 2所示,X轴为时间轴,Y轴为网络数据包流量,柱状图形代表对应时间点通信的网络数据包 流量,X轴右侧的柱状图形代表从主机B发往主机A的数据包,X轴左侧的柱状图形代表从 主机A发往主机B的数据包。柱状图形顶端的数值为数据包大小的具体数值。图中与Y轴 平行的线为整秒分隔线。图2中的子序列具有周期性特征。
权利要求
一种针对网络数据流中周期性子序列的检测方法,其特征在于首先给出相关术语的定义定义1.序列以时间为序的数据包的集合;定义2.子序列若序列X,Y满足序列X中所有的数据包均存在于序列Y中,且X中所有的数据包的顺序与Y中数据包顺序一致,则X是Y的一个子序列;定义3.序列的特征值由既定的特征向量组成的序列的属性;定义4.簇簇是在时序上关系紧密的数据包的集合,而簇与簇之间的数据包在时序关系上相对疏远,具体判断标准为当相邻两个数据包的时间间隔不大于一个人为设定时间值T,则判断这两个数据包在同一个簇内;否则判断这两个数据包分属于两个簇;基于上述定义,本发明的一种针对网络数据流中周期性子序列的检测方法的具体操作步骤如下步骤一、获取网络数据流,并定义簇间最小时间间隔值为T,构成最小簇所需网络包的个数为Smin,Smin为正整数;步骤二、对网络数据流进行分簇,得到簇集合;其具体操作步骤如下第1步构造一个簇列表Qc和一个临时数据包列表Lp;簇列表Qc用于存储簇对象C,;临时数据包列表Lp用于存储从网络数据流中获取的数据包;簇列表Qc包含但不限于以下三个属性数据包序列、数据包数量、簇对象特征值;临时数据包列表Lp包含但不限于以下四个属性数据包序列、数据包数量、簇对象特征值、最后一个数据包的时间Tlast;第2步从步骤一获取的网络数据流中读取一个数据包;记该数据包的时间为Tp,并设定数据包数量的初值为0;第3步将第2步或者第4步获取的数据包添加至临时数据包列表Lp,其数据包数量属性值增加1,并记录临时数据包列表Lp中最后一个数据包的时间Tlast=Tp;第4步判断网络数据流是否结束;若结束,则以临时数据包列表Lp中数据包构造一个簇对象C,获得簇对象C的特征值,并添加至簇列表Qc中,结束分簇,转到步骤三;否则读取网络数据流的下一个数据包,记录其时间Tp;第5步判断Tp-Tlast>T是否成立;如果不成立,将第4步获取的数据包加入到临时数据包列表Lp,其数据包数量的属性值增加1,并更新Tlast=Tp,回到第4步;如果Tp-Tlast>T成立,且临时数据包列表Lp中数据包个数大于等于Smin,则以临时数据包列表Lp中数据包构造一个簇对象C,添加至簇列表Qc中,然后回到第4步;如果Tp-Tlast>T成立,且Lp中数据包个数小于Smin,则丢弃临时数据包列表Lp,然后回到第4步;簇集合即为簇列表Qc中存储的簇对象,用n表示包含的簇对象的数量,n为正整数;步骤三、构造周期性簇集合,并判断其是否构成周期性子序列;从步骤二得到的簇集合中挑选出具有相同特征值并且出现的时间间隔差小于周期性最大容忍方差Ma的簇对象,记录其数量为Mum,其中,Ma为一个人为设定值;如果Mum≥Mum1,Mum1为一人为设定正整数,则用挑选出的簇对象构成周期性簇集合,再判断其是否构成周期性子序列;具体操作步骤为第1步对步骤二中获取的簇集合,按照特征值进行分类,将特征值相同的簇对象放在一个集合中,记录每个集合中的簇对象数量Mum;第2步依次判断每个集合中的簇对象数量是否满足Mum≥Mum1,如果不满足,则将该集合删除;第3步依次对簇对象数量Mum不小于Mum1的集合进行操作,判断其是否存在周期性特征;具体操作为①对该集合中每两个相邻的簇对象的起始时间做差值运算,得到相邻簇对象之间的时间间隔;②得到相邻簇对象之间的时间间隔的平均方差;③如果该平均方差小于人为设定的周期性最大容忍方差Ma,则认为该集合中的簇对象构成周期性子序列;否则,执行第④步;④依次使用第①步中得到的每一个时间间隔做如下操作到原始网络数据流中,以得该时间间隔的两个相邻簇对象中,在前的簇对象的起始时间为起点,该时间间隔为步长,分别向前和向后查询与该集合的特征值相同的数据包序列;若存在这样的数据包序列,则将其作为簇对象按时间顺序存储到一个新的集合中,然后返回到第①步对该集合进行操作;否则,结束对该时间间隔的操作。
2.如权利要求1所述的一种针对网络数据流中周期性子序列的检测方法,其特征在 于步骤第4步中所述获得簇对象C的特征值的方法为如果簇对象C包含的数据包数量小 于一个人为设定的正整数m,其中m > Smin,则以临时数据包列表Lp中数据包的方向和长度 序列拼接串作为特征值;否则,以该簇对象C的均值、数据包纯度、时间跨度、最值等属性进 行拼接,生成特征值。
全文摘要
本发明涉及一种针对网络数据流中周期性子序列的检测方法,属于信息安全技术领域。本发明方法的步骤为①获取网络数据流,并定义簇间最小时间间隔值和构成最小簇所需网络包的个数;②对网络数据流进行分簇,得到簇集合;③构造周期性簇集合,并判断其是否构成周期性子序列。本发明方法能够实现用程序自动判断网络数据流中是否存在周期性子序列,分析效率高;可做到网络数据流实时获取,实时分析,并且准确性高。
文档编号H04L29/06GK101827092SQ20101013483
公开日2010年9月8日 申请日期2010年3月30日 优先权日2010年3月30日
发明者王崑声, 胡昌振, 蒋臻甄 申请人:北京理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1