HTTPS通信をWiresharkで復号して内容を読み取る

OS: Windows 10 pro version 1809
Wireshark 2.6.6 64-bit
Google Chrome 72.0.3626.96

或るサイトから取得されるファイルのURLを探ろうとしてWiresharkを立ち上げ通信を捕えても近頃はすっかりHTTPSでのやり取りである。中身を覗き見ようとしてもEncrypted Application Dataという具合に、暗号化されて出鱈目な文字が躍るだけであって具体的な内容は確認できない。そうするとリクエストヘッダであるとかレスポンスヘッダが全く定かでなくなるから一寸内容を知りたいときにこまる。

図1. 暗号化された通信

Google Chromeのショートカットアイコンを右クリックしてプロパティを開くと「リンク先」の欄にGoogle Chromeのexeファイルを示すパスが記載されている。その後にひとつ、半角スペースを付け加えてから --ssl-key-log-file オプションと値を続けて記す。値は、暗号化にまつわる情報を書き出してゆくファイルのパスを指定するのである。デスクトップへssl.txtとして情報をダンプするならこういう具合でよかった。

--ssl-key-log-file=%userprofile%\desktop\ssl.txt
図2. –ssl-key-log-fileオプションを付与

Google Chromeをすっかり終了させ改めて起動するとデスクトップへssl.txtがひとりでに作成され暗号化に使われている各種の情報が詳らかに記載されてゆく。悪いやつの手に落ちると大変危険であるから厳重な管理のもとに扱わねばならない。

図3. 暗号化に使用される情報

今度はWiresharkを起動して「編集」の「設定」を開く。

図4. Wiresharkの設定

「Protocols」の項目を展開するとおびただしい数のプロトコルがずらりと並ぶからそのうち「SSL」を見つけて「(Pre)-Master-Secret log filename」という設定項目に、先に作成された暗号化にかかわる情報が溢れているファイルのパスを指定する。

図5. Protocolsを展開
図6. 暗号化情報のファイルを指定

そうして改めてWiresharkで以ってHTTPSの通信内容をキャプチャして中身を確認するとこういった具合である。

図7. HTTPS通信が復号された様子

目論見通り暗号化された情報が復号されて具体的な内容が確認できる。

ショートカットのプロパティを編集する方法であると、のちに復号の必要がなくなったというのに設定を消し忘れて痛い目を見る恐れもある。そこで一時的に利用する手立てとして、コマンドプロンプトを開いて SSLKEYLOGFILE という環境変数を定めてからGoogle Chromeを起動してやればのちに禍根を残す蓋然性が低くなって良いとおもう。

>set sslkeylogfile=%userprofile%\desktop\ssl.txt
>start "" "%ProgramFiles(x86)%\Google\Chrome\Application\chrome.exe"
図8. 環境変数SSLKEYLOGFILEの設定

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください