第一章绪论
1.1研究背景和意义
随着Internet的不断发展,基于网络的通讯技术、通信协议也获得了飞速的发展。现今的社会是一个信息化的社会,Internet作为信息传输的主要途径,在人们的日常生活中的影响力越来越大,成为人们生活和工作学习中的重要组成部分。除了传统的应用层协议(如HTTP、FTP、POP3、HTTPS),P2P (peer to peer)技术是最近十年来发展最迅速的,据统计P2P流量已占网络流量总量的60%-80%[45]。P2P网络本来就是一个网络共享平台,所以很有可能用户无意中把一些敏感文件,信息共享到这个平台上去,他人可以从中下载到,窥探到一些机密信息,使受害者受到巨大损失,比如日本的Winny软件泄密事件。由于P2P网络的特性,下载速度特别快,所以可能导致内网带宽耗尽,影响网络正常应用。所以P2P网络存在敏感信息的泄露,带宽的滥用等缺陷。随着Internet的重要性越来越高,相应的问题也就越来越多。Internet的网络结构日趋复杂,使得Internet的安全性,可管理性等方面的问题也逐渐显现出来。对网络行为进行深入分析也成为了网络管理者刻不容缓的任务。如何给众多的Internet用户提供一个高效、可靠、安全的使用环境,是网络管理者亟需解决的问题。对于海量的网络资源,如何对其分类,如何区分有害的和无害的资源,区分重要和冗余的资源,都是对网络资源进行规划管理不容忽视的问题。
………………
1.2国内外研究现状
1.2. 1基于端口的研究现状
基于端口的协议识别技术是早期最标准的识别方法,这种方法之所以有效是因为早期的传统协议都使用IANA (Internet Assigned Numbers Authority)分配的固定端口[21]。然而随着技术的革新,很多应用和协议(远控木马、音频通讯软件等)开始使用动态端口(动态端口的范围是从1024到65535。之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配)来进行数据传输,或者通过端口复用技术使用其他协议使用的周知端口(well-knownport,例如http的80端口,ftp的21端口等)来避免被基于端口的识别技术探测到。这些技术也就导致了基于端口的协议识别技术正确率无法得到保证[7,9]。这种方法存在着一个严重的问题,就是如何维持一个庞大的特征库。互联网的众多协议是不断更新的,对应的协议特征也不是一成不变的。不对特征库进行更新会降低识别的精确度,实时更新又是很耗时耗力的。针对这个问题,研究者们又提出了一个基于字节为单位生成签名特征的方法。Haffiier于2005年,Ma于2006年[24]. Mantia于2010年[25]相继提出了随机分组检查技术(Stochastic Packet Inspection,SPI),这种方法主要用来识别基于TCP的应用层协议。他们收集了 HTTP,FTP, Skype和SSH的训练数据,并以数据包开始的部分字节的信息熵为基础构建了用于识别各种协议的签名特征库。
………………
第二章协议识别相关技术
2.1基于端口的协议识别
在基于TCP/IP协议族的因特网中,TCP和UDP都采用16bit的端口号来识别应用程序。一项服务一般通过知名端口号来识别的。例如,对于每个TCP/IP实现来说,Telnet服务的TCP端口号都是23,每个FTP服务的TCP端口号都是21,每个TFTP服务器的UDP端口号都是69。任何TCP/IP实现所提供的服务都用知名的1-1023之间的端口号,这些知名端口号由 Internet 号分配机构(Internet Assigned Numbers Authority,lANA)来管理,表 2.1 是一些常用传统协议对应的端口号。正是有了这种应用协议和端口的一一对应关系,所以可以根据数据包头部的端口号字段来识别其所应用的协议。早期的很多网络分析或网络探测软件都使用了基于端口的协议识别方法。如第一章中所述,因为很多应用协议使用动态端口和端口复用或其他反侦测手段,基于端口的识别技术无法对此类应用协议进行正确的识别。
……………
2.2基于包负载的协议识别
基于包负载(payloaddata)的协议识别方法就是在数据包的负载中查找特殊的字段,判断是否包含某个应用协议的关键特征,这里的包负载就是指接收到的数据顿的原始数据。不同的应用协议都有其特殊的协议规范,这些规范包括协议传输数据使用的端口,一些有规律的bit序列,一些特定的字符或字符串。通过对协议的深入分析,找出协议的这些具体规范,提取部分规范作为特征数据,这些特征数据就可以作为该协议的签名特征,通过在数据包的负载中查找这些签名特征来判断该数据流属于哪个协议。图2.1即为基于负载的协议识别的基础流程。整个流程主要包含两个模块,一个是特征库,一个是DPI (Deep packet inspection)识别器。特征库就是用来存放应用层协议特征签名的对照表,每个签名都有一个一一对应的协议,具体的特征签名的语法是和选择的模式匹配算法对应的。DPI识别器就是将报文的内容逐个与规则库中的特征签名进行匹配,如果匹配成功的,就认为该数据包和其对应的数据流为签名对应的协议。基于包负载的协议识别技术根据匹配方式的不同分为基于关键字的识别、基于正则表达式的识别和基于规则的识别。BF算法只是简单而缓慢地通过一段文本,以寻找指定的字符串。BF算法差不多是最简单的算法,并且不涉及任何特殊的魔法。基本思想就是利用一个二重循环,把主串S的首字符和模式串P的首字符进行比较,如果相等,就继续比较两者的下一个字符,如果不相等,就从主串S的下一个字符和P中第一个字符进行比较,重复以上过程。(m、n分别为S和T的长度)。
……………
第三章基于FR和FSS混合生成的特征选择算法........... 16
3. 1特征选择算法研究......... 16
3. 2基于混合生成的特征选取算法......... 21
3. 3实验分析......... 26
3. 4本章小结......... 31
第四章协议特征的处理和匹配......... 32
4. 1特征数据结构......... 32
4. 2特征空间 .........32
4. 3典型应用协议分析和特征选取......... 33
4.4基于K-L距离的HCM算法 .........37
4.5基于KL-HCM算法的协议识别器的训练 .........40
4. 6协议识别评价指标......... 44
第五章实验设计和分析......... 48
5. 1数据准备......... 48
5. 2重要参数的选择实验 .........50
5. 3协议识别实验测试与结果分析.........51
第五章实验设计和分析
5.1数据准备
实验使用Wireshark工具来进行数据包的抓取工作,Wireshark是一款流行的网络包分析工具,这个工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。与很多其他网络工具一样,Wireshark也使用pcap network library来进行封包捕捉。Wireshark可以捕获多种网络接口类型的包,并且可以通过多种方式过滤数据包以及保存捕获的数据包我们将抓取的数据包保存为pcap文件,图5.1为wireshark抓包界面图。实验中的数据是学校校园网某子网段捕获的,抓取数据包的时间段均勻分布在周一到周日以及每天的早中晚。抓取的过程中设置一定的规则,过滤掉ICMP包、ARP/RARP包、广播数据包和多播数据包等类型的数据包。实验中总共抓取了大约5.3G的数据。Wireshark直接抓取保存的数据都是经过详细解析的单个数据包,而实验中用到的数据单位是一个数据流或者称之为一个会话(TCP会话或UDP会话),因此需要将属于同一个会话的数据包组合起来还原一个数据流。协议识别的核心算法就是基于流的,所以有效还原和管理流信息是很重要的。一个流是根据一个五兀组<5011比6 IP, destination IP、source port、desination port, UDP or TCP>来描述的。流信息管理如图5.2所示。对于TCP会话而言,以三次握手的最后一个包为流开始的标记,当接收到双向TCP标志位Fin置1或者间隔1分钟无新数据包时,会话结束。对于UDP会话,以第一个接收到的数据包作为会话开始的标识,如果60秒后还没有收到新的数据包,则最后一个接收到的包就为此UDP会话结束的标识。
……………
结论
本文使用Kullback-Leibler差异来进行协议识别,并利用HCM算法思想来训练协议模型库。在特征选择上,提出了两个混合生成的特征选择算法,将传统的特征选择算法FR和FSS有效结合起来。随着网络技术的进步,基于流统计特性的协议识别方法也会不断的发展。本文使用的方法也有一些需要进一步研究的地方,具体表现在以下几个方面:
(1)协议特征:本文实验中已经找到了一个不错的特征子集,但还是有提高的空间。首先是分析提取出更多的协议特征来扩展整个特征空间,使得有更多的特征来覆盖更多的应用协议。
(2)训练数据集:面对复杂的网络环境和海量的数据,选取合适训练数据集越来越重要,训练数据要具有明显的代表性,过多的训练数据会增加系统的开销,所以如何选取合适训练数据集也是协议识别待研究的重要问题。
(3)统计模型的选择:本文使用聚类算法HCM来训练模型库,HCM算法简单、快速。在处理大数据集时该算法也是相对可伸缩和高效的。但HCM算法必须事先给出K,而且对初值敏感,对于不同的初始值可能会导致不同的结果。因此如何选取或创建合适的统计模型或统计分类算法,也是将来需要深入研究的内容。
……………
参考文献(略)