中間人攻擊

中間人攻擊（Man-in-the-middle attack，縮寫：MITM）在密碼學和電腦安全領域中是指攻擊者與通訊的兩端分別建立獨立的聯繫，並交換其所收到的數據，使通訊的兩端認為他們正在通過一個私密的連接與對方直接對話，但事實上整個會話都被攻擊者完全控制。在中間人攻擊中，攻擊者可以攔截通訊雙方的通話並插入新的內容。在許多情況下這是很簡單的（例如，在一個未加密的Wi-Fi 無線接入點的接受範圍內的中間人攻擊者，可以將自己作為一個中間人插入這個網路）。

一個中間人攻擊能成功的前提條件是攻擊者能將自己偽裝成每一個參與會話的終端，並且不被其他終端識破。中間人攻擊是一個（缺乏）相互認證的攻擊。大多數的加密協議都專門加入了一些特殊的認證方法以阻止中間人攻擊。例如，SSL/TLS協議可以驗證參與通訊的一方或雙方使用的證書是否是由權威的受信任的數字證書認證機構頒發，並且能執行雙向身份認證。

## 特性

中間人攻擊需要通過一個安全的通道做額外的傳輸。與連鎖協議不同，所有能抵禦中間人攻擊的加密系統都需要通過一個安全通道來傳輸或交換一些額外的資訊。為了滿足不同安全通道的不同安全需求，許多密鑰交換協議已經被研究了出來。

## 攻擊示例

<image>

假設愛麗絲（Alice）希望與鮑伯（Bob）通信。同時，馬洛里（Mallory）希望攔截竊會話以進行竊聽並可能在某些時候傳送給鮑伯一個虛假的消息。

首先，愛麗絲會向鮑伯索取他的公鑰。如果Bob將他的公鑰發送給Alice，並且此時馬洛里能夠攔截到這個公鑰，就可以實施中間人攻擊。馬洛里發送給愛麗絲一個偽造的消息，聲稱自己是鮑伯，並且附上了馬洛里自己的公鑰（而不是鮑伯的）。

愛麗絲收到公鑰後相信這個公鑰是鮑伯的，於是愛麗絲將她的消息用馬洛里的公鑰（愛麗絲以為是鮑伯的）加密，並將加密後的消息回給鮑伯。馬洛里再次截獲愛麗絲回給鮑伯的消息，並使用馬洛里自己的私鑰對消息進行解密，如果馬洛里願意，她也可以對消息進行修改，然後馬洛里使用鮑伯原先發給愛麗絲的公鑰對消息再次加密。當鮑伯收到新加密後的消息時，他會相信這是從愛麗絲那裡發來的消息。

1.愛麗絲發送給鮑伯一條消息，卻被馬洛里截獲：

愛麗絲「嗨，鮑伯，我是愛麗絲。給我你的公鑰」 → 馬洛里 鮑伯

2.馬洛里將這條截獲的消息轉送給鮑伯；此時鮑伯並無法分辨這條消息是否從真的愛麗絲那裡發來的：

愛麗絲 馬洛里「嗨，鮑伯，我是愛麗絲。給我你的公鑰」 → 鮑伯

3.鮑伯回應愛麗絲的消息，並附上了他的公鑰：

愛麗絲 馬洛里 ←鮑伯的公鑰— 鮑伯

4.馬洛里用自己的密鑰替換了消息中鮑伯的密鑰，並將消息轉發給愛麗絲，聲稱這是鮑伯的公鑰：

愛麗絲 ←馬洛里的公鑰— 馬洛里 鮑伯

5.愛麗絲用她以為是鮑伯的公鑰加密了她的消息，以為只有鮑伯才能讀到它：

愛麗絲「我們在公共汽車站見面！」—使用馬洛里的公鑰加密→ 馬洛里 鮑伯

6.然而，由於這個消息實際上是用馬洛里的密鑰加密的，所以馬洛里可以解密它，閱讀它，並在願意的時候修改它。他使用鮑伯的密鑰重新加密，並將重新加密後的消息轉發給鮑伯：

愛麗絲 馬洛里「在家等我！」—使用鮑伯的公鑰加密→ 鮑伯

7.鮑伯認為，這條消息是經由安全的傳輸通道從愛麗絲那裡傳來的。

這個例子顯示了愛麗絲和鮑伯需要某種方法來確定他們是真正拿到了屬於對方的公鑰，而不是拿到來自攻擊者的公鑰。否則，這類攻擊一般都是可行的，在原理上，可以針對任何使用公鑰——密鑰技術的通訊消息發起攻擊。幸運的是，有各種不同的技術可以幫助抵禦MITM攻擊。

## 防禦攻擊

許多抵禦中間人攻擊的技術基於以下認證技術：

