中間者攻撃(MITM)とは?ARPポイズニングから偽Wi-Fiの仕組みと対策
2011年8月、オランダの認証局DigiNotarがハッキングを受け、偽のSSL証明書が不正発行された結果、イラン国内の30万人以上のGoogleユーザーの通信がブラウザの警告なしに密かに盗聴されました。
通信の間に潜む「見えない盗聴者」
カフェのWi-Fiに接続し、ノートパソコンからオンラインバンキングにログインする場面を想像してみてください。あなたのデータパケットは端末を離れ、ルーターを経由して銀行のサーバーへと届きます。しかし、もし端末とルーターの間に悪意ある第三者が割り込み、送信データをすべて複製・閲覧・改ざんしていたらどうでしょうか。
これこそが「中間者攻撃(Man-in-the-Middle Attack / MITM)」の正体です。
MITM攻撃において、攻撃者は互いに直接通信していると信じ込んでいる2者間のネットワークパスに密かに割り込みます。被害者に対しては「本物のサーバー」、サーバーに対しては「本物のユーザー」として振る舞い、双方向のトラフィックを透過的に仲介します。
この割り込みは、ネットワークのさまざまな階層で実行されます。ローカルネットワーク(LAN)の物理アドレスの偽装から、アプリケーション層でのDNS偽装まで、攻撃手法は多岐にわたります。
攻撃者がどのようにして通信経路をハイジャックするのか、まずはローカルネットワーク内に存在するプロトコルの弱点を見ていきましょう。
主な3つの割り込み手法
初期のネットワークプロトコルが設計された時代、すべての参加者は善意で動作することが前提とされていました。この「無条件の信頼」という設計思想が、現代のMITM攻撃の温床となっています。
1. ARPポイズニング(ローカルネットワークのハイジャック)
同一のLAN内では、機器同士の通信はIPアドレスではなくMACアドレスで行われます。1982年に標準化されたRFC 826のARP(Address Resolution Protocol)は、IPアドレスからMACアドレスを特定するための仕組みです。しかし、ARPには応答の送信元を検証する仕組みが一切含まれていません。
攻撃者が「ルーターのIPアドレスを持つのは自分のMACアドレスだ」という偽のARP応答をLAN内に流すと、被害者の端末は疑うことなくARPキャッシュを更新します。これにより、外のインターネットへ送るはずの全パケットがまず攻撃者の端末に送られるようになります。この手法は IPスプーフィング 技術と組み合わせて身元を隠蔽する際によく利用されます。
2. 悪魔の双子Wi-Fi(Rogue Wi-Fi / Evil Twin)
攻撃者は、フリーWi-Fiと同じSSID(ネットワーク名)を設定した偽のアクセスポイントを公開します。被害者のスマートフォンが電波の強い偽Wi-Fiに接続すると、攻撃者が制御する DHCPサーバー がIPアドレスを割り当て、デフォルトゲートウェイを攻撃者のマシンに設定します。
この接続を経由して送信されるデータは、すべて攻撃者のパケットキャプチャツールを通過することになります。
3. DNSキャッシュポイズニング
ブラウザにWebサイトのURLを入力した際、端末はDNSサーバーにIPアドレスを問い合わせます。攻撃者がDNS応答を偽装すると、本物の銀行サイトではなく、攻撃者が用意した偽のフィッシングサイトへと接続が誘導されてしまいます。
こうした攻撃によるデータの流れの変化を、フロー図でわかりやすく確認してみましょう。
通信割り込みのフロー図
以下のシーケンス図は、攻撃者がどのようにしてユーザーとターゲットサーバーの間に割り込むかを示しています。
図のように、本来は直線的であるはずの通信が、攻撃者の端末を経由する2段階の転送へと変化します。攻撃者はデータの中身を観察するだけでなく、送信内容をその場で改ざんして送り返すことも可能です。
では、現代のインターネットセキュリティは、どのようにしてこの盗聴を防いでいるのでしょうか。その鍵となるのがTLSとHTTPSです。
HTTPSと暗号化がもたらす防御力
平文のHTTP通信では、中間者はパスワードやクッキー情報をそのまま読み取ることができました。しかし、TLS/SSLによって通信を暗号化するHTTPSの普及により、安全性の構図は大きく変わりました。
HTTPSは主に2つの重要な防御メカニズムを提供します:
- エンドツーエンド暗号化: 非対称鍵暗号を用いて安全な共通鍵を生成し、データを暗号化します。たとえARPポイズニングでパケットを盗聴されても、攻撃者には解読不能なデータ列しか見えません。
- デジタル証明書による本人確認: Webサーバーは信頼された認証局(CA)が署名した証明書を提示します。ブラウザは証明書が正当であり、ドメインと一致しているかを検証します。
さらに、攻撃者がHTTPS通信を強制的に暗号化されていないHTTPにダウングレードさせる攻撃を防ぐため、2012年にIETFはHSTS(HTTP Strict Transport Security、RFC 6797)を制定しました。HSTSが有効なサイトでは、ブラウザはHTTPでの接続試行を自動的に拒否し、常にHTTPSで接続します。
それでもなお、攻撃者は暗号化を回避するための高度な手法を開発し続けています。
暗号化を回避する現代の攻撃手法
強固なTLS暗号化に対抗するため、攻撃者は設定上のミスや人間側の不注意を突く戦略にシフトしています。
SSLストリッピング(SSL Stripping)
セキュリティ研究者のMoxie Marlinspike氏が2009年のBlack Hatで発表したSSLstripは、ユーザーが最初にアクセスする際の非暗号化HTTPリクエストを横取りします。攻撃者はサーバーとはHTTPSで通信しつつ、ユーザー側へ返すレスポンス内のリンクをすべて http:// に書き換えます。ユーザーがアドレスバーの鍵マークの欠如に気づかない場合、平文のまま機密情報を入力してしまうことになります。
悪意あるルート証明書のインストール
攻撃者が被害者の端末に物理的または管理者権限でアクセスできた場合、あるいはソーシャルエンジニアリングによって自作のルート証明書をインストールさせた場合、任意のWebサイトに対する偽のTLS証明書をその場で発行できるようになります。端末がそのルート証明書を信頼しているため、ブラウザは警告を表示せず、攻撃者はすべてのTLS通信を復号して閲覧できるようになります。
多層的な攻撃手法が存在するからこそ、ユーザー自身が適切なネットワーク対策を講じることが重要です。
通信の安全を守るための実践的対策
MITM攻撃から自身の端末とデータを守るためには、日常的なブラウジングの意識と適切なセキュリティツールの導入が効果的です。
- 証明書のエラー警告を絶対に無視しない: ブラウザが「接続がプライベートではありません」といった警告を出した場合、アクセスを直ちに中止してください。
- 野良Wi-FiではVPNを利用する: 信頼できないフリーWi-Fiに接続する際は、 VPNの仕組み を活用して通信全体を暗号化トンネルで保護し、ARPポイズニングなどの被害を防ぎます。
- 安全なDNSプロトコルの導入: DNS-over-HTTPS を有効にすることで、ローカルネットワーク上でのDNS問い合わせの盗聴や改ざんを防止できます。
- OSやブラウザを最新状態に保つ: ネットワークスタックの脆弱性やルート証明書ストアの安全性を維持するため、ソフトウェアのアップデートを怠らないようにしましょう。
これらのセキュリティ設定を徹底することで、あなたの通信パケットは送信元から目的地まで安全に保護されます。