APP下载

针对HTTPS协议网站精细化指纹攻击方法

2018-10-19陈立云王增光

装甲兵工程学院学报 2018年4期
关键词:数据包浏览器指纹

王 凯, 陈立云, 王增光

(1. 陆军工程大学石家庄校区装备模拟训练中心, 河北 石家庄 050003;2. 陆军工程大学石家庄校区装备指挥与管理系, 河北 石家庄 050003)

随着互联网技术的发展和个人隐私保护意识的增强,HTTP协议明文传输带来的安全性问题日益突出,由于HTTPS协议具有良好的兼容性,现有的Web应用可无缝地从HTTP迁移到HTTPS[1],越来越多的网站抛弃不安全的HTTP协议,转而采用基于SSL/TLS(Secure Socket Layer/Transport Layer Security)加密的HTTPS协议来保护用户隐私和信息安全。然而,在保护用户信息安全的同时,加密技术的应用使得网络的可视性降低,给网络管理、流量分析和网络预测带来挑战。尤其是军事信息网络对安全性要求极高,大多数通信流量经加密后进行传输[2],普通检测技术难以判断数据的合法性与安全性,采用加密通道传输非法数据将会带来巨大的安全威胁。因此,对加密流量进行监管与审查具有重要意义。

虽然加密机制能够隐藏客户端和服务器之间的传输内容,但不能有效隐藏数据包的大小、时序和方向等信息,网站指纹(Website Fingerprinting,WF)攻击可以利用这些信息猜测客户端所访问的网站[3]。基于WF攻击的加密流量分析技术通过窃听用户访问网站时产生的数据包序列,能够根据其特征猜测用户访问网站的内容,对加密流量的合法性与安全性进行分析。WF攻击问题通常可以定义为有监督多分类问题,目的是训练一个多分类学习模型预测输入数据序列的类别[4]。目前,大多数研究者将WF攻击看作是对网站主页的攻击,实际上一个网站还包括大量的子页面[5],对网站子页面的精细化指纹攻击与识别技术是当前研究的一个重要方向[1]。HINTZ[6]在2002年最先提出指纹攻击的概念,并针对加密代理SafeWeb,利用数据包长度特征在小规模实验下验证了指纹攻击的有效性,提出了防止指纹攻击的措施,如添加噪声、减少数据包传输数量和在同一个连接中传输数据包等;KIM等[7]提出了一种利用SSL/TLS报文头部的SessionID和服务器IP地址特征进行服务识别的方法,将服务识别分为SSL/TLS流量检测、基于签名的流量识别和基于ID-IP的服务识别3级过程,采用该方法进行了实验,其对SSL/TLS加密流量分类的准确率达到了95%,对SSL/TLS加密服务识别的准确率达到了90%;HUSK等[8]将SSL/TLS协议握手过程中的ClientHello报文包含的密码套件列表作为指纹,建立了SSL/TLS密码套件列表和HTTP的User-Agent关系字典,利用该方法在实时网络环境下进行了实验,其对网络客户端的识别率达到了95.4%。

上述方法利用不同特征对加密流量进行指纹攻击,取得了一定的效果,但由于互联网技术的快速发展,在当前广泛应用内容分发网络(Content Distribute Network,CDN)技术分发资源的情况下,这些方法存在较大的局限性:1)由于CDN站点的资源来自多个不同的服务器,因此难以建立准确的ID-IP与服务的对应关系;2)采用密码套件列表作为指纹的攻击方法受软件环境的影响较大,不具有普适性,因为不同的软件环境支持的密码套件中加密方法不同,不同的操作系统、浏览器甚至相同浏览器的不同版本支持的密码套件中加密方法也不同。为更好地对HTTPS加密流量实施监管与审查,笔者提出一种在CDN分发资源情况下利用域名系统(Domain Name System,DNS)查询序列作为页面指纹的WF攻击方法,该方法利用HTTPS加密协议未对DNS查询信息进行加密的特点,建立DNS查询过程与网站页面之间的关系,对用户访问页面进行WF攻击,实现针对HTTPS协议网站的精细化指纹攻击。

