一种对等文件共享程序的检测方法
技术领域
本发明涉及一种网络数据传输中对程序的检测方法,尤其涉及的是一种对等文件共享程序的检测分析方法。
背景技术
数字时代开创了空前的联系人员和共享信息的方式,近来,对等(P2P)文件共享已成为全球范围内通过Internet共享不受版权限制的音乐、音频、图像、文档和软件程序的便利方式。P2P软件的产生和发展对互联网的资源利用和资源共享起到了很大的推进作用,而且能提供强大的分布式计算能力和快速高效的大范围搜索功能,最重要的是能为用户提供了快捷方便的信息共享服务。
Skype是一种典型的P2P软件,它主要提供即时通讯和网络电话的功能。相比其他P2P软件,SKYPE有很多其他P2P软件不具备的优点,包括:(1)极强的穿透防火墙能力,可以与所有防火墙、NAT(网络地址转换)和路由器一起使用。(2)快速传送超大文件Skype的文件传输功能同样采用了P2P的技术。(3)全球通用Skype提供了全球搜索目录,可以根据不同的查询条件查询您认识的、或者不认识的朋友,并且,可以马上开始进行畅通无阻的语音聊天。(4)采用“端对端”加密,极具保密性。
鉴于上面的优点可以看出SKYPE拥有更先进的技术,通过分析和检测SKYPE的技术可以了解SKYPE的协议的特性,了解SKYPE的协议设计的思想,这些技术和思想对于将来的P2P软件和协议的开发和应用都有很好的借鉴和参考价值。
但是,最近P2P软件可以使用任意的端口来达到隐藏自己存在的目的,所以这给检测工作带来的很大的困难。目前针对P2P软件的数据传输,主要的检测技术有以下几种:
关键字检测结合报文大小检测,这种方法取决于具体的P2P协议和所检测的报文内容的大小,和报文是否被加密。当P2P协议特征不明显,或者检测的报文中的字节数太少,或者报文已经被加密,那么检测的效果就相当有限;端口和IP结合再结合关键字的方式检测,这种方式结合了两大技术的优点,检测效果不错,但是,也有不足的地方。这个技术首先是基于IP结合端口进行判断的,如果IP结合端口漏过某个P2P应用程序,那么后面的检测也无法检测出来。Skype是一个典型的P2P软件,它的特征不明显协议也未公开,并且对报文进行了加密,所以利用当前的几种检测技术很难将其检测出来。
以下进行稍加详细的说明现有技术情况:
1、关于关键字检测,依据以下两个规则:
(1)报文大小:大多数的P2P协议使用相同的报文大小来传输数据信息。所以就可以用特定的报大小来确定P2P的文件传输。报文大小是与TCP的PUSH标志相联系。它检测TCP的PUSH标志来判断报文大小。同过检测一系列的相邻的两个TCP报的PUSH表示就可以判断P2P数据传输流。
(2)报文格式:通过检测P2P控制报文的报文内容区别不同的应用程序。
对于大多数的P2P软件,通常数据传输的报文大小通常是相同的。所以报文大小的检测并不是主要依据,报文格式就成了主要的判断标准。对于不同的P2P协议的分析其不同的报文特征,并以此来区别不同的P2P应用程序。
但是,P2P文件传输的所使用的报文通常是相同的,那么第一条标准就用处不大。第二条标准须要对各种P2P协议相当的了解,找出其不同之处才能对其进行区别。如果P2P协议未公开,或者报文经过了加密那么第二条标准也不适用。再者第二条标准还依赖于检测的报文大小,通常要区别的协议越多需要检测的内容也就越多。如果要区别很多种协议,那么他的效率也会有很大的下降。
2、关于关键字检测结合IP端口检测,依据两大部分:
第一部分类似于上述的第一种技术,是一种基于关键字的检测技术。不过它不再依赖检测报文的大小,并且为了增加效率只检测报文的头几个字节。
第二部分是IP和端口结合的技术。它是基于两条基本原理:
第一条,经研究发现通常P2P软件同时使用UDP和TCP连接。在常用的协议中只有如下表几种协议同时使用UDP和TCP连接。
Ports |
Application |
135,137,139,445 |
NETBIOS |
53 |
DNS |
123 |
NTP |
500 |
ISAKMP |
554,7070,1755,6970,5000,5001 |
Streaming |
7000,7514,6667 |
IRC |
6112,6868,6899 |
gaming |
3531 |
p2pnetworking.exe |
所以检测的初步结论是在同时使用UDP和TCP连接的应用程序中,除去上表列出的几种应用程序可以初步认为是P2P软件。
第二条基本的原理是:在同一个应用程序使用的连接中,有多少个不同的IP就要有多少个不同的端口。如图1所示,当hostB,hostC,superpeer连接主机host A时,hostB,hostC,superpeer拥有不同的IP,而它们的端口是各自分随机配的,所以是不相同的。
因此,根据该原理得出这样一种检测方法:
首先,检查源目的(source-destination)IP对,找出那些同时使用TCP和UDP的连接的应用程序。然后除去常用的非P2P软件,剩下的就可以初步看作是P2P软件。
然后,分析各个被认为是应用程序的连接的IP-port(端口)对,根据第二条原则,IP地址个数要与port端口个数相等,在进行进一步筛选。
最后采用关键字检测法分析报文。
该方法的缺点主要包括:首先认为P2P软件都同时使用两个TCP/UDP连接,除去常用的一些同时使用TCP/UDP应用程序,其他的就默认为是P2P软件。如果某P2P软件只使用一种连接那么就可能造成检测疏漏。其次是在关键字检测部分采用了与第一种现有技术相似的方法,同样当报文被加密,P2P协议未公开时的检测效果就不好。另外,为了增加效率,检测的报文的大小也十分小,这就更限制了区分能力。
因此,现有技术存在缺陷,而有待于改进和发展。
发明内容
本发明的目的在于提供一种对等文件共享程序的检测方法,用于解决某些特征不明显、协议未公开的P2P应用程序难以用通常的关键字或者端口和IP结合的方式检测出来的问题,提出一种可以用来检测程序数据传输流量的方式,用以确定是否为对等文件共享程序。
本发明的技术方案包括:
一种对等文件共享程序的检测方法,其包括以下步骤:
A、检测网络传输数据报文,更新TCP/UDP流表;
B、检测程序传输数据所用的协议,根据双方通信时的使用报文不同,分别采用不同检测流程,并做关联分析。
所述的检测方法,其中,如检测到采用UDP方式传输数据,则包括步骤:
B11、如果检测到静荷长度为18的UDP报文,且同一数据流中的UDP报文出现五次,则在列表中记录该UDP包的网内IP地址和对应端口号。
所述的检测方法,其中,如检测到采用UDP方式传输数据,则包括步骤:
B12、如果检测到静荷长度为11的UDP报文,看是否含有第4至7字节与所记录的网内IP相同,若相同,则将列表中相应的网内端口号和IP地址的记录,标识为SKYPE流。
所述的检测方法,其中,双方通信时检测到采用TCP方式传送数据时,包括以下步骤:
B21、如果检测TCP连接前面交互的两个包中,发送的包长为14字节和对方回复的包长均为14字节,则可能是SKYPE流。
所述的检测方法,其中,如果在收到对方回复的14字节的包后,发送方再发送一个27字节的包,则为SKYPE流。
所述的检测方法,其中,双方通信检测到采用TCP方式传送数据时,包括以下步骤:
B22、检测HTTP GET报文是否含有host:ui.SKYPE.com,判断其中是否含有特征字:getlatestversion,记录下源IP地址和端口号,该IP用户有可能是进行SKYPE通信的请求。
所述的检测方法,其中,双方通信检测到采用TCP方式传送数据时,包括以下步骤:
B23、检测建立TCP连接后,前面两个交互包是否固定,即:客户端向对方发送一个五个字节的包,内容为1603010000,对方回复一个五个字节的包,内容为1703010000,如是,则可能是SKYPE的登录过程。
所述的检测方法,其中,双方通信检测到采用TCP方式传送数据时,包括以下步骤:
B24、检测建立连接时,对方是否使用443端口建立连接,若是,则检测这种连接的规律,即:客户端先向SN发一个72字节的包,前十六字节内容比较固定,为8046010301002D000000100000050000,SN回复一个93字节的包,前面十六字节部分也固定,为160301004A020000460301401BE48602,则可能为SKYPE传输过程。
本发明所提供的一种对等文件共享程序的检测方法,通过采用对UDP和TCP报文的分析,实现了对对等文件共享程序的准确识别。
附图说明
图1为现有技术的数据传输检测时的系统结构示意图;
图2为本发明方法的UDP数据传输时的检测流程示意图;
图3为本发明方法的TCP数据传输时的检测流程示意图。
具体实施方式
以下结合附图,将对本发明的各较佳实施例进行较为详细的说明。
本发明所述对等文件共享程序的检测方法中,针对SKYPE的检测流程如下:由程序取出IP报文,并更新TCP/UDP流表,首先区分出其它知名应用程序不予检测,其过程如现有技术所采用的步骤,在此不再赘述。其次,区分出其它容易检测的P2P应用程序不予检测。再次,检测程序传输数据所用的协议。
若双方通信时,使用的是UDP,则依次进行下列检测过程,如图2所示的:
1.如果检测到静荷长度为18的UDP数据包,且同一数据流中的UDP报文出现五次,则该UDP流极可能为SKYPE流,在列表中记录该UDP包的网内IP地址和对应端口号;采用匹配状态计数器来进行对UDP报文的计数,设其初始值为5,每匹配到一次减1,直至所述匹配状态计数器为0;则可以进一步确定此时双方的通信是SKYPE方式。
2.如果检测到静荷长度为11的UDP报文,看是否含有第4~7字节与所记录的网内IP相同,若相同,则将列表中相应的网内端口号和IP地址的记录,标识为SKYPE流。
UDP的关联分析就是将网内IP和端口对其它具有该二元特征的流进行标记为SKYPE流。该条记录可以作为此后判断UDP是否为SKYPE流的依据。
若双方通信时,如果检测到使用TCP方式通信,则检测过程如下,如图3所示的:
方法一:如果检测到TCP连接前面交互的两个包中,发送的包长为14字节和对方回复的包长均为14字节,则很可能是SKYPE流;特别的,在收到对方回复的14字节的包后,发送方再发送一个27字节的包,则为SKYPE的数据流。
方法二:如果检测到HTTP GET报文中含有host:ui.SKYPE.com,并判断其中是否含有特征字:getlatestversion。如有,记录下源IP地址和端口号,该IP用户有可能是进行SKYPE通信的请求。
方法三:如果检测到建立TCP连接后,前面两个交互包是否固定,即:客户端向对方发送一个五个字节的包,内容为1603010000,对方回复一个五个字节的包,内容为1703010000。若出现这种情况,则很可能是在SKYPE登录过程中。
方法四:检测建立TCP连接时,对方是否使用443端口建立连接;若是,则检测这种连接的规律,即:客户端先向SN发一个72字节的包,前十六字节内容比较固定,为8046010301002D000000100000050000,SN回复一个93字节的包,前面十六字节部分也固定,为160301004A020000460301401BE48602。
TCP关联分析是通过对该IP地址发出的其它TCP流中的其它特征进行分析并识别的方式。
上述TCP连接前面交互的两个包是指在TCP的三次握手建立成功后,本发明方法一直在检测其报文,连接成功后最前面的两个交互的TCP包。其中,对TCP的检测方法一,可以作为相对主要的方式进行检测,因为该种特征在TCP包中出现的频率比较高。
通过上面对UDP包和TCP包的分析,可以确定已经被检测出的Skype流的源IP和目标IP和端口,据此对网络中的流量进行关联分析,从而可以更加容易的检测出网络中的Skype流,通过其他手段进行关联分析,特别是事后分析过程能够利用一些不明显的处理复杂的特征进行,可用于流量监视,所述的关联分析为现有技术所公开,在此不再赘述。
本发明方法之所以采用上述方案,是基于SKYPE的以下节点交互特征:正常情况下,SKYPE主要通过UDP与SN节点进行连接交互信息。在限制UDP包传送的网络环境下,SKYPE亦可以完全通过TCP连接来运行程序。在有防火墙屏蔽的情况下,SKYPE与SN节点之间、以及点与点之间,仍可以通过443端口和80来建立连接传递信息。
由于Skype只通过一个端口来收发UDP包,这个端口的端口号在程序安装之后随由系统随机给定,并可由用户修改。但当该端口确定后,在程序启动后到退出之前都不会改变。并且在登录和通信过程中,净荷长度为18字节的UDP报文突发非常多,第3个字节为02;SN回复给SC的包,其UDP报文净荷长度为11,在登录过程中出现次数较多,该报文第四到第七个字节为目的IP地址NAT FIREWALL穿越;在TCP连接中,前面交互的包有一些比较特殊的格式,即有些固定长度(如14字节)和固定的内容等信息;在登录过程中会向ui.SKYPE.com服务器发送一个HTTP 1.1GET请求,里面包含有特征字:getlatestversion,如下表所示。对方会回复一个200OK的包。因此,本发明的上述方法步骤可以实现对SKYPE这类程序的检测。
本发明的上述方法将数据传输的数据包分为UDP和TCP包两部分进行分别处理,根据它们中表现的一些特殊的字节长度的数据包,以及这些特殊数据包中的包含的特征,设计了一套检测的流程。由于SKYPE是协议未公开的P2P应用,单纯的依靠特征判断,会造成判断的准确率较低的状况,因此在本发明方法的检测分析中,结合关联分析理论,对可能出现的几种情况之间的相互影响程度,找出了其中优势率比较大的情况,并作出最终的判断,其识别准确性非常高。
但应当理解的是,上述针对具体实施例的描述较为详细,并不能因此而理解为对本发明专利保护范围的限制,本发明的专利保护范围应以所附权利要求为准。