基于SSLStrip的HTTPS会话劫持

基于SSLStrip 的HTTPS 会话劫持张恒伽,施 勇,薛 质(上海交通大学信息安全工程学院,上海 200240)【摘 要】文中在研究了目前广泛应用的HTTPS 协议的基础上,分析了HTTPS

基于SSLStrip 的HTTPS 会话劫持

张恒伽,施 勇,薛 质

(上海交通大学信息安全工程学院,上海 200240)

【摘 要】文中在研究了目前广泛应用的HTTPS 协议的基础上,分析了HTTPS 会话劫持的手段和方法,并重点分析和揭示了一种基于中间人攻击(MITM)的HTTPS 会话劫持方法—SSLStrip 。进而提出了关于HTTPS 协议本身以及所有通过HTTPS 进行涉密交互的客户端的安全性问题,并提供了针对SSLStrip 可行的防范措施。【关键词】SSLStrip ;HTTPS ;信息安全;中间人攻击

【中图分类号】TP309. 2 【文献标识码】A 【文章编号】1009-8054(2009) 10-0080-03

HTTPS Session Hijacking Based on SSLStrip

ZHANG Heng-jia, SHI Yong, XUE Zhi

(School of Information Security Engineering, Shanghai Jiaotong University, Shanghai 200240, China)

【Abstract 】This article analyzes the extensively-employed HTTPS protocol and discusses the common HTTPS hijackingmethods and techniques. A specific practical way—SSLStrip, which is based on man-in-the-middle technique(MITM), isproposed and analyzed in detail. The article exposes the obscure security problems concerned with https-based communication,which is generally believed to be quite safe, and provides some defending measures against SSLStrip attack.【Keywords 】SSLStrip; HTTPS; information security; MITM

0 引言

HTTPS 作为一种安全的HTTP 数据传输协议,被广泛应用于万维网上敏感信息的通信,例如交易支付等方面。然而,HTTPS 也存在自身的缺陷,不能绝对保证服务端自身的安全。在网络攻防中,威胁服务器安全的行为时有发生,最常见的例子就是使用模仿银行域名的钓鱼攻击(Ph i s h i n g) 。随着H T TP S 的广泛使用,一些新的针对HTTPS 会话的劫持也开始出现,如基于中间人攻击的Surf Jacking 、SSLSniff 等。文中结合HTTPS 实现过程中出现的一些问题,分析了一种新的H T T P S 会话劫持方法SSLStrip ,同时提出了针对HTTPS 会话劫持的防范措施。

cure Socket Layer) ,是以安全为目标的HTTP 通道。它是由Netscape 公司开发,其目的是通过应用Netscape 的安全套接字层(SSL)作为HTTP 应用层的子层,实现对数据的加密以及身份的验证。当客户端向服务器提出连接要求时,首先要协商建立SSL 连接,然后在SSL 应用数据通道上传输HTTP 数据。HTTPS 使用端口443进行通信,而不同于HTTP 使用端口80与TCP/IP进行通信[1]。

当HTTPS 服务器与客户端进行交互时,其连接过程可以分为3个阶段:客户端与服务器之间建立TCP 连接;客户端与服务器进行SSL 握手;在客户端与服务器成功SSL 握手后,传送已加密的HTTPS 数据。其中,完整的SSL 握手过程又可分成以下4个步骤[2]:

① 建立安全能力:确定客户端浏览器与HTTPS 服务器之间通信所使用的SSL 版本和密码编码方式;

② 服务器鉴别和密钥交换:HTTPS 服务器向客户端发送数字证书,以证明自己的身份,此证书中包含服务器

1 HTTPS协议分析

