Entschlüsseln von SSL-Verkehr mit Wireshark und tcpdump

Kategorien anzeigen

Entschlüsseln von SSL-Verkehr mit Wireshark und tcpdump

9 min gelesen

In modernen Netzwerken ist die Sicherheit der Datenübertragung von größter Bedeutung. Secure Sockets Layer (SSL) und Transport Layer Security (TLS) sind weit verbreitete Protokolle, um Datenschutz und -sicherheit zu gewährleisten. Es gibt jedoch Fälle, in denen Sie verschlüsselten Datenverkehr zur Fehlerbehebung, forensischen Analyse oder Netzwerküberwachung analysieren müssen. Dieser technische Artikel führt Sie durch die Entschlüsselung von SSL/TLS-Datenverkehr mit Wireshark und tcpdump, zwei leistungsstarken Netzwerkanalyse-Tools. Wir erläutern Wireshark und tcpdump, erklären SSL- und TLS-Verschlüsselung und zeigen, wie Sie SSL-Datenverkehr mit einem Pre-Master-Secret-Schlüssel oder einem privaten RSA-Schlüssel entschlüsseln.

Was sind Wireshark und tcpdump? #

Wireshark #

Wireshark ist ein Open-Source-Netzwerkprotokollanalysator, mit dem Benutzer den Datenverkehr eines Computernetzwerks erfassen und interaktiv durchsuchen können. Es ermöglicht die detaillierte Überprüfung von Daten und bietet Einblick in die übertragenen Protokolle und Datenpakete. Wireshark wird häufig zur Netzwerkfehlerbehebung, Protokollentwicklung und Sicherheitsanalyse eingesetzt.

tcpdump #

tcpdump ist ein befehlszeilenbasiertes Paketanalysetool, das Netzwerkverkehr erfasst und in Echtzeit anzeigt. Es ist hocheffizient für die Datenerfassung in Live-Netzwerken und ermöglicht das Speichern von Paketen in einer Datei (sog. Capture-Datei) zur späteren Analyse. Obwohl tcpdump nicht über die grafische Oberfläche von Wireshark verfügt, eignet es sich hervorragend für die schnelle Analyse, das Filtern von Paketen und das Sammeln von Daten auf Remote-Systemen.

Was ist SSL-Verschlüsselung? #

SSL (Secure Sockets Layer) ist ein von Netscape entwickeltes Protokoll zur Übertragung privater Dokumente über das Internet. SSL verwendet Verschlüsselungsalgorithmen, um sicherzustellen, dass die zwischen Client (z. B. einem Webbrowser) und Server gesendeten Daten für jeden, der die Übertragung abfängt, unlesbar sind.

TLS (Transport Layer Security) ist der Nachfolger von SSL und bietet höhere Sicherheit. Obwohl sich TLS technisch von SSL unterscheidet, wird der Begriff SSL häufig für beide Protokolle verwendet.

SSL/TLS funktioniert durch die Einrichtung eines sicheren Kommunikationskanals zwischen zwei Systemen. Die wichtigsten Konzepte der SSL/TLS-Verschlüsselung sind:

  • Symmetrische Verschlüsselung: Zum Ver- und Entschlüsseln der Daten wird ein einzelner Schlüssel verwendet.
  • Asymmetrische Verschlüsselung: Es werden zwei Schlüssel (öffentlich und privat) verwendet; mit dem öffentlichen Schlüssel verschlüsselte Daten können nur mit dem entsprechenden privaten Schlüssel entschlüsselt werden.
  • Zertifikate: SSL/TLS verwendet Zertifikate, um die Identität des Servers und manchmal des Clients zu überprüfen.
  • Handshake: Der Prozess, bei dem Client und Server eine sichere Verbindung herstellen, Schlüssel austauschen und sich auf Verschlüsselungsmethoden einigen.

Entschlüsseln von SSL mit einem Pre-Master Secret Key #

Der Pre-Master-Secret-Schlüssel ist eine wichtige Komponente im SSL/TLS-Handshake-Prozess. Mit diesem Schlüssel werden Sitzungsschlüssel generiert, die dann zur Verschlüsselung der über das Netzwerk übertragenen Daten verwendet werden. Mit dem Pre-Master-Secret-Schlüssel können Sie die Sitzungsdaten entschlüsseln.

SSL-Entschlüsselung mit tcpdump und wireshark

Grundlegende Schritte zum Entschlüsseln von SSL mit einem Pre-Master Secret Key #

Um SSL-Verkehr mit dem geheimen Pre-Master-Schlüssel zu entschlüsseln, führen Sie die folgenden Schritte aus:

1. Festlegen der Umgebungsvariablen für die Protokolldatei
2. Erfassen Sie mit tcpdump und überprüfen Sie die Protokolldatei
3. Konfigurieren Sie Wireshark für die SSL-Entschlüsselung

