MENU
草壁シトヒ
くさかべしとひ
普通の会社員でブログ歴は10年以上。

<趣味・得意分野>
⇨スポーツ観戦:F1、サッカー、野球
⇨テック分野が好物:AI、スマホ、通信
2025年最新版!VPSサーバーランキング 詳細はこちら

なぜHTTPSが見える?MITMプロキシの核心技術を完全分解

当ページのリンクには広告が含まれています。

HTTPSは「暗号化されて安全」と誰もが思っています。しかし、特定の技術を使えば、その暗号化された通信内容を丸見えにできてしまいます。

それが「MITMプロキシ(中間者プロキシ)」と呼ばれる技術です。この技術は、開発者がアプリの動作を確認するために使う正当な「ツール」である一方、攻撃者があなたのパスワードやクレジットカード情報を盗むための「武器」にもなります。

私がこの記事で伝えたいのは、この技術の便利さと危険性は表裏一体だという事実です。この記事では、なぜMITMプロキシがHTTPS通信を「見る」ことができるのか、その核心的な技術的仕組みから、具体的なツールの使い方、そして私たちがどう身を守ればよいかまで、徹底的に分解して解説します。

タップできる目次

MITMプロキシとは?その「二つの顔」を解説

MITMプロキシは、文字通り「中間者(Man-in-the-Middle)」として、あなたのデバイスとインターネット上のサーバーとの間に割り込む技術です。この「割り込む」という性質が、全く異なる二つの側面を持ちます。

開発を助ける「ツール」としての役割

この技術は、多くの開発現場で必須のツールとして活躍します。Webサイトやスマートフォンアプリが、サーバーと正しく通信しているかを確認するために使われます。

例えば、アプリが送信するデータ(リクエスト)や、サーバーから返ってくるデータ(レスポンス)を平文で確認できます。これにより、バグの発見やパフォーマンス改善、セキュリティ上の弱点(脆弱性)がないかのテストが効率的に行えます。

企業ネットワークでは、社員がマルウェアに感染したり、機密情報を外部に漏らしたりするのを防ぐため、通信を検査する目的でこの技術が導入されていることもあります。

データを盗む「武器」としての脅威

この技術が攻撃者によって悪用されると、非常に危険な脅威となります。攻撃者は、暗号化されていると信じているユーザーの通信を傍受し、解読してしまいます。

これにより、ログインIDやパスワード、クレジットカード番号といった最も重要な個人情報がリアルタイムで盗まれます。さらに深刻なのは、通信内容をその場で書き換える「改ざん」が行われることです。

例えば、オンラインバンキングの振込先口座番号を攻撃者のものにこっそり差し替えたり、正規のアップデートファイルをマルウェアにすり替えて感染させたりする手口が存在します。

目次に戻る

なぜ暗号化(HTTPS)が見える?SSL/TLS傍受の技術的仕組み

HTTPSが暗号化されていても内容が見えてしまうのは、SSL/TLSという暗号化の「信頼」の仕組みそのものを、MITMプロキシが巧みに操作しているからです。この操作は、通信の「前提」を書き換える行為と言えます。

私が注目するのは、この技術が「信頼の連鎖」と呼ばれるセキュリティの根幹に割り込む点です。これにより、暗号化を維持したまま、中身だけを平文でのぞき見します。

HTTPS通信の「信頼」の仕組み

本来のHTTPS通信は、強固な信頼関係の上で成り立っています。ブラウザがWebサイトに接続すると、サイトは「公開鍵証明書」という身分証明書を提示します。

ブラウザは、その証明書が「信頼できる第三者機関(ルート認証局|CA)」によって署名されているかを厳格に検証します。この検証に合格して初めて、その相手が本物であると確認され、暗号化通信が開始されます。

この仕組みがあるからこそ、私たちは通信経路の途中で誰かに盗み見されたり、なりすまされたりする心配なく、安全にインターネットを利用できるわけです。

信頼を操る「偽の証明書」の動的生成プロセス

MITMプロキシは、この信頼の仕組みを根本から覆します。この操作を成功させるため、プロキシツールは自身の「俺様ルート証明書(プロキシCA)」を、利用者のデバイス(PCやスマホ)にインストールさせます。

デバイスは、この「プロキシCA」をOSレベルで「信頼できる発行元」として認識してしまいます。ここが全ての始まりです。

接続要求の横取り

