Windowsでブラウザを開き、HTTPSサイトにアクセスして、Wiresharkでパケットをキャプチャしながら一連のアクションを実行したいと思います。次に、暗号化されたパケットキャプチャを使用して、復号化されたHTTPトラフィックを表示します。ブラウザを使用しない、サーバーにアクセスできる、またはMITMを追加する場合、これを行う方法はたくさんありますが(以下にリストされています)、上記のシナリオに制限されている場合、これらはいずれも機能しません。これが私の典型的なアプローチです:
サーバー:サーバーの秘密鍵を持っているサイトでは、Wiresharkの組み込みSSL復号化を使用します。
MITM:SSLプロキシ(Burp suiteなど)を使用すると、復号化されたトラフィックを表示できますが、これには、サーバーで使用されているものとは異なる証明書とキーのペアを使用する必要があります。
ブラウザ:opensslのs_clientは、接続、リクエストの作成、マスターシークレットのエクスポートを行うことができますが、関連するWebページを表示したり、javascriptを実行して後続のリクエストパラメータを計算したりすることはできません。
「通常の」ブラウザからマスターシークレットをエクスポートして、後でブラウザセッションのパケットキャプチャを復号化するために使用できるようにする方法はありますか?
たとえば、ブラウザを閉じたときにSSL / TLSの状態がディスクに保存されますか?もしそうなら、どのようにアクセスしますか?ブラウザの実行中にメモリ内でアクセスできますか(もしそうなら、どのように見つけますか)?
または、すべてのSSL状態データがOS(Windows)によって保存されており、直接アクセスできないのですか?
または、特定のHTTPS接続に特定のマスターシークレット(およびセッションIDなどの他の関連するSSL状態データ)を使用するようにブラウザーに強制する方法はありますか?その場合、s_clientを使用してSSLセッションを設定し、キーデータをブラウザに転送して、同じセッションで新しい接続を開くことができます。これは、さまざまな方法で同じ目標を達成します。