一、欺騙手法
攻擊者如果想進行Web欺騙就,離不開Web服務器的支持,所以絕大多數情況下,他們在受攻擊者和Web服務器之間設立起攻擊者自己的Web服務器,這種攻擊種類在安全問題中稱為“來自中間的攻擊”。用戶浏覽器和真正的服務器之間的數據交換並非是直接的,會被攻擊者的服務器截獲並處理。利用中間服務器進行行騙,就像罪犯駕駛著盜竊來的警車去“執行公務”,因此相當隱蔽。對於被攻擊用戶,幾乎是不知不覺的,因為他們仍然可以自由登錄、鏈接到該網站的所有頁面。對於攻擊者而言,在偷偷監視截取信息的同時,也能以受攻擊者的名義發送數據到真正的Web服務器,包括以服務器的名義發送數據給受攻擊者。
當用戶訪問某個這樣的站點並進行合理的活動時,可能面對的並不是真實的目標網站,而只是一個攻擊者營造的真實站點的翻版,或者說虛擬的鏡像,它們之間如此雷同並不會讓我們感到潛在的威脅,而此時你的所有注冊信息和登錄賬號口令,甚至一切活動,就源源不斷地從這個鏡像的入口進入到攻擊者控制著的Web服務器。攻擊者可以監視、記錄、修改所有信息並進行破壞活動。
例如,在線填寫表單時,填入表單的用戶密碼賬號等信息將被獲取,從而洩密。在訪問網上銀行時,你可能根據你所見的銀行Web頁面,從該行的賬戶中提取或存入一定數量的存款。因為你相信你所訪問的Web頁面就是你所需要的銀行的Web頁面。無論是頁面的外觀布局、圖片標識、鏈接地址,文字內容還是其它一些相關內容,都讓你感到非常熟悉,沒有理由不相信。但是,你確實是處在攻擊者建立的偽造頁面中。
二、實施過程
1.誘使用戶進入攻擊者控制的中間服務器
攻擊者在Web服務器需要提供關於某個Web站點的錯誤Web頁面時,他只需要在自己的服務器上建立一個該站點的拷貝,而不必存儲整個真實服務器站點的內容,然後改寫這個拷貝中所有的鏈接獲得真實服務器上的所有頁面鏡像。
首先,攻擊者改寫拷貝中所有鏈接地址(URL),使它們指向了攻擊者的服務器而不是真正的服務器。假定攻擊者所處的Web服務器是www.???.com,攻擊者通過在所有鏈接前增加www.???.com來改寫URL。例如,abc.efg.com將變為www.???.com/ abc.efg.com。當用戶點擊改寫過的abc.efg.com,進入的確是:www.???.com,然後由該中間服務器向abc.efg.com發出請求並獲得真正的文檔,然後改寫文檔中的所有鏈接,最後經過http://www.???.com返回給用戶的浏覽器。
可見,用戶通過改寫後的鏈接登錄目標站點時,實際上先是經由中間服務器,然後才向目標服務器請求文檔,而目標服務器返回的文檔必須經由中間服務器,改寫所有鏈接後才傳回給用戶浏覽器。很顯然,修改過的文檔中的所有URL都指向了www.???.com,當用戶點擊任何一個鏈接都會直接進入這個頁面,而不會直接進入真正的網站。只要用戶由此進入其它網頁,那麼他們是永遠不會擺脫掉受攻擊的可能的。
偽造網頁中的表單,如果被填寫就構成了表單欺騙,同樣神不知鬼不覺。表單的確定信息被編碼到鏈接地址行中,內容會以HTML形式返回。前面講到,所有頁面的URL都已經被改寫,那麼表單欺騙將是很自然的事情了。
當受攻擊者提交表單後,所提交的數據進入了攻擊者的服務器。攻擊者的服務器能夠觀察,甚至是修改所提交的數據。同樣地,在得到真正的服務器返回信息後,攻擊者將向受攻擊者返回信息。
2.發布欺騙頁
Web攻擊者必須設法引誘用戶去訪問並點擊他設定的Web陷阱,黑客往往使用下面幾種方法:
(1)把錯誤的Web鏈接放到一個熱門Web站點上;
(2)如果受攻擊者使用基於HTML的郵件,通過電子郵件發送偽造的Web頁面給用戶;
(3)創建錯誤的Web索引,指示給搜索引擎;
(4)在網絡公眾場合,如BBS、OICQ,論壇或聊天室散播包含錯誤鏈接的網站網址。
三、如何防范
1.對於個人用戶
(1)查看源文件
攻擊者並不是不留絲毫痕跡,HTML源文件會使這種欺騙暴露無遺。通過點擊鼠標右鍵或者在浏覽器中點擊菜單“查看”“源文件”,用戶可以閱讀當前的HTML源文件。可以發現當前頁URL地址的信息並同網頁上的真實地址相對照,你能夠發現被改寫的URL,因此可以覺察到危險。
例如,你收到一封263郵局的HTML格式信件,查看源文件,根據前面的介紹,很容易發現是否有偽造的痕跡。
因此,建議不要通過來歷不明的Web站點登錄安全站點,如通過某個個人站點登錄263服務器。對於搜索引擎或從其它場合得到的站點,應仔細甄別,防止受騙。
(2)禁止浏覽器中的JavaScript功能
各類攻擊者的服務器,頁面都包含大量的JavaScript腳本以實現其不可告人的目的,此時可將JavaScript功能禁止或者改為使用前提示。
方法是:在IE浏覽器中,點擊菜單“工具”“Internet選項”,切換到“安全”選項卡“自定義級別”,彈出“安全設置”框,在裡面對JavaScript功能選擇“禁止”。
(3)確保浏覽器的連接提示狀態可見,它會給你提供當前位置的各類信息;
(4)仔細觀察你所點擊的URL鏈接,一般會在狀態欄中或地址欄得到正確的顯示。
2.對於服務器
個人用戶對於服務器端是無能為力的,此處我們僅給大家提供一些服務器端安全預防措施,希望會給個人站點的管理者一些有益的提示。
Web服務器端安全預防措施:限制在Web服務器開賬戶,定期刪除一些久不登錄的用戶;對在Web服務器上開的賬戶,對注冊用戶口令長度作出要求並提示定期更改,防止被盜用造成隱患;盡量使Ftp, Mail等服務器與Web服務器分開;定期查看服務器中的日志文件,分析一切可疑事件;設置好Web服務器上系統文件的權限和屬性;不要把Web服務器與FTP目錄指在同一目錄;必要時限制訪問用戶IP或DNS;如果采用CGI程序,應放在獨立於HTML存放目錄之外的CGI-BIN下;在用C來編寫CGI程序時盡量少用popen()、system()和所有涉及/bin/sh的shell命令。
此外,編譯語言(CGI、PERL等)比解釋語言(PHP、JSP等)更安全。至於許多Web服務器本身都存在的一些安全漏洞,不是本文探討的范疇,有興趣的讀者可參閱相關資料