天天看點

從無法通路GitHub到中間人攻擊

前言

從昨天(2020-03-26)開始,國内多地出現了無法通路啟用HTTPS的Github Pages、GitHub主站、京東等站點的情況,涉及電信、移動等多個營運商。上述站點的證書都被一個未被信任的自簽名的證書所替代,是以被浏覽器所攔截。

從無法通路GitHub到中間人攻擊

在此事件中,攻擊方僅替換了目标站點的證書,目标站點仍為實際的IP。對于此事件的具體情況,我們在這就不細談了,有興趣的朋友可參考網絡上的相關文章。本文主要要說一下和事件相關的中間人攻擊(Man-in-the-middle attack, MITM攻擊)。

什麼是中間人攻擊

首先,我們使用一個通俗的例子介紹一下中間人攻擊:

李雷喜歡班上的女同學韓梅梅,于是便寫了封情書請同學轉交給給韓梅梅,但是同學李狗蛋偷偷把情書的内容改成了“吔屎啦你”,于是一段美好的姻緣沒來得及開始就已經結束了。

對于“李雷”而言,他所知的是情書已經給了“韓梅梅”;對于“韓梅梅”而言,她所知的是“李雷”給她一封寫有“吔屎啦你”的信。這就是一個典型的中間人攻擊的例子,作為被信任的中間人“李狗蛋”,他可以在“李雷”以及“韓梅梅”不知情的情況下對書信做出修改。

我們看一下維基百科中關于中間人攻擊概念的說明:

中間人攻擊在密碼學和計算機安全領域中是指攻擊者與通訊的兩端分别建立獨立的聯系,并交換其所收到的資料,使通訊的兩端認為他們正在通過一個私密的連接配接與對方直接對話,但事實上整個會話都被攻擊者完全控制。在中間人攻擊中,攻擊者可以攔截通訊雙方的通話并插入新的内容。
從無法通路GitHub到中間人攻擊

簡單的說,中間人攻擊就是可以在通信雙方不知情的情況下,監聽、攔截、修改通信的資訊。目前有許多的方法可以實作通信資料的攔截,例如在目标使用者終端安裝病毒進行攔截等。

以HTTPS為例的中間人攻擊

例如我們通路某一個使用HTTP協定的網站,通信的資料都是通過明文傳輸,中間人容易僞造通信的内容。HTTPS的出現使得通信的安全性大幅度提高,但是,HTTPS也不是萬能的。如同本次針對GitHub等站點的攻擊,攻擊方替換了站點的證書,但由于該證書為自簽名證書而被攔截。若攻擊方替換的證書為可信的證書,作為中間人便可順利的對通信進行控制。下面是一個針對HTTPS攻擊的例子。

黑客通過一些手段在使用者終端安裝僞造的CA根證書并劫持了使用者的DNS。使用者A需要在

https://www.bank.com

上轉賬10000元至使用者B的賬戶上,下面是轉賬的通信過程(簡化了HTTPS的具體流程):

  1. 使用者A通過

    https://www.bank.com

    域名通路中間人僞造的站點,因為本地安裝了攻擊方簽發的僞造根證書,用戶端成功驗證站點的證書;
  2. 使用者A送出轉賬請求,發送資料

    { account: 'user_b', amount: 10000.00 }

    ,資料通過僞造的證書加密并送出至中間人伺服器;
  3. 中間人伺服器使用僞造的證書解密資料并修改為

    { account: 'hacker', amount: 10000.00 }

    ,并通過真實的證書送出至銀行伺服器;
  4. 銀行伺服器通過真實證書解密資料,并将使用者A的餘額轉賬至攻擊方的賬戶中。

通常情況下,CA在簽發證書前需要驗證請求方是否擁有該域名。但使用者端安裝了不可信的CA憑證,攻擊友善可通過其僞造證書。對于普通使用者而言,盡可能不要安裝第三方提供的根證書,避免此情況發生。

幾種防禦中間人攻擊的方法

對于站點擁有者:

  • 使用HTTPS而非HTTP,并開啟HSTS
  • 對通信的資料進行加密或校驗
  • 通信延遲測試[2]

對于普通使用者:

  • 安裝防火牆及防毒軟體
  • 謹慎使用不熟悉的網絡,尤其是開放網絡
  • 謹慎通路浏覽器提示證書錯誤的站點
  • 不随意安裝證書

參考資料

  1. 中間人攻擊 - Wikipedia
  2. 黎松, 段海新, 李星. 域間路由中間人攻擊的實時檢測系統[J]. 清華大學學報(自然科學版), 2015, 55(11): 1229-1234

繼續閱讀