Browser-SSL entschlüsselt

Mit einem kleinen Trick speichern Firefox und Chrome die verwendeten Schlüssel so, dass Wireshark die damit verschlüsselten Daten gleich dekodieren kann.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 1 Min.

Wireshark kann die Log-Dateien automatisch auswerten ...

Wenn man SSL nicht als Man-in-the-Middle über einen Proxy wie Burp aufmachen will, braucht man das Schlüsselmaterial, um an die verschlüsselten Nutzdaten zu gelangen. Das geht leichter als man denkt. Zeigt die dokumentierte Umgebungsvariable SSLKEYLOGFILE auf eine beschreibbare Datei, protokollieren Firefox und Chrome diese Daten. Da die keinesfalls in die falschen Hände geraten sollten, legt man dazu unter Linux vorsichtshalber gleich ein geschütztes Verzeichnis an:

# mkdir $HOME/ssllog
# chmod 0700 $HOME/ssllog
# export SSLKEYLOGFILE=$HOME/ssllog/ssl-log.txt

Unter Windows 7 setzt man die Umgebungsvariable über einen Rechtsklick auf Computer, Eigenschaften, Erweiterte Systemeinstellungen, Umgebungsvariablen. Unter XP startet man mit dem Kontextmenü des Arbeitsplatzes. Legen Sie eine neue Benutzervariable namens SSLKEYLOGFILE an, deren Wert den Pfad zur Log-Datei enthält.

Startet man anschließend den Browser, landen in der Log-Datei Daten wie:

# SSL/TLS secrets log file, generated by NSS
RSA bc4938f... 030167....
CLIENT_RANDOM 5225e21a...

... und zeigt dann gleich die dekodierten Daten an.

Trägt man diese in Wireshark unter "Edit > Preferences > Protocols > SSL" als "(Pre)Master-Secret log file name" ein, dekodiert Wireshark die SSL-Datenströme mit dem dort vorgefundenen Schlüsselmaterial. Ein Display-Filter "ssl && http" zeigt das Resultat. Das funktioniert allerdings nur bei herkömmlichem Schlüsselaustausch via RSA; kommt Diffie-Hellman mit Forward Secrecy zum Einsatz, muss man doch wieder auf den Proxy als Man-in-the-Middle ausweichen. (ju)