ITの教科書検索
入門読了 約9分

中間者攻撃(MITM)とは ― 通信への介入と防御

中間者攻撃(MITM)は、通信の経路に入り込み盗聴・改ざん・なりすましを行う攻撃です。公共Wi-Fiなどでの入り込み方と、証明書検証で防げる理由を図で示します。

目次
  1. 中間者攻撃(MITM)とは、通信の経路に入り込む攻撃
  2. 通信への介入:盗聴・改ざん・なりすまし
  3. 侵入経路の概要:公共Wi-Fi・ARPスプーフィング・DNSキャッシュポイズニング
  4. HTTPSと証明書検証による防御
  5. 練習問題
  6. 参考にした資料

中間者攻撃(MITM)とは、通信の経路に入り込む攻撃

中間者攻撃(Man-in-the-middle攻撃、MITM)は、通信する二者の経路に攻撃者が入り込む攻撃です。攻撃者はやり取りを中継しながら、盗聴・改ざん・なりすましを行います。カフェや駅の公共Wi-Fiのアクセスポイントが、攻撃者の用意した偽物だったとします。そこにつなぐと、通信はすべて攻撃者の機器を通ります。

送信者と受信者は、本人同士で直接つながっていると思い込んだまま通信を続けます。ブラウザが出す証明書の警告は、この攻撃を見抜くための仕組みの1つです。

攻撃が成立する条件は1つです。攻撃者が、通信の経路上に入り込み、両者のやり取りを中継できる立場にいることです。この立場を手に入れる方法には、公共Wi-Fiの利用やARPスプーフィング、DNSキャッシュポイズニングなどがあります。

通信への介入:盗聴・改ざん・なりすまし

攻撃者が経路上に入り込むと、通信そのものを扱える立場になります。そこからできることは、盗聴・改ざん・なりすましの3つです。

本人同士の通信だと思っている送信者192.168.10.25攻撃者経路の途中に入り込む受信者example.com送る中継する盗聴改ざんなりすまし
送信者と受信者は、本人同士で直接通信していると思っています。実際には、送信者から攻撃者、攻撃者から受信者という経路を通ります。攻撃者はこの経路上で、内容を読む(盗聴)、書き換える(改ざん)、双方に別の顔を見せる(なりすまし)ができます。

盗聴は、経路を通る内容をそのまま読む行為です。暗号化されていない通信では、パスワードや個人情報がそのまま読み取られます。ログイン中に使うCookieを読まれると、利用者になりすまされます。その仕組みはCookieの記事で説明しています。

改ざんは、経路を通る内容を書き換える行為です。送信者が送った内容と、受信者が受け取る内容が、途中で変わってしまいます。

なりすましは、送信者には受信者のふりをし、受信者には送信者のふりをする行為です。双方とも本人同士で話していると思い込んでいますが、実際の通信は攻撃者を経由しています。双方へのなりすましが気づかれない間、攻撃者は盗聴と改ざんを続けられます。

侵入経路の概要:公共Wi-Fi・ARPスプーフィング・DNSキャッシュポイズニング

攻撃者が経路上に入り込む方法は、1つではありません。代表的な3つの場面を、概要だけ紹介します。

公共Wi-Fi:偽のアクセスポイント

公共Wi-Fiでは、攻撃者が偽のアクセスポイントを用意できます。利用者が気づかずに接続すると、通信はすべて攻撃者の機器を通ります。本物と同じSSIDを付けられると、利用者には見分けがつきにくくなります。

暗号化されていないアクセスポイントでは、同じ電波の届く範囲にいる人が通信を見られることもあります。こちらは経路に入り込まずに読み取る盗聴です。

ARPスプーフィング:同じLAN内でのなりすまし

同じLAN内では、ARPスプーフィングという手口で経路に入り込めます。ARPは、IPアドレスからMACアドレスを調べる仕組みです。ただし、応答の送り主を確認する仕組みがありません。

