Luke a Pro

Luke Sun

Developer & Marketer

🇺🇦
EN||

中間人攻擊 (MITM)

| , 2 minutes reading.

1. 定義

中間人攻擊 (Man-in-the-Middle, MITM) 發生在攻擊者秘密地將自己置於兩個通訊方之間,在雙方不知情的情況下攔截並可能修改其通訊內容。

雙方都認為自己在直接與對方通訊,但實際上所有訊息都經過攻擊者,攻擊者可以竊聽、修改或向對話中注入新內容。

2. 技術原理

MITM 攻擊利用網路通訊中的信任關係。攻擊者必須完成兩件事:

  1. 攔截: 將自己置於通訊路徑中。
  2. 解密(如適用): 破解或繞過加密以讀取內容。

常見 MITM 技術:

  1. ARP 欺騙: 攻擊者發送偽造的 ARP 訊息,將其 MAC 位址與預設閘道的 IP 關聯,導致流量通過其機器路由。

  2. DNS 欺騙: 攻擊者提供虛假的 DNS 回應,將受害者重新導向到惡意伺服器。

  3. 惡意 Wi-Fi 存取點: 攻擊者建立一個假的 Wi-Fi 熱點(如「免費機場 WiFi」),受害者連接到該熱點。

  4. SSL 剝離: 攻擊者將 HTTPS 連線降級為 HTTP,以明文方式攔截資料。

  5. BGP 劫持: 大規模攻擊,透過操縱網際網路路由將流量重新導向到攻擊者控制的網路。

攻擊者可以做什麼:

  • 讀取敏感資料(憑證、訊息、財務資訊)
  • 竄改傳輸中的資料(更改交易金額、注入惡意軟體)
  • 冒充任一方(代表伺服器回應)

3. 攻擊流程

sequenceDiagram
    participant Victim as 受害者
    participant Attacker as 攻擊者<br/>惡意熱點
    participant Server as 銀行伺服器

    Note over Victim,Attacker: 受害者連接到<br/>惡意 WiFi 熱點

    Victim->>Attacker: DNS 查詢: bank.com
    Attacker->>Attacker: 攔截 DNS 查詢
    Attacker-->>Victim: 返回攻擊者 IP 作為 bank.com

    Victim->>Attacker: HTTPS 請求到 bank.com

    Note over Attacker: SSL 剝離:<br/>攻擊者透過 HTTPS 連接真實銀行<br/>但向受害者提供 HTTP

    Attacker->>Server: 轉發 HTTPS 請求
    Server-->>Attacker: HTTPS 回應登入頁面

    Attacker-->>Victim: HTTP 回應 - 登入頁面

    Victim->>Attacker: 透過 HTTP 發送憑證
    Note over Attacker: 明文擷取憑證

    Attacker->>Server: 透過 HTTPS 轉發憑證
    Server-->>Attacker: 工作階段權杖
    Attacker-->>Victim: 工作階段權杖

4. 真實案例:DigiNotar 入侵事件 (2011)

目標: 透過偽造 SSL 憑證攻擊伊朗 Gmail 用戶。 漏洞類別: 憑證頒發機構被攻陷 / MITM。

事件經過: DigiNotar 是一家荷蘭憑證頒發機構 (CA),受到所有主流瀏覽器的信任。2011 年 7 月,攻擊者入侵了 DigiNotar 並簽發了 500 多個偽造的 SSL 憑證,包括一個 *.google.com 的憑證。

攻擊過程:

  1. 伊朗 ISP(據信是國家支持的)使用這些偽造憑證執行 MITM 攻擊。
  2. 當伊朗用戶造訪 Gmail 時,他們收到了偽造的憑證。
  3. 瀏覽器顯示有效的 HTTPS 連線(綠色鎖標),因為 DigiNotar 是受信任的。
  4. 所有電子郵件流量都被攻擊者攔截和讀取。

如何被發現: 伊朗的一位具有安全意識的用戶注意到憑證是由 DigiNotar(而非 Google)簽發的,並進行了舉報。這導致了調查,揭露了這次大規模入侵。

影響: DigiNotar 被從所有瀏覽器信任存放區中移除,並在一個月內破產。這一事件加速了憑證透明度的採用,並導致了更嚴格的 CA 安全要求。

5. 深度防禦策略

A. 全面使用 HTTPS (TLS/SSL)

加密所有通訊以防止竊聽。

  • HSTS(HTTP 嚴格傳輸安全): 強制瀏覽器只使用 HTTPS。
  • HSTS 預先載入: 將您的網域包含在瀏覽器預先載入清單中,以防止首次造訪攻擊。
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

B. 憑證固定

防止攻擊者使用偽造憑證(即使來自被攻陷的 CA)。

  • 公鑰固定: 應用程式只信任特定的憑證公鑰。
  • 憑證透明度: 監控 CT 日誌,發現為您的網域簽發的未授權憑證。
// 行動應用程式憑證固定範例
const validPins = [
  'sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=',
  'sha256/BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB='
];

C. 在不受信任的網路上使用 VPN

在公共 Wi-Fi 上透過受信任的通道加密所有流量。

  • 始終開啟 VPN: 設定裝置在不受信任的網路上自動連接 VPN。
  • 謹慎使用分割通道: 避免分割通道,因為它可能洩露部分流量。

D. DNS 安全

防止基於 DNS 的 MITM 攻擊。

  • DNS over HTTPS (DoH): 加密 DNS 查詢以防止攔截。
  • DNS over TLS (DoT): 替代的加密 DNS 協定。
  • DNSSEC: 對 DNS 記錄進行加密簽章以防止欺騙。

E. 網路安全協定

  • 802.1X 認證: 在授予網路存取權限之前要求認證。
  • 動態 ARP 檢測 (DAI): 交換器層級的 ARP 欺騙防護。
  • DHCP 監聽: 防止惡意 DHCP 伺服器重新導向流量。

F. 用戶意識

  • 憑證警告: 永遠不要忽略瀏覽器憑證警告。
  • 驗證網路: 與工作人員確認合法的 Wi-Fi 網路名稱。
  • 避免敏感操作: 在不受信任的網路上不使用 VPN 時,不要存取銀行/電子郵件。

6. 參考資料