- 公鑰基礎建設
- 在PKI方案中，主要防禦中間人攻擊的方案就是PKI的相互認證的機制。這樣的機制由應用程式驗證使用者，由使用者設備驗證應用程式。但在使用某些不安全的應用的情況下，這不是很有用。因此，需要注意選擇正版軟體。
- 更強力的相互認證，例如：
- 密鑰（通常是高資訊熵的密鑰，從而更安全），或
- 密碼（通常是低的資訊熵的密鑰，從而降低安全性）
- 延遲測試，例如使用複雜加密哈希函數進行計算以造成數十秒的延遲；如果雙方通常情況下都要花費20秒來計算，並且整個通訊花費了60秒計算才到達對方，這就能表明存在第三方中間人。
- 第二（安全的）通道的校驗
- 一次性密碼本可以對中間人攻擊免疫，這是在對一次密碼本的安全性和信任上建立的。公鑰體系的完整性通常必須以某種方式得到保障，但不需要進行保密。密碼和共享密鑰有額外的保密需求。公鑰可以由證書頒發機構驗證，這些公鑰通過安全的渠道（例如，隨Web瀏覽器或作業系統安裝）分發。公共密鑰也可以經由Web在線信任進行在線驗證，可以通過安全的途徑分發公鑰（例如，通過面對面的途徑分發公鑰）。

查看密鑰交換協議以了解不同類別的使用不同密鑰形式或密碼以抵禦中間人攻擊的協議。

## 中間人攻擊的取證分析

從被懷疑是中間人攻擊的連結中捕捉網路數據包並進行分析可以確定是否存在中間人攻擊。在進行網路分析並對可疑的SSL中間人攻擊進行取證時，重要的分析證據包括：

- 遠程伺服器的IP位址
- DNS域名解析伺服器
- X.509證書伺服器
- 證書是自簽名證書嗎？
- 證書是由信任的頒發機構頒發的嗎？
- 證書是否已被吊銷？
- 證書最近被更改過嗎？
- 在網際網路上的其他的客戶端是否也得到了相同的證書？

## 其他的非加密的中間人攻擊

一個著名的非加密中間人攻擊的例子是貝爾金無線路由器2003年的某一個版本所造成的。它會周期性地接管通過它的HTTP連接，阻止數據包到達目的地。並將它自己對請求的回應作為應答返回。而它發送的回應，則是在使用者原本應該顯示網頁的地方，顯示一個關於其他貝爾金產品的廣告。在遭到了解技術詳情的使用者的強烈抗議後，這個功能被貝爾金從路由器後續版本的固件中刪除。

另一個典型的非加密中間人攻擊的例子是「圖靈色情農場」。布賴恩·華納說，這是垃圾郵件發送者用來繞過驗證碼的「可以想像的攻擊」。垃圾郵件發送者設置了一個色情網站，而訪問這個色情網站需要使用者解決一些驗證問題。這些驗證問題實際上是其他網站的驗證問題。這樣就可以達到繞開網站驗證發送垃圾郵件的目的。然而，Jeff Atwood指出，這次襲擊僅僅是理論上的——沒有任何證據指出垃圾郵件發送者曾經在2006年建立了圖靈色情農場。然而，2007年10月有新聞報導稱，垃圾郵件發送者確實建立了一個Windows遊戲，當使用者鍵入從雅虎收到的註冊郵箱驗證碼後，程序將獎勵使用者色情圖片。這將允許垃圾郵件發送者創建臨時的免費電子郵件帳戶以發送垃圾郵件。

## 實現

- dsniff - 一個實現SSH和SSL中間人攻擊的工具
- Cain and Abel - Windows圖形界面的工具，它可以執行中間人攻擊，嗅探和ARP投毒
- Ettercap - 一個基於區域網的中間人攻擊工具
- Karma - 一個使用802.11 Evil Twin以執行MITM攻擊的工具
- AirJack -一個演示802.11 MITM攻擊的工具
- SSLStrip一個基於SSL的MITM攻擊的工具。
- SSLSniff一個基於SSL的MITM攻擊的工具。原本是利用一個在Internet Explorer上缺陷實現的。
- csploit -一個在android系統上實現的MITM攻擊工具包。
- Mallory - 一個透明的TCP和UDP MiTMing代理。擴展到MITM SSL，SSH和許多其他協議。
- wsniff - 一個802.11HTTP / HTTPS的基於MITM攻擊的工具
- 安裝在自動取款機銀行卡插槽上的附加讀卡器和安裝在鍵盤上的附加密碼記錄器。
- zanti-一款在android系統上的多功能網路滲透包。

## 參見

- 瀏覽器中間人攻擊 -一種網頁瀏覽器中間人攻擊
- Boy-in-the-browser - 一個簡單的Web瀏覽器中間人攻擊
- Aspidistra transmitter -英國二戰「入侵」行動中使用的無線電發射器，早期的中間人攻擊。
- 電腦安全 - 安全的電腦系統的設計。
- 安全性分析 - 在不完全知道加密方法的情況下破解加密後的資訊。
- 數字簽名 -一個加密文字的真實性擔保，通常是一個只有筆者預計將能夠執行計算的結果。
- 聯鎖協議 -一個特定的協議，在密鑰可能已經失密的情況下，規避可能發生的中間人攻擊。
- 密鑰管理 - 如何管理密鑰，包括生成，交換和存儲密鑰。
- 密鑰協商協議 - 又稱密鑰交換協議，一個協商如何創建適合雙方通信的密鑰的協議。
- 相互認證 -如何溝通各方的信心建立在彼此的身份。
- 密碼認證密鑰協議 -建立使用密碼鑰匙的協議。
- 量子密碼 - 量子力學的使用提供安全加密（老方法，而依靠單向函數）。
- 安全通道 - 一種在通信中防截獲和防篡改的方式。
- 欺騙攻擊
- HTTP嚴格傳輸安全
- HTTP公鑰固定
- 哈薩克斯坦政府實行的中間人攻擊