【暗号化通信(TLS)を復元できる】WIRESHARK達人への道 第二十五歩 暗号化通信(TLS)を復号する方法

本連載は、筆者がWiresharkの達人となるまでを追うドキュメンタリー作品である。

「パケットは嘘をつかない。」というが、2023年1月現在、基幹ルーターでパケットキャプチャしても暗号化された通信ばかりでユーザーが実際に行っている通信を分析することは不可能に近い・・・そんな現状があり、エンドポイント側で何かしらのソフトウェアを仕込みユーザーの行動を把握するといった高コストな世の中である。

今回の記事は、正直実環境ではほぼ使えないと思っていただいて結構です。なぜなら、全ユーザーのPCにここで紹介する設定を施して運用している企業があるのか?というとたぶんないからである。

それでは、さっそく自身の端末のTLSを復号することで、TLS復号のやり方だけを把握しこのようなプロセスを辿れば実現できるのだという理解だけをしていただけると嬉しい。

正直、実環境でエンドポイントでのソフトウェアインストールでどのように効果的かつ低コストでTLSを復号できるのか?の知識は、筆者には未だない。今後市場動向を調査していきたい所存である。

TLSセッションキーとは?

いきなりWireSharkの設定から入るのではなく、このTLSセッションキーについて先ずは把握する必要がある。

このTLSセッションキーとは、クライアントとサーバーが暗号化に使う一時的な鍵(任意の対称暗号鍵)であると理解していただいてもよい。毎回同じ鍵を使うわけではなく、この一時的な鍵を使って通信を暗号化しているのだ。よって、復号するにはこのTLSセッションキー情報が必要となることを覚えておいていただきたい。

クライアントPC側にTLSセッションキーを保存する環境変数を指定する

これは、非常に簡単でコマンドプロンプトを立ち上げ、以下のコマンドを実行するだけである。

C:\> setx SSLKEYLOGFILE C:\tools\tls.keys

一度、クライアントPCで起動しているWebブラウザを全て閉じ再起動してほしい。次に本サイト(https://mieruka.link)を参照してほしい。これで、以下のようなTLSセッションキーが保存されていくはずだ。

図1 TLSセッションキーファイル

WireSharkがTLSセッションキーファイルを参照するようにする

今回の設定は、これで最後である。非常に簡易だが、皆さんがネットワーク管理者だとしてこのような設定を全ユーザーに施し運用するだろうか?しかもTLSセッションキーは無尽蔵にファイルサイズを増加していく。

それでは、WireSharkの設定をご紹介する。

「編集」→「設定」→「Protocols」と選択し、「TLS」をクリックしてほしい。図-2が表示されるので、(Pre)-Master-Secret log filenameの「参照」キーをクリックし、先ほど設定した環境変数と同じ設定をする。

図2 TLSセッションキーの参照

以上で、WireSharkによる復号の設定は完了だ。最後にきんちと復号されているかWireSharkの画面で確認しよう。

TLS復号の確認方法

図3 TLS復号の確認

図3の一番したの赤枠に、「Decrypted TLS (xxx bytes)」という表示が確認できる。つまりは、復号されたバイト数という意味だ。また、その上の赤枠では、”HTTP/1.1 200 OK”といった表示がみてとれることから、https://mieruka.linkの通信は復号されたといえる。

如何であっただろうか?本記事で、個人の端末では復号がある程度容易にできることは分かっていただけたと思う。繰り返しとなるが、これを大規模に実現する方法というのは筆者自身も勉強中である。

(Visited 18 times, 1 visits today)
The following two tabs change content below.
【好きなもの】 インフラ技術が好き。古いものが好き。 【生きてきたフィールド】 システム運用、ソフトウェア開発、ミドルウェア検証、OSSサポート、プリセールスエンジニア、プロジェクトマネジメント 【このサイトでの役割】 サイト管理者。