「Spoofer なし」SSL ストリッピングオプションの使用

Beginner
オンラインで実践に進む

はじめに

SSL ストリッピングは、中間者攻撃(MITM)の一種であり、ユーザーが安全な HTTPS 接続を意図していた場合でも、ウェブブラウザに暗号化されていない HTTP 接続でウェブサイトに接続することを強制します。これにより、攻撃者はユーザーとウェブサイト間のすべてのトラフィックを傍受し、読み取ることができます。

この実験(Lab)では、Wifiphisherツールを使用して SSL ストリッピング攻撃を実行します。具体的には、「Without a spoofer」(スプーファーなし)オプションを探求します。これは、偽の SSL 証明書を使用せずにトラフィックを傍受および変更することに依存しています。この実践的な演習は、制御された安全な環境でこの攻撃の仕組みを理解するのに役立ちます。

キャプティブポータル攻撃の開始

このステップでは、Wifiphisher ツールを起動して、不正なアクセスポイント(AP)を作成し、キャプティブポータル攻撃を開始します。LabEx 仮想環境には物理的な無線カードがないため、攻撃をシミュレートするために特定のオプションを使用します。

まず、ターミナルを開きます。ネットワークインターフェースとサービスを管理するために管理者権限が必要なため、sudoを使用してwifiphisherを実行します。実際の WiFi ネットワークを妨害しようとするのを防ぐために--nojammingオプションを、偽のネットワークの名前を付けるために--essid "Free WiFi"を使用します。また、キャプティブポータルのシナリオを指定する必要があります。ここではfirmware-upgradeを使用します。

ターミナルで以下のコマンドを実行してください。

sudo wifiphisher --nojamming --essid "Free WiFi" -p firmware-upgrade

コマンドを実行すると、Wifiphisher が起動します。ネットワークインターフェースが自動的に検出されます。AP 用のインターフェースと NAT 用のインターフェースを選択するように求められる場合があります。両方のプロンプトで、通常はデフォルトの選択(通常はeth0)を受け入れるためにEnterを押すことができます。

ツールが初期化されると、以下のような出力が表示されます。

