针对HTTPS的HEIST攻击及检测技术研究

2017-02-14 09:26刘嘉勇
网络安全技术与应用 2017年1期
关键词:攻击者日志威胁

◆胡 悦 刘嘉勇 黄 诚

(四川大学电子信息学院 四川 610065)

针对HTTPS的HEIST攻击及检测技术研究

◆胡 悦 刘嘉勇 黄 诚

(四川大学电子信息学院 四川 610065)

通过分析HEIST攻击的技术路线和实现方法,建立了HEIST攻击威胁模型。该攻击可以绕过HTTPS加密得到明文信息,影响巨大,并且现有WAF无法对其有效防御。本文提出了一种基于支持向量机的HEIST攻击检测方法。该方法从文本特征、统计特征和窗口特征三个角度对样本数据进行特征提取,完成SVM选择器训练实现攻击行为定位。在此基础上完成了攻击检测实验,实验结果表明,该方法能及时准确定位HEIST攻击行为,完成威胁感知。

HTTPS; HEIST; BREACH; 信息安全

0 前言

HTTPS是以安全为目标的HTTP通道,它通过SSL/TLS协议将网络中传输的数据进行有效的加密。戴尔安全报告显示,2015年第四季度全球HTTPS连接平均占网络连接的64.6%[1],这说明HTTPS方式已成为网络连接的主流。但是HTTPS协议并不是完全安全的,常见的HTTPS攻击方法有BEAST、Lucky-13、RC4 Biases、CRIME、BREACH等[2]。其中CRIME[3]和BREACH[4]都是利用数据压缩来破解HTTPS加密数据的攻击方式,不同的是CRIME的目标是SSL/TLS压缩,BREACH的目标是HTTPS表头压缩。由于BREACH针对的是更广泛被使用的压缩方式,BREACH的影响也更为严重。此外,CRIME和BREACH都需要攻击者监听网络流量来测量加密响应的大小[5],使得这两种攻击都要借助中间人攻击。

Mathy Vanhoef和Ven Goethem[7]发现的HEIST攻击则能够消除中间人攻击的限制,因为HEIST可以利用TCP协议的特性来测量HTTPS响应信息的大小,大大降低了CRIME和BREACH攻击的门槛。攻击者只需要诱使目标用户访问一个恶意网站,结合HEIST和BREACH这两种攻击技术,就能从经过加密的响应数据中提取并解密邮箱地址等其他用户隐私数据,对用户信息安全带来极大的威胁。目前,在HEIST攻击防范上只有禁用第三方cookie,但是这种方式会使网页在线服务无法正常运行。针对上述情况,文本建立了HEIST攻击威胁模型,根据威胁模型设计了一种HEIST攻击检测系统,通过对服务器日志和流量的分析,从文本特征、统计特征、窗口特征三个角度来检测HEIST攻击,有助于提升Web系统安全性。

1 相关知识

1.1 HEIST攻击

HEIST是HTTPS上的一种旁路攻击方式,其工作原理是通过破解TCP上的HTTPS响应方法来测量HTTPS响应的长度。HEIST攻击主要利用Service Workers[8]引入的Fecth API和Resource Timing API来实现。

Fecth API通过fetch()可以获取任何资源,包括身份验证方式下的跨域,能够打破同源策略的限制,读出跨域请求的响应。Fetch API与Promise一起工作,对远程资源发起的请求会返回一个Promise对象。在TCP握手和SSL/TLS协商过后,浏览器向服务器发送GET或POST请求,然后等待服务器的响应,当浏览器当接收到第一个字节的响应数据后,Promise对象根据fetch()的结果可以resolve或者fail,并且可以访问Response对象,这时候Response对象仍然有数据流入,使浏览器可以在完全下载之前开始处理响应。然而,在TCP层,若服务器响应报文大于最大传输单元(MSS),服务器会将响应拆分为多个TCP分组,这些分组会根据TCP拥塞控制机制[9]来发送,发送的TCP窗口大小等于拥塞窗口的大小。若服务器传送的数据大于拥塞窗口则需要分多次传输,即需要多个RTT时间完成数据的传输。图1和图2分别表示HTTP响应对应单个TCP窗口的时间抽和HTTP响应需要两个TCP窗口的时间轴。

图1 HTTP响应对应单个TCP窗口的时间轴

图2 HTTP响应对应两个TCP窗口的时间轴