HTT PS(H ype r Te x t Tr a ns f e r Pr ot oc ol o ve r Se -

公钥及其他信息,并使用CA 密钥加密;

③ 客户端验证和密钥交换:客户端验证HTTPS 服务器身份,并生成会话密钥,使用服务器公钥加密。如服务器需验证客户端,则向服务器发送客户端证书,并使用客户端自己的私钥加密;

,

④ 握手完成:服务器与客户端确认会话密钥,并发送单独加密报文,表示握手完成。

在HTTPS 的使用中,一些服务器也会采用SSL 简单握手协议,在SSL 握手过程中,服务器不需要客户端提供证书,其结果可导致欺骗的发生。

向服务器发送一个HTTPS 连接请求。因此,用户通常接触到HTTPS 的方式有两种:一种是 Web上的连接,比如当用户在gmail 上输入用户名和密码后,点击的登录键,将用户的用户名和密码以HTTPS 的形式POST 到服务器。另一种是通过HTTP 的302状态。

当客户端向gmail 提出HTTP 连接请求时,gmail 服务器会返回一个R E D I R E C T 网址,h t t p s ://w w w. google.com/accounts/ServiceLogin?service=mail...,用户端在接收到这个URL 后,将页面重定位到该网页,并请求HTTPS 连接。

从另外一个角度讲,用户通常是通过HTTP 向服务器发起HTTPS 连接的。而HTTP 本身是以明文的形式对外传送,并不能保证数据的安全。因此,可以考虑通过对HT TP 进行劫持,来实现对H T TP S 劫持的目的。整个SSLStrip 过程包括如下几个步骤(见图1) :

2 HTTPS会话劫持

2.1 HTTPS中间人攻击

HTTPS 中间人攻击(Ma n-i n-t he -Mi ddle At t ac k) [3]

是一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机MITM 虚拟放置在网络连接中的客户端Client 与服务器Server 之间,在客户端与服务器进行HTTPS 通信时,由MITM 对HTTPS 数据进行转发,Client 和Server 都不会意识到会话已被劫持。MITM 不仅可窃听HTTPS 通信还可以对信息进行篡改,达到HTTPS 攻击的目的。

基于Web 的HTTPS 会话使用SSL 协议,而SSL 协议在握手协商阶段发送公钥证书。比较普遍的HTTPS 中间人攻击,例如SSLSniff 等,在网关截获SSL 会话,替换服务器公钥证书,将公钥PKey 换成自己的公钥PKey`,欺骗客户端。客户端使用PKey`加密信息并发送会话,中间人用私钥Skey`解密客户端返回会话,从而劫持会话。同时,中间人用PKey 加密明文会话并返回服务器[4]。

使用SSLSniff 进行HTTPS 会话劫持时,在客户端收到未认证的证书时,浏览器会弹框示警,从而有可能造成客户端对MITM 存在的警觉。

2.2 HTTPS会话劫持的新方法 SSLStrip

(1) SSLStrip简介

在分析完HTTPS 协议流程以及一种HTTPS 中间人方法SSLSniff 后,文中介绍一种新的HTTPS 中间人会话劫持方法SSLStrip [5]。SSLStrip 所能达成的目标是在客户端与服务器建立连接时,在MITM 与Server 之间形成HTTPS 连接,而在Client 与MITM 之间形成HTTP 连接,即将SSL 层从原HTTPS 连接中“剥离”。这样,既避免了在客户端验证证书时难以避免的弹框问题,又能够劫持HTTP 明文数据,并同时保证客户端HTTP 数据的传输,达到欺骗服务器与客户端的效果。

(2) SSLStrip的原理和实现

现实生活中,在浏览器地址栏中输入网址时,多数用户会采用直接输入网址的方式,而忽略了传输所采用的协议。例如,在登录gmail 过程中,大多数用户会直接在地址栏中输入www.gmail.com ,向Google 服务器发送一个HTTP 连接请求,而不是输入https ://www.gmail.com,

图1  SSLStrip劫持HTTPS过程

① 客户端Cli e nt 向服务器Se rve r 发起HTTP 连接请求;

② 中间人MITM 监听客户端与服务器的HTTP 数据;③ 服务器返回给客户端的HTTP 数据包被在客户端与服务器之间的中间人截获。中间人解析原HTTP 数据包,将其中替换成,将 Location : https ://... 替换成Location :http://..,同时记录下所修改的URL ,并保存;

④ 中间人将修改后的HTTP 数据发送给客户端;⑤ 客户端Client 向服务器Server 发起HTTP 连接请求;⑥ 中间人计算机解析客户端的HTTP 连接请求,并与保存文件相比较。当发现存在有已修改过的HTTP URL 时,将其替换成原HTTPS URL ,并发送给服务器;

⑦ 与服务器保持HTTPS 连接,回到步骤③;⑧ 与客户端保持HTTP 连接,回到步骤④。SSLStrip 原理流程如图2所示。(3) SSLStrip劫持HTTPS 的效果

对于服务器端而言,服务器Server 从HTTPS 连接开始,就与中间人MITM 建立SSL 连接。服务器并不能区分客户端Client 和中间人MITM 的区别,因而,服务器认为HTTPS 是安全的。对于客户端而言,由于中间人MITM 与客户端Client 之间是HTTP 连接,因此并不会产生证书认

81

,

证时弹框等任何示警。均可在一定程度上防范当前的中间人和网络钓鱼攻击;

③ 下载最新版高安全度的网络浏览器;

④ 对敏感账号采用认证证书,如令牌和其他形式的双因素认证;

⑤ 对来自未知发件人发出的电子邮件要高度警惕,不要以点击链接的方式接入涉密网站(而应在浏览器中输入网址) 。

另外,由于SSLStrip 是基于中间人攻击的,因此一些针对ARP 欺骗的防御方式[7]同样可有效地用于SSLStrip 的防御,比如,使用非对称加密等方式,或者使用一些带有IP 过滤的以太网交换机等等。

图2  SSLStrip劫持HTTPS流程

如图3所示,在Firefox 浏览器下,SSLStrip 前后的明显区别是:URL 前的图标不同;URL 中的https ://被替换成http ://。作为一般用户,不会注意到这些区别,而浏览器也会误认为其与服务器之间的http 连接是安全的。

4 结语

通过理论分析及实现,S S L S t r i p 可以成功劫持HTTPS ,客户端不会产生弹框示警或网页的错误显示。作为一种有效的HTTPS 劫持方法,SSLStrip 在中间人攻击的基础上,更融合了钓鱼攻击的思想,在不需要伪造CA 证书和网页的基础上,成功地将HTTPS 的安全系数降低到HTTP 的强度。此方法的提出,一方面对HTTPS 协议的安全性提出了更高的要求;另一方面在利用“通配符证书”缺陷以及“国际化域名”规则后,SSLStrip 可进一步伪装URL ,从而对各浏览器安全性能的改善提出了一个新的研究方向。

图3  SSLStrip劫持HTTPS的效果

对于中间人而言,他们可以劫持并监听服务器与客户端之间的任何HTTP 与HTTPS 通信。

参考文献

[1] Res corla E. HTTP Ove r TLS[S]. RFC 2818,New

Yor k :I ET F ,2000.

[2] Di er ks T. The TLS Protocol Ver si on 1.0[S]. RFC

2246,Ne w Yor k :I ETF ,1996.

[3] St ua rt Mc Cl ur e ,J oe l Sca mbr a y ,Ge or ge Kur t z.

Ha c ki ng Expo s e d Fi f t h Edi t i on[M]. 5t h e di t i on. [s. l. ]:The Mc Gr a w-Hi l l Compa ni e s ,2005:591-593.

[4] 周萍,熊淑华,赵婧,等. 网关模式下的HTTPS 协议

监控[J]. 信息技术与信息化,2007(06):45-46. [5] M ox i e Ma r l i ns p i ke. N e w Tr i c k s For De f e a t i ng

SSL I n P r a c t i c e Bl a c k Ha t Conf e r e n c e [E B/OL ].[2009-02-02]. h t t p ://w w w. b l a c k h a t. c o m /p r e -s e n t a t i o n s /b h -d c -09/M a r l i n s p i k e /.

[6] 刘大明. 基于SSL 安全通信的自防御网络体系的研

究[J]. 通信技术,2008(12) :325-327.

[7] 贾静,薛质. SSL 中间人攻击原理与防范[J]. 信息安

全与通信保密,2007(04):103-105.

3 针对SSLStrip 的防御

SSLStrip 在SSL 连接开始之前,就对客户端进行欺骗,同时与服务器进行HTTPS 交互。针对SSLStrip 的防御可以从两个方面开始进行:

(1) 针对服务器

在整个域名下,建议都使用基于SSL 的HTTPS 连接,不要在已经不属于SSL 的对话页面上提供注册服务,以防止中间人以HTTP 中间人的方式劫持HTTPS 。

(2) 针对客户端[6]

针对客户端的防御有以下步骤:

① 在输入涉密网站的网址时,尽量加上“https ://”,以防止中间人篡改HTTP 重定向后的URL ;

② 对于使用IE 作为浏览器的用户,在登录涉密网站时,若地址栏没有变成黄色时加以注意;对于使用其他浏览器的用户,在登录涉密网站时,注意是否显示为https ://...,

标签: