Wireshark: SSL-/TLS-Traffic entschlüsseln

Wireshark 2.0 Icon

Immer mehr Internettraffic wird verschlüsselt übertragen. Insbesondere die Zertifizierungsstelle Let’s Encrypt hat im Laufe des letzten Jahres dazu geführt, dass auch kleinere Webseiten dank des kostenlosen Zertifikates auf die verschlüsselte  Kommunikation gewechselt sind. Mittlerweile wurden sogar über 100 Millionen Zertifikate von Let’s Encrypt ausgestellt. Auch ich habe meinen Blog im November 2016 auf HTTPS umgestellt.

Der eigentlich positive Effekt hin zu mehr verschlüsseltem Traffic führt aber auch dazu, dass die Analyse und das Troubleshooting deutlich erschwert werden. Wireshark und ähnliche Programme können die verschlüsselte Kommunikation standardmäßig nicht einsehen. Abhilfe würde eine SSL-Decryption bringen, welche auf dem Prinzip eines Man-in-the-Middle-Angriffs basiert. Diesen Weg gehen beispielsweise Next-Generation Firewalls von Palo Alto, Check Point Software, Cisco, Sophos und Co. Zuhause kann diese Variante unter anderem mit Tools wie “mitmproxy” oder “Burp Suite” realisiert werden. Dies dürfte aber nicht jedermanns Sache sein. Zum Glück gibt es eine einfachere Alternative: Session Key Logging.

Selbstverständlich existieren aber auch hier Einschränkungen. Das clientseitige Logging der Session Keys funktioniert nur mit bestimmter Software, beispielsweise mit den beiden Browsern Firefox und Chrome. Dabei werden nur RSA-Keys unterstützt, Diffie-Hellman und  Elliptic Curve Diffie-Hellman (ECDH) nicht.

Browser

Für Firefox muss zunächst eine neue Umgebungsvariable mit dem Namen “SSLKEYLOGFILE” angelegt werden. Dies wird in der Systemsteuerung unter “System” gemacht. Anschließend links auf “Erweiterte Systemeinstellungen” klicken und im neu geöffneten Fenster auf “Umgebungsvariablen…”. Dort kann die neue Variable “SSLKEYLOGFILE” mit dem gewünschten Pfad angelegt werden. Im Pfad sollten keine Leerzeichen auftauchen. Ich habe mich für “C:\Temp\sslkey.log” entschieden:

Umgebungsvariable SSLKEYLOGFILE

Damit die neue Umgebungsvariable wirksam wird, muss der Windows-User ab- und wieder angemeldet werden, alternativ hilft auch ein Neustart.

Folgende Änderungen sind nicht mehr notwendig, da mittlerweile auch Diffie-Hellman-Cipher-Suiten zum Schlüsselaustausch unterstützt werden.

Zusätzlich sollten wir noch die Unterstützung der Diffie-Hellman-Cipher-Suiten deaktivieren, sodass der Schlüsselaustausch möglichst immer via RSA vollzogen wird. Dies funktioniert via “about:config”.  Dort nach “dhe” suchen und alle gefundenen Einstellungen auf den Wert “false” ändern.

Firefox Diffie Hellman

Den Erfolg dieser Maßnahme können wir über die Webseite der Universität Hannover überprüfen: https://cc.dcsec.uni-hannover.de/check

Check Cipher-Suites

Googles Chrome ignoriert diese Umgebungsvariable seit geraumer Zeit. Stattdessen muss der Browser mit folgenden Startparametern geladen werden:

--ssl-key-log-file="C:\Temp\sslkeyChrome.log"
Ebenfalls nicht mehr notwendig.

Auch in Google Chrome lässt sich Diffie-Hellman deaktivieren, allerdings etwas umständlicher als in Firefox. Die zu deaktivierenden Cipher-Suiten müssen ebenfalls mit einem Startparameter übergeben werden:

--cipher-suite-blacklist=0xcca9,0xcca8,0xc02b,0xc02f,0xc02c,0xc030,0xc013,0xc014

Eine Liste aller Hexcodes findet ihr im Quelltext von Chromium.

Wireshark

Wireshark unterstützt das Feature erst ab Version 1.8.0. Zunächst müssen das Programm gestartet und die Einstellungen geöffnet werden. Anschließend links im Menü die Kategorie “Protocols” mit Klick auf den Pfeil aufklappen und zum Punkt “SSL” navigieren. Dort muss der Pfad zur vorher erzeugten Datei hinterlegt werden.

Wireshark Einstellungen SSL

Das war auch schon! Wenn ihr nun ein Paket mit TLS-Daten markiert, erscheint unten ein neuer Tab “Decrypted SSL data”. Wenn ihr diesen auswählt könnt ihr die entschlüsselten Daten einsehen.