Promise.resolve()解析的时间与接收到初始拥塞窗口相符,知道资源何时被下载完成,就可以确定响应是在单个TCP窗口还是需要多个TCP窗口。浏览器获取网页时会对网页中每一个对象(脚本文件、图片等)发起一个HTTP请求,Resource Timing API中performance.getEntries方法会以数组形式返回这些请求的时间统计信息,资源完全接收时间为数组最后一项的responseEnd。图3示例了JavaScript如何获取第一次TCP返回时间和资源完全接收时间差,T1是第一次TCP返回的时间,T2是资源完全接收的时间。如果是单个TCP窗口,T2-T1通常在1ms以内,结果非常小。如果是多个TCP窗口,T2-T1随着附加的往返时间会明显增加很多。实际情况中,初始拥塞窗口的预定值通常为10MSS[10],MSS的值为1460,响应小于还是大于初始拥塞窗口可以归结为确定响应是小于还是大于约14kB。

很多时候请求的结果包含请求的参数,利用这一点,将响应分为两个部分,一部分是想得到的实际大小,另外一部分是控制的请求参数,这里称之为反射参数。反复调整反射参数,能够得到第一次TCP返回的最大可能尺寸(对每个服务器来说一般是一个固定值),再减去HTTP和SSL/TLS的header的尺寸就可以得到响应大小。例如,反射参数是708字节的时候正好可以一次TCP请求返回,反射参数为709字节时,总响应需要两个TCP窗口,则响应大小为10*1460(MSS)-528(HTTP响应报头)-26(SSL/TLS头)-708 = 13337字节。

图3 第一次TCP返回时间和资源完全接收时间差代码示例

HEIST利用两个新的API得出目标主机发送的窗口数量,整个过程中通过一段JavaScript代码来确定HTTPS响应信息的实际大小。然后,恶意HEIST代码就可以配合BREACH攻击来从用户的请求数据中提取出加密信息。

1.2 BREACH攻击

BREACH利用gzip压缩还原HTTPS响应中的秘密信息,进行BREACH攻击,必须满足以下两个条件:

(1)服务器响应能反映注入的额外数据;

(2)攻击者能监听网络流量测量加密响应的大小。

BREACH攻击思想是若注入的额外数据与秘密重复,gzip压缩会更有效的压缩响应信息,gzip的这种特性已被证明可以用来解密[4](如CSRF tokens)。图4为HTTPS请求和对应的响应报文的一部分,上面部分的HTTPS请求的URL参数会包含在下面HTTPS响应体中。

攻击者可以利用恶意JavaScript代码来控制用户user参数中“CSRFtoken=”值,如果〈guess〉中第一个字符与CSRFtoken中相同,gzip能通过字符替换来使压缩响应变小。反复改变和测量响应大小能够一个一个猜解出CSRFtoken中的字符直到恢复整个秘密。

图4 HTTPS请求和响应报文

猜测字符需要监听网络流量来测量加密响应的大小,之前要借助中间人攻击,但是利用HEIST仅需在浏览器执行一段恶意Javascript代码即可,BREACH攻击同样可以获取网页上的用户的邮箱地址等隐私信息,使得BREACH攻击能够很轻松的被攻击者利用,对HTTPS安全带来极大的威胁。

2 HEIST威胁模型

威胁建模能对威胁和漏洞进行结构化的评估,将威胁建模方法应用到Web应用程序中,能够充分理解和识别系统现存的威胁。根据这些威胁信息,就能够采取适当的对策消除安全隐患,从而降低被攻击的风险。

DFD是数据流程图,能够抽象性和概括性地描述信息流和数据在系统中流动和被处理的过程。根据HEIST攻击定义的DFD威胁模型能有助于评估系统存在的HEIST攻击隐患和对网站进行风险评估。本文站在受害者的角度,对HEIST攻击建立DFD威胁标准模型,分两层对HEIST攻击进行分解,0级DFD说明攻击的整个数据流向,1级DFD具体展现了HEIST和BREACH攻击数据流。

图5为0级HEIST攻击DFD,表示受害者点击恶意链接后,受害者的浏览器将提交恶意请求,HEIST攻击利用恶意JavaScript让受害者发送大量的HTTPS请求并分析猜解返回的HTTPS响应包直到获取受害者的完整的秘密信息,如步骤1~7所示。1受害者访问攻击者网站,2攻击者注入恶意JavaScript代码,3受害者浏览器发送大量HTTP请求,4目标网站响应,5攻击者根据返回时间得到响应大小,6攻击者利用BREACH攻击,7攻击者得到受害者隐私信息。

