一种基于多协议双向单连接的p2p软件识别方法

文档序号:7896412阅读:480来源:国知局
专利名称:一种基于多协议双向单连接的p2p软件识别方法
技术领域
本发明涉及基于多协议双向单连接的P2P软件识别方法。
背景技术
自从上世纪90年代P2P(peer-to-peer)软件问世以来,P2P软件占用网络带宽的 比例越来越大。近年来,由于P2P技术本身的优越性,越来越多的应用领域引进了 P2P技术, 这就使得P2P软件从数量和质量上都得到了很大的提高。与传统的网络应用程序不同的 是,P2P软件并没有一个统一的标准或是协议,目前的情况是不同的P2P软件之间采用自己 独特的P2P协议进行通信。这就在事实上造成了网络管理,安全性等诸多方面的问题。随 着P2P软件的流行,因特网服务提供商(Internet Service Provider)和网络管理人员开 始了对P2P流量的识别,验证和管理方面的研究,但目前都处于起步阶段,面对数量众多的 P2P软件和不同的P2P协议,现有方法效果很有限。第一代P2P软件使用固定端口进行通信,并且相同版本的P2P软件使用相同的端 口。在这个前提下,P2P流量的识别和管理变得相对比较容易,只需要对某些固定端口的流 量进行识别和管理就可以了。但现在流行的P2P软件,比如=BitTorrent, Emule,迅雷都使 用可变端口,并且这些端口可以由用户指定,上述针对固定端口的办法就行不通了。当前网 络管理软件使用最多的是协议特征码识别法,网络管理软件中保存着一些常用的P2P软件 的协议特征码,当网络数据包出现这些协议特征码时则判定该数据包是P2P流量。协议特 征码法的缺陷是显而易见的,只能对已知的P2P软件的常用的某些版本进行识别,而对某 些不常见的或是新出现的P2P软件或是版本无法进行识别。中国专利申请200610156977. 8公开了一种基于网络应用中的P2P流量识别控制 方法。此专利对目标端口号为IOM以上的连接进行统计,如果连接数超过阈值则检测到了 P2P流量。此专利提出的方法可以对未知P2P流量进行识别,但这种方法也有很严重的缺 陷。目前常用的P2P软件都可以利用周知端口进行数据传输以躲避防火墙的,比如迅雷,可 以利用80端口进行数据传输。如果只是对IOM以上的连接数进行统计,就会产生漏报。而 且目标端口为IOM以上的连接并非都是由P2P软件产生的,因此此专利的误报率也很高。中国专利申请200710119333. 6公开了一种基于行为特征的P2P协议精确识别方 法及系统。此专利的目标是对P2P数据传输的各个阶段进行识别,方法是对协议进行解析, 得到可以作为识别依据的信息,如协议特征码,数据包大小,目标IP地址等。这种方法的 误报率很低,但是一旦协议发生变化,此专利就不能检测到了,此外,此专利也不能对未知 P2P软件进行检测。中国专利申请200510096095. 2公开了一种基于P2P高速下载软件产生流量的发 现及控制方法。这个专利采用的就是P2P协议特征码识别法,首先将各种P2P协议的协议 特征码存储在数据库中,在检测过程中只要发现了网络数据包中包含了协议特征码,那么 就认为是P2P流量。这种检测方法的致命缺陷是依赖于P2P协议特征码数据库,因而不能 对新出现的P2P协议或是已有P2P协议的新版本进行识别。

