黑客cookies和session欺騙的工作原理和解決方案

本文描述Internet上的一種安全攻擊,它可能侵害到WWW用戶的隱私和數據完整性。這種攻擊可以在現有的系統上實現,危害最普通的Web瀏覽器用戶,包括Netscape Navigator和Microsoft Internet Explorer用戶。
  
  Web欺騙允許攻擊者創造整個WWW世界的影像拷貝。影像Web的入口進入到攻擊者的Web服務器,經過攻擊者機器的過濾作用,允許攻擊者監控受攻擊者的任何活動,包括帳戶和口令。攻擊者也能以受攻擊者的名義將錯誤或者易於誤解的數據發送到真正的Web服務器,以及以任何Web服務器的名義發送數據給受攻擊者。簡而言之,攻擊者觀察和控制着受攻擊者在Web上做的每一件事。
  
   欺騙攻擊
  
  在一次欺騙攻擊中,攻擊者創造一個易於誤解的上下文環境,以誘使受攻擊者進入並且做出缺乏安全考慮的決策。欺騙攻擊就像是一場虛擬遊戲:攻擊者在受攻擊者的周圍建立起一個錯誤但是令人信服的世界。如果該虛擬世界是真實的話,那麼受攻擊者所做的一切都是無可厚非的。但遺憾的是,在錯誤的世界中似乎是合理的活動可能會在現實的世界中導致災難性的後果。
  
  欺騙攻擊在現實的電子交易中也是常見的現象。例如,我們曾經聽說過這樣的事情:一些西方罪犯分子在公共場合建立起虛假的ATM取款機,該種機器可以接受ATM卡,並且會詢問用戶的PIN密碼。一旦該種機器獲得受攻擊者的PIN密碼,它會要麼“吃卡”,要麼反饋“故障”,並返回ATM卡。不論哪一種情況,罪犯都會獲得足夠的信息,以複製出一個完全一樣的ATM卡。後面的事情大家可想而知了。在這些攻擊中,人們往往被所看到的事物所愚弄:ATM取款機所處的位置,它們的外形和裝飾,以及電子顯示屏的內容等等。
  
  人們利用計算機系統完成具有安全要求的決策時往往也是基於其所見。例如,在訪問網上銀行時,你可能根據你所見的銀行Web頁面,從該行的帳戶中提取或存入一定數量的存款。因爲你相信你所訪問的Web頁面就是你所需要的銀行的Web頁面。無論是頁面的外觀、URL地址,還是其他一些相關內容,都讓你感到非常熟悉,沒有理由不相信。但是,你很可能是在被愚弄。
  
  爲了分析可能出現欺騙攻擊的範圍和嚴重性,我們需要深入研究關於Web欺騙的兩個部分:安全決策和暗示。
  
  安全決策
  
  安全決策,這裏指的是會導致安全問題的一類決策。這類決策往往都含有較爲敏感的數據,也就是意味着一個人在做出決策時,可能會因爲關鍵數據的泄露,導致不受歡迎的結果。很可能發生這樣的事情:第三方利用各類決策數據攻破某種祕密,進行破壞活動,或者導致不安全的後果。例如,在某種場合輸入帳戶和密碼,就是我們在此談到的安全決策問題。因爲帳戶和密碼的泄露會產生我們不希望發生的問題。此外,從Internet上下載文件也是一類安全決策問題。不能否認,在下載的文件當中可能會包含有惡意破壞的成分,儘管這樣的事情不會經常發生。

   安全決策問題無處不在,甚至在我們通過閱讀顯示信息做出決策時,也存在一個關於信息準確性的安全決策問題。例如,如果你決定根據網上證券站點所提供的證券價格購買某類證券時,那麼你必須確保所接收信息的準確性。如果有人故意提供不正確的證券價格,那麼不可避免地會有人浪費自己的財富。
  
  暗示
  
  WWW站點提供給用戶的是豐富多彩的各類信息,人們通過瀏覽器任意翻閱網頁,根據得到的上下文環境來做出相應的決定。Web頁面上的文字、圖畫與聲音可以給人以深刻的印象,也正是在這種背景下,人們往往能夠判斷出該網頁的地址。例如,一個特殊標識的存在一般意味着處於某個公司的Web站點。
  
  我們都知道目標的出現往往傳遞着某種暗示。在計算機世界中,我們往往都習慣於各類圖標、圖形,它們分別代表着各類不同的含義。富有經驗的瀏覽器用戶對某些信息的反應就如同富有經驗的駕駛員對交通信號和標誌做出的反應一樣。
  
  目標的名字能傳達更爲充分的信息。人們經常根據一個文件的名稱來推斷它是關於什麼的。manual.doc是用戶手冊的正文嗎?它完全可以是另外一個文件種類,而不是用戶手冊一類的文檔。一個microsoft.com的鏈接難道就一定指向我們大家都知道的微軟公司的URL地址嗎?顯然可以偷樑換柱,改向其他地址。
  
  人們往往還會在時間的先後順序中得到某種暗示。如果兩個事件同時發生,你自然地會認爲它們是有關聯的。如果在點擊銀行的網頁時,username對話框同時出現了,你自然地會認爲你應該輸入你在該銀行的帳戶與口令。如果你在點擊了一個文檔鏈接後,立即就開始了下載,那麼你很自然地會認爲該文件正從該站點下載。然而,以上的想法不一定都是正確的。
  
  如果你僅僅看到一個彈出窗口,那麼你會和一個可視的事件聯繫起來,而不會認識到一個隱藏在窗口背後的不可視的事件。 現代的用戶接口程序設計者花費很大的精力來設計簡單易懂的界面,人們感受到了方便,但潛在的問題是人們可能習慣於此,不可避免地被該種暗示所欺騙。
  
  TCP和DNS欺騙
  
  除了我們將要討論的欺騙手段外,還有一些其他手段,在這裏我們將不做討論。這種攻擊的例子包括TCP欺騙(在TCP包中使用僞造的IP地址)以及DNS欺騙(攻擊者僞造關於機器名稱和網絡信息)。讀者有興趣可以閱讀有關資料。
  
  Web欺騙
  
  Web欺騙是一種電子信息欺騙,攻擊者在其中創造了整個Web世界的一個令人信服但是完全錯誤的拷貝。錯誤的Web看起來十分逼真,它擁有相同的網頁和鏈接。然而,攻擊者控制着錯誤的Web站點,這樣受攻擊者瀏覽器和Web之間的所有網絡信息完全被攻擊者所截獲,其工作原理就好像是一個過濾器。
  
  後果
  
  由於攻擊者可以觀察或者修改任何從受攻擊者到Web服務器的信息;同樣地,也控制着從Web服務器至受攻擊者的返回數據,這樣攻擊者就有許多發起攻擊的可能性,包括監視和破壞。
  
  攻擊者能夠監視受攻擊者的網絡信息,記錄他們訪問的網頁和內容。當受攻擊者填寫完一個表單併發送後,這些數據將被傳送到Web服務器,Web服務器將返回必要的信息,但不幸的是,攻擊者完全可以截獲並加以使用。大家都知道絕大部分在線公司都是使用表單來完成業務的,這意味着攻擊者可以獲得用戶的帳戶和密碼。下面我們將看到,即使受攻擊者有一個“安全”連接(通常是通過Secure Sockets Layer來實現的,用戶的瀏覽器會顯示一把鎖或鑰匙來表示處於安全連接),也無法逃脫被監視的命運。
  
  在得到必要的數據後,攻擊者可以通過修改受攻擊者和Web服務器之間任何一個方向上的數據,來進行某些破壞活動。攻擊者修改受攻擊者的確認數據,例如,如果受攻擊者在線訂購某個產品時,攻擊者可以修改產品代碼,數量或者郵購地址等等。攻擊者也能修改被Web服務器所返回的數據,例如,插入易於誤解或者攻擊性的資料,破壞用戶和在線公司的關係等等。
  
  欺騙整個Web世界
  
  你可能認爲攻擊者欺騙整個Web世界是不可能的,但是恰恰相反,攻擊者不必存儲整個Web世界的內容,他只需要製造出一條通向整個Web世界的鏈路。當他需要提供關於某個Web站點的錯誤Web頁面時,他只需要在自己的服務器上建立一個該站點的拷貝,由此等待受害者自投羅網。
  
  Web欺騙的工作原理
  
  欺騙能夠成功的關鍵是在受攻擊者和其他Web服務器之間設立起攻擊者的Web服務器,這種攻擊種類在安全問題中稱爲“來自中間的攻擊”。爲了建立起這樣的中間Web服務器,黑客往往進行以下工作。
  
  改寫URL
  
    首先,攻擊者改寫Web頁中的所有URL地址,這樣它們指向了攻擊者的Web服務器而不是真正的Web服務器。假設攻擊者所處的Web服務器是 www.org ,攻擊者通過在所有鏈接前增加 http://www.www.org 來改寫URL。例如, http://home.xxx1.com 將變爲 http://www.www.org/http://home.xxx1.com. 當用戶點擊改寫過的 http://home.xxx1.com (可能它仍然顯示的是 http://home.xxx1 ),將進入的是 http://www.www.org ,然後由 http://www.www.org 向 http://home.xxx1.com 發出請求並獲得真正的文檔,然後改寫文檔中的所有鏈接,最後經過 http://www.www.org 返回給用戶的瀏覽器。工作流程如下所示:
 
  1.用戶點擊經過改寫後的 http://www.www.org/http://home.xxx1.com ;  
   2. http://www.www.org向http://home.xxx1.com 請求文檔;  
   3. http://home.xxx1.com向http://www.www.org 返回文檔;  
   4. http://www.www.org 改寫文檔中的所有URL;  
   5. http://www.www.org 向用戶返回改寫後的文檔。  
 
   很顯然,修改過的文檔中的所有URL都指向了 www.org ,當用戶點擊任何一個鏈接都會直接進入 www.org ,而不會直接進入真正的URL。如果用戶由此依次進入其他網頁,那麼他們是永遠不會擺脫掉受攻擊的可能。
    關於表單
  
  如果受攻擊者填寫了一個錯誤Web上的表單,那麼結果看來似乎會很正常,因爲只要遵循標準的Web協議,表單欺騙很自然地不會被察覺:表單的確定信息被編碼到URL中,內容會以HTML形式來返回。既然前面的URL都已經得到了改寫,那麼表單欺騙將是很自然的事情。
  
  當受攻擊者提交表單後,所提交的數據進入了攻擊者的服務器。攻擊者的服務器能夠觀察,甚至是修改所提交的數據。同樣地,在得到真正的服務器返回信息後,攻擊者在將其向受攻擊者返回以前也可以爲所欲爲。
  
  關於“安全連接”
  
  我們都知道爲了提高Web應用的安全性,有人提出了一種叫做安全連接的概念。它是在用戶瀏覽器和Web服務器之間建立一種基於SSL的安全連接。可是讓人感到遺憾的是,它在Web欺騙中基本上無所作爲。受攻擊者可以和Web欺騙中所提供的錯誤網頁建立起一個看似正常的“安全連接”:網頁的文檔可以正常地傳輸而且作爲安全連接標誌的圖形(通常是關閉的一把鑰匙或者鎖)依然工作正常。換句話說,也就是瀏覽器提供給用戶的感覺是一種安全可靠的連接。但正像我們前面所提到的那樣,此時的安全連接是建立在 www.org 而非用戶所希望的站點。
  
  攻擊的導火索
  
  爲了開始攻擊,攻擊者必須以某種方式引誘受攻擊者進入攻擊者所創造的錯誤的Web。黑客往往使用下面若干種方法。
  
  1把錯誤的Web鏈接放到一個熱門Web站點上;
  
  2如果受攻擊者使用基於Web的郵件,那麼可以將它指向錯誤的Web;

   3創建錯誤的Web索引,指示給搜索引擎。
  
  完善攻擊
  
  前面描述的攻擊相當有效,但是它還不是十分完美的。黑客往往還要創造一個可信的環境,包括各類圖標、文字、鏈接等,提供給受攻擊者各種各樣的十分可信的暗示。總之就是隱藏一切尾巴。此時,如果錯誤的Web是富有敵意的,那麼無辜的用戶將處於十分危險的境地。
  
  另外,黑客還會注意以下方面。
  
  1. 狀態線路
  
  連接狀態是位於瀏覽器底部的提示信息,它提示當前連接的各類信息。Web欺騙中涉及兩類信息。首先,當鼠標放置在Web鏈接上時,連接狀態顯示鏈接所指的URL地址,這樣,受攻擊者可能會注意到重寫的URL地址。第二,當Web連接成功時,連接狀態將顯示所連接的服務器名稱。這樣,受攻擊者可以注意到顯示 www.org ,而非自己所希望的站點。
  
  攻擊者能夠通過JavaScript編程來彌補這兩項不足。由於JavaScript能夠對連接狀態進行寫操作,而且可以將JavaScript操作與特定事件綁定在一起,所以,攻擊者完全可以將改寫的URL狀態恢復爲改寫前的狀態。這樣Web欺騙將更爲可信。
  
  2. 位置狀態行
  
  瀏覽器的位置狀態行顯示當前所處的URL位置,用戶也可以在其中鍵入新的URL地址進入到另外的URL,如果不進行必要的更改,此時URL會暴露出改寫後的URL。同樣地,利用JavaScript可以隱藏掉改寫後的URL。JavaScript能用不真實的URL掩蓋真實的URL,也能夠接受用戶的鍵盤輸入,並將之改寫,進入不正確的URL。
  
  Web欺騙的弱點
  
  儘管黑客在進行Web欺騙時已絞盡腦汁,但是還是留有一些不足。
  
  文檔信息
  
  攻擊者並不是不留絲毫痕跡,HTML源文件就是開啓欺騙迷宮的鑰匙。攻擊者對其無能爲力。通過使用瀏覽器中“viewsource”命令,用戶能夠閱讀當前的HTML源文件。通過閱讀HTML源文件,可以發現被改寫的URL,因此可以覺察到攻擊。遺憾的是,對於初學者而言,HTML源文件實在是有些難懂。
  
  通過使用瀏覽器中“view document information”命令,用戶能夠閱讀當前URL地址的一些信息。可喜的是這裏提供的是真實的URL地址,因此用戶能夠很容易判斷出Web欺騙。不過,絕大多數用戶都很少注意以上一些屬性,可以說潛在的危險還是存在的。
  
  逃離災難
  
  受攻擊者可以自覺與不自覺地離開攻擊者的錯誤Web頁面。這裏有若干種方法。訪問Bookmark或使用瀏覽器中提供的“Open location”進入其他Web頁面,離開攻擊者所設下的陷阱。不過,如果用戶使用“Back”按鍵,則會重新進入原先的錯誤Web頁面。當然,如果用戶將所訪問的錯誤Web存入Bookmark,那麼下次可能會直接進入攻擊者所設下的陷阱。
 
    關於追蹤攻擊者
  
  有人建議應當通過跟蹤來發現並處罰攻擊者。確實如此,攻擊者如果想進行Web欺騙的話,那麼離不開Web服務器的幫助。但是,他們利用的Web服務器很可能是被攻擊後的產物,就象罪犯駕駛着盜竊來的汽車去作案一樣。
  
  預防辦法
  
  Web欺騙是當今Internet上具有相當危險性而不易被察覺的欺騙手法。幸運的是,我們可以採取的一些保護辦法。
  
  短期的解決方案
  
  爲了取得短期的效果,最好從下面三方面來預防:
  
  1.禁止瀏覽器中的JavaScript功能,那麼各類改寫信息將原形畢露;
  
  2.確保瀏覽器的連接狀態是可見的,它將給你提供當前位置的各類信息;
  
  3.時刻注意你所點擊的URL鏈接會在位置狀態行中得到正確的顯示。
  
  現在,JavaScript、ActiveX以及Java提供越來越豐富和強大的功能,而且越來越爲黑客們進行攻擊活動提供了強大的手段。爲了保證安全,建議用戶考慮禁止這些功能。
  
  這樣做,用戶將損失一些功能,但是與可能帶來的後果比較起來,每個人會得出自己的結論。
  
  長期的解決方案
  
  1.改變瀏覽器,使之具有反映真實URL信息的功能,而不會被矇蔽;
  
  2.對於通過安全連接建立的Web——瀏覽器對話,瀏覽器還應該告訴用戶誰在另一端,而不只是表明一種安全連接的狀態。比如:在建立了安全連接後,給出一個提示信息“NetscapeInc.”等等。 
發佈了42 篇原創文章 · 獲贊 3 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章