悪意のある機器が「自分がゲートウェイです」と偽ったARP応答を送ると、周囲のARPテーブルが書き換えられます。結果として、ゲートウェイ宛の通信が攻撃者を経由するようになります。仕組みと対策はARPの記事にあります。

DNSキャッシュポイズニング:問い合わせ先をすり替える

DNSキャッシュポイズニングは、偽のDNS応答をDNSサーバに信じ込ませ、キャッシュに記録させる手口です。するとDNSサーバは、問い合わせに本来とは違うIPアドレスを返します。利用者が正しいドメイン名を入力しても、攻撃者が用意したサーバにつながってしまいます。攻撃者のサーバが本物のサーバへ中継すれば、利用者は気づかないまま、攻撃者を経由した通信を続けます。応答に署名を付けて偽物を見分ける対策が、DNSSECです。

HTTPSと証明書検証による防御

経路上に攻撃者が入り込むこと自体は、通信する側からは防ぎきれない場合があります。そのため防御は、経路への侵入を防ぐ対策と、侵入されても被害を防ぐ対策の2段構えになります。ここでは、後者の代表であるHTTPSの証明書検証を説明します。

HTTPSの記事で説明したとおり、通信を始める手順であるTLSハンドシェイクで、サーバは証明書と署名を送ります。クライアントは、証明書に付いた署名を、信頼する認証局(CA)の公開鍵で検証します。あわせて、証明書に書かれたドメイン名が接続先のドメイン名と一致するかも確かめます。

攻撃者が自分で用意した証明書は、信頼されたCAの署名を持ちません。攻撃者がCAから正規に受け取った証明書には、攻撃者自身のドメイン名しか書かれていません。どちらの場合も検証に失敗し、ブラウザは警告を出して接続を止めます。利用者が警告を無視して先へ進むと、この防御は働きません。

証明書を検証しない場合利用者証明書を見ない攻撃者(偽サーバ)自分で作った証明書成立気づかず通信を続ける接続偽って応答証明書を検証する場合(HTTPS)利用者署名を検証する攻撃者(偽サーバ)自分で作った証明書CAの署名を検証拒否接続を中止接続証明書署名が合わない
証明書を検証しない場合、利用者は偽サーバの証明書をそのまま受け入れ、通信が成立します。検証する場合は、証明書の署名を信頼する認証局(CA)の鍵で確かめます。攻撃者の証明書はCAの署名を持たないため、検証に失敗して接続が止まります。

証明書の中身・チェーンの検証・失効の確認は、電子証明書とPKIの記事で詳しく説明しています。ブラウザの警告の種類と、攻撃以外で起きる原因は、SSL/TLSの記事で確かめられます。

証明書検証は、経路上への侵入を防ぐものではありません。攻撃者が本物のふりをして応答することを防ぐものです。

SSHの記事で説明したホスト鍵の確認も、考え方は同じです。初めての接続でホスト鍵の確認を省いても、通信は暗号化されます。ただし、経路に入り込んだ攻撃者が双方になりすますと、その攻撃者には中身が読めます。HTTPSの証明書は、CAが保証します。一方、SSHのホスト鍵は、多くの場合は利用者自身が正しさを確かめます。

練習問題(全6問)

Q1中間者攻撃が成立するために、攻撃者がまず必要とする立場はどれ?
Q2中間者攻撃で、攻撃者が経路上で行えることの組み合わせとして正しいのはどれ?
Q3同じLAN内でのARPスプーフィングが、中間者攻撃の経路になる理由として正しいのはどれ?
Q4HTTPSで、証明書の検証が中間者攻撃を防ぐ理由として正しいのはどれ?
Q5公共Wi-Fiで中間者攻撃のリスクが高くなる理由として正しいのはどれ?
Q6SSHで、初めて接続するサーバのホスト鍵を確認せずに「yes」と答えた場合のリスクとして正しいのはどれ?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

参考にした資料

関連記事

おすすめの本 PR

セキュリティとデータベースは、基本情報技術者試験の対策本でまとめて学べます。

目的別の本の選び方を見る

セキュリティの記事を続けて読む

セキュリティ 全37本中12本目