发明内容
本发明所要解决的问题是如何提供一种基于多协议双向单连接的P2P软件识别 方法,该方法克服了现有技术所中存在的缺陷,该方法能够识别未知P2P软件,而且准确率 高,误报率和漏报率都很低。本发明所提出的技术问题是这样解决的提供一种基于多协议双向单连接的P2P 软件识别方法,其特征在于,包括以下步骤步骤1捕获网络数据包捕获进出计算机的网络数据包,监视计算机的网络行为;步骤2获得与网络数据包的特征信息将步骤1所捕获的网络数据包进行分析,提 取特征信息,然后把该网络数据包和特征信息在数据结构中;步骤3按协议类型分类将捕获到的网络数据包根据标准协议进行分类;步骤4识别双向单连接设置入向表、出向表和双向表入向表存储的是远端计算 机发送数据到被监控计算机的信息,出向表则存储的是被监控计算机发送数据到远端计算 机的信息,双向表则是存储的双向连接信息,识别过程如下①判断网络数据包的传输方向,如果是进入被监控主机进入步骤②,若是发往远 端主机则进入步骤⑤;②将所获得的特征信息拿到双向表中进行搜索,是否存在与之匹配的双向连接, 如果存在则进入步骤⑧,否则进入步骤③;③将特征信息拿到出向表中进行搜索,是否存在与之匹配的出向连接,如果不存 在进入步骤④,如果存在则将出向表中与之对应的表项取出,加入双向表中,进入步骤⑧;④将特征信息拿到入向表中进行搜索,是否存在与之匹配的入向连接,如果存在 进入步骤⑧,否则将特征信息加入入向表中,转入步骤⑧;⑤将特征信息拿到双向表中进行搜索,是否存在与之匹配的双向连接,如果存在 则进入步骤⑧,否则进入步骤⑥;⑥将特征信息拿到入向表中进行搜索,是否存在与之匹配的入向连接,如果不存 在进入步骤⑦,如果存在则将入向表中与之对应的表项取出,加入双向表中,进入步骤⑧;⑦将特征信息拿到出向表中进行搜索,是否存在与之匹配的出向连接,如果存在 进入步骤⑧,否则将特征信息加入出向表中;⑧该数据包分析完毕,返回步骤①;
步骤5判别是否是P2P软件①考察双向表,删除其中进程信息,协议类型和目标IP地址信息重复出现的项, 因为这些由该进程产生的双向连接都不是单连接;②将出向表中的每一项和双向表中的每一项比较,如果出现出向表中某项的进程 信息,协议类型和目标IP地址和双向表中某项的进程信息,协议类型和目标IP地址相同, 并且这两项的源端口号不同,那么删除双相连接表中对应项,因为这表示两个计算机之间 不但存在双向单连接,还存在着单向连接;③将入向表中的每一项和双向表中的每一项比较,如果出现出向表中某项的进程 信息,协议类型和目标IP地址和双向表中某项的进程信息,协议类型和目标IP地址相同, 并且这两项的目的端口号不同,那么删除双相连接表中对应项,因为这表示两个计算机之间不但存在双向单连接,还存在着单向连接;④统计双向表中的连接信息,如果某个进程的TCP和UDP双向单连接数都超过了 各自设定的阈值,则判断与此进程对应的软件是P2P软件;步骤5 清空入向表,出向表,双向表。按照本发明所提供的基于多协议双向单连接的P2P软件识别方法,其特征在于, 步骤2中特征信息包括协议类型,相关联的进程信息,本机IP地址,本机端口号,远端主机 IP地址,远端主机端口号信息。本发明的有益效果1、不但能够识别已知P2P软件,也能够识别未知P2P软件本发明是一种基于P2P软件共有的行为的P2P软件识别方法,从根本上不同于目 前存在的根据端口的识别方法或是蠕虫特征识别方法。所提出的方法不依赖于具体协议, 不依赖于某个P2P软件产生的数据包内容,只是依赖于P2P软件在设计之初就决定了的共 有的行为,因此本专利不但能够识别已知P2P软件,也能够识别未知P2P软件;2、不但能够识别纯P2P软件,也能够识别非纯P2P软件对于迅雷这样的非纯P2P软件不但可以利用P2P协议进行数据传输,也可以采用 C/S模式进行数据传输,本发明着眼于从软件所有的网络行为中寻找到P2P特有的行为双 向单连接,而不必考虑该软件是否有其他的网络行为。因此,本专利不但能够识别纯P2P软 件,也能够识别非纯P2P软件;3、识别准确率很高,误报率和漏报率都很低本发明提出的P2P软件识别方法不依赖于已知P2P软件的数据包信息,而是P2P 软件共有的行为,因此漏报率远低于目前已知方法。另一方面,本专利对P2P协议使用的各 种协议进行解析,并且对每种协议设置相应的阈值,可以很好的控制误报率;4、识别过程效率高,时间和空间的消耗都很低本发明提出的方法不需要对网络数据包具体的负载进行分析和存储,而只需要对 网络数据包头部进行分析,同时网络数据包头部是整个数据包中很小的一部分,因此,时空 的消耗都很低。


