通信流截获解析系统的设计与实现
徐 楠,陈松乔,眭鸿飞
(中南大学 信息科学与工程学院,湖南 长沙,410083)
摘要: 针对安全传输协议中存在的如SSL和TLS虽然可以保障通信内容的机密性,但无法完全隐藏传输数据长度、通信的持续时间以及通信的频度等信息的问题,提出一种新的方法,即利用HTTPS通信流报文的首部信息,解析并重构出与用户浏览序列对应的页面“指纹”序列;在分析SSL和HTTP通信行为的基础上,给出了基于最大包长度以及时间阈值对HTTPS通信流报文进行解析重组获取页面“指纹”序列的“指纹”序列抽取算法。在此基础上,对HTTPS通信流截获解析系统即HTCPS进行总体设计。实验结果表明,该方法不但能够对HTTPS通信流进行解析,并且能重构出页面“指纹”序列。
关键词: 信息隐藏; 通信流分析; 匿名通信
中图分类号:TP303.08 文献标识码:A 文章编号: 1672-7207(2005)04-0664-04
Design and implementation of HTTPS traffic capturing and parsing system
XU Nan, CHEN Song-qiao, SUI Hong-fei
(School of Information Science and Engineering, Central South University, Changsha 410083, China)
Abstract: Although communication security can be guaranteed by the technique of typical security transfer protocols such as SSL and TLS, it is still difficult to hide the data volume, frequency and the duration of communication. A new method was proposed, which can use the information leaked in the header of HTTPS packets and reconstruct the “fingerprint” sequence of Web page corresponding to users browsing sequence. The communication behavior of SSL and HTTP was analyzed, and a fingerprint extracting algorithm was derived based on the maximum transfer length of HTTPS packet and a timing threshold which can reconstruct the communication flow file, and finally a general scheme for the design of HTTPS traffic capturing and parsing system (HTCPS) was proposed. The results show that this approach can not only capture HTTPS browsing traffic successfully, but also reconstruct the fingerprint sequence for the Web browsing sequence.
Key words: information hiding; traffic analysis; anonymous traffic
虽然采用加密和重路由机制能够在一定程度上抵御通信流分析攻击,但是,采用基于“指纹”匹配的方法能够识别用户正在访问的网页。这种方法主要根据用户通过加密信道浏览网页时产生的通信流信息重构出网页的HTML文件大小、内嵌对象文件大小等形成“指纹”,进而搜索目标站点的指纹模型,以识别用户浏览的网页[1,2]。目前,国内的研究者大多限于对其基本原理的探讨,国外的研究者则大多限于在假设的条件下分析其攻击效果[3]。
[CM(20] 虽然现有的捕包工具如Windump[3],Sniffit[4], Sniffer pro[5],Iris[6]和Commview[7]等能在截获通信流数据包的基础上,根据相应的协议进行解析重组,却无法进一步根据Web的HTML文件及内嵌对象文件的传输长度以及时序关系等信息构造出用户浏览Web序列对应的“指纹”序列。
HTTPS通信流截获解析系统必须能够在局域网环境中截获IP数据包,根据给定过滤条件,从中抽取与用户浏览Web页序列对应的“指纹”序列。具体地说,系统应当能够捕获局域网内的数据流,获取HTTPS通信流中IP数据包头中的源、目的地址、长度和时间等信息;解析所截获IP数据包,重组出所传输文件的各项信息,包括传输长度、传输时间等;根据文件的传输长度及时间,结合HTTP协议通信规程,重构出与用户浏览的Web页序列相对应的“指纹”序列。在此,作者对HTTPS通信流截获解析系统的设计与实现进行研究。
1 HTTPS通信流截获解析系统总体设计
通信流为数据包序列〈 IP1, IP2,…,IPn>,记为Traffic。其中,IPi(1≤i≤n)为元组(SrcAddr,DestAddr,SrcPort,DestPort,Type,TimeStamp,Size);SrcAddr为数据包IPi的源地址;DestAddr为目的地址;SrcPort为源端口号;DestPort为目的端口号;Type为所属的应用层协议内容;TimeStamp为捕获时间;Size为数据包有效载荷。
需要注意的是,当通信流为加密通信流时,Size为去除加密传输协议报文头后的有效载荷。
给定Web页p的指纹为元组(HTMLLen,OBJLenSet),记为Fingerprint(p)。其中:HTMLLen为页面p的HTML文件的传输长度;OBJLenSet为页面p所包含的内嵌对象的传输长度的集合。
根据HTTPS通信流截获解析系统的功能需求,设计系统的分层结构,如图1所示。整个系统由通信流捕获、指纹序列解析和指纹序列存取3个模块组成。
a. 通信流捕获模块为系统的主控模块。在初始化阶段,根据输入参数和编译的过滤规则,监听指定接口设备。当有数据包到达时,依据规则过滤数据包,并调用指纹序列解析模块处理符合过滤条件的数据包。
b. 指纹序列解析模块根据上层协议解析数据包头,获得指纹序列。
c. 指纹序列存取模块接受指纹序列解析模块输出的页面指纹序列,存入数据库。
系统采用C语言开发,开发工具选用Micorsoft公司的Visual C++ 6.0,后台数据库选用Oracle 8.1.6。系统通过ODBC接口访问数据库。

图 1 模块关系图
Fig. 1 Relation of modules
2 通信流截获
通信流截获模块必须监听接口设备,并在IP数据包到达时,进行过滤并调用解析模块。这部分功能通过调用Winpcap捕包函数库[1,2]中相关的函数来实现。捕获模块处理流程如图2所示。初始时, 读取系统的网络接口设备,并显示设备列表。再根据参数Parameters,Snaplen,Promisc和To_ms初始化相应的接口设备。其中:Parameters为用户指定用于监听的接口设备;Snaplen为要截取的数据包的长度;Promisc设为1,为混杂模式;To_ms设为1000,为超时返回时间(单位为ms)。然后,根据TCPDump规定的过滤规则设定参数[1,2],使系统只保留HTTPS数据包。最后,进入监听循环。

图 2 通信流捕获流程图
Fig. 2 Flow chart of capturing traffic
3 HTTPS通信流解析
截获模块过滤出的HTTPS数据包被传入HTCPS解析模块,以解析重组出用户浏览网页的指纹。这里,有2个关键的问题需要解决:一是如何把通信流中属于不同网页的数据包区分开;另一个是如何把同一网页内属于HTML文件以及不同对象文件的数据包区分。对于第1个问题,由于用户点击速度的关系,属于不同网页的数据包在传输时的时间间隔相差较大,因此,通过设定一个时间阈值(通常大于1 s),可以把属于不同网页的数据包分离。第2个问题较复杂,需要深入分析HTTP和SSL协议的内在机制。
3.1 SSL协议通信行为
传输层安全协议(SSL)是在TCP/IP基础上提供一种通信内容机密性的安全协议,其体系结构如图3所示。

图 3 SSL协议栈
Fig. 3 SSL protocols
在交换应用数据之前,通信双方进行协商,交换密钥等信息,协商过程以Finished报文结束。然后,开始传输应用负载数据,此后的通信行为与HTTP协议一致[8,9]。不同之处在于,负载数据被加密并加上SSL记录协议报文头。因此,负载在传输时的长度为密文长度加上SSL记录协议头的长度。在分组加密情况下,密文长度为大于明文长度的分组密钥长度的倍数。
3.2 HTTP协议通信行为
根据HTTP协议规范,网页访问过程为:客户浏览器发出一个网页请求后,服务器的第1个响应为网页的HTML代码。浏览器接收和解析HTML后,将并发地请求所有内嵌对象。来自服务器的响应以同样的顺序返回。多个请求和响应形成一个如〈请求1,响应1,请求2,请求3,响应2,响应3>的序列。因此,在请求1和请求2之间的间隔中发送的响应即为HTML页面的代码。后续的响应即为页的内嵌对象,这样就可以区分同一网页内属于HTML文件以及不同对象文件的数据包。由于每个请求/响应的最后一个数据包的长度小于最大包长度,因此,通过观察获得连接的最大包长,就可得到每个响应,即HTML或对象文件的密文长度。
3.3 指纹序列抽取算法
根据前面的分析,提出指纹序列抽取算法。算法基本思想描述如下:初始化阶段,对计数器赋初值1,临时变量fp及指纹序列队列FpSeq设为空值,对象长度Len及前一数据包的时间清零。进入循环后,首先判断当前数据包时间与前一数据包时间的间隔是否超过给定阈值,若是,则将已解析出的指纹fp送入指纹序列中。然后,对象长度Len与当前包长度累加,并根据长度是否小于最大包长MaxSize,来判断当前包是否为传输对象的最后一个数据包,若是,则将对象长度并入指纹变量fp,并将对象长度计数器归零。算法最后输出指纹序列FpSeq。
指纹序列抽取算法如下。

4 运行结果
用VC++6.0实现该算法,并在实际环境下进行测试。通过截获用户浏览一个普通网站https://www.chan.fangdaily.com的通信流并进行解析,将解析所得到的指纹序列与实际的指纹序列数据进行比较以验证算法的正确性。
表1所示为截获并过滤后所得到的通信流数据;表2所示为解析后得到的指纹数据与实际指纹数据的比较值。从表2可以看出,解析所得指纹数据均与实际指纹数据相吻合,表明通过解析算法,可以成功地从浏览通信流中解析出网页序列对应的指纹序列。
表 1 浏览通信流
Table 1 Browsing traffic

表 2 解析所得指纹与实际指纹的比较
Table 2 Comparison between parsed fingerprint and actual fingerprint

5 结 论
a. 通过研究SSL和HTTP协议的内在机制,提出基于时间阀值和最大包长来解析通信流的指纹抽取算法。
b. 在模拟环境下通过实验对算法进行了验证,研究结果表明,运用该算法能正确地解析并构造出页面指纹。
参考文献:
[1]Carstens T. Programming with pcap[EB/OL].http://broker.dhs.org/pcap.html, 2003-03-10/2005-06-28.
[2]Degioanni L. Winpcap documentation version 3.0 alpha[EB/OL].Home page: http://winpcap.polito.it, 2003-03-21/2005-06-28.
[3]The Tcpdump Group.Tcpdump[EB/OL].http://www.tcpdump.org, 2005-06-05/2005-06-28.
[4]LawrenceBerkeleyLaboratory.Sniffit[EB/OL].http://reptile.rug.ac.be/coder/sniffit/sniffit.html, 2003-06-03/2005-06-28.
[5]NAI Corporation.Sniffit.Sniffer Pro[EB/OL].http://www.xfocus.net/download.php?id=276, 2003-05-25/2005-06-28.
[6]Eeye Corporation.Iris[EB/OL].http://www.eeye.com/html/products/iris/download.html, 2003-03-15/2005-06-28.
[7]TamoSoft Corporation.Commview[EB/OL].http://www.tamos.com/download/main/, 2003-03-21/2005-06-28.
[8]李霞,杜祝平,曹蓉容,等. 通信量分析方法在网络攻击中的作用[J].现代计算机, 2001, 107(1): 65-68.
LI Xia, DU Zhu-ping, CAO Rong-rong, et al. The application of traffic analysis in attacking network[J]. Modern Computer, 2001, 107(1): 65-68.
[9]Stallings W. 密码编码学与网络安全:原理与实践(第2版)[M]. 杨明,等译. 北京:电子工业出版社,2001.
Stallings W. Cryptography and network security: principles and practice[M]. YANG Ming, et al, translate. Beijing: Electronics Industry Press, 2001.
收稿日期:2005-02-10
基金项目:国家自然科学基金资助项目(90104028)
作者简介:徐 楠(1981-),男,浙江杭州人,硕士,从事网络安全与构件技术的研究
论文联系人: 徐 楠,男,硕士;电话:13574874368(手机);E-mail: antonyvic@sina.com