Festlegen der Umgebungsvariablen für die Protokolldatei #

Rahmen SSLKEYLOGFILE unter Windows #

Auf Windows-Systemen müssen Sie eine Umgebungsvariable festlegen, um die geheimen Pre-Master-Schlüssel in einer Protokolldatei zu speichern. Diese Variable mit dem Namen SSLKEYLOGFILE, definiert den Pfad, in dem diese Schlüssel gespeichert werden.

1. Klicken Sie mit der rechten Maustaste auf mein Computer- und Auswählen Eigenschaften im Vergleich aus dem Menü, um das Systemmenü zu öffnen.
2. Klicken Sie auf Advanced System Settings in der Liste auf der linken Seite, um das Fenster „Systemeigenschaften“ zu öffnen.
3. Im Erweitert Klicken Sie auf der Registerkarte auf die Schaltfläche „Umgebungsvariablen“.
4. Der Benutzervariablen, drücke den Neu… Sie können diese Variable auch unter Systemvariablen wenn Sie SSL-Schlüssel für alle Benutzer im System protokollieren möchten. Normalerweise ist es jedoch am besten, dies auf Ihr Profil zu beschränken.
5. Im Variablennamen Feld eingeben SSLKEYLOGFILE.
Im Variabler Wert Geben Sie im Feld den Pfad ein, in dem die Protokolldatei gespeichert werden soll. Alternativ können Sie auf Datei durchsuchen… um den Pfad mit der Dateiauswahl auszuwählen.
Wenn Sie dies als systemweite Variable festlegen, stellen Sie sicher, dass die Datei für alle Benutzer zugänglich ist, oder verwenden Sie Platzhalter. Sie könnten beispielsweise Folgendes verwenden: %USERPROFILE%\AppData\ssl-keys.log or C:\ssl-keys.log .
6. Sobald Sie fertig sind, klicken Sie auf OK , um die Änderungen anzuwenden und mit den nächsten Schritten fortzufahren.

Rahmen SSLKEYLOGFILE unter Linux oder Mac #

Unter Linux und Mac müssen Sie die SSLKEYLOGFILE Umgebungsvariable verwenden exportieren. Im selben Terminal können Sie Folgendes ausführen: tcpdump und es wird die angegebene Schlüsselprotokolldatei generiert, wenn eine SSL-Verbindung erkannt wird.

root@noid-01:~# export SSLKEYLOGFILE=~/.ssl-key.log root@noid-01:~# tcpdump ...

Um eine permanente Umgebungsvariablenkonfiguration beizubehalten, bearbeiten Sie das Benutzerprofil mit einem Texteditor wie nano. Unter Linux wird diese Variable gespeichert in ~ / .bashrc, und auf dem Mac wird es in erstellt ~ / .bash_profile. Fügen Sie dann die exportieren Befehl für SSLKEYLOGFILE Variable am Ende der Datei und speichern Sie die Änderungen.

Erfassen Sie mit tcpdump und überprüfen Sie die Protokolldatei #

Um die Generierung der Protokolldatei zu testen, versuchen Sie, einen Browser zu öffnen, tcpdump auszuführen oder einen curl-Befehl an einen HTTPS-Server zu senden, um zu bestätigen, dass die Datei ordnungsgemäß generiert wird.

Beispielsweise wird im selben Terminal, in dem die Umgebungsvariablen erstellt wurden, tcpdump gestartet, um den Datenverkehr zu erfassen, und ein curl-Befehl an einen HTTPS-Dienst zur Entschlüsselung ausgeführt:

root@noid-01:~# export SSLKEYLOGFILE=~/.ssl-key.log root@noid-01:~# tcpdump -i beliebiger Port 443 -w ~/capture.pcap & root@noid-01:~# curl https://
(schließen Sie dann den Befehl „tcpdump“)

Überprüfen Sie, ob die Protokolldatei ~/.ssl-key.log und die Datenverkehrsaufzeichnung unter ~/capture.pcap erstellt wurden. Im letzten Schritt können Sie den verschlüsselten Datenverkehr mit Wireshark analysieren.

Wenn Sie die Datei ssl-key.log öffnen , sehen Sie etwa Folgendes:

