2024年3月10日发(作者:)
2014年第1期
文章编号:1009—2552{2014)01—0155—04 中图分类号:TP393.09 文献标识码:A
Skype协议分析及流量识别
吴君钦,丁瑶
(江西理工大学信息工程学院,江西赣州341000)
摘要:近几年来,P2P网络技术发展迅速,Skype是创建Kazaa的组织开发的一个基于P2P的
VolP客户端,用户可以用Skype通过互联网进行语音通话。本文通过抓取Skype的流量数据进行
协议分析,主要关注PC2PC的登录/注销,文字通讯,语音通信,文件传输及PC2Phone等过程,
进而总结协议特征,提出了一种基于协议分析的Skype流量识别方法,结果显示识别率达到
95%以上。
关键词:Skype;P2P;VoIP;协议分析;流量识别
Skype Protocol Analysis and TramC Identiifcation
WU Jun.qin.DING Yao
(College of Information Engineering,Jiangxi University of Science and Technology,G-anjou 341000,Jiangxi Province,China)
Abstract:In recent years,peer—to-peer(P2P)network technology is developing rapidly.Skype is a
peer—to—peer VoIP client that developed by Kazaa,the user can use Skype to make voice call via the
Intemet.This paper analyses the protocol through grasping the Skype traffic data and focuses on process
such as login/logout,text communication,voice communication,file transfer of PC2PC and PC2Phone,
hten it concludes the characteristics and proposed a method based on protocol analysis for Skype trafifc
identiifcation.The experimental results show that more than 95%rate of Skype flows had been detected.
Key words:Skype;P2P;VoIP;protcool analysis;traflic identiifcation
0 引言
Chen_3 等人提出一种识别Skype转播流的方法,但
计算机对等网络P2P,作为目前改变现有Inter-
是他们的方法只是检测转播流;S.Guha 4 等人使用
net应用模式的主要技术之一,成为新一代互联网技
特定的负载和流特征来识别Skype流量,单独的负
术研究的热点问题。基于第三代P2P技术,
载特征不能准确识别,仅利用流特征识别的不精确。
Skype…正以优质的语音质量和低廉的通话费用吸
为此,研究Skype的PC2PC登录/注销,信息传
引着越来越多的用户,它的出现给传统的VolP业务
输及PC2Phone等过程,对准确识别并控制Skype流
带来了巨大的冲击。它可以几乎无缝穿越NAT和
量有着很大的意义,一方面可以借鉴其中的关键技
防火墙,并且语音质量比其他的VolP客户端软件要
术用于改进目前网络电话技术,另一方面可以对
好很多,它加密了端到端的通话,分散式存储用户信
Skype业务进行有效控制。本文将在对Skype协议分
息,支持即时消息通信和网络语音会议。
析的基础上对如何识别Skype流量进行探索与研究。
由于Skype协议不公开,并且使用了比较安全
1 Skype协议分析
的加密算法。因此,目前尚没有对Skype协议的详
抓取数据包背景:有公网IP、无防火墙;有公网
细研究,也没有识别Skype流量的有效方案。Eh—
IP、防火墙、只能出;在NAT内、无端口限制;在NAT
lert 等人描述了一种利用流的模式和负载信息从
收稿日期:2013—06—09
Skype的登陆阶段识别Skype流,但这是基于一个给
作者简介:吴君钦(1966一),男,研究方向为宽带通信。
定的防火墙类型或安全设置和假设;Kuan—Ta
.--——
155.-———
内部、只准TCPS0/443外出。分别在四种情况下对
Skype3.x/4.x/5.x进行登录/注销,文字通讯,语音
通信,文件传输,PC2Phone等不同场景抓包,每个包
的大小在100M以内。
Skype用户(Skype client,SC)之间进行及时消
取规则的过程中发现仅仅靠纵向对比不能发现协议
特征,还可以通过横向比较和纵向对比的方法相结
合来进行多包识别,综合比较发现顺序同向不连续
的三个包的包长为0x0003,0x0003,0x0004,可以写
成一条多包规则。
息和文件传输时使TCP方式,进行语音视频聊天
时,使用的是UDP方式,所以两种方式都要分析。
下面对本文要分析的过程进行具体分析。
1.1 登录/注销
udp流则要通过深度解析和统计的方法来提取
特征。对比发现数据包流量的包长不等于0x0020
并且在0xO00f~0x01f4之间,固定偏移为0位置的
两个字节为0x0300和0x0202,固定偏移2位置的一
Skype在登录的时候会先使用UDP请求主机列 个字节固定为0x02,可以将这些作为深度解析的人
表(Host Cache,HC)中的IP,5秒后没响应,就用
TCP请求HC中的IP及端口,如果还不行,就用TCP
请求HC中的IP及8O端口,如果又不行,就再请求
HC中的IP及443端口,6秒后失败就无法登陆。
整个过程中传输的数据量大概在8k一10k,持续的
时间在3至35秒,整个的登录过程可以重复4次。
连接的对象保存在本机中HC中的节点列表 』。
报文中的tcp流除了skype.com这种比较明显
的特征外,还有一些tcp的流在固定偏移1l的位置
出现8个固定字节0x40 1b e4 86 02 ad e0 29,加上
https的固定端口443和内容类型、版本信息及握手
类型等信息特征组成一条规则。连接超级节点(SH.
per node,SN)时,发现包长固定为0x0005,与https
的特的特定信息也可以组成一条规则。以上是在一
个包里面通过纵向对比提取的单包规则,另外一些
没有明显的特征,要通过统计的方法提取特征。
1.2信息传输
Skype的信息传输包括文字通讯/语音通f 文
件传输/视频通话等。如果双方都位于公众网中,双
方可以使用UDP包直接进行数据交换;如果有一方
位于私有网络或者是防火墙之后,那么私有网络一
方需要首先同公网中的至少一个SN建立TCP链
接,然后由SN进行数据转发;如果双方都位于私有
网络中,那么双方的数据都需要SN进行转发。
Skype的语音数据包的大小一般是67bytes,正好是
UDP包的净荷。对于100Mbps的以太网来说,每秒
可传送140个语音数据包。一般来说,上下行语音
传输所需的平均带宽为5Kbps。如果有其中一方或
者双方都位于私有网络中,由于要通过TCP同SN
进行数据交换,此时一个语音数据包的大小一般为
69bytes。可能的情况下,Skype会优先选择UDP协
议进行通信。
信息传输的tcp流可以通过单包和多包规则来
描述。通过skype.corn或gateway.messenger.1ive.
conr和https的特征组合可以写成两条单包规则,提
一
1 56一
口条件,模式为固定偏移3,4,5位置的一个字节不
为0x00,偏移0的位置固定为0x00,这些特征组成
一
条深度解析规则。统计规则的人口条件包长在
0xOO5a~0x0064或0x000f一0x0028之间,另外一个
人口条件为固定偏移2位置的一个字节为0x02,这
两个特征可以组成一条统计规则。
1.3 PC2Phone
PC2Phone的流量都是udp的流量,通过自行编
译的小工具fBuddy纵向比较发现每条流的包长是
0xO01d或0x0008,源端口和目的端口都是12340,基
于此共性,可以将这端口和包长作为深度解析的人
口,然后通过固定位置偏移来确定规则,比较得出偏
移0的位置固定为0x0000,这三个特征可以确定一
条规则。比较发现除了端口固定为12340外,上行
或下行连续两个包的包长都为0x0004和0x001d,
这样可以写成多包规则。
以上所有的规则都被加入到规则库中,规则中
的特征只是基于抓取报文期间所能够找到的版本,
随着网络的发展,Skype的版本也在不断升级,规则
库也需要不断的维护,由于已经有各个过程的特征
存在,新版本的特征不会有特别大的变化,因此只需
要根据现有特征修改或增加规则即可。
2 Skype流量识别
2.1 流量识别模块及工作原理
流量识别函数框架如图1所示,利用Libpcap
解析报文,然后将报文放人引擎进行识别。
PushQueue
数据包队列 P0PQ
ueue
据包解析 引擎识别
图1识别框架图
(1)数据包解析:利用Libpcap解析报文,Libp—
cap是unix/linux平台下的网络数据包捕获函数,
Libpcap提供了系统独立的用户级别网络数据包捕
获借VI,并充分考虑到应用程序的可移植性。报文
目录解析如图2所示。
本文使用到的算法依次有:关联表匹配算法、特
征字匹配算法、端口匹配算法,报文识别通过以上的
识别流程后,识别结果分三种情况:
IdenL0k——报文所在的流已经被识别,无需继
续送人后续报文。
Ident j.ail——报文所在的流未被识别,该流的
后续报文也无需再传送人引擎。
Ident_doub——报文所在的流已初步被识别,
图2报文目录解析流程
一
并返回初步识别结果,但还需要更多报文进行验证。
设置好报文的方向,五元组信息,包长等信息后
级目录为类名,二级目录为应用名,报文放在
第二级目录下,报文识别完毕后要清空流表和关联
表,然后统计识别结果。
(2)引擎识别
引擎识别流程如图3所示。
检测开始>—_.1 分图处理
关联识别
联识别不出
端口识别
——1—一
—— \
13识别不出
\—/
星
特征识别
征识别不
写入关联表项
流无法识别
、\/
....................
jI.....一
流识别结果
返回
图3引覃识别流程
上一节定义的规则中都有多个特征,每条规则
中的特征是相与的关系,即一条流必须同时满足一
条规则中的所有特征的条件才能命中该规则,所有
的规则都放在规则库中。引擎在加载库的过程中将
规则中含有模式匹配的特征串加入到硬件状态机,
这样比纯粹的软件状态机识别速度要快。当报文解
析完毕后,引擎会根据每条流的应用层的首包判断
将报文送人到HTFP图,HTFPS图,TCP图或UDP
图,这样的话相当于进行的并行处理,识别速度又得
到了提高,图是规则的集合。检测开始后进行分图
处理然后进行识别,分图是这样的,TCP流的首包含
有”H1_1、P”、99HEAD”、”GET”、”POST”的加人到
H1_I'P图,首包源端口或目的端口为443的流加入
到HTI'PS图,其余的TCP流加人到TCP图,UDP流
直接送到UDP图。
如果流已经被识别则直接返回识别结果,反之则进
行特征字匹配:
{
等待特征到来
{
if(特征1被匹配到)
等待下一个特征
{
if(特征2被匹配到)
等待下一个特征
{某规则特征全部匹配,报告
该流被识别为该规则}
}
if(没有特征规则匹配这条流)
{将这条流交给输出模块进行转发}
}
}
2.2报文识别
报文具体识别流程如图4所示,存放数据包节
点函数:Packet—Node结构体
{
USHORT FlowHash;//流表hash算法
ULONG CheckSum;//数据包校验和
PACKETS PacketsInfo;//存放数据包的信息头
FIVE
_
TUPLES FiveTuples;//数据包五元组
UCHAR ad[PKT_SIZE];//数据包负载
USHORT PKTLen;//数据包负载长度
struct pktnode NextPKT;
_
}PKT—NODES;
3 实验及结果分析
3.1 实验环境
实验环境中计算机具有独立IP,与交换机间有
100Mbit/s的以太网连接,网络出口连接在教育科研
网上,计算机为奔腾IV1.3G,512M内存,
一
1 57—


发布评论