Articles

TLS

Transport Layer Security(TLS)は、2つのホスト間の通信にセキュリティを提供します。 それは完全性、認証および機密性を提供します。 これは、webブラウザで最も一般的に使用されますが、トランスポート層としてTCPを使用する任意のプロトコルで使用できます。

Secure Sockets Layer(SSL)は、TLSプロトコルの前身です。 これらの名前はしばしば互換的に使用され、混乱を招く可能性があります。

  • SSLプロトコル(Sslv2/Sslv3)を使用する構成は安全ではありません。 代わりにTLSプロトコルを使用する必要があります。 認証用のX.509証明書は、SSL証明書とも呼ばれることがあります。

  • 一部のアプリケーション(電子メールなど)は、暗号化されていないセッションと暗号化されたセッションの両方に単一のポートを使用します。 暗号化されていないものから暗号化されたものに変更するには、(開始)TLSが使用されます。 単一のポートがTLSプロトコルを直接使用する場合は、SSLと呼ばれることがよくあります。 歴史的な理由から、ソフトウェア(Wiresharkを含む)はSSLまたはSSL/TLSを参照しますが、実際にはTLSプロトコルを意味します。 プロトコルの依存関係

    • TCP/IPプロトコルの依存関係

      • TCP/IPプロトコルの依存関係

        • TCP: 通常、TLSはトランスポートプロトコルとしてTCPを使用します。 WiresharkのTLS dissection

          TLS dissectorは完全に機能し、適切な秘密が提供されている場合(#Tls_Decryption)、TLSの復号化などの高度な機能をサポートしています。 Wireshark3.0以降、TLS dissectorはSSLからTLSに名前が変更されました。 Ssl表示フィルタを使用すると、警告が表示されます。

          TLS復号化

          Wiresharkは、適切な秘密が提供された場合にTLS復号化をサポートします。 使用可能な2つの方法は次のとおりです。

          • セッションごとのシークレットを使用するキーログファイル(#Using_The_.28プレ29-マスター-シークレット)。 RSA秘密キーを使用した復号化。

          • RSA秘密キーを使用した復号化。

          キーログファイルは、Diffie-Hellman(DH)キー交換が使用されている場合でも、常に復号化を可能にする普遍的なメカニズムです。 RSA秘密キーは、限られた数のケースでのみ機能します。 キーログファイルは、Sslkeylogfile環境変数が設定されているときに、Firefox、Chrome、curlなどのアプリケーションによって生成されるテキストファイルです。 正確には、基礎となるライブラリ(NSS、OpenSSL、またはboringssl)は、セッションごとに必要な秘密をファイルに書き込みます。 このファイルはその後、Wiresharkで設定できます(#Using_The_.28プレ29-マスター-シークレット)。 RSA秘密鍵ファイルは、次の状況でのみ使用できます。

          • サーバーによって選択された暗号スイートがEC DHEを使用していません。 プロトコルバージョンはSslv3、(D)TLS1.0-1.2です。 TLS1.3では動作しません。
          • 秘密キーはサーバー証明書と一致します。 これは、クライアント証明書や認証局(CA)証明書では機能しません。

          • セッションが再開されていません。 ハンドシェイクには、ClientKeyExchangeハンドシェイクメッセージを含める必要があります。

          キーログファイルは、すべてのケースで動作するため、一般的に推奨されますが、クライアントアプリケーションまたはサーバーアプリケーションのいずれかから秘密をエクスポートするための継続的な機能が必要です。 RSA秘密キーの唯一の利点は、上記の制限に従って、復号化を有効にするためにWiresharkで一度だけ設定する必要があることです。

          環境設定

          編集->環境設定に移動します。 プロトコルツリーを開き、TLSを選択します。 または、パケットリストでTLSパケットを選択し、パケット詳細ビューでTLSレイヤーを右クリックし、プロトコル設定メニューを開きます。

          注目すべきTLSプロトコルの設定は次のとおりです。

          • (Pre)-Master-Secret log filename(tls.keylog_file):復号化のためにTLSキーログファイルを読み取るためのパス。
          • RSAキーリスト:復号化のためにRSA秘密キーを設定するダイアログを開きます。 環境設定を支持して非推奨->RSAキーダイアログ。 Pre-Shared-Key:PSK暗号スイートの復号化キーを設定するために使用されます。 一般的には使用されません。 TLSデバッグファイル(tls.debug_logfile):復号化プロセスに関する内部詳細を書き込むためのパス。 復号化の結果と、このプロセスで使用されたキーが含まれます。 これは、復号化が失敗する理由を診断するために使用できます。

          TLS復号化を有効にするには、次のTCPプロトコル設定も必要です。

          • subdissectorがTCPストリームを再構築することを許可します。 デフォルトで有効になっています。
          • 順序のないセグメントを再構成します(Wireshark3.0以降、デフォルトでは無効)。

          Wireshark3から始まる。0、新しいRSAキーダイアログは、編集->>RSAキーで見つけることができます。 このダイアログでは、新しいキーファイルの追加を使用します。.. ファイルを選択するボタン。 必要に応じて、パスワードの入力を求められます。 新しいトークンを追加します。.. ボタンは、新しいプロバイダーの追加を使用する必要があるHSMからキーを追加するために使用できます。.. 選択するには、DLL/.soファイルを選択し、追加のベンダー固有の構成を選択します。 RSA鍵ファイルには、PEM形式の秘密鍵またはPKCS#12キーストア(通常は、PKCS#12キーストアを持つファイル)を指定できます。pfxまたは.p12拡張子)。 PKCS#12キーはバイナリファイルですが、PEM形式は次のようなテキストファイルです。

          • -----BEGIN PRIVATE KEY-----MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDReQzlKVeAK8b5TRcRBhSi9IYwHX8Nqc8K4HeDRvN7HiBQQP3bhUkVekdoXpRLYVuc7A8h1BLr93Qw...KOi8FZl+jhG+p8vtpK5ZAIyp-----END PRIVATE KEY-----

          非推奨のRSAキーリストダイアログはある時点で削除される可能性があります。 キーを設定するには、代わりにRSAキーダイアログを使用します。 復号化されたネットワークデータのプロトコルを変更するには、TLSパケットを右クリックし、Decode Asを使用してTLSポートの現在のプロトコルを変更します。 IPアドレスおよびポートフィールドは使用されません。

          キャプチャファイルの例

          SampleCaptures#Ssl_With_Decryption_Keysも参照してください。

          • ダンプ。pcapng Tlsv1.2 73暗号スイートでキャプチャするには、このプレマスターが必要です。トラフィックを復号化するためのtxtファイル。 (からリンクhttps://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9144)

          • tls12-dsb。pcapng-復号化キーが埋め込まれたTLS1.2トレース。
          • https://github.com/wireshark/wireshark/blob/master/test/captures-テストスイートにはさまざまなTLSトレースが含まれています。

          Display Filter

          TLS display filterフィールドの完全なリストは、display filter reference

          SHOW only THE TLS based trafficにあります: /p>

          • tls

          キャプチャフィルタ

          キャプチャ中にTLSプロトコルを直接フィルタリングすることはできません。 ただし、使用されているTCPポート(上記参照)がわかっている場合は、たとえばtcpポート443を使用して、そのポートをフィルタリングできます。

          (Pre)-Master-Secretを使用する

          マスターシークレットは、WiresharkでTLS復号化を有効にし、キーログファイルを介して提供することができます。 プリマスターシークレットはキー交換の結果であり、Wiresharkによってマスターシークレットに変換できます。 このプレマスターシークレットは、RSA秘密キーが提供され、RSAキー交換が使用されている場合に取得できます。 WiresharkでChromeまたはFirefoxからのTLSトラフィックを復号化する手順:

          1. ブラウザを完全に閉じます(タスクマネージャーを確認してください)。
          2. 環境変数SSLKEYLOGFILEに書き込み可能なファイルの絶対パスを設定します。

          3. ブラウザを起動します。
          4. 手順2の場所が作成されていることを確認します。 Wiresharkで、Preferences->Protocols->TLSに移動し、(Pre)-Master-Secretログファイル名の設定をステップ2のパスに変更します。 P>
          5. Wiresharkキャプチャを開始します。 たとえば、https://www.wireshark.org/
          6. 復号化されたデータが表示されていることを確認します。 たとえば、tls and(httpまたはhttp2)フィルタを使用します。

          Windowsでは、このチュートリアルで説明するように環境変数をグローバルに設定できますが、すべてのTLSトラフィックの復号化を可能にするため、忘れ 環境変数を設定するより良い方法は、バッチファイルを使用することです。 ファイルstart-fxを作成します。必要に応じてSSLKEYLOGFILEパスを変更し、firefoxをgoogle Chrome用のchromeに置き換えます。 TLSライブラリ(Microsoft SChannel/Apple SecureTransport)がこのメカニズムをサポートしていないため、このメカニズムは現在(2019年)Safari、Microsoft Edgeなどでは機能しません。 このメカニズムは、webブラウザ以外のアプリケーションでも機能しますが、アプリケーションで使用されるTLSライブラリに依存します。

          他のアプリケーションの例:

          • OpenSSLを使用するアプリケーションは、秘密を抽出するためにGDBまたはLD_PRELOADトリックを使用できます。 これにはPythonが含まれます。 これを使用してApache HTTPサーバーのチュートリアルについては、

            • libsslkeylog.so 図書館、この記事を参照してください。 Javaプログラムの場合、秘密はTLSデバッグログプリファレンスから抽出するか、Javaエージェントを介してWiresharkが必要とする形式で直接出力できます。 同様の2つのプロジェクト:

              • jSSLKeyLog:http://jsslkeylog.sourceforge.net/

              • extract-tls-secrets:https://github.com/neykov/extract-tls-secrets

            • Pythonスクリプトを編集してキーをダンプすることもできます。

            サポートされているTLSアプリケーションとライブラリの調査については、Peter WuのSSL/TLS復号化SharkFest’18EUプレゼンテーションの19ページも参照してください。 Wireshark3.0以降では、TLSキーログファイルをpcapngファイルに埋め込むことができます。 これにより、復号化シークレットを含むキャプチャファイルの配布がはるかに容易になり、TLSプロトコルの設定を更新する必要がないため、キャプチャフ キーログファイルのキーの内容を追加します。txtでファイルをキャプチャします。pcapを実行し、結果をout-dsbに書き込みます。pcapng:

            • editcap–inject-secrets tls,keys.txtで。pcap出力-dsb。dsbサフィックスは、復号化秘密ブロック(DSB)の略で、pcapng仕様の一部です。

              キーログファイルには、キャプチャファイルに関連しないキーが含まれている場合があります。 不要なキーが漏洩しないようにするには、次のコマンドを使用します。inject-tls-secrets.py キーログファイルをフィルタリングし、必要なシークレットをキャプチャファイルに追加するhttps://gist.github.com/Lekensteyn/f64ba6d6d2c6229d6ec444647979ea24からのスクリプト。 シェルスクリプトはLinuxとmacOSでテストされていますが、Python3バージョンはWindowsを含むすべてのプラットフォームでも利用できます。 例:

              • git clone https://gist.github.com/Lekensteyn/f64ba6d6d2c6229d6ec444647979ea24 ~/its~/its/inject-tls-secrets.py keys.txt some.pcap

              も参照してください

              他のいくつかのプロトコルはTLSから派生しています。 DTLSはTLS標準に基づいており、トランスポートプロトコルとしてUDP上で実行されます。 QUICは、暗号化にTLSを使用する開発中のプロトコルであり、Wiresharkのステータスはhttps://github.com/quicwg/base-drafts/wiki/Tools#wiresharkで追跡できます。 WIRESHARK/Tsharkを使用したSSLのトラブルシューティングに関するSake BlokによるSharkFest’16EUプレゼンテーション(またはプレゼンテーションのビデオを見るhttps://en.wikipedia.org/wiki/Transport_Layer_SecurityTLSのWikipediaの記事

            • https://sharkfesteurope.wireshark.org/assets/presentations16eu/07.pdfSharkFest’16EUプレゼンテーションシェアブロークによるWIRESHARK/TsharkによるSSLのトラブルシューティング(またはプレゼンテーションのビデオを見るhttps://sharkfesteurope.wireshark.org/assets/presentations16eu/07.pdfSharkFest’16EUプレゼンテーションシェアブロークによるWIRESHARK/TsharkによるSSLのトラブルシューティング(またはプレゼンテーションのビデオを見るhttps://youtu.be/oDaDY9QCnXk)

            • https://lekensteyn.nl/files/wireshark-ssl-tls-decryption-secrets-sharkfest18eu.pdfsharkfest’18eu tls復号化に関するピーター-ウーによるプレゼンテーション(アジアでの以前の講演のビデオhttps://youtu.be/bwJEBwgoeBg)

            • https://lekensteyn.nl/files/wireshark-tls-debugging-sharkfest19us.pdfsharkfest’19米国peter wuによるプレゼンテーションでは、tls復号化と埋め込み復号化の使用について説明しています シークレット(https://youtu.be/Ha4SLHceF6w)。 SSL/TLSはどのように機能しますか? -情報セキュリティスタック交換

            • キーレスSSL:TLSで良い導入と核心ザラザラ技術的な詳細

            • NetresecからPolarProxyは、主にマルウェアからTLS暗号化されたトラフィ PolarProxyはTLSトラフィックを復号化して再暗号化し、復号化されたトラフィックをWiresharkまたは侵入検知システム(IDS)にロードできるPCAPファイルに保存します。

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です