解析中間人攻擊之四——SSL欺騙
導(dǎo)言
前面的文章中,我們已經(jīng)探討了ARP緩存中毒、DNS欺騙以及會(huì)話劫持這四種中間人攻擊形式。在本文中,我們將研究SSL欺騙,這也是最厲害的中間人攻擊方式,因?yàn)镾SL欺騙可以通過利用人們信賴的服務(wù)來發(fā)動(dòng)攻擊。首先我們先討論SSL連接的理論及其安全性問題,然后看看SSL連接如何被利用來發(fā)動(dòng)攻擊,最后與大家分享關(guān)于SSL欺騙的檢測以及防御技巧。
SSL和HTTPS
安全套接字層(SSL)或者傳輸層安全(TLS)旨在通過加密方式為網(wǎng)絡(luò)通信提供安全保障,這種協(xié)議通常與其他協(xié)議結(jié)合使用以確保協(xié)議提供服務(wù)的安全部署,例如包括SMTPS、IMAPS和最常見的HTTPS,最終目的在于在不安全網(wǎng)絡(luò)創(chuàng)建安全通道。
在本文中,我們將重點(diǎn)探討通過HTTP(即HTTPS)對(duì)SSL的攻擊,因?yàn)檫@是SSL最常用的形式??赡苣氵€沒有意識(shí)到,你每天都在使用HTTPS。大多數(shù)主流電子郵件服務(wù)和網(wǎng)上銀行程序都是依靠HTTPS來確保用戶瀏覽器和服務(wù)器之間的安全通信。如果沒有HTTPS技術(shù),任何人使用數(shù)據(jù)包嗅探器都能竊取用戶網(wǎng)絡(luò)中的用戶名、密碼和其他隱藏信息。
使用HTTPS技術(shù)是為了確保服務(wù)器、客戶和可信任第三方之間數(shù)據(jù)通信的安全。例如,假設(shè)一個(gè)用戶試圖連接到Gmail電子郵箱賬戶,這就涉及到幾個(gè)不同的步驟,如圖1所示。
圖1: HTTPS通信過程
圖1顯示的過程并不是特別詳細(xì),只是描述了下列幾個(gè)基本過程:
1. 客戶端瀏覽器使用HTTP連接到端口80的http://mail.google.com
2. 服務(wù)器試用HTTP代碼302重定向客戶端HTTPS版本的這個(gè)網(wǎng)站
3. 客戶端連接到端口443的網(wǎng)站https://mail.google.com
4. 服務(wù)器向客戶端提供包含其電子簽名的證書,該證書用于驗(yàn)證網(wǎng)址
5. 客戶端獲取該證書,并根據(jù)信任證書頒發(fā)機(jī)構(gòu)列表來驗(yàn)證該證書
6. 加密通信建立
如果證書驗(yàn)證過程失敗的話,則意味著無法驗(yàn)證網(wǎng)址的真實(shí)度。這樣的話,用戶將會(huì)看到頁面顯示證書驗(yàn)證錯(cuò)誤,或者他們也可以選擇冒著危險(xiǎn)繼續(xù)訪問網(wǎng)站,因?yàn)樗麄冊(cè)L問的網(wǎng)站可能是欺詐網(wǎng)站。
HTTPS被攻破
這個(gè)過程一直被認(rèn)為是非常安全的,直到幾年前,某攻擊者成功對(duì)這種通信過程進(jìn)行劫持,這個(gè)過程并不涉及攻擊SSL本身,而是對(duì)非加密通信和加密通信間的“網(wǎng)橋”的攻擊。
知名安全研究人員Moxie Marlinspike推測,在大多數(shù)情況下,SSL從未直接遭遇威脅問題。SSL連接通常是通過HTTPS發(fā)起的,因?yàn)橛脩敉ㄟ^HTTP302響應(yīng)代碼被定位到HTTPS或者他們點(diǎn)擊連接將其定位到一個(gè)HTTPS站點(diǎn),例如登錄按鈕。這就是說,如果攻擊者攻擊從非安全連接到安全連接的通信,即從HTTP到HTTPS,則實(shí)際上攻擊的是這個(gè)“網(wǎng)橋”,SSL連接還未發(fā)生時(shí)的中間人攻擊。為了有效說明這個(gè)概念,Moxie開發(fā)了SSLstrip工具,也就是我們下面將要使用的工具。
這個(gè)過程非常簡單,與我們前面文章所提到的攻擊有所類似,如圖2所示。
圖2:劫持HTTPS通信
圖2中描述的過程如下:
1. 客戶端與web服務(wù)器間的流量被攔截
2. 當(dāng)遇到HTTPS URS時(shí),sslstrip使用HTTP鏈接替換它,并保存了這種變化的映射
3. 攻擊機(jī)模擬客戶端向服務(wù)器提供證書
4. 從安全網(wǎng)站收到流量提供給客戶端
這個(gè)過程進(jìn)展很順利,服務(wù)器認(rèn)為其仍然在接收SSL流量,服務(wù)器無法辨別任何改變。用戶可以感覺到唯一不同的是,瀏覽器中不會(huì)標(biāo)記HTTPS,所以某些用戶還是能夠看出不對(duì)勁。#p#
使用SSLStrip
實(shí)現(xiàn)這個(gè)過程是使用SSLstrip工具,大家可以點(diǎn)擊此處下載并測試。這個(gè)工具只能在Linux運(yùn)行,大家也可以下載運(yùn)行Backtrack 4。
安裝好SSLstrip后,有幾個(gè)必須做的事情。首先,你使用的Linux系統(tǒng)必須被配置為IP轉(zhuǎn)發(fā),實(shí)現(xiàn)這個(gè)配置,需要輸入命令echo "1" > /proc/sys/net/ipv4/ip_forward,如下圖所示。
圖3:啟用IP轉(zhuǎn)發(fā)
完成上述操作后,我們必須強(qiáng)制將所有被攔截的HTTP流量路由到SSLstrip將會(huì)監(jiān)聽的端口,這通過修改iptables防火墻配置來實(shí)現(xiàn),使用命令iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 如下圖所示。
圖4:配置IPTables來正確路由HTTP流量
當(dāng)然,你需要使用你選擇的隨機(jī)端口來替換,當(dāng)完成這些配置后,我們就可以運(yùn)行sslstrip,并將其配置為監(jiān)聽由命令sslstrip -l 指定的端口了。
圖5:使用sslstrip#p#
這個(gè)過程的最后步驟就是配置ARP欺騙來攔截目標(biāo)主機(jī)的流量,在前面的文章中我們使用的是windows中的Cain和Abel來實(shí)現(xiàn),但是在這篇文章中,我們將使用arpspoof工具,該工具是內(nèi)置在Backtrack 4,使用命令arpspoof -i -t 。
圖6:配置ARP欺騙
使用這個(gè)命令會(huì)將為目標(biāo)客戶端的IP地址執(zhí)行這些行動(dòng)的網(wǎng)絡(luò)接口替換為,而將目標(biāo)使用的網(wǎng)關(guān)路由器的IP地址替換為
完成上述操作后,你就可以主動(dòng)劫持任何建立的SSL連接。你可以使用數(shù)據(jù)包器從流量來收集密碼、個(gè)人身份信息、信用卡號(hào)碼等。
如何抵御SSL劫持攻擊
如上所述,這種方式的SSL劫持根本無法從服務(wù)器端檢測出來,因?yàn)樵诜?wù)器開來,這只是與客戶端的正常通信,它無法辨識(shí)是從代理來與客戶端通信。不過我們還是可以從客戶端的角度來檢測和抵御這種類型的攻擊。
使用HTTPS確保安全連接- 當(dāng)你執(zhí)行上訴描述的攻擊時(shí),攻擊破壞了連接的安全性,這種安全性在瀏覽器中有所反映。這意味著如果你登錄網(wǎng)上銀行時(shí),發(fā)現(xiàn)只是標(biāo)準(zhǔn)的HTTP連接,那么很有可能正受到攻擊。不管你使用何種瀏覽器,你都要確保你知道如何識(shí)別安全連接與不安全連接。
將網(wǎng)上銀行保存為主頁-攻擊者攔截家庭網(wǎng)絡(luò)比攔截工作網(wǎng)絡(luò)的可能性更低,這并不是因?yàn)榧彝ル娔X更加安全(實(shí)際上,家庭電腦更加不安全),而是因?yàn)榧彝ゾW(wǎng)絡(luò)中往往只有一兩臺(tái)電腦,除非家庭成員發(fā)動(dòng)內(nèi)部攻擊。在公司網(wǎng)絡(luò)中,你無法知曉網(wǎng)絡(luò)情況或者分公司網(wǎng)絡(luò)情況,所以潛在攻擊源更多。會(huì)話劫持最大的目標(biāo)之一就是網(wǎng)上銀行,但是其他任何個(gè)人信息都有可能被劫持。
確保內(nèi)部機(jī)器的安全 - 這種類型的攻擊大多數(shù)都是從網(wǎng)絡(luò)內(nèi)部發(fā)動(dòng)攻擊的,如果你的網(wǎng)絡(luò)設(shè)備很安全,那么那些被感染主機(jī)被利用發(fā)動(dòng)會(huì)話劫持攻擊的可能性就很小。
總結(jié)
這種類型的中間人攻擊形式是最致命的攻擊形式,因?yàn)檫@種攻擊將我們認(rèn)為安全的連接變成完全不安全的連接。我們每天訪問的網(wǎng)站都不一定安全,如果這些網(wǎng)絡(luò)連接是不安全的,將會(huì)使重要個(gè)人信息落入他人之手。因此,我們必須具備識(shí)別安全連接和不安全連接的能力。
【編輯推薦】