中間人攻擊 (MITM)
1. 定義
中間人攻擊 (Man-in-the-Middle, MITM) 發生在攻擊者秘密地將自己置於兩個通訊方之間,在雙方不知情的情況下攔截並可能修改其通訊內容。
雙方都認為自己在直接與對方通訊,但實際上所有訊息都經過攻擊者,攻擊者可以竊聽、修改或向對話中注入新內容。
2. 技術原理
MITM 攻擊利用網路通訊中的信任關係。攻擊者必須完成兩件事:
- 攔截: 將自己置於通訊路徑中。
- 解密(如適用): 破解或繞過加密以讀取內容。
常見 MITM 技術:
ARP 欺騙: 攻擊者發送偽造的 ARP 訊息,將其 MAC 位址與預設閘道的 IP 關聯,導致流量通過其機器路由。
DNS 欺騙: 攻擊者提供虛假的 DNS 回應,將受害者重新導向到惡意伺服器。
惡意 Wi-Fi 存取點: 攻擊者建立一個假的 Wi-Fi 熱點(如「免費機場 WiFi」),受害者連接到該熱點。
SSL 剝離: 攻擊者將 HTTPS 連線降級為 HTTP,以明文方式攔截資料。
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 的憑證。
攻擊過程:
- 伊朗 ISP(據信是國家支持的)使用這些偽造憑證執行 MITM 攻擊。
- 當伊朗用戶造訪 Gmail 時,他們收到了偽造的憑證。
- 瀏覽器顯示有效的 HTTPS 連線(綠色鎖標),因為 DigiNotar 是受信任的。
- 所有電子郵件流量都被攻擊者攔截和讀取。
如何被發現: 伊朗的一位具有安全意識的用戶注意到憑證是由 DigiNotar(而非 Google)簽發的,並進行了舉報。這導致了調查,揭露了這次大規模入侵。
影響: DigiNotar 被從所有瀏覽器信任存放區中移除,並在一個月內破產。這一事件加速了憑證透明度的採用,並導致了更嚴格的 CA 安全要求。
5. 深度防禦策略
A. 全面使用 HTTPS (TLS/SSL)
加密所有通訊以防止竊聽。
- HSTS(HTTP 嚴格傳輸安全): 強制瀏覽器只使用 HTTPS。
- HSTS 預先載入: 將您的網域包含在瀏覽器預先載入清單中,以防止首次造訪攻擊。
Strict-Transport-Security: max-age=31536000; includeSubDomains; preloadB. 憑證固定
防止攻擊者使用偽造憑證(即使來自被攻陷的 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 時,不要存取銀行/電子郵件。