利用者が例えば「https://www.google.com/search?q=google.com」にアクセスしようとすると、MITMプロキシがその通信要求を横取りします。プロキシは、利用者には「https://www.google.com/search?q=%E8%87%AA%E5%88%86%E3%81%8Cgoogle.comだ」と振る舞います。

偽の証明書の即時発行

プロキシは、横取りした瞬間に「https://www.google.com/search?q=google.com」という名前が書かれた「偽の証明書」をその場で動的に生成します。そして、その偽の証明書を、先ほどデバイスにインストールさせた「プロキシCA」で署名します。

ブラウザは、提示された偽の証明書を検証しますが、署名者が「信頼済み」のプロキシCAであるため、これを本物の証明書だと信じ込み、警告を出しません。

二重の暗号化セッションの確立

この結果、利用者のブラウザとMITMプロキシの間で、一つの暗号化セッションが確立されます。それと同時に、プロキシは本物の「https://www.google.com/search?q=google.com」サーバーともう一つの暗号化セッションを確立します。

私は、この状態を「二重トンネル」と呼んでいます。プロキシは両方のトンネルの中間に立ち、ブラウザからの暗号化データを解読(復号)して平文で内容をのぞき見し、それを本物のサーバーの鍵で再暗号化して転送します。帰りも同様のプロセスを踏むため、通信内容がすべて丸見えになります。

目次に戻る

実践|主要MITMプロキシツールの使い方と特徴

MITMプロキシ技術は、具体的なツールとして利用されています。ここでは、開発者やセキュリティ専門家に愛用されている主要なツールと、その実践的な使い方を紹介します。

定番ツール比較(mitmproxy, Burp, Charles, Fiddler)

各ツールには得意分野があり、目的に応じて使い分けられます。私が注目するポイントを表にまとめました。

ツール名UIライセンス主な用途
mitmproxyCUI / Webオープンソースセキュリティテスト, 自動化
Burp SuiteGUI商用 / 一部無料脆弱性診断
CharlesGUI商用 (有料)Web・モバイル開発
FiddlerGUI商用 / (Classicは無料)Web・モバイル開発

ケーススタディ|PCとスマホの通信を分析する方法

ここでは、PCやスマートフォンの通信を実際に傍受する手順の概要を解説します。今回はCharles Proxyやmitmproxyを使った一般的な流れです。

