中間者攻撃(MITM)とは ― 通信への介入と防御
中間者攻撃
中間者攻撃(MITM)とは、通信の経路に入り込む攻撃
中間者攻撃(Man-in-the-middle攻撃、MITM)は、通信する二者の経路に攻撃者が入り込む攻撃です。攻撃者はやり取りを中継しながら、盗聴・改ざん・なりすましを行います。カフェや駅の公共Wi-Fiのアクセスポイントが、攻撃者の用意した偽物だったとします。そこにつなぐと、通信はすべて攻撃者の機器を通ります。
送信者と受信者は、本人同士で直接つながっていると思い込んだまま通信を続けます。ブラウザが出す証明書の警告は、この攻撃を見抜くための仕組みの1つです。
攻撃が成立する条件は1つです。攻撃者が、通信の経路上に入り込み、両者のやり取りを中継できる立場にいることです。この立場を手に入れる方法には、公共Wi-Fiの利用やARPスプーフィング、DNSキャッシュポイズニングなどがあります。
通信への介入:盗聴・改ざん・なりすまし
攻撃者が経路上に入り込むと、通信そのものを扱える立場になります。そこからできることは、盗聴・改ざん・なりすましの3つです。
盗聴は、経路を通る内容をそのまま読む行為です。暗号化されていない通信では、パスワードや個人情報がそのまま読み取られます。ログイン中に使う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から正規に受け取った証明書には、攻撃者自身のドメイン名しか書かれていません。どちらの場合も検証に失敗し、ブラウザは警告を出して接続を止めます。利用者が警告を無視して先へ進むと、この防御は働きません。
証明書の中身・チェーンの検証・失効の確認は、電子証明書とPKIの記事で詳しく説明しています。ブラウザの警告の種類と、攻撃以外で起きる原因は、SSL/TLSの記事で確かめられます。
証明書検証は、経路上への侵入を防ぐものではありません。攻撃者が本物のふりをして応答することを防ぐものです。
SSHの記事で説明したホスト鍵の確認も、考え方は同じです。初めての接続でホスト鍵の確認を省いても、通信は暗号化されます。ただし、経路に入り込んだ攻撃者が双方になりすますと、その攻撃者には中身が読めます。HTTPSの証明書は、CAが保証します。一方、SSHのホスト鍵は、多くの場合は利用者自身が正しさを確かめます。
練習問題(全6問)
正解:通信の
中間者攻撃は、
正解:盗聴・
攻撃者は
正解:ARPには
ARPには
正解:攻撃者が
クライアントは、
正解:攻撃者が
公共Wi-Fiでは、
正解:通信は
ホスト鍵の
選んでから「採点する」を押すと、解説つきで答え合わせができます。
参考にした資料
- NIST CSRC Glossary「man-in-the-middle attack (MitM)」(通信する二者の間に攻撃者が入り込む攻撃という定義。NIST SP 800-121 Rev.2などの定義を掲載)
関連記事
おすすめの本 PR
セキュリティとデータベースは、基本情報技術者試験の対策本でまとめて学べます。

