资源描述
本 科 毕 业 设 计本 科 毕 业 设 计 ( 论 文论 文 ) 学院学院(部部) 计算机科学与技术学院计算机科学与技术学院 题目题目 BitTorrent 流量检测识别技术研究流量检测识别技术研究 年级年级 2006 专业专业 计算机科学与技术计算机科学与技术 班级班级 计科(计科(1)班)班 学号学号 姓名姓名 指导教师指导教师 职称职称 讲讲 师师 论文提交日期论文提交日期 20XX-X-XX 苏州大学本科生毕业设计(论文) I 目目 录录 前 言 1 第一章 绪 论 2 1.1 研究背景及意义 2 1.2 BitTorrent 概述 3 1.3 本文的主要工作及创新点 5 1.4 本文的组织结构 5 第二章 P2P 流量检测识别技术 7 2.1 P2P 流量识别的难点 7 2.2 研究现状分析 7 2.2.1 基于端口的检测技术 7 2.2.2 深度数据包检测技术 8 2.2.3 基于传输层特征的检测技术 9 2.3 本章小结 10 第三章 BitTorrent 明文流量识别方法 11 3.1 BitTorrent 协议及其应用层签名 11 3.1.1 Peer wire 协议 11 3.1.2 TCP-Tracker 协议 12 3.1.3 UDP-Tracker 协议 13 3.1.4 DHT 协议 15 3.2 BT 流量检测识别软件 Porpoise 16 3.3 实验与分析 18 3.3.1 Vuze 哑客户端 18 3.3.2 网络拓扑与实验环境 18 3.3.3 Trace 数据集 19 3.3.4 指标定义 20 3.3.5 实验数据分析 20 3.4 本章小结 21 第四章 基于 MSE 协议特征的 BT 加密流量识别方法 22 4.1 P2P 加密流量检测识别技术 22 4.2 MSE 协议 22 苏州大学本科生毕业设计(论文) II 4.2.1 MSE 协议握手过程 23 4.2.2 MSE 协议特征 23 4.3 BT 加密流量识别方法 24 4.4 实验与分析 25 4.4.1 网络拓扑与实验环境 25 4.4.2 Trace 数据集 25 4.4.3 实验数据分析 26 4.5 本章小结 27 第五章 基于节点列表的 BT 流量预识别方法 28 5.1 节点信息来源 28 5.1.1 Tracker 服务器 28 5.1.2 DHT 网络 28 5.2 BT 流量预识别 29 5.2.1 预识别表的建立 29 5.2.2 预识别过程 30 5.3 实验与分析 30 5.3.1 Trace 数据集 30 5.3.2 M1+M3 vs. M1 30 5.3.3 M2+M3 vs. M2 32 5.4 本章小结 34 第六章 总结与展望 36 6.1 本文总结 36 6.2 后续工作展望 36 参考文献 38 致 谢 40 苏州大学本科生毕业设计(论文) III 摘摘 要要 近年来,P2P(Peer-to-Peer)系统在内容共享、协同计算、即时通信、流媒体等领域获得了广泛应用。 据统计, 截至 2009 年, 在全球不同国家和地区, P2P 流量已经占据了 ISP业务总量的 43%70%不等,消耗了大部分网络带宽,使网络性能降低,服务质量下降,导致传统的 Web、Email 等关键应用受到影响。另一方面,P2P 应用带来了知识产权和安全问题。因此,如何实现对 P2P 流量的有效识别和管理是当前亟需解决的问题。 BitTorrent 是一种重要且具有代表性的 P2P 应用。据统计,2009 年,BT 流量已经占据全部 P2P 流量的 30%81%不等。因此,本文主要以 BT 为研究对象,分析了现有的各种P2P 流量检测识别技术,对比各种检测识别技术的优缺点,深入分析了 BT 协议和源码,并对传统的 BT 流量检测识别技术进行改进,除了采用串匹配方法对 BT 明文流量进行识别外,还提出了利用 BT 加密协议特征,对 BT 加密流量进行有效识别的方法,以及基于节点列表的 BT 流量识别方法。将上述方法的检测结果与 BT 哑客户端 Vuze 所收集的真实BT 流量信息进行对比,结果表明,本文所提出的两种方法都能有效识别 BT 流量。尤其是基于节点列表的 BT 流量识别方法,在提高识别准确性和降低开销方面,都有明显的优势。 关键词:关键词:对等网络;流量识别;消息流加密;预识别 苏州大学本科生毕业设计(论文) IV Abstract In recent years, P2P systems have been widely used in file sharing, cooperative computing, instant messaging and video streaming. In the year 2009, P2P traffic had a percentage of 43%70% of all Internet traffic in different countries and regions around the world. It has occupied most of the network bandwidth, affected network performance and quality of Internet applications, such as Web and Email. On the other hand, P2P applications have brought intellectual property and security issues. Therefore, identification and management of P2P traffic has become necessary. BitTorrent is one of the most important and representative P2P applications. In the year 2009, BT traffic had a percentage of 30%81% of all P2P traffic. This dissertation mainly discusses the BT protocol. We analyze the existing P2P traffic identification methods, contrast the advantages and disadvantages of them, and do inside analysis of the BT protocol with the source code. Then we propose an enhancement of the traditional BT traffic identification methods. Besides the identification method of stream matching, a method to identify the encrypted BT traffic based on the characteristics of MSE protocol and a pre-identification method of BT traffic is proposed. We compare their identified results with real BT traffic information collected by a dump Vuze client. The results indicate that our methods can identify the BT traffic efficiently. Especially with the peer-list-based BT traffic pre-identification method, we can improve the accuracy and decrease the computing complexity. Keywords: Peer-to-Peer; Traffic Identification; Message Stream Encryption; Pre-identification 苏州大学本科生毕业设计(论文) 1 前前 言言 P2P(Peer-to-Peer,对等网络)是目前计算机网络领域的研究热点。P2P 系统基于分布式模型,能极大地提高网络中信息、带宽和计算资源的利用率,为大规模数据交换提供了一种充分使用网络资源的方法。由于在数据分发、容错等方面,与传统的 C/S 模型相比有明显的优势,近年来,P2P 系统在内容共享、协同计算、即时通信、流媒体等领域获得了广泛应用。由于大部分 P2P 应用对带宽是一种侵占式的占用,造成网络拥塞,甚至影响到传统的 Web、Email 等应用。因此,网络运营商、内容提供商及校园网都有对 P2P 流量进行管理的强烈要求。而要实现对 P2P 流量的管理,首先要解决的问题是实现对 P2P 流量的检测。 按照技术发展历程,P2P 流量检测技术分为基于端口的检测技术、深度数据包检测技术(DPI,Deep Packet Inspection)和基于流量特征的检测技术。但由于部分 P2P 协议不公开,对数据流进行加密等原因,很难有通用的检测技术对其进行有效检测。上述各种检测技术均有其适用的场合和网络环境。目前最为成熟的 P2P 流量检测技术仍为 DPI 技术,但存在无法识别未知 P2P 协议或加密流量的问题。基于传输层特征的检测技术虽能检测加密流量,但无法达到实时性的要求,且准确率相比 DPI 技术较低。 本文主要以 BitTorrent(简称 BT)协议为研究对象,分析现有的各种 P2P 流量检测识别技术,对比各种检测识别技术的优缺点。在深入分析 BT 协议和源码的基础上,实现了对 BT 流量的有效识别,并进行了实验验证。本文完成的主要工作及创新点有: (1)利用 BT 协议的特征字符串,通过串匹配方法对 BT 明文流量进行识别。 (2)分析了 BT 加密协议MSE(Message Stream Encryption,消息流加密)协议的特征,并基于此进行 BT 加密流量的识别。 (3)通过捕获 BT 节点获取的节点列表,有效实现对 BT 流量的预识别。 (4)利用 BT 哑客户端Vuze,收集真实的 BT 流量信息,以此作为标准的对比数据。通过充分的实验数据分析,验证了本文所提出的第(2)和第(3)种方法的正确性。尤其是第(3)种方法在提高准确性和降低开销方法,都有明显的优势。 苏州大学本科生毕业设计(论文) 2 第一章第一章 绪绪 论论 本章首先介绍了 P2P 流量识别技术的研究背景和意义,其次简单介绍了 BitTorrent 系统的各个组成部分及其作用,并概述了本文所做的主要工作和贡献以及创新点,在本章的最后介绍了论文的组织结构。 1.1 研究背景及意义研究背景及意义 P2P(Peer-to-Peer,对等网络)是目前计算机网络领域的研究热点。P2P 系统基于分布式模型,能极大地提高网络中信息、带宽和计算资源的利用率,为大规模数据交换提供了一种充分使用网络资源的方法。由于在数据分发、容错等方面,与传统的 C/S 模型相比有明显的优势,近年来,P2P 系统在内容共享、协同计算、即时通信、流媒体等领域获得了广泛应用。自 1999-2000 年 P2P 诞生以来,呈现出快速、持续增长的势头。根据 IPOQUE的一项全球性统计数据,截至 2009 年,在全球各个地区 P2P 流量已经占据当地 ISP 业务总量的 43%70%不等1,如图 1.1 所示。而在中国固网运营商的网络中,P2P 流量白天大约占据了全部带宽的 35%60%,晚上则能占到 50%90%2。 图 1.1 网络协议流量比例 由于 P2P 应用的特点,给互联网业务带来了极大的挑战,主要存在以下问题: (1)侵犯知识产权:在 P2P 网络中,所有信息分散存储在各个节点中,在目前缺乏有效的监管机制情况下,对知识产权的侵犯也是必然的。 (2)抢占网络带宽:P2P 的贪婪性导致网络带宽越高占用得越多。P2P 流量长时间占用 ISP 的 Internet 链路,对网络业务的正常开展产生很大的影响。 (3)运营商经营成本上升:通常的网络设计成上下行不对称即下行大于上行,但是苏州大学本科生毕业设计(论文) 3 P2P 的出现使得上行流量大大增加,另一方面,P2P 使得夜间下载流量增加,这两方面都增加了网络负载的压力。P2P 减少了服务提供商的利润,同时还增加了结算成本。 (4)传播网络病毒:病毒或木马伪装成可用资源供人们下载,借助 P2P 的强大传播能力,比一般的网络传播危害大得多。 (5)分发不健康内容:在 P2P 共享中提供了搜索功能,而搜索出来的内容中色情内容仍占据了较大比例。由于法律监管手段的缺乏,P2P 使用者可以将不健康资源任意共享出来而不会受到法律的监管。 由于 P2P 应用给网络带来了很多的负面影响,网络运营商正在积极地寻找解决对策,其中最主要也是能够最快见效的方法就是识别 P2P 流量,并限制在用户以及运营商可接受的范围内。因此,P2P 流量识别技术正逐步成为研究热点。 1.2 BitTorrent概述概述 在 P2P 的各种应用中,BitTorrent(以下简称 BT)是一种重要且具有代表性的内容共享类应用,由 Bram Cohen 于 2002 年提出,此后在全球受到热捧。据统计,2008 年,在全球范围内,BT 流量占全部 P2P 流量的 30%81%1,如表 1.1 所示。 表 1.1 主要 P2P 协议比例(单位) 协议 南非 南美 东欧 北非 德国 南欧 中东 西南欧 全部 P2P 65.77 65.21 69.95 42.51 52.79 55.2 44.77 54.46 Ares 0.29 42.63 0.00 2.24 0.84 0.16 0.11 1.80 BT 48.34 30.02 80.83 74.51 70.77 48.94 78.85 58.20 DirectConnect 0.01 0.00 17.87 0.08 0.85 0.00 0.12 0.30 eDonkey 2.48 25.99 1.16 7.70 24.22 47.17 15.37 35.99 Gnutella 18.60 0.36 0.14 14.21 1.75 1.66 5.00 2.75 iMesh 13.60 0.02 0.00 0.47 0.00 0.03 0.00 0.14 Thunder 14.04 0.80 0.00 0.69 0.77 1.64 0.52 0.62 Other 2.64 0.19 0.00 0.10 0.68 0.41 0.03 0.21 BT 是一个典型的用于内容分发和共享下载的 P2P 协议, 从 2002 年首次公开发表以来,已经发展成为最重要的 P2P 应用之一3。BT 下载的客户端也有数十种之多,常见的如:BitComet、BitSpirit、 Torrent、迅雷等,这些客户端通常都支持标准的 BT 协议。 BT 的设计目的是在网络上高效地传输大型文件。当需要分发大型文件时,将之分解为文件块(piece) ,并由多个节点提供下载,以此减轻网络中单个节点的成本和负载。当使用 BT 协议下载文件时,节点将同时上传文件块。 一个典型的 BT 系统由以下五个实体组成: 元信息 (metainfo) 文件、 Web 服务器、 Tracker服务器、Peer 和 Node,如图 1.2 所示。 苏州大学本科生毕业设计(论文) 4 元信息文件节点信息列表资源交换资源交换资源交换Peer 1Node 1Peer 2Node 2Peer 3Node 3Tracker服务器Web服务器 图 1.2 典型的 BT 系统 元信息文件 在使用 BT 协议共享某个文件之前,必须先创建一个元信息文件,也称为种子文件(torrent 文件) 。这个种子文件包含了需要下载的共享文件中各个文件块的信息,包括Tracker 信息、共享的文件块总数、所有文件块的哈希值等基本信息4。当下载完成后,可以利用这些哈希值来验证文件的完整性。此外,文件中还包含一个用其它部分的元数据计算得到的哈希值 InfoHash。InfoHash 值是种子文件的唯一标识(指纹) 。 Web 服务器 种子文件通常保存于 Web 服务器,用户通过 HTTP 或 HTTPS 等方式从 Web 服务器上下载种子文件。 Tracker 服务器 种子文件下载完成后,BT 客户端根据文件中包含的 Tracker 服务器信息,使用TCP-Tracker 协议4或 UDP-Tracker 协议5与 Tracker 服务器联系并获取正在为此文件做种的节点列表。 Peer Peer 是指在 TCP 端口监听并实现了 BitTorrent 协议的客户端。从 Tracker 服务器获得节点列表后,客户端使用 Peer wire 协议4连接其他节点,在经过 BitTorrent 握手、文件块资源查询等信令交互后,即可开始下载和上传相关文件块。 Node Node 是指在 UDP 端口监听并实现了 DHT 协议6的客户端。DHT 协议用于 node 之间查询共享文件对应的 peer 位置信息和邻居节点信息。 苏州大学本科生毕业设计(论文) 5 1.3 本文的主要工作本文的主要工作及创新点及创新点 本文主要以 BT 为研究对象,分析现有的各种 P2P 流量检测识别技术,对比各种检测识别技术的优缺点。在深入分析 BT 协议和源码的基础上,提出了基于 MSE 协议特征的BT 加密流量检测方法和基于节点列表的 BT 流量预识别技术,并进行了实验验证。本文主要工作及创新点如下: (1)对 BT 及相关应用层协议的研究。通过对 Peer wire 协议、TCP-Tracker 协议、UDP-Tracker 协议、DHT(Distributed Hash Table,分布式哈希表)协议和实际网络流量的分析,找出各协议中的特征字符串,从而利用特征字符串匹配对 BT 明文流量进行识别。 (2)提出了对 BT 加密流量进行有效识别的技术,这是本文的创新点之一。本文通过对 MSE 协议、Diffie-Hellman 密钥交换协议的研究,在分析 MSE 协议在握手阶段前三个消息具有的传输层特征的基础上,对 TCP 流进行重组,进一步还原为应用层消息流,并基于此进行加密流量识别。实验结果表明,这种方法对标准的 BT 加密流量的识别率较高。 (3)提出了基于 TCP-Tracker、UDP-Tracker、DHT 协议获取的节点列表,对 BT 流量进行预识别方法,这是本文的创新点之二。本文通过对上述三种协议的深入分析,分别利用 HTTP response、announce response、DHT response 报文中返回的节点列表,建立 BT流量预处理表,对于此后出现的 BT 流量,仅需通过传输层解析进行识别。实验表明,此方法能大幅提高对 BT 流量识别的准确度, 而且可以有效减少特征串匹配和 MSE 消息流还原的时空复杂度,该方法有着明显优势。 (4)利用了 BT 哑客户端Vuze 获取可靠的标准数据集,这是本文在实验方法上的创新。本文通过一个修改过的 BT 客户端,使其能够报告其连接的其它节点的 IP 地址等信息,并与本文完成的 BT 流量检测识别软件Porpoise,所得出的流量检测结果进行对比,可以充分验证本文所提出的上述方法的正确性。 1.4 本文的组织本文的组织结构结构 本文共分为六章,各章内容安排如下: 第一章: 绪论。 本章介绍了课题的研究背景及意义、 BitTorrent 协议及典型的 BitTorrent系统的组成、本文的主要工作及主要创新点,最后介绍了本文的组织结构。 第二章:P2P 流量检测识别技术概述。本章详细阐述了现有的 P2P 流量检测识别技术及其原理,对比分析了各种检测技术的优缺点和适用的网络环境。 第三章:主要介绍了 BitTorrent 明文流量检测识别技术,深入分析了 Peer wire、TCP-Tracker、 UDP-Tracker、 DHT 四种 BT 协议及各自特征, 利用 DPI 技术实现对 BitTorrent苏州大学本科生毕业设计(论文) 6 明文流量检测识别。实现了 BT 流量检测识别软件 Porpoise,并完成了 BT 明文流量检测实验。 第四章:主要介绍了 BitTorrent 加密流量检测识别技术,深入分析了 MSE 协议及握手过程、协议特征,回顾了传统的 P2P 加密流量检测识别技术,提出了利用 MSE 消息流还原实现对 BitTorrent 加密流量识别的方法,并完成了 BT 加密流量检测实验。 第五章:通过分析 TCP-Tracker、UDP-Tracker、DHT 三种协议及节点信息来源,论述了基于节点列表的 BT 流量预识别方法,并完成了与第三章、第四章所述方法的对比实验。 第六章:总结全文,提出未来工作的设想与展望。 苏州大学本科生毕业设计(论文) 7 第二章第二章 P2P 流量流量检测检测识别识别技术技术 本章详细阐述了现有的几种 P2P 流量检测识别技术的原理,继而对各种现有技术进行分析对比,论述了各自适用的网络环境以及在实际的 P2P 流量识别过程中存在的问题。 2.1 P2P流量识别的难点流量识别的难点 P2P 流量与传统的 Web 等应用流量不同, 有着难以识别、 控制的特点。 主要原因如下: (1)P2P 应用快速变化 近年来,随着 P2P 流量的快速增长,各种新的 P2P 应用不断涌现。从最初的 Napster,到后来的 BitTorrent、eDonkey、Skype,出现了越来越多的 P2P 应用,而各种 P2P 应用有各自遵循的协议, 且大部分是不公开的私有协议, 因此很难通过传统的防火墙技术识别 P2P流量。 (2)P2P 应用的伪装、加密技术 随着 P2P 技术的发展,各种 P2P 应用的伪装、加密技术开始不断涌现。各种 P2P 应用从采用固定端口、随机端口进行数据传输,到占用 80、21 等常用端口以躲避检测,甚至对数据流进行加密。这些技术也加大了对 P2P 流量检测的难度。 2.2 研究现状分析研究现状分析 按照技术发展历程,P2P 流量识别技术一般分为有以下三类:基于端口的识别技术、深度数据包检测技术(DPI,Deep Packet Inspection)和基于流量特征的检测技术(TLI,Transport Layer Identification) 。 2.2.1 基于端口的检测技术基于端口的检测技术 表 2.1 常见 P2P 应用的默认端口及承载协议 P2P 应用 默认端口 承载协议 Gnutella 6346-6348 TCP BitTorrent 6881-6889 TCP eDonkey 4661-4665 TCP Tencent QQ 8000/8001 UDP PPLive 7100/7101 UDP 基于端口的检测技术是所有 P2P 流量检测技术最早提出的一种,具有算法简单、时空复杂度低等优点。在 P2P 发展初期,由于 P2P 应用都有各自的默认端口,表 2.1 列出了常苏州大学本科生毕业设计(论文) 8 见 P2P 应用的默认端口及承载协议。 利用基于端口的检测技术,只需要对数据包传输层进行解析,提取其使用的端口及传输层协议,即可判定其是否属于 P2P 应用。基于端口的检测技术非常有效,且具有算法简单、时空复杂度低等优点。 但是,现有的大部分 P2P 应用采用随机端口技术或者允许用户选择非默认端口,许多新出现的 P2P 应用甚至开始使用端口伪装技术,占用 80、21 等熟知端口。大量近期研究表明,基于端口的检测技术已经不再有效7-9。 2.2.2 深度数据包检测深度数据包检测技术技术 深度数据包检测技术通过检查数据包有效载荷内容,利用字符串匹配或正则表达式匹配的方法,判定其是否含有已知 P2P 协议的应用层签名9,10,表 2.2 列出了常见的 P2P 协议应用层签名。 表 2.2 常见 P2P 协议的应用层签名 P2P 协议 应用层签名 Gnutella “GNUT” BitTorrent 0 x13“BitTorrent protocol” KaZaA “X-Kazaa” eDonkey 0 xe3 Fasttrack “Get/.hash” DirectConnect “$MyN” P2P 协议的应用层签名一般通过以下两种方式获取: (1)通过抓取相关数据包,并对数据包有效载荷进行分析。此方法的优点是简单直观,通过观察数据包载荷内容,分析具体 P2P 协议特征字符串。 (2)通过研究具体的 P2P 协议标准,总结归纳其与其他应用层协议不同的特征字符串。其优点是提取的特征字符串一般较为准确,缺点是需要持续跟踪协议的最新变化,并保持与此前特征字符串的兼容性。 深度数据包检测技术对数据包有效载荷内容进行匹配,因此能够检测使用动态端口的P2P 应用并识别具体的 P2P 协议,且具有较高的准确率和较低的误报率,是目前公认的成熟技术,已经应用于各种商业化的流量检测产品,例如 Cisco 公司的 PDML (Packet Details Markup Language)等。 但方法的主要不足在于11:第一,检查用户数据将涉及用户隐私。第二,无法识别未知类型的 P2P 流量。第三,使用 DPI 技术需要较强的计算和存储能力。第四,需要保持应用层签名库更新。第五,当 P2P 应用开始采用数据加密时,DPI 技术就无法识别任何加密流量。 苏州大学本科生毕业设计(论文) 9 2.2.3 基于传输层特征的检测技术基于传输层特征的检测技术 (1)基于行为模式的检测技术 在 P2P 网络中,节点的行为模式与其他应用存在着明显差异,因此,可以通过行为模式分析来达到检测 P2P 流量的目的。这类方法的主要优点是:能识别大多数 P2P 流量包括加密流量。 网络直径分析法 此方法由 Constantinou、Mavrommatis 等人提出,利用 P2P 系统组成的逻辑网络直径大的特点, 通过 P2P 网络的逻辑拓扑结构图, 计算其网络直径12。 如果网络直径大于阈值,则认定相应的流量为 P2P 流量。此方法的主要缺点是:a)需要较强的计算和存储能力;b)无法做到实时检测与识别。 协议对分析法 此方法由 Thomas Karagiannes 等人于 2004 年提出7。大多数 P2P 应用使用 UDP 协议进行信令交互, 使用 TCP 协议进行数据传输, 利用这一特征能将 P2P 应用与其他应用区别开来。虽然 DNS 等应用也存在上述情况,但是很容易通过端口将它们区别开来。此方法的主要缺点是:存在一定的误报(false positive)现象。 地址端口对分析法 此方法亦由 Thomas Karagiannes 等人于 2004 年提出7。 由于大多数 P2P 应用使用监听端口发送大量 UDP 广播包,其它节点收到消息后将随机选择一个端口并与该节点发起连接。因此,与该节点连接的 IP 地址数量与端口数量大致相等。而其它应用,例如 Web,通常使用多个端口进行数据传输,这样,端口数量将明显大于 IP 地址数量。地址端口对分析法基于上述情况对 P2P 流量进行检测。虽然 Email 等应用也存在上述情况,但是很容易通过端口将它们区别开来。此方法的主要缺点是:存在一定的误报现象。 主动测量法 2002 年, Saroiu 等人首次对 P2P 流量进行了主动测量。 他们对当时最为流行的 Gnutella和 Napster 进行了网络拓扑测量。 研究表明, Gnutella 的节点连通度符合幂律分布13。 随后,研究者又对 KaZaA 等进行了拓扑测量14。此方法的主要缺点是:需要了解具体的 P2P 协议,而大部分 P2P 协议都是私有协议。 (2)基于机器学习的检测技术 2005 年,研究人员首次将机器学习的方法应用到流分类问题中。机器学习可以通过观测数据改善自身性能,通过演绎和归纳发现规律。基于机器学习的检测技术认为,不同的应用有着不同的流特征与传输模式,可以根据上述特征实现流的分类。 Moore 采用 Native Bayes 分类方法实现对流的分类15。通过手工构造数据集,修正了苏州大学本科生毕业设计(论文) 10 Native Bayes 分类器中关于“属性满足正态分布”的假设。研究表明,该方法具有流级 66%、字节级 83.5%的准确率。 McGregor 等分析了不同应用的数据包长度、时间间隔等特征,提出了 EM(Expectation-Maximisation,期望值最大化)聚类方法,并采用流的字节数、流持续时间、平均数据包长度作为分类特征16。 基于传输层特征的检测技术分析 P2P 网络中节点的行为模型,对网络直径、协议对使用、地址端口对使用等相关参数进行大量的统计,通过统计特性进行 P2P 流量的识别,能够识别未知 P2P 应用和加密流量,但其缺点也十分明显:a)无法确保实时性;b)无法应用于高速链路;c)需要很强的计算和存储能力。 2.3 本章小结本章小结 P2P 应用由于协议不公开,对数据流进行加密等原因,很难有通用的检测技术对其进行有效检测。 上述各种检测技术均有其适用的场合和网络环境。 表 2.3 列出了上述各种 P2P流量检测技术之间的对比及各自的优缺点。 表 2.3 现有 P2P 流量检测识别技术对比 P2P 流量识别技术 优点 缺点 基于端口的检测技术 算法简单、时空复杂度低 采用随机端口时失效 深度数据包检测技术 识别率高、技术成熟 无法识别加密流量 无法识别未知 P2P 应用 基于流量特征的检测技术 能够识别加密和未知 P2P 应用 无法识别具体 P2P 协议 实时性差 需要较强的计算和存储能力 可以看出,没有任何一类检测技术可以解决所有的 P2P 流量检测问题。目前最为成熟的 P2P 流量检测技术仍为 DPI 技术,但存在无法识别未知 P2P 协议或加密流量的问题。基于传输层特征的检测技术虽能检测加密流量,但无法达到实时性的要求,且准确率相比DPI 技术较低。 苏州大学本科生毕业设计(论文) 11 第第三三章章 BitTorrent 明文明文流量流量识别方法识别方法 随着 P2P 技术的发展,基于端口的检测技术已经不再有效。目前最为成熟的 P2P 流量检测技术是 DPI 技术,具有误报率低、 识别准确等优点, 已经被产业界和学术界广泛应用。虽然它对 P2P 加密流量的识别能力有限,但目前仍有 73%以上的 BT 流量未加密1。因此,本章详细介绍并分析了 BT 各种协议及其应用层签名,以此实现对 BT 明文流量的识别。 3.1 BitTorrent 协议及其应用层签名协议及其应用层签名 3.1.1 Peer wire 协议协议 由于 BT 流量主要由 Peer wire 协议产生,因此,现有的大多数 BT 流量检测技术均主要针对此协议。文献9首次给出了 Peer wire 协议的应用层签名。 Peer wire 协议通过 TCP 协议承载, 主要用于节点间进行数据传输, 包括 BT handshake、Bitfield、Interest、Choke/Unchoke、Request 等消息交互过程,如图 3.1 所示。 节点A节点B建立TCP连接建立P2P连接发送Bitfield信息发送数据重复过程BT握手包BT握手包包含用户ID的握手包包含用户ID的握手包Bitfield信息包Bitfield信息包Interest信息包Unchoke信息包Request信息包 图 3.1 Peer wire 协议交互过程 (1)BT handshake 消息 在 TCP 三次握手完成之后, 节点间交换 BT 握手消息。 握手消息有(49+PStr)字节长度,依次由以下域组成4: PStrLen:1 字节。表示 PStr 域的长度。 苏州大学本科生毕业设计(论文) 12 PStr:PStrLen 字节。表示协议标识符,对 BT 协议,为“BitTorrent protocol”且PStrLen=19。 Reserved:8 字节。初始值为全零。 InfoHash:20 字节。种子文件中 info 部分的 SHA1 哈希值,是种子文件的唯一标识。 PeerID:20 字节。客户端唯一的字符串标识。实际应用中,用两个字节表示客户端软件,四个字节表示其版本,其余为随机值。 (2)Bitfield 消息 BT 握手完成之后, 节点间交换 Bitfield 消息。 Bitfield 消息表示双方节点各自完成下载的文件部分。消息数据中,下载者已有块的索引序号的数位值设为 1,其他文件块设为 0。首字节高位到低位对应索引序号 0-7,第二字节对应索引序号 8-15,以此类推。尾部剩余的比特位设为 0。在此消息中,双方节点交换了完成下载的文件块信息,表示允许对方下载这些已完成的文件块。 (3)Interest 消息 Bitfield 消息交换完成之后,如果节点 B 中含有节点 A 没有的数据,则节点 A 将向节点 B 发送 Interest 消息,表示对节点 B 的某些数据感兴趣。 (4)Choke/Unchoke 消息 节点 B 收到来自节点 A 的 Interest 消息后,将发送当前网络状态消息给节点 A。如果网络未被阻塞,则消息类型为 Unchoke,否则为 Choke。 (5)Request 消息 如果节点 A 收到来自节点 B 的 Unchoke 消息之后,则表示节点 B 当前网络状态正常。此时,节点 A 将向节点 B 发送 Request 消息,表示需要下载感兴趣的数据。 (6)Piece 消息 节点 B 收到来自节点 A 的 Request 消息之后,将节点 A 需要的数据按分片(piece)发送给节点 A。 由于 BT handshake 消息是双方节点建立 TCP 连接之后的第一个消息, 该消息以 ASCII字符 0 x13 开始,紧跟 19 个字符的字符串“BitTorrent protocol”,且在数据包中出现的位置固定, 因此将其作为 Peer wire 协议的应用层签名, 正则表达式为“x13BitTorrent protocol”。 3.1.2 TCP-Tracker 协议协议 TCP-Tracker 协议由 HTTP 协议承载, 主要用于通过 TCP 协议向 Tracker 服务器获取正在做种的节点列表,包括 HTTP GET request、HTTP response 等消息4。 苏州大学本科生毕业设计(论文) 13 (1)GET request 消息 在 TCP 三次握手完成之后, 节点向 Tracker 服务器发送 GET request 消息。 GET request消息由 announce URL 组成,然后紧跟用标准 CGI 方式表示的请求参数,主要包括本节点的相关信息,即种子文件的 InfoHash 值(info_hash) 、用户 ID(peer_id) 、IP 地址(ip) 、使用的端口(port) 、已上传的字节数(uploaded) 、已下载的字节数(downloaded) 、剩余的字节数(left)等参数。 (2)HTTP response 消息 Tracker 服务器收到来自节点的 GET request 消息之后,更新维护的节点信息,并将正在下载相同文件的节点列表返回给节点。 HTTP response 消息包括 complete、incomplete、interval、min interval、peers 等内容,分别表示已完成下载的节点数、未完成下载的节点数、报告本节点信息的时间间隔、报告本节点信息的最小时间间隔、正在为此文件做种的节点列表(IP、port) 。 虽然 GET request 消息中的参数名都可作为 TCP-Tracker 协议的应用层签名, 但匹配全部的字符串,需要遍历整个数据包,系统开销较大,不适合用于检测 BT 流量。因此,将在最接近数据包头部位置出现的“info_hash”作为 TCP-Tracker 协议的应用层签名,正则表达式为“info_hash”。 3.1.3 UDP-Tracker 协议协议 由于 TCP-Tracker 协议中 GET request 和 HTTP response 消息长度较短,而节点每次与Tracker 服务器交互必须经过 TCP 三次握手和四次拆除,因此,给 Tracker 服务器带来大量不必要的开销。 使用 UDP 协议承载能够很好地解决上述问题。 UDP-Tracker 协议通过 UDP协议向 Tracker 服务器获取正在做种的节点列表,包括 connect request、connect response、announce request、announce response 等消息5。 (1)connect request 消息 connect request 消息表示节点向 Tracker 服务器发送连接请求。节点发送此消息之前,必须首先产生一个 32 位随机值 transaction ID。connect request 消息格式如表 3.1。 表 3.1 connect request 消息格式 Offset Size Name Value 0 64-bit integer connection_id 0 x41727101980 8 32-bit integer action 0(connect) 12 32-bit integer transaction_id (2)connect response 消息 Tracker 服务器收到来自节点的 connect request 消息之后, 将 transaction_id 域的值填入苏州大学本科生毕业设计(论文) 14 connect response 消息的对应域,并随机选择一个 connection_id,组包完成后向节点发送connect response 消息,表示接受来自节点的连接请求。connect response 消息格式如表 3.2。 表 3.2 connect response 消息格式 Offset Size Name Value 0 32-bit integer action 0(connect) 4 32-bit integer transaction_id 8 64-bit integer connection_id (3)announce request 消息 节点收到来自Tracker服务器connect response消息之后, 将transaction_id、 connection_id域的值填入 connect response 消息的对应域,并填入其他内容,组包完成后向节点发送announce request 消息。announce request 消息格式如表 3.3。 表 3.3 announce request 消息格式 Offset Size Name Value 0 64-bit integer connection_id 8 32-bit integer action 1(announce) 12 32-bit integer transaction_id 16 20-byte string info_hash 36 20-byte string peer_id 56 64-bit integer downloaded 64 64-bit integer left 72 64-bit integer uploaded 80 32-bit integer event 84 32-bit integer IP address 0(default) 88 32-bit integer key 92 32-bit integer num_want -1(default) 96 16-bit integer port (4)announce response 消息 Tracker 服务器收到来自节点的 announce request 消息之后,检查此消息中的transaction_id 域,如果与此前一致,则将向节点发送 announce response 消息。announce response 消息格式如表 3.4。 表 3.4 announce response 消息格式 Offset Size Name Value 0 32-bit integer action 1(announce) 4 32-bit integer transaction_id 8 32-bit integer interval 12 32-bit integer leechers 16 32-bit integer seeders 20+6*n 32-bit integer IP address 24+6*n 16-bit integer TCP port 苏州大学本科生毕业设计(论文) 15 此外,UDP Tracker 协议中还包括 scrape request、scrape response、error response 等消息。 由于 connect request 消息是节点基于 UDP-Tracker 协议向 Tracker 服务器发送的第一个消息,且该消息以 8 字节的 0 x41727101980 开头,因此,将其作为 UDP-Tracker 协议的应用层签名,正则表达式为x41727101980。 3.1.4 DHT 协议协议 为了实现不需要 Tracker 服务器参与的 P2P 文件共享,新版本的 BT 协议中引入了Kademlia 协议17, 在 BT 中称为 DHT 协议6。 DHT 是分布式哈希表 (Distributed Hash Table)的简称,是一种分布式存储方法。在不需要 Tracker 服务器的情况下,网络中每个节点负责维护一小范围的路由,并负责存储一小部分数据,从而实现整个 DHT 网络的寻址和存储。使用 DHT 协议之后,节点无需与 Tracker 服务器通信,即可获取网络中其他节点的信息,从而大大减轻了 Tracker 服务器的负担。 DHT 协议基于 UDP 协议实现,由一个按 Bencode 编码的字典组成4,主要包含 DHT query、DHT response、DHT error 三种消息类型。所有类型的 DHT 消息都包含两个关键字t和y。 关键字t表示 transaction ID, 其值为一个字符串, transaction ID 由查询节点产生。由于节点会产生多个 query 包,因此其他节点在回复 response 或者 error 包时,必须包含该transaction ID 值,以表明是对某个特定 query 的应答。关键字y表示消息的类型,其值是一个字符,值取q时表示 query 消息,r表示 response 消息,e表示 error 消息。下面分别详细介绍这三种消息。 (1)DHT query 消息 DHT query 消息是节点(node)向 DHT 网络中其他节点发送的查询请求包,用于查询DHT 网络中其他节点的信息,例如 IP 地址和监听端口。DHT query 消息包含两个附加关键字:q和a。关键字q是一个字符串值,包含请求的方法名,包括 ping,find_node,get_peers 等方法。关键字a是一个字典值,包含请求方法的参数。四种不同方法的 DHT query 消息中还有另外一些不同的关键字,在此本文就不加赘述了。 例如DHT query消息的ping方法: t:0001,y:q,q:ping,a:id:abcdefghij0123456789, 经过 Bencode 编码后, 在UDP 载荷中为 d1:ad2:id20:abcdefghij0123456789e1:q4:ping1:t4:00011:y1:qe。 (2)DHT response 消息 DHT response 消息是节点向网络中其他节点发出的 DHT query 消息发送的响应包,表示返回对 DHT query 消息中特定方法的正常响应。DHT response 消息包含一个附加关键字苏州大学本科生毕业设计(论文) 16 r。r的值是一个字典,包含着返回值参数。 例如对上例 query 消息 ping 方法的 response 消息: t:0001,y:r,r:id:mnopqrstuvwxyz123456, 经过 Bencode 编码后, 在 UDP载荷中为 d1:rd2:id20:mnopqrstuvwxyz123456e1:t4:00011:y1:re。 (3)DHT error 消息 DHT error 消息是节点向网络中其他节点发出的 DHT query 消息发送的响应包,表示返回错误信息。DHT error 消息包含一个附加关键字e。e的值是一个列表,给出错误代码及错误信息。 例如对上例 query 消息 ping 方法的 error 消息: generic error = t:0001,y:e,e:201,A Generic Error Occurred,经过 Bencode编码后,在 UDP 载荷中为 d1:eli201e23:A Generic Error Ocurrede1:t4:00011:y1:ee。 通过对 DHT 协议的分析可以发现,DHT query、DHT response 和 DHT error 消息,三者 UDP 数据包的载荷部分, 分别以字符串“d1:a”、 “d1:r”、 “d1:e”开始, 以“1:y1:ee”, “1:y1:qe”和 “1:y1:re” 结 尾 。 因 此 , 对 网 络 流 量 中 的 UDP 数 据 包 , 利 用 正 则 表 达 式d1:are.*1:y1:eqre$进行匹配,可以准确检测 DHT 协议。 但是,字符串“1:y1:ee”,“1:y1:qe”和“1:y1:re”位于数据包的结尾。如果在数据包结尾进行特征串匹配,则需要遍历整个数据包,系统开销较大。因此,将“d1:a”、“d1:r”、“d1:e”分别作为 DHT query、DHT response 和 DHT error 消息的应用层签名,将“d1:”作为 DHT 协议的应用层签名,正则表达式d1:。 综上所述, 本文将基于这四种BT协议应用层签名的BT流量检测方法定义为M1方法。表 3.5 列出了上述四种协议的应用层签名。 表 3.5 四种 BT 协议的应用层签名 BT 协议 应用层签名 正则表达式 Peer wire 0 x13“BitTorrent protocol” x13BitTorrent protocol TCP-Tracker “info_hash” info_hash UDP-Tracker 0 x41727101980 x41727101980 DHT “d1:” d1: 3.2 BT 流量检测识别软件流量检测识别软件 Porpoise 为了实现对网络中 BT 流量的检测识别,我们设计并实现了工具软件Porpoise18。Porpoise 是一款基于 WinPcap19的软件,能对网络中 BT 流量进行检测与分类。Porpoise 实时显示的 BT 流量信息包括网络中 BT 客户端使用的IP,Port对、已传输的数据包数量、字节数、连接持续时间等信息。另外,Porpoise 具有统计分析功能,有助于了解过去一段时间的网络流量情况,如下页图 3.2 所示。 苏州大学本科生毕业设
展开阅读全文