PCブラウザの通信を傍受する

  1. PCにmitmproxyなどのツールをインストールし、プロキシサーバーを起動します(例|ポート8080)。
  2. PCのOSまたはブラウザのネットワーク設定で、プロキシを「127.0.0.1(自分自身)」のポート「8080」に設定します。
  3. ブラウザで特定のURL(例|http://mitm.it)にアクセスし、ツールの「ルート証明書(CA)」をダウンロードします。
  4. ダウンロードした証明書を、OSの「信頼されたルート証明機関」ストアにインストールします。

これで、PCのブラウザが発信するHTTPS通信がツールに表示され、内容が確認できるようになります。

スマートフォンアプリの通信を傍受する

  1. PCでCharlesなどのツールを起動し、プロキシポート(例|8888)とSSL傍受設定を有効にします。
  2. PCのローカルIPアドレス(例|192.168.1.10)を調べます。
  3. スマートフォンをPCと同じWi-Fiに接続し、Wi-Fi設定の詳細からプロキシ設定を開きます。
  4. プロキシを「手動」に設定し、ホスト名にPCのIP(192.168.1.10)、ポートに「8888」を入力します。
  5. スマートフォンのブラウザで指定のURLにアクセスし、証明書をダウンロードしてインストールします。

ただし、近年のAndroidやiOSはセキュリティが強化されており、アプリによってはこれだけでは傍受できません。開発中のアプリをデバッグするには、アプリ側で「ユーザーが追加した証明書を信頼する」という追加設定が必要になるケースがほとんどです。

目次に戻る

あなたも狙われる?悪意のあるMITM攻撃の恐ろしい手口

この技術が攻撃者の手に渡ると、私たちは深刻な被害に遭う危険があります。攻撃者は、私たちが気付かないうちに通信の「中間」に割り込んできます。

攻撃経路|不正Wi-FiとDNSスプーフィング

攻撃者が通信に割り込むための代表的な入口が、公共のWi-Fiです。空港やカフェにある「Free_Airport_WiFi」のような、正規の名前に似せた「不正なWi-Fiアクセスポイント」を設置します。

もしあなたがそのWi-Fiに接続してしまうと、あなたのデバイスからの通信はすべて攻撃者の管理するプロキシを経由することになります。

ネットワーク内部で行われる「ARPスプーフィング」や、偽のIPアドレスを教える「DNSスプーフィング」といった古典的な攻撃も、通信を乗っ取るために使われます。

実行手口|SSLストリッピングとセッションハイジャック

通信の経路上に割り込むことに成功した攻撃者は、暗号化を無効化しようとします。その一つが「SSLストリッピング」です。

これは、ユーザーがHTTP(非暗号化)でアクセスした際、サイト側がHTTPS(暗号化)へ誘導(リダイレクト)するのを妨害する攻撃です。攻撃者は、ユーザーとHTTPのまま通信を続け、自分だけがサーバーとHTTPSで通信します。

ユーザーはブラウザのアドレスバーに「鍵マーク」がないことに気付かず、パスワードなどを入力してしまい、平文のまま盗まれます。

通信内容が傍受できる状態になれば、「セッションハイジャック」も容易です。ログイン後に発行されるセッショントークン(クッキー)を盗み出し、そのトークンを攻撃者が使うだけで、パスワードなしであなたのアカウントになりすまし、不正送金などを行います。

目次に戻る

【完全防御】MITM攻撃から身を守るための高度な対策

MITM攻撃は多層的であるため、防御策も複数の層で考える必要があります。個人ユーザーができる対策から、サービス提供側が実装すべき高度な技術まで、私が重要と考える防御戦略を解説します。

個人で今すぐできる基本防御(VPNと警告の重要性)

個人ユーザーにとって最も効果的で簡単な防御策は、信頼できないネットワーク(特に公衆Wi-Fi)では「VPN(Virtual Private Network)」を使用することです。VPNは、あなたのデバイスとVPNサーバーとの間に暗号化されたトンネルを作ります。

たとえ不正なWi-Fiに接続してしまっても、通信全体がVPNサーバーまで暗号化されているため、ローカルの攻撃者には中身を見られません。

もう一つ非常に重要なのが、ブラウザの「証明書警告」を絶対に無視しないことです。「この接続ではプライバシーが保護されません」といった警告が表示された場合、それはまさにMITM攻撃が行われている最中のサインかもしれません。

特に金融機関などのサイトで警告が出た場合は、決して「危険性を承知で続行」をクリックせず、すぐに接続を中断してください。

サイト・アプリ開発者が実装すべき強力な防御策(HSTSと証明書ピニング)

Webサイトやアプリの開発者側には、ユーザーを守るための強力な防御策が求められます。

HSTS (HTTP Strict Transport Security)

これは、SSLストリッピング攻撃に対する特効薬です。Webサーバーが「このサイトは必ずHTTPSで接続すること」をブラウザに強制する設定(レスポンスヘッダー)です。

一度この設定を受け取ったブラウザは、ユーザーが誤ってHTTPでアクセスしようとしても、自動的にHTTPSに書き換えて接続します。これにより、攻撃者がHTTPにダウングレードする隙を与えません。

証明書ピニング (Certificate Pinning)

これは主にモバイルアプリで使われる、さらに強力な防御策です。「信頼できるCA発行の証明書」であるだけでは信用せず、「アプリ内にあらかじめ埋め込んだ、本物のサーバー証明書の特定情報(フィンガープリント)」と一致するかまで検証します。

これにより、たとえユーザーが攻撃者の不正なCA証明書をデバイスにインストールしてしまっても、アプリは偽の証明書を即座に検知し、接続を拒否します。これは、MITMプロキシによる傍受を根本的にブロックする非常に強力な手段です。

目次に戻る

まとめ|MITM技術とセキュリティの未来

MITMプロキシ技術は、HTTPSという信頼の仕組みを意図的に操作することで通信を可視化する、強力な「諸刃の剣」です。開発者にとってはデバッグやセキュリティテストに欠かせないツールであり、攻撃者にとっては機密情報を盗むための恐ろしい武器となります。

私たちの防御技術も進化しており、HSTSや証明書ピニングのように、より厳格な信頼モデルが採用されつつあります。個人としてはVPNや警告への注意を徹底し、開発者はこれらの高度な防御策を実装することが、安全なインターネット環境の維持に不可欠です。

よかったらシェアしてね!
  • URLをコピーしました!
タップできる目次