Web欺騙的工作原理
欺騙能夠成功的關(guān)鍵是在受攻擊者和其他Web服務(wù)器之間設(shè)立起攻擊者的Web服務(wù)器,這種攻擊種類在安全問(wèn)題中稱為“來(lái)自中間的攻擊”。為了建立起這樣的中間Web服務(wù)器,黑客往往進(jìn)行以下工作。
改寫URL
首先,攻擊者改寫Web頁(yè)中的所有URL地址,這樣它們指向了攻擊者的Web服務(wù)器而不是真正的Web服務(wù)器。假設(shè)攻擊者所處的Web服務(wù)器是www.www.org,攻擊者通過(guò)在所有鏈接前增加http://www.www.org來(lái)改寫URL。例如,http://home.xxx1.com將變?yōu)?A >http://www.www.org/http://home.xxx1.com.當(dāng)用戶點(diǎn)擊改寫過(guò)的http://home.xxx1.com(可能它仍然顯示的是http://home.xxx1),將進(jìn)入的是http://www.www.org,然后由http://www.www.org向http://home.xxx1.com發(fā)出請(qǐng)求并獲得真正的文檔,然后改寫文檔中的所有鏈接,最后經(jīng)過(guò)http://www.www.org返回給用戶的瀏覽器。工作流程如下所示:
1.用戶點(diǎn)擊經(jīng)過(guò)改寫后的http://www.www.org/http://home.xxx1.com;
2.http://www.www.org向http://home.xxx1.com請(qǐng)求文檔;
3.http://home.xxx1.com向http://www.www.org返回文檔;
4.http://www.www.org改寫文檔中的所有URL;
5.http://www.www.org向用戶返回改寫后的文檔。
很顯然,修改過(guò)的文檔中的所有URL都指向了www.www.org,當(dāng)用戶點(diǎn)擊任何一個(gè)鏈接都會(huì)直接進(jìn)入www.www.org,而不會(huì)直接進(jìn)入真正的URL。如果用戶由此依次進(jìn)入其他網(wǎng)頁(yè),那么他們是永遠(yuǎn)不會(huì)擺脫掉受攻擊的可能。
很顯然,修改過(guò)的文檔中的所有URL都指向了www.www.org,當(dāng)用戶點(diǎn)擊任何一個(gè)鏈接都會(huì)直接進(jìn)入www.www.org,而不會(huì)直接進(jìn)入真正的URL。如果用戶由此依次進(jìn)入其他網(wǎng)頁(yè),那么他們是永遠(yuǎn)不會(huì)擺脫掉受攻擊的可能。
關(guān)于表單
如果受攻擊者填寫了一個(gè)錯(cuò)誤Web上的表單,那么結(jié)果看來(lái)似乎會(huì)很正常,因?yàn)橹灰裱瓨?biāo)準(zhǔn)的Web協(xié)議,表單欺騙很自然地不會(huì)被察覺(jué):表單的確定信息被編碼到URL中,內(nèi)容會(huì)以HTML形式來(lái)返回。既然前面的URL都已經(jīng)得到了改寫,那么表單欺騙將是很自然的事情。
當(dāng)受攻擊者提交表單后,所提交的數(shù)據(jù)進(jìn)入了攻擊者的服務(wù)器。攻擊者的服務(wù)器能夠觀察,甚至是修改所提交的數(shù)據(jù)。同樣地,在得到真正的服務(wù)器返回信息后,攻擊者在將其向受攻擊者返回以前也可以為所欲為。
關(guān)于“安全連接”
我們都知道為了提高Web應(yīng)用的安全性,有人提出了一種叫做安全連接的概念。它是在用戶瀏覽器和Web服務(wù)器之間建立一種基于SSL的安全連接?墒亲屓烁械竭z憾的是,它在Web欺騙中基本上無(wú)所作為。受攻擊者可以和Web欺騙中所提供的錯(cuò)誤網(wǎng)頁(yè)建立起一個(gè)看似正常的“安全連接”:網(wǎng)頁(yè)的文檔可以正常地傳輸而且作為安全連接標(biāo)志的圖形(通常是關(guān)閉的一把鑰匙或者鎖)依然工作正常。換句話說(shuō),也就是瀏覽器提供給用戶的感覺(jué)是一種安全可靠的連接。但正像我們前面所提到的那樣,此時(shí)的安全連接是建立在www.www.org而非用戶所希望的站點(diǎn)。
攻擊的導(dǎo)火索
為了開(kāi)始攻擊,攻擊者必須以某種方式引誘受攻擊者進(jìn)入攻擊者所創(chuàng)造的錯(cuò)誤的Web。黑客往往使用下面若干種方法。
1把錯(cuò)誤的Web鏈接放到一個(gè)熱門Web站點(diǎn)上;
2如果受攻擊者使用基于Web的郵件,那么可以將它指向錯(cuò)誤的Web;
3創(chuàng)建錯(cuò)誤的Web索引,指示給搜索引擎。
完善攻擊
前面描述的攻擊相當(dāng)有效,但是它還不是十分完美的。黑客往往還要?jiǎng)?chuàng)造一個(gè)可信的環(huán)境,包括各類圖標(biāo)、文字、鏈接等,提供給受攻擊者各種各樣的十分可信的暗示?傊褪请[藏一切尾巴。此時(shí),如果錯(cuò)誤的Web是富有敵意的,那么無(wú)辜的用戶將處于十分危險(xiǎn)的境地。
另外,黑客還會(huì)注意以下方面。
1. 狀態(tài)線路
連接狀態(tài)是位于瀏覽器底部的提示信息,它提示當(dāng)前連接的各類信息。Web欺騙中涉及兩類信息。首先,當(dāng)鼠標(biāo)放置在Web鏈接上時(shí),連接狀態(tài)顯示鏈接所指的URL地址,這樣,受攻擊者可能會(huì)注意到重寫的URL地址。第二,當(dāng)Web連接成功時(shí),連接狀態(tài)將顯示所連接的服務(wù)器名稱。這樣,受攻擊者可以注意到顯示www.www.org,而非自己所希望的站點(diǎn)。
攻擊者能夠通過(guò)JavaScript編程來(lái)彌補(bǔ)這兩項(xiàng)不足。由于JavaScript能夠?qū)B接狀態(tài)進(jìn)行寫操作,而且可以將JavaScript操作與特定事件綁定在一起,所以,攻擊者完全可以將改寫的URL狀態(tài)恢復(fù)為改寫前的狀態(tài)。這樣Web欺騙將更為可信。
2. 位置狀態(tài)行
瀏覽器的位置狀態(tài)行顯示當(dāng)前所處的URL位置,用戶也可以在其中鍵入新的URL地址進(jìn)入到另外的URL,如果不進(jìn)行必要的更改,此時(shí)URL會(huì)暴露出改寫后的URL。同樣地,利用JavaScript可以隱藏掉改寫后的URL。JavaScript能用不真實(shí)的URL掩蓋真實(shí)的URL,也能夠接受用戶的鍵盤輸入,并將之改寫,進(jìn)入不正確的URL。
Web欺騙的弱點(diǎn)
盡管黑客在進(jìn)行Web欺騙時(shí)已絞盡腦汁,但是還是留有一些不足。
文檔信息
攻擊者并不是不留絲毫痕跡,HTML源文件就是開(kāi)啟欺騙迷宮的鑰匙。攻擊者對(duì)其無(wú)能為力。通過(guò)使用瀏覽器中“viewsource”命令,用戶能夠閱讀當(dāng)前的HTML源文件。通過(guò)閱讀HTML源文件,可以發(fā)現(xiàn)被改寫的URL,因此可以覺(jué)察到攻擊。遺憾的是,對(duì)于初學(xué)者而言,HTML源文件實(shí)在是有些難懂。
通過(guò)使用瀏覽器中“view document information”命令,用戶能夠閱讀當(dāng)前URL地址的一些信息?上驳氖沁@里提供的是真實(shí)的URL地址,因此用戶能夠很容易判斷出Web欺騙。不過(guò),絕大多數(shù)用戶都很少注意以上一些屬性,可以說(shuō)潛在的危險(xiǎn)還是存在的。
逃離災(zāi)難
受攻擊者可以自覺(jué)與不自覺(jué)地離開(kāi)攻擊者的錯(cuò)誤Web頁(yè)面。這里有若干種方法。訪問(wèn)Bookmark或使用瀏覽器中提供的“Open location”進(jìn)入其他Web頁(yè)面,離開(kāi)攻擊者所設(shè)下的陷阱。不過(guò),如果用戶使用“Back”按鍵,則會(huì)重新進(jìn)入原先的錯(cuò)誤Web頁(yè)面。當(dāng)然,如果用戶將所訪問(wèn)的錯(cuò)誤Web存入Bookmark,那么下次可能會(huì)直接進(jìn)入攻擊者所設(shè)下的陷阱。
關(guān)于追蹤攻擊者
有人建議應(yīng)當(dāng)通過(guò)跟蹤來(lái)發(fā)現(xiàn)并處罰攻擊者。確實(shí)如此,攻擊者如果想進(jìn)行Web欺騙的話,那么離不開(kāi)Web服務(wù)器的幫助。但是,他們利用的Web服務(wù)器很可能是被攻擊后的產(chǎn)物,就象罪犯駕駛著盜竊來(lái)的汽車去作案一樣。
預(yù)防辦法
Web欺騙是當(dāng)今Internet上具有相當(dāng)危險(xiǎn)性而不易被察覺(jué)的欺騙手法。幸運(yùn)的是,我們可以采取的一些保護(hù)辦法。
短期的解決方案
為了取得短期的效果,最好從下面三方面來(lái)預(yù)防:
1.禁止瀏覽器中的JavaScript功能,那么各類改寫信息將原形畢露;
2.確保瀏覽器的連接狀態(tài)是可見(jiàn)的,它將給你提供當(dāng)前位置的各類信息;
3.時(shí)刻注意你所點(diǎn)擊的URL鏈接會(huì)在位置狀態(tài)行中得到正確的顯示。
現(xiàn)在,JavaScript、ActiveX以及Java提供越來(lái)越豐富和強(qiáng)大的功能,而且越來(lái)越為黑客們進(jìn)行攻擊活動(dòng)提供了強(qiáng)大的手段。為了保證安全,建議用戶考慮禁止這些功能。
這樣做,用戶將損失一些功能,但是與可能帶來(lái)的后果比較起來(lái),每個(gè)人會(huì)得出自己的結(jié)論。
長(zhǎng)期的解決方案
1.改變?yōu)g覽器,使之具有反映真實(shí)URL信息的功能,而不會(huì)被蒙蔽;
2.對(duì)于通過(guò)安全連接建立的Web——瀏覽器對(duì)話,瀏覽器還應(yīng)該告訴用戶誰(shuí)在另一端,而不只是表明一種安全連接的狀態(tài)。比如:在建立了安全連接后,給出一個(gè)提示信息“NetscapeInc.”等等。
所有的解決方案,可以根據(jù)用戶的安全要求和實(shí)際條件來(lái)加以選擇。