图5 HEIST攻击0级DFD

图6为HEIST攻击1级DFD,攻击者伪造恶意网站引诱用户访问就能够实施HEIST攻击。HEIST攻击通过反射参数,根据返回响应包的时间差来判断出正好符合一个TCP窗口的数据包,进而得到响应信息的大小。图7为BREACH攻击1级DFD,BREACH攻击主要利用gzip压缩特性来解密HTTPS响应包,并且HTTPS响应包要包含受害者发送的HTTPS请求参数。如果受害者登录目标网站,并且BREACH攻击猜解的信息中包含CSRFToken,能够突破系统CSRF防御导致更严重的后果。

图6 HEIST攻击1级DFD

图7 BREACH攻击1级DFD

如上文所述,HEIST威胁模型精确描述了攻击行为,攻击者要进行HEIST攻击,首先要对用户钓鱼或者发送垃圾邮件,并且用户启用JavaScript。这种只用通过恶意JavaScript代码执行攻击的方式,使用户和系统很难采取有效的防御措施。HEIST攻击使BREACH攻击不再需要借助于中间人攻击,大大降低了BREACH攻击的门槛,而BREACH攻击利用的是很多网站都会使用的gzip压缩技术,使得Web应用在未来可能遭到频繁的BREACH攻击。

根据HEIST攻击DFD威胁模型,可以总结归纳出HEIST攻击的三个重要特征,有助于系统有效的发现和检测HEIST攻击。

(1)同一个IP地址集中请求同一个页面:HEIST攻击使目标用户在一段时间内不停地向服务器发送请求,在日志统计中将表现出某个IP地址对某个页面的请求数很高。

(2)HTTPS请求参数特征:BREACH攻击会破解响应信息获取用户隐私信息,因此请求参数中会包含user、uid、csrftoken、cookie、.com等涉及敏感信息的字符。在日志分析中可以匹配这些特征字符分析。

(3)TCP窗口数量:HEIST攻击利用TCP协议来窃取HTTPS加密信息,会根据TCP窗口数量来定位响应信息的大小,系统在流量监测方面可以依据拥塞窗口TCP分包来辨别。

3 HEIST攻击检测

3.1 方案设计

根据HEIST威胁模型设计了针对HEIST入侵检测的方法,该方法根据攻击的特征进行提取建立风险模型,如图8所示。对日志文件和流量进行特征匹配,完成对HEIST攻击感知和定位。

攻击检测模型分为日志分析模块和流量分析模块,对服务器当前状态进行提取。日志分析模块首先通过预处理模块完成日志的格式化处理,以访问时间为基准依次输出,每一条访问记录保存为一维数组中间文件,数组元素包括请求时间,请求源IP、请求路径,状态码。将格式化的中间文件分别传入文本特征分析模块和统计特征分析模块。

图8 攻击检测方法

3.2 文本特征分析

文本特征分析模块通过风险模型的文本特征规则使用匹配器进行分析。对HEIST攻击的行为特征进行提取构造特征图,行为特征图由特征点和特征边组成。点和边的特征主要由手工定义DFA得到。匹配器根据规则对输入内容进行检测,输出风险值R。

点特征为单条日志访问记录中存储的信息的内容特征,如权值为0.3的点特征规则r’@.*?..*?s’。命中该规则表明该条记录使用了HEIST攻击敏感参数。

边特征为记录多条数据之间的依赖关系的规则,分为两类。第一类为用户行为依赖边,以日志记录的IP字段为导向,进行边匹配时,首先将同IP请求的路径构造成一个时间轴对象,将源IP赋值给对象名,以时间顺序建立键值对,键名为请求时间,键值为请求路径。该对象记录了单用户在一定时间内的行为。依次将相邻的多个键值对的值输入匹配器,输出命中的特征边的序号和次数。如权值为0.7的规则r’(w*?.php?csrf=w*)[s|S]*?1w’,获取参数内容长度逐步增长的请求行为。第二类边为资源请求依赖边,以服务器资源为导向构造对象,对象名为uri字段中页面名称,键值对建立和匹配方法由第一类特征边类推。完成基础规则定义后,使用大量攻击日志对行为进行提取补充,增加点和边的规则。具体规则和权值示例可见表1。

