基于特征进程的P2P流量识别

—120
—                                                        基于特征进程的P2P 流量识别
张  文,沈  磊
(山东大学计算机科学与技术学院,济南 250061)
摘  要:为了解决P2P 流量识别中用户使用端口跳跃、数据加密等方法带来的识别难题,通过对主机进程与网络流量相关性的研究,提出一种基于特征进程的P2P 流量识别系统,在客户端通过进程匹配完成P2P 流量的识别,并且具有发现未知P2P 进程的能力。实验表明,该系统对于P2P 流量具有较高的识别能力。 关键词:P2P 流量识别;进程;数据加密
P2P Traffic Identification Based on Characteristic Process
ZHANG Wen, SHEN Lei
(School of Computer Science and Technology, Shandong University, Jinan 250061)
【Abstract 】To resolve the hard problem which is caused by using port hopping and data encryption i
n P2P traffic identification, a new system for identifying the P2P traffic is presented based on characteristic process by the relevant researching between host process and network traffic, and the identification of P2P traffic is realized by process matching on the client host. The system also has the ability to detect unknown P2P process. Experimental results show that the system has a good performance in P2P traffic identification. 【Key words 】P2P traffic identification; process; data encryption
计  算  机  工  程 Computer Engineering 第34卷  第15期
Vol.34    No.15 2008年8月
August 2008
·网络与通信·
文章编号:1000—3428(2008)15—0120—03
文献标识码:A
中图分类号:TP393.08
流行的P2P 应用包括文件共享、P2P 视频以及即时通信等。P2P 应用产生的数据流量已经超过了HTTP 和FTP ,占整个Internet 流量的一半以上,给网络带来沉重的负担。由于这类应用对网络带宽有较大的需求,因此对其他网络应用产生明显的影响。P2P 协议的多样性、复杂性影响了该部分流量的识别和控制。
随着端口跳跃、数据加密等技术在P2P 程序中的广泛使用,原有的一些识别技术已经很难满足需要,这就要求研究新的识别技术。
1  传统P2P 流量识别技术
(1)基于端口的识别
早期的应用程序通常使用固定的端口进行通信,使区分不同流量变得较为容易。但是现在许多P2P 应用程序为了躲避防火墙的限制和逃避检测,开始使用端口跳跃的方法通信(使用任意端口,甚至使用80, 443等端口),这使得目前基于端口的P2P 流量识别变得十分困难。
广告的种类(2)基于负载信息的识别
多数P2P 协议在负载中含有协议特征字符串,用于区分不同协议,这些字符串通常是公开的或容易得到,通过检测和匹配这一字符串完成识别[1]。
基于负载信息的识别存在以下问题:
1)负载信息可能含有个人或组织的敏感信息,检测可能会带来一些安全问题。
2)许多P2P 应用中使用数据加密通信使得负载信息不可识别。
3)在网络利用率较高的环境下进行实时负载检测需要很大的开销。 (3)基于行为特征的识别
主要利用P2P 数据流量与其他流量在行为特征上的差异,来进行区分[2-3],目前存在识别精度不高的缺陷。
2  基于特征进程的P2P 流量识别原理
进程通常可以看作是一个具有一定独立功能的程序在某个数据集合上的一次运行活动。如果某个进程的存在能够表明一个应用程序正在系统中运行,那么就称该进程为应用程序的特征进程。
isao从进程的角度来看,某个主机产生的网络流量其实是由运行在该主机上的进程产生的。如果能够在操作系统中到属于P2P 应用程序的特征进程,就表明主机上正在运行P2P 应用程序,若这些特征进程打开了TCP 端口或UDP 端口,那么就可以判定由这些端口产生的流量即为P2P 流量。
例如,当运行P2P 应用程序电驴(emule V0.47)时,系统就创建了一个用来容纳主程序代码及其所调用的动态链接库的进程,进程名为“ ”(进程的名通常都与可执行程序或DLL 库文件对应),此进程即为应用程序电驴的特征进程。由该进程所产生的网络流量则可以被确定为P2P 流量。
这种方法在P2P 流量产生的起始位置完成识别,无论进程使用什么端口号或者是否对通信数据进行加密都不会对识别产生不利影响,可以提高识别的准确性和可靠性。
3  系统结构与功能
整个系统包括服务器模块和客户端模块两部分,服务器
作者简介:张  文(1973-),男,助教、硕士,主研方向:网络测量,网络安全;沈  磊,副教授
收稿日期:2007-10-25    E-mail :guanligongju@yahoo
—121—
端主要实现P2P 特征进程库的建立和维护以及识别数据的处理等,客户端完成对自身主机产生的P2P 流量的识别。每个模块又由多个子模块组成,系统结构如图1所示。
远东共和国
服务器
客户机
图1  系统总体结构
avcool各子模块功能简述如下: (1)P2P 进程库更新
负责从服务器下载最新的P2P 特征进程库到客户端。 (2)P2P 流量识别
查主机上的P2P 进程,确定其产生的流量。 (3)可疑进程监测
对于那些与特征进程库并不匹配但具有一定P2P 特征的进程进行监视,并报告给服务器,用于发现未知P2P 进程。
(4)消息收发
完成客户机与服务器之间的数据传送。 (5)识别监测数据处理
对接收到的识别数据和可疑进程监测数据进行相关 处理。
(6)P2P 进程库管理
完成创建、修改及升级P2P 特征进程库等工作。 (7)人机界面
设置系统参数和显示系统运行状态等。
4  关键模块的设计与实现
4.1  P2P 特征进程库的生成
P2P 特征进程库是P2P 特征进程名的集合,它的每一项对应一个P2P 应用程序的特征进程名。如何确定某个进程为P2P 进程,主要利用下述2种方法来确定:
(1)方法1
对于公开的、众所周知的P2P 应用程序(例如BitTorrent, Skype 等),其特征进程名可通过下面几个步骤获得:
1)运行进程枚举程序,获取当前主机中所有运行进程的快照。
2)运行P2P 应用程序。 3)再次执行进程枚举程序,获得另外一个主机进程快照。 4)后一次快照比前一次快照多出的进程可确定为P2P 特征进程。
(2)方法2
对于无法用方法1确定的进程,若符合某些P2P 特征也可以确定为P2P 进程,例如客户端某个进程既使用TCP 端口又使用UDP 端口,便可初步确认为P2P 进程,最后系统根据可疑进程判定策略确定后,通过手工或自动方式添加到特征进程库中。
通过上述方法即可构建出P2P 特征进程库,表1列出了部分P2P 应用程序对应的特征进程名。
表1  部分P2P 特征进程
P2P 应用程序 特征进程名 BitTorrent Plus!
<
emule 0.
4.2  客户端P2P 特征进程库的更新
由于P2P 软件的不断升级和更新,因此P2P 特征进程库也需要及时地更新。当在服务器上完成P2P 特征进程库的升级后,服务器向客户端发送进程库更新消息,通知客户端及时下载更新进程库。或者,由客户端定期访问服务器获取最新的特征进程库。
每个P2P 特征进程库都有一个唯一标识,利用这个标识,可以确定进程库有无更新,在本系统中以更新日期+2位修订号作为进程库标识,比如进程库是2007年3月8号第1次更新,那么这个进程库的标识就为07030801,若当天第2次更新则为07030802,依次类推。客户端通过比较本地特征进程库和服务器上的特征进程库标识的大小,就能判断出是否需要下载更新特征进程库。此过程的实现代码如下:
void Update_Lib()  //函数功能:获得最新的进程库 { long client_lib_id=get_client_libid();    //获得客户端当前进程库版本号  connect_server(); //连接服务器
long server_lib_id=get_server_libid();    //获得服务器最新进程库版本号  if (client_lib_id<server_lib_id)  //如果服务器进程库已更新
{ down_newlib();//下载新的特征进程库  }}
4.3  P2P 流量识别的实现
P2P 流量识别为系统的重要组成部分,工作流程(见图2)如下:
图2  P2P 流量识别流程
(1)检测P2P 进程
对当前主机上运行的进程进行枚举,将获得的全部进程与P2P 特征进程库中的条目进行比对:
1)若匹配,则说明有P2P 应用程序在运行。 2)否则,就认为没有P2P 应用程序在运行。
在Windows平台下有多种方法可以枚举进程,这里使用ToolHelp32 库函数来完成。ToolHelp32 库函数是标准的API 函数,其中有部分函数可以用来枚举系统中的进程、线程以及获取内存和模块信息[4]。
1)利用CreateToolhelp 32Snapshot()函数来创建系统。
2)调用Process32 First()函数,从快照中获取进程列表。
3)重复调用Process 32Next()函数,直到函数返回FALSE 为止,这样会遍历快照中的进程列表。
4)函数返回一个PROCESSENTRY32结构,其中包含着进程较为全面的信息,在结构成员szExeFile中可以获得进程名,然后与P2P特征进程库相比对,若匹配则说明该进程为P2P进程。
(2)进程与端口的关联
在检测到存在P2P进程后,调用OpenProcess() API以获得该进程的句柄,然后到该进程打开的所有对象的句柄的类型值,并与0x1A比较(在Windows 2000下,对象\Device\Tcp 和\Device\Udp的句柄类型值为0x1A),若相等,则说明该进程在使用TCP或UDP端口。如果存在P2P进程并打开了端口,则使用TDI查询将进程与进程所打开的端口的关联起来。
(3)发送识别消息
对于发现的P2P进程,将其产生的流量信息(包括客户端IP、端口号以及远程主机IP和端口号)封装在消息中,发送至服务器。
4.4可疑进程监测
面对P2P应用程序的不断推出和升级,这就要求系统具有发现未知P2P特征进程的能力,对于符合下列特征、但不与特征进程库匹配的进程,将被判定为可疑P2P进程:
(1)在一定的时间段内,进程同时产生较大的上行和下行流量。
(2)进程同时使用TCP和UDP端口与外部主机通信。
(3)同时使用多个端口且与多个不同IP地址的主机通信。
客户端在发现可疑P2P进程后,将该进程的相关信息发送到服务器,由服务器完成确认和后续工作。
4.5客户端与服务器之间消息的传送
客户端与服务器之间需要传输较多数据,这些数据组织成“消息形式”的发送和接收,如图3所示。系统中设计了4种消息,分别是:特征进程库更新消息,P2P流量发现消息,可疑进程消息,客户端状态消息。
图3 客户端与服务器之间消息传送5 实验及结果
为了评价系统的识别性能,在此引入指标PFI(流识别率)和PDI(数据识别率):
PFI=F p/F(1) 其中,F p表示识别为P2P类型的流的数量;F为用于识别的全部流的数量。
刘震云PDI=D p/D(2) 其中,D p表示识别为P2P类型的数据量;D为用于识别的全部数据量。
在一个工作组中对系统进行了测试,采集了工作组与互联网之间的网络流量,共计1 002 513 KB作为识别样本。分别使用端口识别、负载信息识别和特征进程识别3种方式进行了识别,结果如表2、表3所示。
表2 流识别率对比
端口识别内容识别特征进程识别检出流134 1
682 10
457 PFI/(%)0.648.06 50.13
中东家具总流数20 858
表3 数据识别率对比
端口识别内容识别特征进程识别检出数据/KB 75.4 196 571.0 341 538.0 PDI/(%) 0.007 19.610 34.070 总数据量/KB    1 002 513
可以看出:端口识别的识别率最低,PFI为0.64%,说明多数P2P程序已不再使用固定不变的端口进行数据传输;内容识别的识别率相对高一些,在总共20 858个数据流中,检测出1 682个P2P数据流,PFI为8.06%,PDI为19.61%;与内容识别方式相比,特征进程识别的PFI高出5倍之多,由于识别为P2P类型的流量中许多流的尺寸很小,因此其PDI 没有相同比例的增加,但也达到了34.07%。
6 结束语
P2P流量的识别已经成为流量管理中的重要部分,在P2P 技术不断发展的同时也给识别技术带来了新的挑战。本文提出了一种基于客户端特征进程的P2P流量识别技术,可以提高对P2P 流量的识别能力,同时还能够解决由端口跳跃和数据加密等引起的识别难题,并利用VC++6.0完成了在Windows2000 系统下的实现。
参考文献
[1]Subhabrata S, Oliver S, Wang Dongmei. Accurate, Scalable
In-network Identification of P2P Traffic Using Application Signatures[Z]. 2004: 512-521.
[2]Karagiannis T, Broido A, Faloutsos M, et al. Transport Layer
Identification of P2P Traffic[C]//Proceedings of the 4th ACM SIGCOMM Conference on Internet Measurement. New York, USA: ACM Press, 2004: 121-134.
[3]Karagiannis T, Papagiannaki K, Faloutsos M. Blinc: Multilevel
Traffic Classification in the Dark[J]. SIGCOMM Comput.
Communication Rev., 2005, 35(4): 229-240.
[4]Solomon D. Inside Microsoft Windows 2000[M]. [S. l.]: Microsoft
Press, 2000.
—122—

本文发布于:2024-09-22 23:37:29,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/126771.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:进程   识别   特征   流量   端口   数据   客户端   使用
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议