图1是本发明的识别流程示意图;图2是双向单连接识别处理流程图。
具体实施例方式下面结合附图以及实施例对本发明作进一步描述一种基于多协议双向单连接的P2P软件识别方法及系统。本专利提出的系统包括 网络数据包捕获装置,进程关联装置,协议识别装置,双向单连接识别装置和P2P软件判别 装置。P2P软件识别流程见附图1。缩略语和关键术语定义协议特征码协议特征码是一个或者多个连续字符序列,某种协议的协议特征码 应该只出现在该协议的数据包中。对等机简单来讲,多个安装了相同P2P软件的计算机互为对等机。
纯P2P软件这种软件的绝大多数网络行为都是基于P2P协议的,比如 BitTorrent, Emule等下载工具,它们的下载方式是完全基于P2P技术的。非纯P2P软件拥有P2P功能,但也有普通的服务器/客户端(C/幻模式的网络行 为,比如迅雷在下载文件的时候不但会从其他对等机中下载,也会直接从文件服务器上下载。数据包负载网络数据包中除去帧头部,IP头部,TCP头部或者UDP头部等应用层 以下协议头部所剩下的部分。为了能够识别出具体哪个软件是P2P软件,本系统部署在主机上,而不像上述专 利所设计的系统部署在网络结点上。因为,一旦部署在网络节点上就无法获得相应的进程 信息,就无法定位到某个P2P软件。目前几乎所有流行的P2P软件都同时使用TCP和UDP两种协议,这是一个P2P协议 本身的设计理念决定的,而一般的网络应用程序很少同时使用多种协议,但也有例外。从现 在开始,本专利只讨论TCP和UDP协议,但并不表示本专利的适用范围只局限于TCP和UDP 协议,本专利所提出的P2P识别方法是与协议本身无关的。由于P2P协议设计理念决定了 P2P软件有如下一些特点a)安装了 P2P软件的计算机同时作为服务器和客户端,对等机之间的连接是双向 的。P2P这个特点和传统的客户端/服务器(C/幻的传输模式有本质的区别。C/S结 构下的计算机要么是服务器,要么是客户端,偶尔即做服务器又做客户端也不会使用同一 个连接。这个特性使得P2P软件会绑定在一些端口上,不同的对等机之间进行通信会使用 固定的两个端口,并在这两个对等机通信结束之前不会改变。
一般来讲,对等机之间的连接是双向的,换句话说,对等机A会通过某个连接发送 数据到对等机B,而对等机也会利用这个连接发送数据到对等机B。而某些基于UDP协议的 网络应用程序可能会采用单向的连接。b)任意两个对等机之间由同一个P2P软件产生的连接不会多于一个。P2P的设计思路不会让其中某一个对等机承受太重的负荷,因此,任意两个对等机 之间由同一个P2P软件产生的连接不会多于一个。C/S模式一般不会有这样的特点,拿浏览 网页为例,在打开一个网页时,浏览器和Web服务器之间会建立多个连接,这是为了加速网 页的显示速度。同样的,当以非P2P方式下载数据时,下载器会与文件服务器建立多个连接 以加快下载速度。由于上述原因,对等机之间由同一个P2P软件产生的连接往往是双向单连接。利 用这个特点,可以准确的识别出P2P软件。本系统利用协议识别装置对TCP和UDP的数据包进行分类处理,之后利用双向单 连接识别装置识别被监控软件是否产生了双向单连接,当TCP协议与UDP协议的双向单连 接数都超过各自设置的阈值时,P2P软件判别装置就确定被监控软件是P2P软件。这个阈 值根据经验设定,不需要太大,2或者3就已经足够。本发明的装置包括网络数据包捕获装置、进程关联装置、协议识别装置、双向单连 接识别装置和P2P软件判别装置。网络数据包捕获装置本装置的功能是捕获进出计算机的网络数据包,监视计算机的网络行为。进 程关联装置本系统部署在终端计算机上,而不是在网络结点,比如路由器 上,因此可以识别出哪一台主机的哪一个程序是P2P软件。本系统采用了一个进程关联装 置将网络行为和程序关联起来,通过这个装置就可以知道,哪些网络行为是由哪个程序产 生的。协议识别装置本装置的功能是将捕获到的数据包根据协议进行分类,目前本系 统支持TCP和UDP两种协议,这是因为目前的P2P软件只使用了这两种协议,如果今后P2P 软件有扩充,本系统可以进行扩充,这个扩充的过程只需对本系统进行少量的修改,因为本 系统本身是与协议无关的。双向单连接识别装置本装置是本系统的核心,其功能在于判断计算机程序产生 的网络行为是否是双向单连接,并进行纪录。P2P软件判别装置本装置设定每过一段时间就对目前系统中的软件进行一次判 另IJ,判别的依据来自于双向单连接识别装置所提供的双向单连接信息。判别的准则是各个 协议的双向单连接数量是否都超过了各自的阈值,如果都超过了阈值,则判别该程序为P2P 软件。每次判别过程结束后,本装置还负责清空存储双向单连接信息的数据结构,为下一次 判别做好准备。本系统部署在终端计算机上,但不局限于某个具体的操作系统,Windows, Unix, Linux等操作系统的常用版本都可以运行本系统,下面就以Windows XP操作系统平台为例 进行分析。网络数据包捕获装置的目的是为了监视计算机网络行为,捕获进出计算机的数 据包,在Windows平台上捕获数据包有许多方式,比如SPI (服务提供者接口),TDI过滤 驱动,NDIS网络驱动,嗅探等方式,但为了获得与数据包相关联的进程信息,本装置选择了 SPI方式。每捕获到一个数据包,进程关联装置就会去查找该数据包属于哪个进程(Window 系统提供这种功能),然后在把数据包和进程的关联信息纪录在数据结构中,这些信息应该 至少包括进程ID号,进程名,数据包MD5值。对于每一个捕获到的网络数据包,协议识别装置都会用标准的协议格式对数据包 进行解析,对于不是采用TCP或者UDP协议的数据包就不作处理。为了提高整个系统的效 率,协议设别装置根据数据包负载大小进行判断,如果负载过小,本实施例取20个字节,本 系统不对这些数据包作处理。判断被监控软件是否产生双向单连接是本系统最核心的功能,为了实现这个功 能,双向单连接识别装置引入了三个数据结构入向表,出向表,双向表。入向表存储的是远 端计算机发送数据到被监控计算机的信息,出向表则存储的是被监控计算机发送数据到远 端计算机的信息,双向表则是存储的双向连接信息。这三张表的结构是相同的,都由多个数 据项构成,每个数据项都包括了如下信息协议类型,相关联的进程信息,本机IP地址,本 机端口号,远端主机IP地址,远端主机端口号。双向单连接识别过程如下(见附图2)步骤1 从协议识别装置获取需要进行分析的数据包,提取出数据包的{协议类 型,相关联的进程信息,本机IP地址,本机端口号,远端主机IP地址,远端主机端口号信息} (以下简称特征信息),并判断该数据包的传输方向,如果是进入被监控主机进入步骤2,若是发往远端主机则进入步骤5。
步骤2 将特征信息拿到双向表中进行搜索,是否存在与之匹配的双向连接,如果 存在则进入步骤8,否则进入步骤3。步骤3 将特征信息拿到出向表中进行搜索,是否存在与之匹配的出向连接,如果 不存在进入步骤4,如果存在则将出向表中与之对应的表项取出,加入双向表中,进入步骤 8。步骤4:将特征信息拿到入向表中进行搜索,是否存在与之匹配的入向连接,如果 存在进入步骤8,否则将特征信息加入入向表中,转入步骤8。步骤5 将特征信息拿到双向表中进行搜索,是否存在与之匹配的双向连接,如果 存在则进入步骤8,否则进入步骤6。步骤6 将特征信息拿到入向表中进行搜索,是否存在与之匹配的入向连接,如果 不存在进入步骤7,如果存在则将入向表中与之对应的表项取出,加入双向表中,进入步骤 8。步骤7 将特征信息拿到出向表中进行搜索,是否存在与之匹配的出向连接,如果 存在进入步骤8,否则将特征信息加入出向表中。步骤8 该数据包分析完毕,返回步骤1。本系统采用了一个简单的算法判断被监控软件是否是P2P软件,判断的依据就是 双向单连接识别产生的入向表,出向表,双向表信息,这个算法由P2P软件判别装置实现。 P2P软件判别装置每过一个时间段就会自动触发,本实施例设置为5分钟。识别过程如下步骤1 考察双向表,删除其中进程信息,协议类型和目标IP地址信息重复出现的 项,因为这些由该进程产生的双向连接都不是单连接。步骤2 将出向表中的每一项和双向表中的每一项比较,如果出现出向表中某项 的进程信息,协议类型和目标IP地址和双向表中某项的进程信息,协议类型和目标IP地址 相同,并且这两项的源端口号不同,那么删除双相连接表中对应项,因为这表示两个计算机 之间不但存在双向单连接,还存在着单向连接。步骤3 将入向表中的每一项和双向表中的每一项比较,如果出现出向表中某项 的进程信息,协议类型和目标IP地址和双向表中某项的进程信息,协议类型和目标IP地址 相同,并且这两项的目的端口号不同,那么删除双相连接表中对应项,因为这表示两个计算 机之间不但存在双向单连接,还存在着单向连接。步骤4 统计双向表中的连接信息,如果某个进程的TCP和UDP双向单连接数都超 过了各自设定的阈值,则判断与此进程对应的软件是P2P软件。本实施例设置TCP和UDP 的阈值都为2。步骤5 清空入向表,出向表,双向表。
权利要求
1.一种基于多协议双向单连接的P2P软件识别方法,其特征在于,包括以下步骤步骤1捕获网络数据包捕获进出计算机的网络数据包,监视计算机的网络行为;步骤2获得与网络数据包的特征信息将步骤1所捕获的网络数据包进行分析,提取特征信息,然后把该网络数据包和特征信息在数据结构中;步骤3按协议类型分类将捕获到的网络数据包根据标准协议进行分类;步骤4识别双向单连接设置入向表、出向表和双向表入向表存储的是远端计算机发 送数据到被监控计算机的信息,出向表则存储的是被监控计算机发送数据到远端计算机的 信息,双向表则是存储的双向连接信息,识别过程如下①判断网络数据包的传输方向,如果是进入被监控主机进入步骤②,若是发往远端主 机则进入步骤⑤;②将所获得的特征信息拿到双向表中进行搜索,是否存在与之匹配的双向连接,如果 存在则进入步骤⑧,否则进入步骤③;③将特征信息拿到出向表中进行搜索,是否存在与之匹配的出向连接,如果不存在进 入步骤④,如果存在则将出向表中与之对应的表项取出,加入双向表中,进入步骤⑧;④将特征信息拿到入向表中进行搜索,是否存在与之匹配的入向连接,如果存在进入 步骤⑧,否则将特征信息加入入向表中,转入步骤⑧;⑤将特征信息拿到双向表中进行搜索,是否存在与之匹配的双向连接,如果存在则进 入步骤⑧,否则进入步骤⑥;⑥将特征信息拿到入向表中进行搜索,是否存在与之匹配的入向连接,如果不存在进 入步骤⑦,如果存在则将入向表中与之对应的表项取出,加入双向表中,进入步骤⑧;⑦将特征信息拿到出向表中进行搜索,是否存在与之匹配的出向连接,如果存在进入 步骤⑧,否则将特征信息加入出向表中;⑧该数据包分析完毕,返回步骤①;步骤5判别是否是P2P软件①考察双向表,删除其中进程信息,协议类型和目标IP地址信息重复出现的项;②将出向表中的每一项和双向表中的每一项比较,如果出现出向表中某项的进程信 息,协议类型和目标IP地址和双向表中某项的进程信息,协议类型和目标IP地址相同,并 且这两项的源端口号不同,那么删除双相连接表中对应项;③将入向表中的每一项和双向表中的每一项比较,如果出现出向表中某项的进程信 息,协议类型和目标IP地址和双向表中某项的进程信息,协议类型和目标IP地址相同,并 且这两项的目的端口号不同,那么删除双相连接表中对应项;④统计双向表中的连接信息,如果某个进程的TCP和UDP双向单连接数都超过了各自 设定的阈值,则判断与此进程对应的软件是P2P软件;步骤5 清空入向表,出向表,双向表。
2.根据权利要求1所述的基于多协议双向单连接的P2P软件识别方法,其特征在于,步 骤2中特征信息包括协议类型,相关联的进程信息,本机IP地址,本机端口号,远端主机IP 地址,远端主机端口号信息。
全文摘要
本发明公开了一种基于多协议双向单连接的P2P软件识别方法,包括以下步骤捕获网络数据包、获得与网络数据包的特征信息、按协议类型分类、识别双向单连接和判别是否是P2P软件。该方法克服了现有技术所中存在的缺陷,该方法能够识别未知P2P软件,而且准确率高,误报率和漏报率都很低。
文档编号H04L12/56GK102045257SQ20101060018
公开日2011年5月4日 申请日期2010年12月22日 优先权日2010年12月22日
发明者俞佳, 张小松, 王东, 陈瑞东 申请人:上海亿煌信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1