Wireshark SSL decrypted

Quellen

  • https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Key_Log_Format
  • https://wireshark.no/index.php/2016/08/25/decrypting-ssl-traffic-with-wireshark/
  • https://jimshaver.net/2015/02/11/decrypting-tls-browser-traffic-with-wireshark-the-easy-way/
  • http://joji.me/en-us/blog/walkthrough-decrypt-ssl-tls-traffic-https-and-http2-in-wireshark
  • https://www.m00nie.com/2015/05/decrypt-https-ssltls-with-wireshark/
  • https://wiki.wireshark.org/SSL

Tobi

Hallo, mein Name ist Tobias und ich habe diesen Blog im April 2009 ins Leben gerufen. Seitdem blogge ich hier über Software, Internet, Windows und andere Themen, die mich interessieren. SSDblog ist mein zweiter Blog, indem es rund um das Thema SSDs geht. Ich würde mich freuen, wenn ihr meinen Feed abonniert oder mir auf Twitter und Facebook folgt.

9 Antworten

  1. Andreas Haselow sagt:

    1+ fuer diesen Artikel!
    Vielen herzlichen Dank, Andreas!

  2. Joachim sagt:

    Danke für die Anleitung. Nachdem ich die Unterstützung der Diffie-Hellman-Cipher-Suiten deaktiviert habe, ist die Seite https://www.klassikradio.de aber nicht mehr aufgeufen:

    “Fehler: Gesicherte Verbindung fehlgeschlagen
    Beim Verbinden mit http://www.klassikradio.de trat ein Fehler auf. Sichere Kommunikation mit der Gegenstelle ist nicht möglich: Keine gemeinsamen Verschlüsselungsalgorithmen. Fehlercode: SSL_ERROR_NO_CYPHER_OVERLAP
    Die Website kann nicht angezeigt werden, da die Authentizität der erhaltenen Daten nicht verifiziert werden konnte.
    Kontaktieren Sie bitte den Inhaber der Website, um ihn über dieses Problem zu informieren.”

    Das ganze unter W7x64 und Firefox 62.0.3 (64-Bit).

    • Tobi sagt:

      Mittlerweile müssen die Diffie-Hellman-Cipher-Suiten nicht mehr deaktiviert werden. Habe meinen Artikel entsprechend angepasst.

  3. Joachim sagt:

    Hallo Tobi,
    der neue Tab „Decrypted SSL data“ mag bei mir nicht erscheinen.
    Hast du eine Idee woran das liegen könnte?
    BG, Joachim

    (W7x64, WireShark 2.6.3, Firefox 62.0.3 (64-Bit))

  4. Joachim sagt:

    Update:
    mit Chrome erscheint der zusätzliche Reiter. Allerdings muss man in WireShark den Parameter anpassen, da die generierte Datei “sslkeyChrome.log” heisst.

    Mein Ziel habe ich dennoch nicht erreicht. Wollte ursprünglich die Streaming URL von KlassikRadio.de herausfinden.

  5. Joachim sagt:

    Danke. In welchem Fenster genau stand die URL? Im “Decrypted SSL data”-Fenster?

    Das “Decrypted SSL data” kommt bei nämlich nicht mehr, obwohl es gestern nachmittag noch funktionierte. Leider befürchte ich, dass WireShark, tcp und ich keine Freunde mehr werden. Bin halt kein Netzwerkler sondern eher Schrauber.

    Was ich ebenfalls nicht verstehe. Warum funktioniert
    https://stream.klassikradio.de/live/mp3-128/7Digital
    nur im Browser aber nicht im Winamp?
    Tante Google hat
    http://stream.klassikradio.de/live/mp3-192/stream.klassikradio.de
    als Streaming-URL ausgespukt. Die funktioniert im Browser und in Winamp.

    Falls du dich nicht mit einem Amateur wie mir rumschlagen möchtest, habe ich dafür vollstes Verständnis. Aber ich hätte halt gerne herausgefunden wir man eine für Winamp funktionierende Streaming-URL herausfindet.

    • Tobi sagt:

      Ja genau, die URL stand direkt im “Decrypted SSL data”-Fenster.

      Warum die URL in Winamp nicht funktioniert kann ich nicht sagen. Ich tippe aber, dass es an WinAmp liegt, da es ja seit zig Jahren nicht mehr weiterentwickelt wurde. Erst heute wurde bekannt, dass WinAmp 6 nächstes Jahr erscheinen soll, hier sollte die URL dann auch funktionieren.
      Unter VLC und AIMP funktioniert die URL z.B. ohne Probleme.

  1. 4. Dezember 2017

    […] Details Wireshark and SSL […]

Schreibe einen Kommentar zu Andreas Haselow Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert