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という具合に暗号化されて出鱈目な文字がおどるだけであって具体的な内容は確認できない。そうするとリクエストヘッダであるとかレスポンスヘッダが全く定かでなくなるから一寸内容を知りたいときにこまる。

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

--ssl-key-log-file=%userprofile%\desktop\ssl.txt

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

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

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

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

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

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

>set sslkeylogfile=%userprofile%\desktop\ssl.txt
>start "" "%ProgramFiles(x86)%\Google\Chrome\Application\chrome.exe"

参考:
NSS Key Log Format

Similar Posts:

コメントを残す

メールアドレスが公開されることはありません。

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