HTTPS页面指纹特征对象主动提取系统的设计与实现
2018-10-20丛小亮余翔湛
丛小亮 余翔湛
Abstract: HTTPS network is one of the most widely used Web security protocol.For the HTTPS traffic identification,a more effective traffic identification method is using the sequence of HTTP packet size as the page fingerprint to identify traffic.For collecting page fingerprint, the paper designs and implements the page fingerprint extraction system.Experiments show that the system can extract page fingerprints very well, which provides a good foundation for the page traffic identification work.
引言
高速、丰富且多元的信息传播在给人们带来便捷的同时,也制造了潜在隐患。许多不法分子,利用Web站点发布大量的混杂问题信息,因而对时下的网络安全运行保障机制提出了更高要求。
在早期,由于Web站点采用明文的HTTP协议传输数据,在多数情况下研究将采取关键字检测等方式,过滤出访问不良站点的流量,进一步地,发现含有不良信息的站点页面。然而随着SSL/TLS安全协议的成熟,HTTP协议与SSL/TLS协议的混合协议-HTTPS协议也随即获得了广泛使用。当前,HTTPS协议正快速发展成为网络中应用最多的Web安全协议之一。
HTTPS协议采用对称加密方式传输应用层信息,这就使得基于关键字的检测技术已然不再适用。另一方面,通过HTTPS协议封装的信息,其应用层负载的特点是尺寸很大,由此即会导致传输层频繁产生尺寸为MTU大小的分片,综上分析可知基于传输层包负载大小的传统流量识别方法将难以达到理想应用效果。而由于代理服务器等原因,通过观察网络通信目的地址和端口的流量分析方法也已不再具备应用优势意义。
文献[1-3]均提出了基于Web站点指纹匹配的方法来识别访问目标页面产生的流量,尤其是文献[3]中论述的以访问页面过程中产生的HTTP请求应答对象大小的序列作为指纹的方式,实践效果较好。
在上述背景下,本课题设计并实现了页面指纹特征主动提取系统。实验表明,本系统能够有效采集页面站点指纹,为页面访问流量识别工作提供了良好基础,具有一定的实际意义。
1系统总体设计
1.1系统输入输出
本系统的功能是针对给定页面,采集页面指纹,作为从旁路流量中匹配识别访问该页面产生的流量的特征。而关于单个页面,本系统的输入是目标页面的URL,输出是访问该页面过程中,产生的TCP连接个数N,以及每个TCP链路上传输的HTTP请求,应答报文对象大小序列。图1给出了针对单个页面的系统输入输出示意图。
1.2系统工作流程
本系统的核心是一个能够与客户端浏览器以及服务器端进行SSL通讯的本地代理程序,其设计理念借鉴了中间人攻击的思想[4-5]。文献[6]指出SSL代理程序与浏览器进行SSL通讯的基础是生成一个自签发的CA证书,且将证书插入到浏览器信任的证书列表中。代理程序可以通过监听本地端口截获浏览器发出的HTTP CONNECT请求。通过解析请求的HOST域,可获得请求报文的转发目的地。接下来代理程序会与HOST域指向的服务器进行SSL通讯,获取服务器证书。通过篡改该证书的签名,生成一个受客户端信任的server证书,这是代理程序与浏览器建立SSL通讯、获取明文HTTP请求的重要基础。在获取HTTP请求报文后,代理程序首先解析请求报文的大小,而后将报文转发给服务器端,并截获服务器的响应报文。获取响应报文后代理作解析与转发操作。系统工作流程如图2所示。
2系统模块设计
系统的核心组成部分有:控制模块,请求解析模块,客户端连接转换模块,请求处理模块。本节将逐一阐释论述各个模块逻辑和功能。
2.1控制模块
控制模块主要负责控制开启/关闭代理程序和控制浏览器访问给定URL对应的站点页面。每当浏览器加载一个站点结束时, 代理程序会向控制模块发送一个SIGUSER信号,控制模块收到信号后,将调用浏览器访问相邻URL集合中下一个URL对应的站点页面,如果当前访问的URL已经是URL集合中的最后一个URL,控制模块在关闭代理程序后执行退出。控制模块流程图如图3所示。
2.2客户端连接转换模块
客户端连接转换模块的主要功能是将客户端与代理程序的socket连接转变为ssl-socket连接。这里的一个技术难点是如何能够使浏览器信任代理程序生成的证书。在启动系统以前,要生成一个自签名的ca根证书,这个证书的拥有者和签发者完全一致,证书签发使用的私钥与证书本身含有的公钥匹配成一对公钥私钥对。代理系统中要保留这个公钥私钥对,而ca根证书要导入到浏览器当中。客户端连接转换模块启动时,先要获取服务器提供的证书,并提取这个证书中的組织名、备用组织名等信息。然后用这些信息和代理系统中保留的公钥组成一张新的证书,同时再用系统保留的私钥进行签名。这样,ca根证书的公钥即可准确解密验证新生成证书的签名,从而形成一个闭合的证书验证链。客户端连接转换模块的设计流程如图4所示。
2.3请求解析模块
请求解析模块负责读取浏览器发来的请求报文,如果请求报文的请求方法为connect方法,说明当前浏览器在访问一个受SSL协议保护的站点页面,这个时候解析模块先要返回给浏览器一个响应码为200的响应报文,紧接着调用客户端连接转换模块将现有的tcp连接转换成SSL-Socket连接,而当与浏览器建立SSL连接以后则再次获取请求报文。此时需注意的是,要对浏览器的请求报文头做适当的处理,为了消除缓存对访问的影响,应该删除请求头字段和ifnonematch字段,同时也要将proxyconnection字段改为connection 字段。在重组报文头的同时,还应该统计浏览器请求报文的原始报文长度。请求解析模块流程如图5所示。
2.4请求处理模块
图6给出了请求处理模块的主要流程。值得注意的是,在现实的网络环境中,有些站点页面的页面结构比较复杂,所以在网络传输过程中会采用chunked分块编码传输的策略进行传输,代理程序需要缓存并重组各个应答报文块,同时去掉应答报文头的transfer-encoding字段,将应答报文一次性地发回给浏览器。
3系统运行效果
本节中,使用HTTPS页面指纹特征对象主动提取系统提取url为https://login.live.com 的页面指纹。观察系统的运行效果。
首先,在系统的输入文件dst_url.txt中写入待采集页面url,然后运行browser_control.py。系统开始运行并输出采集结果文件result.txt。result.txt 用于记录访问站点时间里的TCP连接数,以及每个连接中请求应答报文对象的大小。系统运行结果result.txt内容如图7所示。
分析日志結果可知,在访问 https://login.live.com/ 的过程中,浏览器与服务器共建立了7条TCP连接,在每个TCP通道上,系统统计了每一个连接中传递的请求、应答报文对的大小。如在连接1中,本机49820端口与login.live.com所在服务器上的443端口建立了TCP连接,该连接上浏览器发出了一个大小为182字节的请求报文,其请求的目的url为login.live.com。服务器对此请求响应一个3 755字节大小的应答报文。特别地,可以发现TCP连接7并没有用来传输数据,经过分析可知,其作用是用于表示整个访问过程的结束。另外可以看到,在TCP连接2、3、5中,存在一个连接通道上传输多个请求应答对的情况,这种现象叫做TCP连接的复用。该特性由HTTP协议1.1版本引入,旨在提高TCP信道利用率,降低HTTP服务器TCP连接数,从而达到降低服务器负载,提高服务器性能的目的。
4结束语
本文首先明确了以页面HTTP报文大小序列作为站点指纹,用于识别访问特定页面时产生的HTTPS流量。然后明确了本课题的目的,即设计并实现HTTPS页面指纹特征对象主动提取系统。此后,本文给出了页面指纹提取系统的总体设计以及各个模块的详细设计和技术原理。最后以特定页面为例,演示了系统的运行效果。
目前,本系统作为代理程序运行在本机特定端口时,可以成功代理浏览器访问和 HTTPS 站点,并能够动态统计收集访问指定站点时 TCP 连接个数,请求应答报文对象大小,URL 请求依赖关系等可以作为站点指纹的数据。实际运行结果表明,本系统能够长时间运行,并且批量采集给定站点集合的指纹信息。当前系统的一个不足之处在于,针对同一个页面的2次采集结果可能出现偏差。其原因是浏览器之间的个体差异,使用不同的浏览器,由于加载策略的不同,会导致观察到的 HTTP 报文个数出现偏差。此外,本系统工作的原理是作为代理程序转发报文,并在转发的过程中进行统计。浏览器与服务器直接通信和与代理程序通信的访问行为有所不同,这也会导致最后的输出结果与真实的情况存在一定偏差。
参考文献
[1] HERRMANN D, WENDOLSKY R, FEDERRATH H. Website fingerprinting: Attacking popular privacy enhancing technologies with the multinomial nave-bayes classifier[C]//Proceedings of the 2009 ACM workshop on cloud computing security. New York, NY, USA:ACM, 2009: 31-42.
[2] LU L,CHANG E C, CHAN M C. Website fingerprinting and identification using ordered feature sequences[M]. Berlin/Heidelberg:Springer, 2010.
[3] 吴家顺. Website 指纹识别攻击与防护[D]. 南京:南京邮电大学, 2013.
[4] CALLEGATI F, CERRONI W, RAMILLI M. Maninthemiddle attack to the HTTPS protocol[J]. IEEE Security and Privacy, 2009, 7(1): 78-81.
[5] PRANDINI M, RAMILLI M, CERRONI W, et al. Splitting the HTTPS stream to attack secure web connections[J]. IEEE Security & Privacy, 2010, 8(6): 80-84.
[6] 曲波,吴兆芝. 面向安全Web服务的SSL代理服务器的设计与实现[J]. 华中科技大学学报(自然科学版),2003,31(Supp):114-116.