TLS Decryption in Wireshark

While testing web applications, I monitor the application using Wireshark to see if the app is using a protocol that lacks support in Burp Suite, like HTTP2. This post shows how to decrypt TLS traffic in Wireshark on Kali Linux.

Edit .bashrc

If you want to make this permanent, add the following line to your .bashrc file. Otherwise, enter it in the same terminal before starting Chromium from the terminal in a later step. export SSLKEYLOGFILE=/root/ssl-key.log

Browser notes

Kali Linux is a Debian derivative, which doesn’t enable support for an SSLKEYLOGFILE file in Firefox at compile-time. If you don’t want to compile Firefox yourself, you’ll need to install Chromium.

After adding the export directive to your .bashrc file, source it using source .bashrc then start Chromium. Alternatively you may enter the command in your terminal instead of editing .bashrc. If you’re running as root on Kali then you’ll need to start Chromium using the cli --no-sandbox flag.

Enabling the SSLKEYLOGFILE in Wireshark

In Wireshark, select Edit > Preferences > Protocols > SSL. In the ‘(Pre)-Master-Secret log filename’ field, enter the path to your file. Check the two boxes that start with ‘Reassemble SSL…’. Save, then close and reopen Wireshark.

After opening Chromium, browse to a few TLS enabled sites and then check for the precense of your ssl-key.log file. Go back to Wireshark and enter ‘ssl’ in the filter. When you select packets with TLS DATA, in the lower pane you should see a new tab for ‘Decrypted SSL’. Keep in mind that if the decrypted data still looks like garbage, it is likely gzipped.

Bonus: Curl suports a SSLKEYLOGFILE too!

Curl also supports SSLKEYLOGFILE and any TLS traffic generated with curl can be decrypted by Wireshark.