root@noid-01:~# cat ~/.ssl-key.log
CLIENT_HANDSHAKE_TRAFFIC_SECRET 83ac6b24496f208daee39dfdfcbd36b7c428245af5e3775e42099dbd48741d4a db6f3d27b40b7c8e10ed415281b39e45ca6ef2b59468f943dbe6e81e1f82e0f0
SERVER_HANDSHAKE_TRAFFIC_SECRET 83ac6b24496f208daee39dfdfcbd36b7c428245af5e3775e42099dbd48741d4a d819660e194d9439e7152ceac2a439b41584afbeb5d719663cecb3c63b5c2eb1
CLIENT_TRAFFIC_SECRET_0 83ac6b24496f208daee39dfdfcbd36b7c428245af5e3775e42099dbd48741d4a 71d4806141cb1b247c1d1f3f7747a804fcc5e06c4192d8f53fc763a27b92316c
SERVER_TRAFFIC_SECRET_0 83ac6b24496f208daee39dfdfcbd36b7c428245af5e3775e42099dbd48741d4a 2ca17b0f7ff708fb3001be17a1c85163219221a4595462415e9e9e6653daf1fa
EXPORTER_SECRET 83ac6b24496f208daee39dfdfcbd36b7c428245af5e3775e42099dbd48741d4a 3f74b0cbe802d3e3dd3b5f6dee4114f928ec936a0cd388643d146cfb606f62a4

Konfigurieren Sie Wireshark für die SSL-Entschlüsselung #

Sobald das Erfassungssystem Pre-Master-Schlüssel protokolliert, können Sie die Schlüsselprotokolldatei zusammen mit den erfassten Paketen verwenden, um SSL-Verkehr in Wireshark zu entschlüsseln.

1. Laden Sie das Schlüsselprotokoll und die Erfassungsdateien in das System hoch, auf dem Wireshark installiert ist.
2. Öffnen Sie die Verkehrserfassungsdatei mit Wireshark.
3. Konfigurieren Sie das SSL-Protokoll. Klicken Sie auf BearbeitenUnd wählen Sie dann Einstellungen. Der Dialog „Einstellungen“ wird geöffnet und zeigt links eine Liste mit Elementen an. Erweitern Sie Protokolle Abschnitt, scrollen Sie nach unten und klicken Sie auf SSL. In dem SSL Protokolloptionen, suchen Sie das Feld mit der Bezeichnung (Pre)-Master-Secret-Protokolldateiname. Navigieren Sie zu der Protokolldatei, die Sie zuvor eingerichtet haben, oder fügen Sie den Pfad direkt in dieses Feld ein.
4. Übernehmen Sie die Konfiguration. Nach dem Einstellen der (Pre)-Master-Secret-Protokolldateiname, klicken OK , um Ihre Änderungen zu speichern und zu Wireshark zurückzukehren. Sie können nun den aufgezeichneten Datenverkehr entschlüsseln. Wenn Sie einen verschlüsselten Datenrahmen auswählen, überprüfen Sie die Paketbyte-Ansicht. Unterhalb der Ansicht sollte ein Reiter für Entschlüsselte SSL-Daten .

Wenn die Sitzungsdaten weiterhin unlesbar sind und kein HTML-Code angezeigt wird, liegt dies möglicherweise an der GZIP-Komprimierung, die häufig von Webservern wie Apache verwendet wird. Klicken Sie in diesem Fall auf den Tab „Unkomprimierter Entitätstext“ , der nur verfügbar ist, wenn die SSL-Entschlüsselung aktiviert ist. Hier können Sie den unkomprimierten Quellcode der Website anzeigen, beispielsweise das Titel-Element der Standard-Apache-Seite im Klartext.

Verwenden eines RSA-Schlüssels zum Entschlüsseln von SSL #

Wireshark bietet eine Funktion, mit der Sie Ihre RSA-Schlüssel zum Entschlüsseln des SSL-Verkehrs hochladen können. In der Praxis ist die Entschlüsselung mit RSA-Schlüsseln jedoch veraltet.

Dieser Rückgang ist auf die Einführung von Perfect Forward Secrecy (PFS) zurückzuführen, das die traditionelle RSA-Schlüsselentschlüsselung überflüssig gemacht hat. Mit PFS sind Sitzungen, die mit Diffie-Hellman ausgehandelt werden, nicht direkt auf den RSA-Schlüssel angewiesen. Stattdessen generieren sie einen Einmalschlüssel, der nur im RAM gespeichert und mit dem Schlüssel auf der Festplatte verschlüsselt wird.

Wenn Sie zuvor einen RSA-Schlüssel zum Entschlüsseln des Datenverkehrs verwendet haben und dieser nicht mehr funktioniert, verwendet der Zielcomputer wahrscheinlich Diffie-Hellman-Schlüsselaustausch. Sie können dies bestätigen, indem Sie die SSL-Protokollierung in Wireshark aktivieren.

So aktivieren Sie die Protokollierung:

1. Klicken Sie auf Bearbeiten im Symbolleistenmenü und wählen Sie Einstellungen.
2. Erweitern Sie die Protokolle Scrollen Sie im Abschnitt links nach unten und klicken Sie auf SSL.
3. Legen Sie den Speicherort für Ihre SSL-Protokolldatei fest, indem Sie auf das Jetzt entdecken .

Sobald die Protokollierung aktiviert ist, erfassen Sie eine Sitzung mit Ihrem SSL-fähigen Host und überprüfen Sie die Protokolle. Suchen Sie nach dem TLS-Handshake-Verhandlungsrahmen. Sie werden wahrscheinlich einen DHE-Eintrag (oder ECDHE für Elliptic-Curve-Schlüssel) in der Verschlüsselungszeichenfolge finden, der darauf hinweist, dass Diffie-Hellman-Schlüsselaustausch verwendet wird.

Wenn eine Meldung angezeigt wird, dass das Master-Geheimnis nicht gefunden werden kann und die Entschlüsselung des RSA-Schlüssels fehlschlägt, müssen Sie zur Entschlüsselung auf die Methode vor dem Master-Geheimnis umsteigen.

Mit der zunehmenden Verbreitung von PFS, insbesondere mit der Einführung von TLS 1.3, wird die traditionelle RSA-Schlüsselentschlüsselung veraltet sein und man sollte sich nicht länger darauf verlassen.

WEITERE INFORMATIONEN #

Das SSLKEYLOGFILE-Format für TLS #

Das SSLKEYLOGFILE- Format ist eine Textdatei zur Speicherung von Vorab-Masterschlüsseln für die Entschlüsselung von TLS-Verbindungen. Die Datei ist in UTF-8 kodiert. Jede Zeile enthält einen durch eine Bezeichnung identifizierten Schlüssel, einen zufälligen Clientwert und den Schlüssel selbst, jeweils durch Leerzeichen getrennt. Das Format akzeptiert verschiedene Zeilenumbrüche (CRLF, CR, LF). Zeilen, die mit # beginnen, werden als Kommentare behandelt.

Bei TLS 1.3 entsprechen mehrere Bezeichnungen verschiedenen Phasen des Schlüsselaustauschs, beispielsweise CLIENT_HANDSHAKE_TRAFFIC_SECRET und SERVER_TRAFFIC_SECRET_0. Bei TLS 1.2 und früheren Versionen identifiziert die Bezeichnung CLIENT_RANDOM das Master- Secret.

Sicherheitsüberlegungen:
Zugriff auf die SSLKEYLOGFILE Ermöglicht die Entschlüsselung von TLS-Verkehr und stellt ein erhebliches Sicherheitsrisiko dar. Um unbefugten Zugriff oder die Ausweitung von Berechtigungen zu verhindern, sind geeignete Zugriffskontrollen unerlässlich. Die Protokollierung sollte nur von autorisierten Benutzern aktiviert werden, und es sollten strenge Dateiberechtigungen gelten. Die protokollierten Geheimnisse ermöglichen nicht nur die Entschlüsselung, sondern können Angreifern auch ermöglichen, Daten zu ändern oder in aktive Verbindungen einzuschleusen und in einigen Fällen Endpunkte zu imitieren oder Nachrichten zu fälschen.

Wie funktioniert ein bidirektionaler SSL-Handshake? #

Ein bidirektionaler SSL-Handshake authentifiziert sowohl den Server als auch den Client. So läuft der Prozess ab:

1. Hallo Kunde: Der Client initiiert den Handshake, indem er eine „Client Hello“-Nachricht an den Server sendet. Diese Nachricht enthält die vom Client unterstützten Verschlüsselungssammlungen und TLS-Versionskompatibilitäten.
2. Hallo Server: Der Server antwortet mit einer „Server Hello“-Nachricht, die das öffentliche Zertifikat des Servers und eine Anforderung für das Zertifikat des Clients enthält.
3. Validierung des Client-Zertifikats: Der Client überprüft das Zertifikat des Servers. Ist es gültig, sendet der Client sein eigenes Zertifikat an den Server zurück.
4. Server-Zertifikatsvalidierung: Der Server prüft das Client-Zertifikat. Ist das Client-Zertifikat gültig, wird die Sitzung aufgebaut, was eine sichere Kommunikation zwischen beiden Parteien ermöglicht.

Ist es möglich, passiv abgehörten SSL/TLS-Verkehr zu entschlüsseln? #

Ja, es ist möglich, passiv abgehörten SSL/TLS-Verkehr zu entschlüsseln. Dazu benötigen Sie jedoch den RSA-Schlüssel. Dieser Schlüssel kann auf legitime Weise mit entsprechender Autorisierung oder, weniger ethisch, durch Abfangen mittels eines Man-in-the-Middle-Angriffs erlangt werden.

📄 Laden Sie dieses Dokument im PDF-Format herunter #

    EMAIL: *

    Bereitgestellt von BetterDocs