【解析】https(SSL/TLS)をwiresharkで復号化する方法,ブラウザで見る方法

Wireshark で https を復号するには

Wireshark は NIC の入出力ビットを取得しているので、アプリケーションが暗号化した通信 ( SSL / TLS や SSH ) は、暗号化されたまま表示されます。https では特に Info 列に "Application Data" と表示され、中身を見ても "Encrypted Appliocation Data" (暗号化されたアプリケーションのデータ)とラベルされ、平文は見られません

ですが、ブラウザによる https 通信については、以下の手順で復号することができます。

  1. 環境変数 SSLKEYLOGFILE を設定し、https 通信時に TLS セッションキーを指定フォルダのファイルへ書き込みする
  2. WireShark 側で TLS セッションキーを読み込む設定をする

なお、ブラウザは FireFox および Chrome で確認で動作確認できています。(IE と Edge は動作せず)

設定手順

1. Windowsキー +R で「ファイル名を指定して実行」画面を出し、 control と打ち [OK] ボタンを押下

2. コントロールパネルから "システム" または "システムとセキュリティ ⇒ システム" をクリックし、そこから "システムの詳細設定" (下図) をクリック

3. "環境変数" をクリック

4. システム環境変数(下段)の [新規] ボタンをクリック

5. 変数名に "SSLKEYLOGFILE" 、変数値に出力先のファイルパスを記載(例では "C:\work\tls.keys") します。

6. OKを押し、OS再起動します。

7. ブラウザ (FireFox or Chrome) を起動し、該当ファイルが出来ていることを確認します。

8. 問題なければ、WireShark 側に以下のように設定を入れます。

  1. Wiresharkの [Edit]
  2. [Preferences...]
  3. ポップアップした画面の左ペインにある[Protocols] のツリーをOpen
  4. [SSL] をクリックし、中央ペインの "(Pre)-Master-Secret log filename に先程のファイルパス (例だと C:\work\tls.keys ) を設定し、OKボタンをクリック

これにより、ブラウザでの https アクセスについて、平文が見えるはずです。以下の例では、TCP 443 の https (TLSv1.2) で HTTP/1.1 200 OK が平文で確認できています。

注意点として、これを他のPCの Wireshark で開くときは暗号化された状態で開いてしまいます。ですが、セッションキーをそのPCにコピーし、同じ手順で Wireshark に設定すればそのPCでも復号した状態で見ることができます。

ブラウザで https を復号するには

利用するツールは、ブラウザ標準搭載機能のデベロッパーツールです。具体的には『Google Chrome Developer Tools』、『Firefox Developer Tools』、『Edge Developer Tools(F12 開発者ツール)』です。

ブラウザは送信用平文データをソケット API に渡し、ソケットAPIが暗号化して NIC に渡し、ネットワークへ出ていきます。

逆に暗号化データは NIC からソケット API で復号した上でブラウザに渡されます。なのでブラウザで通信をキャプチャした場合は常に平文データになるわけです。

利用方法は超簡単。通常のインストールをしたブラウザを起動し、F12 ボタンを押すだけです。

デベロッパーツールを用いてhttpsの中身を見てみる

主要 3 ブラウザでの結果を見てみます。ともに手順は以下の通りです。

ブラウザ起動 ⇒ F12 ボタンを押す(デベロッパーツールが表示される) ⇒ 表示の"Network" もしくは "ネットワーク" タブを押下する ⇒ https://yahoo.co.jp へアクセスする

全てのブラウザでhttpヘッダ (メタ情報) やボディ (html ファイル/画像ファイル等の実際のコンテンツ) が見えています。また、https://yahoo.co.jp へアクセスすると、http レスポンスコード 301 により https://www.yahoo.co.jp へリダイレクトされていることも確認できます。

Chrome の場合

関連して他のファイル (画像等) がどのくらい遅延して、どのくらいの速度で読み込めたのかがビジュアルで分かり易く表示されます。

Firefoxの場合

OpenSource だけあり、解析機能が充実しています。

Edgeの場合

一番シンプルで開発初心者向け?

デベロッパーツールのその他の使い道

デベロッパーツールは Web アプリ開発者向けに様々な機能を提供していますが、それ以外に上記のような https でのトラブルシューティング (画面遷移の URL が分からない、等) であったり、Web の同時ログインのネットワークパフォーマンス試験、クライアントの CPU メモリ負荷の計測等に使えたりします。

ただし、http/2 や http/3 のヘッダ情報等が見れなかったりするので、そういう勉強をするならば Wireshark で復号した方がよいでしょう。

【厳選 3 冊】パケットキャプチャを学ぶための本

パケットキャプチャ関連でお奨めの本を 3 冊紹介します。どれも私のサイトからの購入率が高いものです。

パケットキャプチャの教科書

追加: "title": "パケットキャプチャの教科書",
削除:

本書では、これからパケット解析を始める人を対象に、パケットキャプチャツールのデファクトスタンダード「Wireshark」の使い方や、実際に現場で見かけるパケットを理解するうえで必要な知識を、じっくり丁寧に解説します。
実践 パケット解析 第3版 ~Wiresharkを使ったトラブルシューティング~

現場での利用方法や具体的なトラブルシュート方法など、現場で活用できる技が豊富に記載されています。サンプルのキャプチャファイルを実際に見ながら学べるので初心者にも分かり易く学べます。

本書ではWiresharkで実際に取得したパケット情報の実例を使って問題やトラブルの解析方法を詳しく解説します。パケットのキャプチャファイルはWebからダウンロードでき、初心者も実際に試しながら理解を深めることができるので、ネットワーク管理の初心者に好適です。
パケットキャプチャ 無線LAN編 ~Wiresharkによる解析~

無線を見える化し、セキュリティやトラブルシュートを行うためのノウハウが豊富に記載されています。無線LANのエンジニアなら必携です。

大好評ロングセラー『パケットキャプチャ』シリーズ第3弾!無線LANのパケットを「見える化」! !ダウンロードして使えるサンプルパケット付き

あなたが成長の日々を歩めますように。

IT/インフラエンジニアの地位とスキル向上のために

関連記事

IT 技術の進化はとどまることを知りません。矢継ぎ早に新たな技術が出てきたり、数年前の技術が時代遅れになったりと、IT エンジニアは勉強し続ける運命のようです。 それをどう思うかはあなた次第。 ビジネスの基本は『付加価値を与える[…]

IMG
関連記事

nesuke の考える NW エンジニアの2つの道 ネットワークエンジニアには 2 つの道があります。 1 つはネットワーク構築一筋で、L4 までをひたすらきっちりと構築していく道。 もう 1 つはネットワークを軸として深堀し[…]

IMG