1 基于DNS查询序列的页面指纹

WF攻击的基础是建立有效的网站指纹,用于识别特定网站页面。HTTPS协议与SSH(Secure Shell)、Tor(The onion router)等加密协议的不同在于:HTTPS协议基于SSL/TLS加密算法对数据进行加密,其仅加密实际负载部分,对其他数据包不加密。当用户使用HTTPS加密协议访问网络时,产生的DNS数据包未被加密,其中可泄露出用户访问网站的相关信息。对于非CDN加速站点,DNS查询仅返回服务器IP地址,但在CDN环境中单一页面产生大量DNS请求,这是网站及其子页面的重要特征,可作为页面指纹。

1.1 页面渲染和资源加载

浏览器处理网页的方式对网络中的DNS数据报文具有直接的影响,当用户请求访问网站某个页面时,浏览器对返回的HTML文件进行解析、渲染后成为可视化的页面。浏览器渲染页面的步骤如下[9]:

1) 处理HTML标记并构建文档对象模型(Document Object Model,DOM)树;

2) 处理CSS标记并构建CSSOM(CSS Object Model)树;

3) 将DOM与CSSOM合并成一个渲染树(Render-Tree);

4) 根据渲染树进行布局,并计算每个节点的几何信息;

5) 将各个节点绘制到屏幕上。

在步骤1)中浏览器构建的DOM树结构如图1所示,该DOM树描述了整个页面的结构,页面结构不同,其资源加载顺序也不同。

在步骤4)中,浏览器遍历渲染树以布局页面,当遍历遇到阻塞渲染的资源时(如DOM树中的link、img、具有src属性的script等),暂停遍历请求加载资源,此时产生新的网络请求。

1.2 CDN下资源加载

随着大量实时性要求高的互联网的应用和提升用户访问体验的需要,CDN技术被广泛应用,利用CDN分发站点的通常做法是:把站点所需的资源存放在不同地理位置的CDN缓存服务器,用户访问网页时从多个服务器加载资源,以提高访问速度、优化用户体验。CDN流媒体服务利用DNS将用户重定向到一个就近的镜像服务器上,获得高带宽、低延迟等性能,为用户提供优质的媒体服务[10]。DNS重定向过程如图2所示,具体如下:

1) 客户端向公共DNS服务器请求解析目标域名,公共DNS服务器返回CNAME记录;

2) 客户端再次请求解析CNAME域名,由全局CDN中域名解析服务器解析并返回离用户地理位置最近、负载最轻的镜像服务器IP地址;

3) 客户端向镜像服务器请求数据。

当用户访问使用CDN分发资源的站点页面时,浏览器渲染页面并请求加载新的网络资源,这一过程中会按照请求资源的顺序产生大量DNS请求,由此构成DNS查询序列,如图3所示。

通常网站页面结构相对固定,仅内容发生变化,每个页面所需的资源在一段时间内不发生变化,且CDN服务器在一定的时间内具有缓存,因此每个页面具有相对稳定的DNS查询序列,故可将客户端访问页面过程中产生的DNS查询序列作为页面指纹,可记为

S=(d1,d2,…,dn),

(1)

式中:di(i=1,2,…,n)为第i个DNS查询请求;n为单个页面DNS查询总数。

1.3 指纹分析

网站页面的DNS查询序列虽然相对稳定,但往往因操作系统内多个软件同时运行而产生其他DNS请求,形成噪声信息;网络速度差异和浏览器内核对页面渲染方式的差异均会造成DNS请求数据包乱序;广泛存在于网络中的各级缓存造成的数据包缺失等对指纹的精确性也有一定的影响。

1.3.1 噪声

客户端上往往有多个应用同时运行,不断发送网络数据包,非Web访问的应用在连接服务器交换数据时也产生DNS查询报文,相对于页面指纹,其属于噪声信息,可记为

S1=(d1,d2,…,v,…,dn),

(2)

式中:v为噪声DNS查询请求。

1.3.2 DNS数据包乱序