[*] Starting Wifiphisher 1.4GIT ( https://wifiphisher.org ) at 2023-10-27 10:00
[+] Timezone detected. Setting channel hopping to the appropriate regulatory domain.
[+] Selecting eth0 for the AP interface.
[+] Selecting eth0 for the Internet-connected interface.
...

SSL プロンプトが表示されたら、「Without a spoofer」オプションを選択する

このステップでは、攻撃の SSL ストリッピング方法を設定します。初期設定後、Wifiphisher は SSL/TLS で保護されたトラフィックをどのように処理したいか尋ねます。これは、中間者攻撃の性質を決定する重要な選択です。

Wifiphisher は、2 つの主なオプションを持つプロンプトを表示します。

  1. With a spoofer(スプーファーあり): この方法は、その場で偽の SSL 証明書を生成し、クライアントに提示します。これはクライアントのブラウザでセキュリティ警告を引き起こすことがよくあります。
  2. Without a spoofer(スプーファーなし): この方法は、証明書を使用せずにプレーンな HTTP に接続をダウングレードしようとします。これは、クライアントのブラウザが安全な接続を強制しないことに依存しています。

ターミナルには、以下のようなプロンプトが表示されます。

[?] How do you want to handle SSL/TLS-protected traffic?
1. With a spoofer (Generate a fake cert on the fly and spoof the domain)
2. Without a spoofer (Downgrade to HTTP)
[1/2]:

この実験では、2 番目のオプションを探求します。2と入力してEnterを押してください。

2

選択を行うと、Wifiphisher は不正 AP とキャプティブポータルの設定を完了します。その後、クライアント接続を受け入れる準備が整います。ターミナルには、HTTP および HTTPS プロキシサーバーが実行されていることを示すメッセージが表示されます。

[*] Starting the HTTP and HTTPS proxy servers...
[*] Starting AP...

この手法がクライアントブラウザの脆弱性に依存することを理解する

このステップでは、「Without a spoofer」SSL ストリッピングオプションの背後にあるメカニズムについて説明します。ここでは実行するコマンドはありません。このセクションは概念的な理解のためのものです。

「Without a spoofer」メソッドは、より巧妙な攻撃形態です。仕組みは以下の通りです。

  1. 最初の要求: 被害者があなたの不正な「Free WiFi」ネットワークに接続します。ブラウザを開き、例えばhttps://example.comのような安全なサイトにアクセスしようとします。
  2. 傍受: ゲートウェイとして機能する Wifiphisher は、この要求がインターネットに到達する前に傍受します。
  3. ダウングレード: Wifiphisher は、偽の証明書でexample.comになりすまそうとするのではなく、別のことを行います。ユーザーの要求を実際のhttps://example.comに転送しますが、そのコンテンツをプレーンなhttp://接続経由で被害者に返します。
  4. コンテンツの書き換え: 重要なのは、Wifiphisher が実際のサーバーから受信した HTML コンテンツをスキャンし、すべてのリンクを書き換えることです。https://...だったリンクはすべてhttp://...に変更されます。これにより、ユーザーは可能な限り暗号化されていないセッション内に留まります。

この攻撃の成功は、主に次の 2 つの要因に依存します。

  • ユーザーがブラウザの鍵アイコンがないことに気づかないこと。
  • ターゲットのウェブサイトが**HTTP Strict Transport Security (HSTS)**を使用していないこと。HSTS は、ウェブサーバーがブラウザに対して HTTPS 経由でのみ通信すべきであることを伝えるために使用できるセキュリティポリシーです。ブラウザが以前にサイトから HSTS ヘッダーを受信した場合、HTTP 経由での接続を拒否し、この攻撃を無効にします。

クライアントを接続し、HTTPS サイトへのアクセスを試みる

このステップでは、クライアントが不正 AP に接続し、安全なウェブサイトにアクセスしようとするシナリオをシミュレートします。実際のシナリオでは、被害者は自分のデバイスを「Free WiFi」ネットワークに接続します。ここでは、新しいターミナルでcurlコマンドを使用してこれをシミュレートします。

まず、新しいターミナルタブを開きます。これは、ターミナルパネルの+アイコンをクリックすることで実行できます。この新しいターミナルが「被害者クライアント」として機能します。

この新しいターミナルで、curlを使用して HTTPS サイトにアクセスしようとします。ここでは、テスト目的で設計されており、HSTS を強制しないサイトであるhttpforever.comを使用します。-v(verbose)フラグは、接続プロセスに関する詳細情報を示します。

新しいターミナルで以下のコマンドを実行します。

curl -v https://httpforever.com

Wifiphisher がネットワークを制御しているため、この要求は傍受されます。実際のhttp://httpforever.comに到達する代わりに、攻撃ツールによって処理されます。

接続が HTTP にダウングレードされたかを確認する

このステップでは、クライアントと攻撃者の両方のターミナルで攻撃の結果を観察し、接続が正常にダウングレードされたことを確認します。

まず、クライアントターミナルcurlを実行した場所)の出力を確認します。詳細な出力により、https://httpforever.comへの要求がリダイレクトされたことがわかります。302 Foundステータスコードと、キャプティブポータルページである HTTP アドレスを指すLocationヘッダーが表示されます。

出力は以下のようになります。

*   Trying 10.0.0.1:443...
* Connected to httpforever.com (10.0.0.1) port 443 (#0)
...
< HTTP/1.1 302 Found
< Location: http://10.0.0.2:8080/
< Content-Length: 0
< Date: Fri, 27 Oct 2023 10:05:00 GMT
< Server: Python/3.10 aiohttp/3.8.5
...

Locationヘッダーがhttp://アドレスにリダイレクトしていることに注意してください。これがダウングレードを確認するものです。

次に、wifiphisherが実行されている最初のターミナルに戻ります。クライアントが接続され、その要求が処理されていることを示す新しいログエントリが表示されます。シミュレートされたクライアントからの HTTP GET 要求がログに記録されます。

[+] 192.168.1.100 victim-device connected to Free WiFi
[*] Sent a captive portal page to 192.168.1.100
[+] GET 192.168.1.100: http://httpforever.com/

これにより、攻撃者が平文でトラフィックを正常に傍受していることが確認できます。

この実験を終了するには、Wifiphisher のターミナルに切り替えてCtrl+Cを押してツールを停止します。

まとめ

この実験では、Wifiphisher の「Without a spoofer」オプションを使用して、SSL ストリッピング攻撃を成功裏に実証しました。

以下の方法を学びました。

  • Wifiphisher を起動して、キャプティブポータル攻撃用の不正 AP を作成する。
  • SSL ストリッピング手法として「Without a spoofer」を選択する。
  • 別のターミナルでcurlを使用してクライアント接続をシミュレートする。
  • クライアントと攻撃者ツールの両方からの出力を分析して、HTTPS から HTTP への接続ダウングレードの証拠を観察する。

この演習は、このようなダウングレード攻撃から保護するための HSTS のようなセキュリティメカニズムの重要性を浮き彫りにします。この実験の完了おめでとうございます!