表1 文本特征权值参照表

分析器风险值计算公式如下:其中xij为点或边的对应第j条规则是否命中的布尔值,pij为该规则的权值,N为特征点,C为特征边为点和边特征权值和。

3.3 统计特征分析

统计特征分析,主要考虑客户端对服务器的请求频率,通常正常的同一个客户端在一段时间内对服务器的请求数量较低,而攻击者控制的客户端会向服务器发送大量的请求。根据HEIST攻击的访问频次对单个IP的行为进行定位,频率的计算公式如下:

3.4 窗口特征分析

HEIST攻击会将大量数据字节注入到网络,服务器会增大拥塞窗口以便把更多的分组响应包发送出去。对系统的拥塞窗口大小进行获取,窗口分析程序输出结果为一个布尔值C,表示指定时间范围内拥塞窗口的变化情况,默认值为0,当拥塞窗口大小前后发生显著增大后稳定现象时,将C置1。

3.5 判断器

将分析模块输出的风险值f{R,P,C}置入判断器,由于各分析模块并非互不相干,因此在简单空间模中无法快速进行结果判断。本文选取SVM分类算法对风险值进行判定。

SVM算法将输入空间映射到一个高维度空间,使样本在该空间现性可分。算法筠连特征选取为上述三个风险值,本文使用libsvm和liblinear开源库完成SVM,惩罚系数置为0.2,核函数选取如下:

4 实验结果及分析

提取蜜罐获取的HEIST攻击特征与正常行为数据作为实验数据,将数据2/3作为训练数据,进行提取置入判断器模型进行训练。使用样本剩余1/3作为实验数据,测试服务器对防御系统进行检测,根据SVM分类计算结果,输出是否存在HEIST攻击行为及存在攻击行为的源IP。检测结果节选如下:

表2 检测结果表

实验结果表明,该方法能有效的捕获HEIST攻击行为,现有的WAF产品暂时还没有检测HEIST攻击的能力,因此未做对比试验。由于训练数据有限,选择器的判断能力存在提升空间。

5 结束语

本文首先阐述了HEIST攻击原理,然后建立了HEIST攻击威胁模型并提出了针对HEIST攻击的检测方法,对日志记录的字段数据进行信息提取与分析处理,从文本特征、统计特征和窗口特征三个角度对HEIST攻击行为进行判断,通过多次实验分析,证明了本文设计的HEIST攻击检测方法的可行性和有效性。

[1]戴尔安全年度威胁报告详解,2016.http://server.51cto.co m/News-507030.htm.

[2]Sarkar.P.G,Fitzgerald.S:Attacks on SSL a comprehensive study of beast,crime,time,breach,lucky 13 and RC4 biases,201 3.https://www.isecpartners.com/media/106031/ssl_attack_survey. pdf(2014).

[3]Tal Be’ery and Amichai Shulman:A perfect crime? onl y time will tell.Black Hat Europe,2013.

[4]Gluck.Y,Harris.N and Prado.A:BREACH:receiving the CRIME attack,2013.

[5]Guha Sarkar P:Modern Attacks on SSL/TLS:Let the BEAST of CRIME and TIME be not so LUCKY[J].Appsec Usa,2013.

[6]Goodin,Dan:HEIST expl — New attack steals SSNs,e mail addresses,and more from HTTPS pages,2016.

[7]M Vanhoef,TV Goethem:HEIST:HTTP Encrypted Info rmation can be Stolen through TCP-windows,2016.

[8]W3C.Service Workers.https://www.w3.org/TR/service -workers/,June 2015.

[9]M.Allman,V.Paxson,and E.Blanton.TCP Congestion Co ntrol.RFC5681,September 2009.

[10]Nandita Dukkipati,Tiziana Refce,Yuchung Cheng, Jerry Chu,Tom Herbert,Amit Agarwal,Arvind Jain,and Natalia Sutin.An argument for increasing TCP’s initial congestion window.Compu ter Communication Review.2010.

猜你喜欢
攻击者日志威胁
机动能力受限的目标-攻击-防御定性微分对策
一名老党员的工作日志
扶贫日志
人类的威胁
雅皮的心情日志
受到威胁的生命
正面迎接批判
游学日志
有限次重复博弈下的网络攻击行为研究
搞笑图片