web-dev-qa-db-ja.com

Squid SSLからスニッフィング

Squidプロキシと自己署名SSL証明書を作成しました。サーバー上のSSL証明書は、ssl-bump機能にリンクされたプライベート証明書です。 SSLトラフィックをダンプするためにtsharkを使用していますが、tsharkで嗅ぐことはできません。たとえば、私のtsharkコマンドは次のとおりです。

tshark -o "ssl.desegment_ssl_records: TRUE" -o "ssl.desegment_ssl_application_data: TRUE" -o "ssl.keys_list: 209.190.x.x,443,http,/etc/squid/ssl/file/squid.key" -o "ssl.debug_file: /tmp/.wireshark-log" -i eth0 -R "http.request.method==GET or http.request.method==POST"

Squidが機能することを知っており(httpからすべてのデータを傍受できます)、httpsサイトのログを/var/log/squid/access.logで確認できますが、httpsの完全なデータを傍受できません。 Squidがこのシナリオの中間者になり、2つのSSLキーを作成することも知っています。 1つはクライアントとsquidの間、もう1つはsquidとサーバーの間です。クライアントとSquidの間でデータを傍受することはできませんが、サーバー(私)とSquidの間でデータを傍受できると思います。
どうすればそれを嗅ぐことができますか? tsharkの代替手段はありますか?

3
John

SSLバンプ を使用すると、Squidはクライアントとサーバー間で 中間者攻撃 を実行します。クライアントと通信するときは偽の証明書を持つ偽のサーバーとして、真のSSLサーバーと通信するときは偽のクライアントとしてポーズをとります。したがって、Squidはすべてのデータを取得します。 Squidが何を見ているのかを確認したい場合は、Squidにコピーを送信するように依頼するのが最善の方法です。どうやら、これは少なくとも理論的には [〜#〜] icap [〜#〜] 機能によって実現可能です。これはSquidがまさにそれを行うための方法です。ウイルス対策ソフトウェアはICAPを介してSquidにリンクし、HTTPメッセージの内容ヘッダーの両方を検査します。

そうでない場合、Squidの助けがなければ、SSLレベルで何が発生するかを理解する必要があります。特に、ツール ssldump は、次の条件がallの場合にのみ、キャプチャされたSSLトラフィックを復号化できます。

  • 復号化ツールには、server秘密鍵のコピーが与えられます。
  • 復号化ツールは、接続に使用される暗号化アルゴリズムをサポートしています。
  • サーバーが選択した暗号スイートは(クライアントがサポートし、好むものに基づいて)、RSAベースの鍵交換を使用します。 「DHE」暗号スイートでは、実際の鍵交換は一時的なDiffie-Hellman鍵を使用し、サーバーの秘密鍵は署名にのみ使用されます。その秘密鍵のコピーがあっても、ここでは役に立ちません。

あなたの場合、2つのSSL接続があり、1つはクライアントとSquidの間、もう1つはSquidと本物のサーバーの間です。サーバーキーのコピーがある場合は、後者に集中でき、SSLバンプとSquidに関するすべてを忘れることができます。ただし、より一般的なケースでは、Squidのsysadminとして、ターゲットサーバーではなくSquidを制御します。

SSLバンプを使用すると、Squidはクライアントと通信するときに偽のサーバー証明書を生成します。その偽の証明書の秘密鍵のコピーを取得できる場合は、クライアントからSquidへの接続にssldumpを適用できるはずです。 ここ で説明されているように、偽の証明書を生成するためにSquidが使用するツールは構成可能であるため、証明書を生成する独自のツールを使用できます(例: OpenSSLandは秘密鍵をどこかに記録するので、キャプチャしたトレースを後で解読できます。

暗号スイートの場合、これはSquid https_port ディレクティブ。「cipher =」パラメーターを受け入れます。前述のとおり here の場合、そのパラメーターの値は、Squidが使用する基本的なSSLライブラリに直接渡されます。これはOpenSSLです。

参照 このフォーラムのスレッド 誰かがあなたと同じことをやろうとしているようです。

3
Tom Leek

私があなただったら、SSLStripを取得します( http://www.thoughtcrime.org/software/sslstrip/ )。これは本当に優れたツールですが、Linuxでのみ機能します。 Linuxをお持ちでない場合は、これで十分です。 Kali Linux( http://www.kali.org/ )は、VMまたはUSBドライブから最小限の労力で実行できる無料のツールです。 SSLStripを取得する必要がありますが、KaliにはPython=がインストールされているため、「python setup.py」を使用するだけで機能します。SSLStripのGUIはありませんが、 Kaliには、Wireshark(http用)やaircrack-ng(WEPおよびWPA/WPA2で保護されたネットワークへの侵入用)などの便利な機能も用意されています。

1
user2218101