一种基于协议分析的p2p流量识别方法

文档序号:7945868阅读:121来源:国知局

专利名称::一种基于协议分析的p2p流量识别方法
技术领域
:本发明是针对P2P流量识别方法的研究,提出了一种基于协议分析的P2P流量识别方法。通过对P2P应用程序中用到的协议的分析,得到针对该协议的特定模式,并将这个模式设计成规则,补充到IDS中。涉及新一代通信网络业务识别
技术领域

背景技术
:自上世纪90年代以來,P2P在网络中的应用越來越广泛,P2P应用也开始多元化。P2P流量在因特网总流量中占据了极其重要的地位。而且,对于P2P应用的关注也越来越多。因此,在很多情况下,对P2P流量的检测是十分必要的。上世纪90年代,对P2P流量检测是很容易的,因为当时P2P协议使用特定应用的TCP或UDP端口号。然而,许多P2P应用开始使用随机端口号来逃避检测,如今,P2P应用软件甚至可以通过伪装源流量以逃避检测。对P2P流量特征的早期研究主要集中在默认网络端口的寻址上。有的文献提出了针对多数P2P应用的签名方法。然而,这些研究并没有提出它们对各自签名的精确性、规模以及健壮性的评价,没有强调所采用的方法,也没有考虑相关协议。基于流量分类的签名主要用在入侵和异常检测的网络安全环境中。
发明内容技术问题我们提出了识别P2P流量的一种方法。该方法基于以下歩骤分析相关协议;通过对IP包的分析,得到针对某种P2P协议的模式;把这种模式编写成可以填充到IDS中的规则;利用这种有效的IDS对得到的识别模式进行网络检测。注意,采用这种类IDS方法不会给网络造成任何延迟,只是在它建立位置的监测点上有少量花费。另外,此方法也可以加以扩展,以便能够分析那些可以对流量进行加密的P2P协议。该P2P流量检测工具已经成功配置,现在在一个局域网中得到应用。技术方案本发明提出了一种基于协议分析的P2P流量检测方法。该方法适用于0penNap,WPN和FastTrack协议,应用在WinMx和KaZaA中。一旦发现针对相关协议的特定模式,就能够将合适的规则填入IDS中,以识别这种模式。在我们给出的例子中,我们按照SNORT规则标识特定模式。以WinMx为例,介绍0penNap的识别方法。1.协议分析OpenNap协议基于一系列中央服务器所有要加入0penN邻网络的客户端都要与其中一个服务器建立一个TCP连接。一个中央服务器维护着用户共享的文件列表,但却并不存有任何文件。和C/S模式一样,每个用户都可以向服务器询问哪些端存储有请求文件,但下载的过程却是端与端之间通过一个直接的TCP连接完成。以下的操作过程一步一歩地循环建立,在客户端产生一种行为并分析由此产生的流量。(1)客户一〉服务器连接和登录在下载之前,用户必须指定某些信息,例如用户名,密码,特别是中心服务器列表。要同一个服务器建立TCP连接,OpenNap协议会发送一个登录信息;该信息包含用户信息用户名,密码,监听端口,客户端类型以及连接的线速度。该阶段建立的流量包含软件名和版本。这些信息可以用来建立adhocIDS规则(规则2)(2)服务器-〉客户端对登录信息的响应要响应一个客户端的的登录请求,服务器返回一个包含有字符串VERSI0N〈ver〉,SERVER〈server-name〉以及其他内容(例如字符串Welcome和对活动用户、共享文件的统计信息)的信息。该信息通过多个包传递,因为以太网上使用的TCP协议限制MSS为1460字节。〈VERSI0Nsw〉〈SERVERname〉〈Welcome〉"statistics"<info>以太网中响应信息的第一个包有着固定的格式,因此可以应用在IDS中,來识别网络中的0penN邵连接。(3)客户一〉服务器共享文件目录收到服务器的响应后,客户端发送其自身的共享文件目录,格式如下<HD:\〉〈Path〉〈Filename〉,此类信息也能在IDS规则中用到,目的是显示一个客户端共享的文件名(规则4)。(4)客户端-〉服务器査询请求为向服务器提交请求,用户必须填写WinMx图形界面的一个表格,其中包含几个有关请求文件的关键字服务器将利用这些关键字査询目录。服务器事实上是返回文件名中包含这些关键字的文件。其他搜索原则可以指定为像存储端性能等的信息。客户端向服务器发送的请求格式如下〈FILENAMECONTAINS"criteria-words"〉〈UNESPEED〉〈adjectives〉〈line-type〉这种消息结构也可以用来书写检测0penNap的IDS规则(规则4)。(5)服务器-〉客户端査询响应响应要返回一个满足所有査询条件的所有文件列表。除了文件名,列表中的元素还要包含存储端的IP地址,完整的最短路径,文件的格式,文件大小,还有其他文件类型信息(例如比特率,一个MP3文件的频率和持续时间)。服务器的响应格式如下〈path\filenameXOO..>〈size〉<bitrate>可以发现,服务器并没有对返回列表进行过滤列表中含有名字中包含查询字的所有文件。所有的查询优化条件(例如文件类型是.iso,.mpe,.doc,)都是由请求端完成的。(6)客户端-〉服务器下载通知客户端收到服务器响应后,WinMx图形界面上就会显示服务器提供的列表。如果用户选择了其中的一个,客户端就进入了对该文件的下载请求阶段。第一个操作是产生一个发往中心服务器的具有如下格式的信息〈storing_nickname>〈path\filename>(7)服务器-〉客户端存储端完整的IP地址对下载通知的响应是一条能够唯一识别存有请求文件的端的完整地址请求端能够与其建立连接的IP地址和端口号。完成上面7步,接下来就进入了文件下载阶段。当一个存储端处在一个有防火墙保护的网络中时,该协议就与没有防火墙保护时不同。因此,我们两种情况都要考虑。一方面,没有防火墙保护的端可以接受任何进入的TCP连接。另一方面,如果一个客户端被防火墙保护,防火墙可能阻止所有进入的TCP连接(包括文件下载)。为解决这个问题,两端要借助于服务器。由服务器通知有防火墙的端与请求端建立TCP连接有防火墙的端向请求端建立"被动连接",同时也是文件的上传端。TCP连接一旦建立,防火墙就被绕过,也就可以进行文件传输了。但如果两端都有防火墙保护,那么文件交换就是不可能的。(1)没有防火墙的下载没有防火墙,请求端就可以与存储端建立直接的TCP连接,利用从服务器传回来的IP地址。3次握手以后,存储端将发送一个包含值"1"的字节。请求端收到这个字节以后,将返回一个包含单词"GET"的字节串,其后是请求文件的文件名及下载点的偏移量。这次信息交换后,文件传输就开始了。如图1所示。(2)有防火墙的下载包含两个阶段第一阶段TCP连接建立一个请求端想要下载一个文件,该文件存储在另外一个有防火墙保护的客户端中。防火墙的存在阻止了请求端到存储端的TCP连接的打丌。在启动阶段,存储端就将自己是受防火墙保护这一信息告知于服务器。服务器又将这一信息同存储端的完整地址一起交付给请求端(图2(a),messagel和2)。存储端受防火墙保护的信息和赋给端口号0—起编码(图2(a),messagel和2)。一旦请求端收到服务器的消息-一存储端是受防火墙保护的,就返回给服务器一个收到信息的拷贝(图2(a),message3)。然后,服务器返回给存储端一个带有请求端名字即请求文件名的信息(图2(a),message4)。存储端返回给服务器这个信息的拷贝(图2(a),message5)。最后,服务器给存储端发送请求端的完整的IP地址。现在就可以在请求端和存储端之间建立TCP连接了。第二阶段文件传输连接建立后,请求端发送一个值为1的字节(图2(b))。存储端发送一个包含有"SEND"单词的字节串作为响应,字节串后面是请求文件的名字和大小。请求端接受到该信息以后,发送文件传输起始点的偏移量。之后,文件传输丌始。图2(b)中的两个起始信息可以用来书写识别OpenN邻协议产生的流量的规则。2.SNORT规则前面对0penNap协议做了分析,这一部分主要讲述SNORT规则。规则1_#catchtheserverwelcomeansweralerttcp$H0ME—NETany-〉$EXTERNAL_NETany(content:"VERSION";offset:4;d印th:12;content:"SERVER";offset:ll;depth:18;flow:from—server;flags:A氺PA;msg:,,OpenNapServerConnection,,;classtype:policy-violation;)该规则可以允许识别使用OpenN即协议的所有软件。IDS只要在从服务器端发出的TCP载荷中查找字符串VERSION和SERVER即可。规则2_Wcatchtheserverwelcomeansweralerttcp$H0ME—NETany-〉$EXTERNAL—NETany(content:WinMx;offset:4;nocase;flow:established;flags:PA;msg:,,WinMxConnectiontoOpenNapServer,,;classtype:policy-violation;)该规则分析网络流量,检查是否有包含"WinMx"的TCP载荷,同时,试图捕获WinMx应用中从客户端发往服务器的登陆信息。'规则3_ftcatchthenameofthefilessharedbytheclientalerttcp$H0ME—NETany-〉$EXTERNAL—NETany(msg:"Sharedfilelist,Client—ServerOpenN邻,,;flow:established;flags:!S;flags:!SA;content:,,122433a5c|,,;nocase;offset:4;depth:9;tag:host,5,packets,src;)_该规则从网络流量中取出客户间共享的文件目录。规则4_felertonquerysubmitalerttcp$H0ME—NETany-〉$EXTERNAL—NETany(content:"FILENAMECONTAINS";offset:4;depth:18;flow:established:flags:PA;msg:,,Querysubmitting,,;)_该规则在一个实体向中心服务器发出请求时发出警报。它能够在TCP载荷中识别出单词"FILENAMECONTA工NS"。规则5felertondownloadrequestsAlerttcp$H0ME—NETany〈-〉$EXTERNAL—NETany(content:"GET"''offset:0;depth:3;dsize:3;flow:established;flags:PA;msg:,,GETOpenNapDownloading,,;tag:session,2,packets;)该规则只有在规则1产生警报之后才能激发它能够捕获将要存储的文件名及TCP连接的另一端的地址。规则6_:_ftalertonuploadrequestsalerttcp$H0ME—NETany<-〉$EXTERNAL—NETany(content:"SEND";offset:0;depth:4;dsize:4;flow:established;flags:PA;msg:"SENDOpenNapDownloading',;tag:session,2,packets;)该规则与5类似它搜寻字符串"SEND",SEND用于一个请求端向受防火墙保护的文件存储端发送的请求中。如果该规则满足,就能够得到请求文件的名字。图1是没有防火墙的下载过程。图2是存储端被防火墙保护的下载过程。权利要求一、一种基于协议分析的P2P流量识别方法,其基本流程为1.协议分析(1)客户->服务器连接和登录(2)服务器->客户端对登录信息的响应要响应一个客户端的的登录请求,服务器返回一个包含有字符串VERSION<ver>,SERVER<server-name>以及其他内容(例如字符串Welcome和对活动用户、共享文件的统计信息)的信息。<VERSIONsw><SERVERname><Welcome>”statistics”<info>(3)客户->服务器共享文件目录收到服务器的响应后,客户端发送其自身的共享文件目录,格式如下<HD:\><Path><Filename>(4)客户端->服务器查询请求客户端向服务器发送的请求格式如下<FILENAMECONTAINS“criteria-words”><LINESPEED><adjectives><line-type>(5)服务器->客户端查询响应服务器的响应格式如下<path\filename><00..><size><bitrate><frequency><duration><nickname><ip><line-type>(6)客户端->服务器下载通知其中第一个操作是产生一个发往中心服务器的具有如下格式的信息<storing-nickname><path\filename>(7)服务器->客户端存储端完整的IP地址文件下载(1)没有防火墙的下载没有防火墙,请求端就可以与存储端建立直接的TCP连接,利用从服务器传回来的IP地址。3次握手以后,存储端将发送一个包含值“1”的字节。请求端收到这个字节以后,将返回一个包含单词“GET”的字节串,其后是请求文件的文件名及下载点的偏移量。这次信息交换后,文件传输就开始了。(2)有防火墙的下载包含两个阶段第一阶段TCP连接建立一个请求端想要下载一个文件,该文件存储在另外一个有防火墙保护的客户端中。在启动阶段,存储端就将自己是受防火墙保护这一信息告知于服务器。服务器又将这一信息同存储端的完整地址一起交付给请求端(图2(a),message1和2)。存储端受防火墙保护的信息和赋给端口号0一起编码(图2(a),message1和2)。请求端收到服务器的消息,就返回给服务器一个收到信息的拷贝(图2(a),message3)。然后,服务器返回给存储端一个带有请求端名字即请求文件名的信息(图2(a),message4)。存储端返回给服务器这个信息的拷贝(图2(a),message5)。最后,服务器给存储端发送请求端的完整的IP地址。现在就可以在请求端和存储端之间建立TCP连接了。第二阶段文件传输连接建立后,请求端发送一个值为1的字节(图2(b))。存储端发送一个包含有“SEND”单词的字节串作为响应,字节串后面是请求文件的名字和大小。请求端接受到该信息以后,发送文件传输起始点的偏移量。之后,文件传输开始。图2(b)中的两个起始信息可以用来书写识别OpenNap协议产生的流量的规则。2.由协议分析得出的SNORT规则规则1<tablesid="tabl0001"num="0001"><table><tgroupcols="1"><colspeccolname="c001"colwidth="100%"/><tbody></column></row><row><column><entrymorerows="1">#catchtheserverwelcomeansweralerttcp$HOMENET_any->$EXTERNAL_NETany(content:”VERSION”;offset:4;depth:12;content:”SERVER”;offset:11;depth:18;flow:from_server;flags:A*PA;msg:”OpenNapServerConnection”;classtype:policy-violation;)</entry></column></row></tbody></tgroup></column></row><table></tables>该规则可以允许识别使用OpenNap协议的所有软件。规则2<tablesid="tabl0002"num="0002"><table><tgroupcols="1"><colspeccolname="c001"colwidth="100%"/><tbody></column></row><row><column><entrymorerows="1">#catchtheserverwelcomeansweralerttcp$HOME_NETany->$EXTERNAL_NETany(content:WinMx;offset:4;nocase;flow:established;flags:PA;msg:”WinMxConnectiontoOpenNapServer”;</entry></column></row></tbody></tgroup></column></row><table></tables><tablesid="tabl0003"num="0003"><table><tgroupcols="1"><colspeccolname="c001"colwidth="99%"/><tbody></column></row><row><column><entrymorerows="1">classtype:policy-violation;)</entry></column></row></tbody></tgroup></column></row><table></tables>该规则分析网络流量,检查是否有包含“WinMx”的TCP载荷,同时,试图捕获WinMx应用中从客户端发往服务器的登陆信息。规则3<tablesid="tabl0004"num="0004"><table><tgroupcols="1"><colspeccolname="c001"colwidth="100%"/><tbody></column></row><row><column><entrymorerows="1">#catchthenameofthefilessharedbytheclientalerttcp$HOME_NETany->$EXTERNAL_NETany(msg:“Sharedfilelist,Client→ServerOpenNap”;flow:established;flags:!S;flags:!SA;content:”22433a5c|”;nocase;offset:4;depth:9;tag:host,5,packets,src;)</entry></column></row></tbody></tgroup></column></row><table></tables>该规则从网络流量中取出客户间共享的文件目录。规则4<tablesid="tabl0005"num="0005"><table><tgroupcols="1"><colspeccolname="c001"colwidth="100%"/><tbody></column></row><row><column><entrymorerows="1">#alertonquerysubmitalerttcp$HOME_NETany->$EXTERNAL_NETany(content:“FILENAMECONTAINS”;offset:4;depth:18;flow:established:flags:PA;msg:”Querysubmitting”;)</entry></column></row></tbody></tgroup></column></row><table></tables>该规则在一个实体向中心服务器发出请求时发出警报。它能够在TCP载荷中识别出单词“FILENAMECONTAINS”。规则5<tablesid="tabl0006"num="0006"><table><tgroupcols="1"><colspeccolname="c001"colwidth="100%"/><tbody></column></row><row><column><entrymorerows="1">#alertondownloadrequestsAlerttcp$HOME_NETany<->$EXTERNAL_NETany(content:”GET”;offset:0;depth:3;dsize:3;flow:established;flags:PA;msg:”GETOpenNapDownloading”;tag:session,2,packets;)</entry></column></row></tbody></tgroup></column></row><table></tables>该规则只有在规则1产生警报之后才能激发它能够捕获将要存储的文件名及TCP连接的另一端的地址。规则6<tablesid="tabl0007"num="0007"><table><tgroupcols="1"><colspeccolname="c001"colwidth="100%"/><tbody></column></row><row><column><entrymorerows="1">#alertonuploadrequestsalerttcp$HOME_NETany<->$EXTERNAL_NETany(content:“SEND”;offset:0;depth:4;dsize:4;flow:established;flags:PA;msg:”SENDOpenNapDownloading”;tag:session,2,packets;)</entry></column></row></tbody></tgroup></column></row><table></tables>该规则与5类似它搜寻字符串“SEND”,SEND用于一个请求端向受防火墙保护的文件存储端发送的请求中。如果该规则满足,就能够得到请求文件的名字。2.由协议分析得出的SNORT规则规则1_ftcatchtheserverwelcomeansweralerttcp$H0ME—NETany-〉$EXTERNAL—NETany(content:,,VERSION";offset:4;d印th:12;content:"SERVER";offset:ll;depth:18;flow:from—server;flags:A补A;msg:,,OpenN邻ServerConnection,,;classtype:policy-violation;)该规则可以允许识别使用0penNap协议的所有软件。规则2_ftcatchtheserverwelcomeansweralerttcp$H0ME_NETany->$EXTERNAL—NETany(content:WinMx;offset:4;nocase;flow:established;flags:PA;msg:,,WinMxConnectiontoOpenNapServer,,;classtype:policy-violation;)该规则分析网络流量,检査是否有包含"WinMx"的TCP载荷,同时,试图捕获WinMx应用中从客户端发往服务器的登陆信息。规则3_ttcatchthenameofthefilessharedbytheclientalerttcp$H0ME—NETany->$EXTERNAL_NETany(msg:"Sharedfilelist,Client+ServerOpenNap,,;flow:established;flags:!S;flags:!SA;content:,,|22433a5c|,,;nocase;offset:4;depth:9;tag:host,5,packets,six;)该规则从网络流量中取出客户间共享的文件目录。规则4_ftalertonquerysubmitalerttcp$H0ME_NETany-〉$EXTERNAL—NET-any(content:"FILENAMECONTAINS";offset:4;depth:18;flow:established:flags:PA;msg:,,Querysubmitting,,;)该规则在一个实体向中心服务器发出请求时发出警报。它能够在TCP载荷中识别出单词"FILENAMECONTAINS"。规则5_#alertondownloadrequestsAlerttcp$H0ME_NETany〈->$EXTERNAL_NETany(content:,,GET,,;offset:0;depth:3;dsize:3;flow:established;flags:PA;msg:,,GET0penN邻Downloading,,;tag:session,2,packets;)该规则只有在规则1产生警报之后才能激发它能够捕获将要存储的文件名及TCP连接的另一端的地址。规则6_#a_lertonuploadrequestsalerttcp$H0ME—NETany<-〉$EXTERNAL_NETany(content:"SEND";offset:0;depth:4;dsize:4;flow:established;flags:PA;msg:,,SENDOpenNapDownloading,,;tag:session,2,packets;)_该规则与5类似它搜寻字符串"SEND",SEND用于一个请求端向受防火墙保护的文件存储端发送的请求中。如果该规则满足,就能够得到请求文件的名字。全文摘要本文介绍了一种检测P2P流量的方法,它基于对P2P协议的分析;通过对IP数据报的分析,识别出P2P协议所独有的特征;根据这些特征编写IDS规则。该方法具有很好的可扩展性,它既可以识别标准的P2P协议,如OpenNap,也可以识别完全分散化的协议,如WPN和FastTrack。本文中的结论和规则均在局域网中得到了验证。文档编号H04L29/08GK101599960SQ20091002729公开日2009年12月9日申请日期2009年5月27日优先权日2009年5月27日发明者丁元彬,张顺颐,攀王,颜学智申请人:南京欣网视讯科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1