基于SSLStrip的HTTPS會(huì)話劫持
基于SSLStrip 的HTTPS 會(huì)話劫持張恒伽,施 勇,薛 質(zhì)(上海交通大學(xué)信息安全工程學(xué)院,上海 200240)【摘 要】文中在研究了目前廣泛應(yīng)用的HTTPS 協(xié)議的基礎(chǔ)上,分析了HTTPS
基于SSLStrip 的HTTPS 會(huì)話劫持
張恒伽,施 勇,薛 質(zhì)
(上海交通大學(xué)信息安全工程學(xué)院,上海?。玻埃埃玻矗埃?/p>
【摘 要】文中在研究了目前廣泛應(yīng)用的HTTPS 協(xié)議的基礎(chǔ)上,分析了HTTPS 會(huì)話劫持的手段和方法,并重點(diǎn)分析和揭示了一種基于中間人攻擊(MITM)的HTTPS 會(huì)話劫持方法—SSLStrip 。進(jìn)而提出了關(guān)于HTTPS 協(xié)議本身以及所有通過(guò)HTTPS 進(jìn)行涉密交互的客戶端的安全性問(wèn)題,并提供了針對(duì)SSLStrip 可行的防范措施?!娟P(guān)鍵詞】SSLStrip ;HTTPS ;信息安全;中間人攻擊
【中圖分類號(hào)】TP309. 2 【文獻(xiàn)標(biāo)識(shí)碼】A 【文章編號(hào)】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 數(shù)據(jù)傳輸協(xié)議,被廣泛應(yīng)用于萬(wàn)維網(wǎng)上敏感信息的通信,例如交易支付等方面。然而,HTTPS 也存在自身的缺陷,不能絕對(duì)保證服務(wù)端自身的安全。在網(wǎng)絡(luò)攻防中,威脅服務(wù)器安全的行為時(shí)有發(fā)生,最常見的例子就是使用模仿銀行域名的釣魚攻擊(Ph i s h i n g) 。隨著H T TP S 的廣泛使用,一些新的針對(duì)HTTPS 會(huì)話的劫持也開始出現(xiàn),如基于中間人攻擊的Surf Jacking 、SSLSniff 等。文中結(jié)合HTTPS 實(shí)現(xiàn)過(guò)程中出現(xiàn)的一些問(wèn)題,分析了一種新的H T T P S 會(huì)話劫持方法SSLStrip ,同時(shí)提出了針對(duì)HTTPS 會(huì)話劫持的防范措施。
cure Socket Layer) ,是以安全為目標(biāo)的HTTP 通道。它是由Netscape 公司開發(fā),其目的是通過(guò)應(yīng)用Netscape 的安全套接字層(SSL)作為HTTP 應(yīng)用層的子層,實(shí)現(xiàn)對(duì)數(shù)據(jù)的加密以及身份的驗(yàn)證。當(dāng)客戶端向服務(wù)器提出連接要求時(shí),首先要協(xié)商建立SSL 連接,然后在SSL 應(yīng)用數(shù)據(jù)通道上傳輸HTTP 數(shù)據(jù)。HTTPS 使用端口443進(jìn)行通信,而不同于HTTP 使用端口80與TCP/IP進(jìn)行通信[1]。
當(dāng)HTTPS 服務(wù)器與客戶端進(jìn)行交互時(shí),其連接過(guò)程可以分為3個(gè)階段:客戶端與服務(wù)器之間建立TCP 連接;客戶端與服務(wù)器進(jìn)行SSL 握手;在客戶端與服務(wù)器成功SSL 握手后,傳送已加密的HTTPS 數(shù)據(jù)。其中,完整的SSL 握手過(guò)程又可分成以下4個(gè)步驟[2]:
① 建立安全能力:確定客戶端瀏覽器與HTTPS 服務(wù)器之間通信所使用的SSL 版本和密碼編碼方式;
② 服務(wù)器鑒別和密鑰交換:HTTPS 服務(wù)器向客戶端發(fā)送數(shù)字證書,以證明自己的身份,此證書中包含服務(wù)器
1 HTTPS協(xié)議分析
HTT PS(H ype r Te x t Tr a ns f e r Pr ot oc ol o ve r Se -
公鑰及其他信息,并使用CA 密鑰加密;
③ 客戶端驗(yàn)證和密鑰交換:客戶端驗(yàn)證HTTPS 服務(wù)器身份,并生成會(huì)話密鑰,使用服務(wù)器公鑰加密。如服務(wù)器需驗(yàn)證客戶端,則向服務(wù)器發(fā)送客戶端證書,并使用客戶端自己的私鑰加密;
,④ 握手完成:服務(wù)器與客戶端確認(rèn)會(huì)話密鑰,并發(fā)送單獨(dú)加密報(bào)文,表示握手完成。
在HTTPS 的使用中,一些服務(wù)器也會(huì)采用SSL 簡(jiǎn)單握手協(xié)議,在SSL 握手過(guò)程中,服務(wù)器不需要客戶端提供證書,其結(jié)果可導(dǎo)致欺騙的發(fā)生。
向服務(wù)器發(fā)送一個(gè)HTTPS 連接請(qǐng)求。因此,用戶通常接觸到HTTPS 的方式有兩種:一種是 Web上的連接,比如當(dāng)用戶在gmail 上輸入用戶名和密碼后,點(diǎn)擊的登錄鍵,將用戶的用戶名和密碼以HTTPS 的形式POST 到服務(wù)器。另一種是通過(guò)HTTP 的302狀態(tài)。
當(dāng)客戶端向gmail 提出HTTP 連接請(qǐng)求時(shí),gmail 服務(wù)器會(huì)返回一個(gè)R E D I R E C T 網(wǎng)址,h t t p s ://w w w. google.com/accounts/ServiceLogin?service=mail...,用戶端在接收到這個(gè)URL 后,將頁(yè)面重定位到該網(wǎng)頁(yè),并請(qǐng)求HTTPS 連接。
從另外一個(gè)角度講,用戶通常是通過(guò)HTTP 向服務(wù)器發(fā)起HTTPS 連接的。而HTTP 本身是以明文的形式對(duì)外傳送,并不能保證數(shù)據(jù)的安全。因此,可以考慮通過(guò)對(duì)HT TP 進(jìn)行劫持,來(lái)實(shí)現(xiàn)對(duì)H T TP S 劫持的目的。整個(gè)SSLStrip 過(guò)程包括如下幾個(gè)步驟(見圖1) :
2 HTTPS會(huì)話劫持
2.1 HTTPS中間人攻擊
HTTPS 中間人攻擊(Ma n-i n-t he -Mi ddle At t ac k) [3]
是一種“間接”的入侵攻擊,這種攻擊模式是通過(guò)各種技術(shù)手段將受入侵者控制的一臺(tái)計(jì)算機(jī)MITM 虛擬放置在網(wǎng)絡(luò)連接中的客戶端Client 與服務(wù)器Server 之間,在客戶端與服務(wù)器進(jìn)行HTTPS 通信時(shí),由MITM 對(duì)HTTPS 數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā),Client 和Server 都不會(huì)意識(shí)到會(huì)話已被劫持。MITM 不僅可竊聽HTTPS 通信還可以對(duì)信息進(jìn)行篡改,達(dá)到HTTPS 攻擊的目的。
基于Web 的HTTPS 會(huì)話使用SSL 協(xié)議,而SSL 協(xié)議在握手協(xié)商階段發(fā)送公鑰證書。比較普遍的HTTPS 中間人攻擊,例如SSLSniff 等,在網(wǎng)關(guān)截獲SSL 會(huì)話,替換服務(wù)器公鑰證書,將公鑰PKey 換成自己的公鑰PKey`,欺騙客戶端??蛻舳耸褂肞Key`加密信息并發(fā)送會(huì)話,中間人用私鑰Skey`解密客戶端返回會(huì)話,從而劫持會(huì)話。同時(shí),中間人用PKey 加密明文會(huì)話并返回服務(wù)器[4]。
使用SSLSniff 進(jìn)行HTTPS 會(huì)話劫持時(shí),在客戶端收到未認(rèn)證的證書時(shí),瀏覽器會(huì)彈框示警,從而有可能造成客戶端對(duì)MITM 存在的警覺。
2.2 HTTPS會(huì)話劫持的新方法 SSLStrip
(1) SSLStrip簡(jiǎn)介
在分析完HTTPS 協(xié)議流程以及一種HTTPS 中間人方法SSLSniff 后,文中介紹一種新的HTTPS 中間人會(huì)話劫持方法SSLStrip [5]。SSLStrip 所能達(dá)成的目標(biāo)是在客戶端與服務(wù)器建立連接時(shí),在MITM 與Server 之間形成HTTPS 連接,而在Client 與MITM 之間形成HTTP 連接,即將SSL 層從原HTTPS 連接中“剝離”。這樣,既避免了在客戶端驗(yàn)證證書時(shí)難以避免的彈框問(wèn)題,又能夠劫持HTTP 明文數(shù)據(jù),并同時(shí)保證客戶端HTTP 數(shù)據(jù)的傳輸,達(dá)到欺騙服務(wù)器與客戶端的效果。
(2) SSLStrip的原理和實(shí)現(xiàn)
現(xiàn)實(shí)生活中,在瀏覽器地址欄中輸入網(wǎng)址時(shí),多數(shù)用戶會(huì)采用直接輸入網(wǎng)址的方式,而忽略了傳輸所采用的協(xié)議。例如,在登錄gmail 過(guò)程中,大多數(shù)用戶會(huì)直接在地址欄中輸入www.gmail.com ,向Google 服務(wù)器發(fā)送一個(gè)HTTP 連接請(qǐng)求,而不是輸入https ://www.gmail.com,
圖1 ?。樱樱蹋樱簦颍椋鸾俪郑龋裕裕校舆^(guò)程
① 客戶端Cli e nt 向服務(wù)器Se rve r 發(fā)起HTTP 連接請(qǐng)求;
② 中間人MITM 監(jiān)聽客戶端與服務(wù)器的HTTP 數(shù)據(jù);③ 服務(wù)器返回給客戶端的HTTP 數(shù)據(jù)包被在客戶端與服務(wù)器之間的中間人截獲。中間人解析原HTTP 數(shù)據(jù)包,將其中替換成,將 Location : https ://... 替換成Location :http://..,同時(shí)記錄下所修改的URL ,并保存;
④ 中間人將修改后的HTTP 數(shù)據(jù)發(fā)送給客戶端;⑤ 客戶端Client 向服務(wù)器Server 發(fā)起HTTP 連接請(qǐng)求;⑥ 中間人計(jì)算機(jī)解析客戶端的HTTP 連接請(qǐng)求,并與保存文件相比較。當(dāng)發(fā)現(xiàn)存在有已修改過(guò)的HTTP URL 時(shí),將其替換成原HTTPS URL ,并發(fā)送給服務(wù)器;
⑦ 與服務(wù)器保持HTTPS 連接,回到步驟③;⑧ 與客戶端保持HTTP 連接,回到步驟④。SSLStrip 原理流程如圖2所示。(3) SSLStrip劫持HTTPS 的效果
對(duì)于服務(wù)器端而言,服務(wù)器Server 從HTTPS 連接開始,就與中間人MITM 建立SSL 連接。服務(wù)器并不能區(qū)分客戶端Client 和中間人MITM 的區(qū)別,因而,服務(wù)器認(rèn)為HTTPS 是安全的。對(duì)于客戶端而言,由于中間人MITM 與客戶端Client 之間是HTTP 連接,因此并不會(huì)產(chǎn)生證書認(rèn)
81
,證時(shí)彈框等任何示警。均可在一定程度上防范當(dāng)前的中間人和網(wǎng)絡(luò)釣魚攻擊;
③ 下載最新版高安全度的網(wǎng)絡(luò)瀏覽器;
④ 對(duì)敏感賬號(hào)采用認(rèn)證證書,如令牌和其他形式的雙因素認(rèn)證;
⑤ 對(duì)來(lái)自未知發(fā)件人發(fā)出的電子郵件要高度警惕,不要以點(diǎn)擊鏈接的方式接入涉密網(wǎng)站(而應(yīng)在瀏覽器中輸入網(wǎng)址) 。
另外,由于SSLStrip 是基于中間人攻擊的,因此一些針對(duì)ARP 欺騙的防御方式[7]同樣可有效地用于SSLStrip 的防御,比如,使用非對(duì)稱加密等方式,或者使用一些帶有IP 過(guò)濾的以太網(wǎng)交換機(jī)等等。
圖2 SSLStrip劫持HTTPS流程
如圖3所示,在Firefox 瀏覽器下,SSLStrip 前后的明顯區(qū)別是:URL 前的圖標(biāo)不同;URL 中的https ://被替換成http ://。作為一般用戶,不會(huì)注意到這些區(qū)別,而瀏覽器也會(huì)誤認(rèn)為其與服務(wù)器之間的http 連接是安全的。
4 結(jié)語(yǔ)
通過(guò)理論分析及實(shí)現(xiàn),S S L S t r i p 可以成功劫持HTTPS ,客戶端不會(huì)產(chǎn)生彈框示警或網(wǎng)頁(yè)的錯(cuò)誤顯示。作為一種有效的HTTPS 劫持方法,SSLStrip 在中間人攻擊的基礎(chǔ)上,更融合了釣魚攻擊的思想,在不需要偽造CA 證書和網(wǎng)頁(yè)的基礎(chǔ)上,成功地將HTTPS 的安全系數(shù)降低到HTTP 的強(qiáng)度。此方法的提出,一方面對(duì)HTTPS 協(xié)議的安全性提出了更高的要求;另一方面在利用“通配符證書”缺陷以及“國(guó)際化域名”規(guī)則后,SSLStrip 可進(jìn)一步偽裝URL ,從而對(duì)各瀏覽器安全性能的改善提出了一個(gè)新的研究方向。
圖3 ?。樱樱蹋樱簦颍椋鸾俪郑龋裕裕校拥男Ч?/p>
對(duì)于中間人而言,他們可以劫持并監(jiān)聽服務(wù)器與客戶端之間的任何HTTP 與HTTPS 通信。
參考文獻(xiàn)
[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] 周萍,熊淑華,趙婧,等. 網(wǎng)關(guān)模式下的HTTPS 協(xié)議
監(jiān)控[J]. 信息技術(shù)與信息化,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 安全通信的自防御網(wǎng)絡(luò)體系的研
究[J]. 通信技術(shù),2008(12) :325-327.
[7] 賈靜,薛質(zhì). SSL 中間人攻擊原理與防范[J]. 信息安
全與通信保密,2007(04):103-105.
3 針對(duì)SSLStrip 的防御
SSLStrip 在SSL 連接開始之前,就對(duì)客戶端進(jìn)行欺騙,同時(shí)與服務(wù)器進(jìn)行HTTPS 交互。針對(duì)SSLStrip 的防御可以從兩個(gè)方面開始進(jìn)行:
(1) 針對(duì)服務(wù)器
在整個(gè)域名下,建議都使用基于SSL 的HTTPS 連接,不要在已經(jīng)不屬于SSL 的對(duì)話頁(yè)面上提供注冊(cè)服務(wù),以防止中間人以HTTP 中間人的方式劫持HTTPS 。
(2) 針對(duì)客戶端[6]
針對(duì)客戶端的防御有以下步驟:
① 在輸入涉密網(wǎng)站的網(wǎng)址時(shí),盡量加上“https ://”,以防止中間人篡改HTTP 重定向后的URL ;
② 對(duì)于使用IE 作為瀏覽器的用戶,在登錄涉密網(wǎng)站時(shí),若地址欄沒有變成黃色時(shí)加以注意;對(duì)于使用其他瀏覽器的用戶,在登錄涉密網(wǎng)站時(shí),注意是否顯示為https ://...,