笔者将DNS查询序列作为页面指纹,即上行DNS数据包,由于不同浏览器内核对页面的渲染和资源加载的处理方式不同,导致资源请求数据包的发送顺序不同,造成DNS查询数据包乱序,可记为

S2=(d1,d2,…,dt+1,dt,…,dn),

(3)

式中:dt+1与dt为乱序DNS查询请求。

1.3.3 DNS缓存影响

DNS缓存广泛存在于浏览器、系统、ISP服务器等,其缓存时间对DNS请求均有一定影响。TTL(Time To Live)是影响DNS缓存时间的重要因素,在CDN中通常对DNS响应设置较小的TTL,用以实现负载均衡[11]。由于缓存的影响,部分DNS解析不向DNS服务器发送查询请求,造成DNS查询序列缺失,可记为

S3=(d1,d2,…,dt-1,dt+1,…,dn),

(4)

其中,dt为因缓存影响而缺失的DNS查询请求。

2 页面指纹识别算法与评价指标

经实验验证,在以DNS查询序列为指纹的网站指纹攻击中,常用的最小编辑距离[12]、朴素贝叶斯分类器[13]和最长公共子串[14]等指纹识别算法均不能达到有效识别的程度。因此,笔者采用支持向量机(Support Vector Machine,SVM)模型对页面进行精细化识别。

2.1 指纹向量化

向量化是数据处理的基础工作,笔者使用词袋(Bag of Words,BoW)模型对DNS查询序列进行向量化,首先在词袋模型中构建一对一映射的词表D,对于数据集中所有DNS查询请求dj,不重复加入词表,则

D={(j,dj)},j=1,2,…,N,

(5)

式中:j为词表中dj的序号;N为词表D中词条的总数。

将DNS查询序列作为页面指纹,对其进行向量化,具体步骤如下:1)遍历页面指纹s中的DNS查询请求di;2)在词表D中查找与di相同的DNS查询请求dj;3)获取dj在词表D中的序号j;4)将j追加到页面指纹向量

x=(j1,j2,…,jn)。

(6)

这样,DNS查询序列指纹就被映射到一个n维空间,构成DNS查询序列的页面指纹向量。

2.2 基于SVM的页面指纹识别算法

SVM是一种广泛应用于统计学习和分类的监督式学习方法,针对高维数据具有很好的学习效果。SVM的基本模型是定义在特征空间上的间隔最大的线性分类器。设指纹数据集

T={(x1,y1),(x2,y2),…,(xn,yn)},

(7)

式中:xi为页面指纹向量;yi为xi的类别标记,yi∈ψ,其中ψ为所有页面的类别空间。

根据T的非线性特性,分类决策函数可表示为

(8)

(9)

则式(8)可改写为

(10)

式中:γ=1/(2σ2)>0,表示数据集中单个样本对分割目标空间的超平面的影响程度。

在实际应用中,SVM模型通常引入惩罚系数C以防止过拟合,C和γ对模型性能起关键作用,一般采用网格搜索法进行参数调节,以取得最优结果。

2.3 评价指标

在指纹攻击的相关研究[12,14]中,大多数采用准确率作为指纹攻击效果评价指标。然而,这种单一评价指标难以满足对攻击方法的全面评价要求,因此,本文采用准确率和F-1分数2个评价指标评价WF攻击方法的性能。

在本文的方法中,将每个页面的类别预测看作一个二分类问题,预测结果分为真正例(True Positive,TP)、假正例(False Positive,FP)、真反例(True Negative,TN)和假反例(False Negative,FN)4类。

2.3.1 准确率

准确率A是评价攻击性能的重要指标,反映模型预测正确数量在总体样本中的比例,其定义为

(11)

2.3.2 F-1分数

查准率P和查全率R是反映识别效果的基本指标,分别定义为

P=PT/(PT+PF),

(12)

R=PT/(PT+NF),

(13)

式中:PT、PF、NF分别为真正例、假正例、假反例数量。

F-1分数为结合查准率和查全率得到的综合指标,定义为

F1=2PR/(P+R),

(14)

F-1分数越高,表明算法对页面的精细化识别效果越好。

3 实验评估

3.1 数据集

为了评估本文提出的指纹攻击方法,根据图4所示的流量采集模型部署实验,在互联网环境下进行数据采集。

实验采用编写的Python程序收集网络请求过程中的DNS数据,程序分为监听和访问2个线程,其中:监听线程使用Scapy模拟攻击者监听网卡流量;访问线程从列表中随机访问加密站点,鉴于部分站点利用异步加载技术,请求采用Selenium和Phantomjs浏览器的方案对页面进行访问,模拟用户使用浏览器加载完整页面资源,且关闭Phantomjs浏览器的缓存功能。

实验利用国内外2台云服务器,配置同为CPU 1核1 GB,内存1 GB,Ubuntu16.04 x64系统。在1个月的时间内,连续随机访问用HTTPS加密的50个站点下的200个二级页面,将捕获的pcap网络数据包文件标记页面编号和访问时间,构成原始数据集,数据集中单个页面访问次数在150~1 100次,去除访问失败和访问超时未抓取到DNS数据的0字节数据包文件,利用Python中的dpkt模块解析pcap文件,提取每个页面的DNS查询序列,经清洗后构成本实验所用的数据集,共有数据53 343条。数据集描述如表1所示。

表1 数据集描述

3.2 网格搜索参数调节

由于网格搜索的计算复杂度极高,本文中采用2段调节的方法:第1段调节过程在小范围内确定参数C或γ的最优值;第2段固定其中一个参数,对另一个参数进行大范围搜索。

在第1段调节过程中,参数γ的最优值确定结果如图5所示,可以看出:γ=0.2时准确率最高。故在第2段调节过程中固定γ=0.2,对参数C进行大规模搜索以确定最优准确率,结果如图6所示,可以看出:随着C的增大,准确率不断提高,当lgC=4,即C=104时准确率最高,且继续增大lgC,准确率趋于稳定。因此,在实验中设定参数γ=0.2,C=104。

3.3 指纹攻击准确率

针对采集到的数据集,笔者分别测试了在不同训练集样本数量下,基于SVM的页面指纹识别算法和朴素贝叶斯算法对页面精细化识别的准确率,结果分别如图7、8所示。可以看出:随着训练集样本数量的增加,基于SVM的页面指纹识别算法的预测准确率最高达到93%,且在训练集上自测的训练分数稳定,具有良好的性能;而朴素贝叶斯算法的预测准确率最高为51%。图中线条阴影是在训练集和测试集交叉验证的准确率范围,可以看出:基于SVM的页面指纹识别算法在交叉验证中准确率稳定,几乎没有阴影;而朴素贝叶斯算法阴影明显,准确率波动较大。

3.4 F-1分数

图9为在不同方法下的F-1分数对比,可以看出:基于SVM模型的方法所得F-1分数较高,表明其对页面精细化识别效果较好;而基于朴素贝叶斯模型的F-1分数较低,表明其对页面的精细化识别效果不佳。

4 结论

针对当前互联网中加密流量比例上升给网络管理、流量分析和网络预测带来的困难,在详细分析CDN环境下DNS解析过程及其影响因素的基础上,笔者提出了一种针对HTTPS加密协议的网站精细化指纹攻击方法。通过在互联网环境下采集的数据集进行了验证,结果表明:该方法对HTTPS指纹攻击准确率达到93%,能够有效精细化识别经HTTPS协议加密页面,从而对网络进行监管与审查。

在现有WF攻击研究中,普遍存在一些实验限制条件,如关闭缓存、配置相同客户端环境等,虽然这些限制条件具有一定的合理性,但降低了攻击方法的实用性,如何进一步减少WF攻击的限制条件,提高WF攻击的实用性是下一步亟待解决的问题。

猜你喜欢

数据包浏览器指纹
二维隐蔽时间信道构建的研究*
像侦探一样提取指纹
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
为什么每个人的指纹都不一样
微软发布新Edge浏览器预览版下载换装Chrome内核
反浏览器指纹追踪
C#串口高效可靠的接收方案设计
唯一的指纹
可疑的指纹
浏览器