Einführung
In diesem Lab lernen Sie, wie Sie SSL/TLS-Verkehr mit Wireshark, einem bekannten Netzwerkprotokoll-Analyzer, entschlüsseln können. SSL/TLS-Verschlüsselung wird üblicherweise eingesetzt, um Internetkommunikation zu schützen. In einigen Fällen, wie beim Troubleshooting oder bei Sicherheitsanalysen, ist es jedoch unerlässlich, den verschlüsselten Verkehr zu entschlüsseln.
Dieses Lab führt Sie durch den Prozess der Konfiguration von Wireshark zur Entschlüsselung von SSL/TLS-Verkehr. Es bietet Ihnen praktische Erfahrungen in einer kontrollierten Umgebung.
Konfiguration der SSL/TLS-Entschlüsselung in Wireshark
In diesem Schritt werden wir Wireshark so konfigurieren, dass es SSL/TLS-Verkehr entschlüsseln kann. Bevor wir beginnen, lernen wir zunächst etwas über das, was wir tun, kennen. SSL/TLS ist ein Protokoll, das zur Sicherung von Internetkommunikation verwendet wird. Wenn Daten über das Internet mit SSL/TLS übertragen werden, werden sie verschlüsselt, um ihre Vertraulichkeit zu schützen. Um diesen Verkehr zu entschlüsseln und die eigentlichen Daten zu sehen, benötigt Wireshark Zugang zu den Verschlüsselungsschlüsseln. Diese Schlüssel werden in einer speziellen Datei namens Pre - Master Secret Log-Datei gespeichert. Wir erstellen diese Datei jetzt.
Wireshark benötigt Zugang zu den Verschlüsselungsschlüsseln, um TLS-Verkehr zu entschlüsseln. Diese Schlüssel werden in einer sogenannten Pre - Master Secret Log-Datei gespeichert, die wir jetzt erstellen werden.
Öffnen Sie ein Terminal. Ein Terminal ist eine textbasierte Schnittstelle, in der Sie Befehle eingeben können, um mit dem Betriebssystem Ihres Computers zu interagieren. Nachdem das Terminal geöffnet ist, erstellen wir eine neue Datei namens
pre_master_secret.logim Verzeichnis/home/labex/project/. Diese Datei wird verwendet, um die TLS-Sitzungsschlüssel zu speichern, die für die Entschlüsselung erforderlich sind. Um die Datei zu erstellen, geben Sie den folgenden Befehl im Terminal ein:touch /home/labex/project/pre_master_secret.logDieser Befehl erstellt eine leere Datei, die später die für die Entschlüsselung benötigten TLS-Sitzungsschlüssel speichern wird.
Nun, da wir die Log-Datei bereit haben, müssen wir Wireshark so konfigurieren, dass es diese verwendet. Zunächst öffnen Sie Wireshark, indem Sie den folgenden Befehl im Terminal eingeben:
wiresharkNachdem Wireshark geöffnet ist, sehen Sie eine Menüleiste oben. Klicken Sie auf
Edit > Preferences. Dadurch wird ein Fenster geöffnet, in dem Sie verschiedene Einstellungen in Wireshark anpassen können. Im Einstellungsfenster sehen Sie links ein Panel. Dort gibt es einen Abschnitt namensProtocols. Klicken Sie darauf und scrollen Sie dann nach unten, bis SieTLSfinden.In den TLS-Einstellungen gibt es ein Feld mit der Bezeichnung
(Pre)-Master-Secret log filename. Hier geben wir Wireshark die Speicherorte der Pre - Master Key Log-Datei an, die wir gerade erstellt haben. Geben Sie den vollständigen Pfad zur Datei ein:/home/labex/project/pre_master_secret.logDas Fenster sollte in etwa so aussehen:

Nachdem Sie den Pfad eingegeben haben, klicken Sie auf
OK, um die Änderungen zu speichern. Jetzt ist Wireshark so konfiguriert, dass es diese Datei zur Entschlüsselung von TLS-Verkehr verwendet. Dies bedeutet, dass Wireshark beim Erfassen von SSL/TLS-Verkehr die Schlüssel in der Log-Datei nutzen kann, um die Daten zu entschlüsseln und Ihnen den eigentlichen Inhalt anzuzeigen.
Aufzeichnung des SSL/TLS-Verkehrs
In diesem Schritt werden wir SSL/TLS-Verkehr mit Wireshark erfassen und sicheren Verkehr mit einem Python-Skript generieren. SSL/TLS ist ein Protokoll, das sichere Kommunikation über ein Netzwerk ermöglicht. Das Erfassen dieses Verkehrs ermöglicht es uns, ihn später zu analysieren, was für Aufgaben wie das Debuggen von Netzwerkproblemen oder das Erkennen von Sicherheitsbedrohungen wichtig ist.
Beginnen wir mit dem Erfassen von Netzwerkverkehr. In Wireshark sind Netzwerkschnittstellen die Verbindungen, über die Ihr Computer Daten sendet und empfängt. Sie müssen die geeignete Schnittstelle auswählen, um den Verkehr zu erfassen, an dem Sie interessiert sind. Suchen Sie die Liste der verfügbaren Netzwerkschnittstellen. Klicken Sie auf die Schnittstelle
eth1, um sie auszuwählen. Über diese Schnittstelle wird der Verkehr passieren, den wir erfassen möchten. Klicken Sie dann auf die SchaltflächeStart(das blaue Hai - Flossen - Symbol) in der Symbolleiste, um das Paketerfassen zu beginnen.Wireshark wird nun gesamten Netzwerkverkehr auf der ausgewählten Schnittstelle erfassen. Während es erfasst, werden Sie sehen, dass Pakete im Hauptfenster erscheinen. Jedes Paket repräsentiert eine kleine Dateneinheit, die über das Netzwerk übertragen wird.
Jetzt müssen wir etwas SSL/TLS-Verkehr generieren, den wir analysieren können. Öffnen Sie ein neues Terminalfenster. Das Terminal ist eine Befehlszeilenschnittstelle, in der Sie Befehle ausführen können, um mit Ihrem Computer zu interagieren. Navigieren Sie in das Projektverzeichnis mit dem folgenden Befehl:
cd /home/labex/project/Dieser Befehl wechselt das aktuelle Arbeitsverzeichnis in das Projektverzeichnis. Wir werden ein Python-Skript erstellen, das eine sichere Verbindung zu einer Website herstellt. Python ist eine Programmiersprache, mit der wir Skripte schreiben können, um verschiedene Aufgaben auszuführen. Erstellen Sie eine neue Datei namens
tls_client.pymit dem nano-Texteditor:nano tls_client.pyDer nano-Texteditor ist ein einfacher und leicht zu bedienender Texteditor im Terminal. Kopieren und fügen Sie den folgenden Python-Code in den Editor ein:
#!/usr/bin/env python3 import ssl import socket import os HOST = "example.com" PORT = 443 ## Set the path for the pre-master secret log file os.environ['SSLKEYLOGFILE'] = '/home/labex/project/pre_master_secret.log' ## Create an SSL/TLS context context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH) ## Create a socket and wrap it with SSL/TLS with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: with context.wrap_socket(sock, server_hostname=HOST) as ssock: ssock.connect((HOST, PORT)) ## Send a simple HTTP GET request request = "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" ssock.sendall(request.encode()) ## Receive the response and print all the received data data = ssock.recv(4096) print(data.decode())Dieses Skript macht Folgendes:
- Setzt eine Umgebungsvariable, um anzugeben, wo die TLS-Sitzungsschlüssel gespeichert werden sollen. Diese Schlüssel sind für die spätere Entschlüsselung des SSL/TLS-Verkehrs von entscheidender Bedeutung.
- Stellt eine sichere Verbindung zu example.com her. Die Bibliotheken
sslundsocketwerden verwendet, um diese Verbindung herzustellen. - Sendet eine einfache HTTP-Anfrage. Diese Anfrage bittet den Server um die Hauptseite von example.com.
- Empfängt und zeigt die Antwort des Servers an.
Speichern Sie die Datei, indem Sie
Strg + Odrücken, dannEnter, und verlassen Sie nano, indem SieStrg + Xdrücken.Führen Sie jetzt das Skript aus, um den TLS-Verkehr zu generieren:
python3 tls_client.pySie sollten eine HTTP-Antwort von example.com sehen, was bestätigt, dass das Skript erfolgreich eine sichere Verbindung hergestellt hat. Das Skript hat auch die TLS-Sitzungsschlüssel in unsere Pre - Master Secret Log-Datei geschrieben, die Wireshark für die Entschlüsselung verwenden wird.
Die Ausgabe sollte in etwa so aussehen:
HTTP/1.1 200 OK Age: 558804 Cache-Control: max-age=604800 Content-Type: text/html; charset=UTF-8 Date: ... ...Nachdem wir den TLS-Verkehr generiert haben, kehren Sie zu Wireshark zurück und stoppen Sie die Erfassung, indem Sie auf die rote Schaltfläche
Stopin der Symbolleiste klicken. Das Stoppen der Erfassung ist notwendig, damit wir den erfassten Verkehr speichern können.Um den erfassten Verkehr zur Analyse zu speichern, klicken Sie auf
Filein der Menüleiste und wählen Sie dannSave As.... Im Speicherdialog navigieren Sie zu/home/labex/project/, benennen Sie die Dateitls_traffic.pcapngund klicken Sie aufSave. Das.pcapng-Dateiformat ist ein Standardformat zum Speichern von Netzwerkverkehrserfassungen.
Ihr erfasster Verkehr ist jetzt gespeichert und für die Analyse im nächsten Schritt bereit.
Analyse des entschlüsselten SSL/TLS-Verkehrs
In diesem Schritt werden wir den entschlüsselten SSL/TLS-Verkehr mit Wiresharks Filter- und Analysetools analysieren. Diese Tools sind unerlässlich, um sinnvolle Informationen aus der großen Menge an Netzwerkverkehrsdaten zu extrahieren.
Zunächst wenden wir einen Filter an, um uns auf bestimmte Teile des TLS-Handshakes zu konzentrieren. Der TLS-Handshake ist ein entscheidender Anfangsprozess bei der Herstellung einer sicheren Verbindung zwischen einem Client und einem Server. Während dieses Prozesses tauschen Client und Server Informationen aus, um sich über Verschlüsselungsalgorithmen, Schlüssel und andere Sicherheitsparameter zu einigen.
Geben Sie in der Filter-Symbolleiste (dem Text-Eingabefeld oben im Wireshark-Fenster) den folgenden Ausdruck ein:
tls.handshake.type == 1Dieser Filterausdruck wird verwendet, um Pakete anhand des Typs des TLS-Handshakes auszuwählen. Der Wert
1entspricht denClient Hello-Paketen. Drücken SieEnter, um den Filter anzuwenden. Nach der Anwendung des Filters wird Wireshark nur dieClient Hello-Pakete anzeigen, die die ersten Pakete sind, die vom Client gesendet werden, um den TLS-Handshake zu starten.Sie sollten jetzt nur die Pakete sehen, die diesem Filter entsprechen. Indem Sie die angezeigten Pakete einschränken, wird es einfacher, sich auf den Anfang der TLS-Verbindung zu konzentrieren und zu verstehen, wie die sichere Kommunikation beginnt.
Um den entschlüsselten Inhalt anzuzeigen, folgen wir dem TLS-Stream. Klicken Sie mit der rechten Maustaste auf ein beliebiges Paket in der gefilterten Liste und wählen Sie
Follow>TLS Streamaus dem Kontextmenü. Diese Aktion veranlasst Wireshark, die gesamte TLS-Sitzung basierend auf dem ausgewählten Paket neu zu rekonstruieren und die entschlüsselten Daten anzuzeigen.Ein neues Fenster wird geöffnet, das die entschlüsselten Daten anzeigt. Diese Daten repräsentieren die tatsächliche HTTP-Kommunikation, die über die sichere Verbindung übertragen wurde. Dank der in unserer Pre - Master Secret Log-Datei gespeicherten TLS-Sitzungsschlüssel kann Wireshark diese normalerweise verschlüsselten Daten entschlüsseln und anzeigen.
Die entschlüsselten Daten werden sowohl die von unserem Python-Skript gesendete HTTP-Anfrage als auch die HTTP-Antwort vom Server zeigen. Sie können Header, Inhaltstypen und den tatsächlichen HTML-Inhalt der Antwort sehen. Diese Informationen sind wertvoll, um die Kommunikation zwischen Client und Server zu verstehen, wie z. B. welche Daten angefordert werden und welche zurückgegeben werden.
Speichern wir diese entschlüsselten Daten für eine weitere Analyse. Klicken Sie im Fenster "Follow TLS Stream" auf die Schaltfläche
Save as.... Das Speichern der Daten ermöglicht es Ihnen, sie später zu überprüfen, mit anderen zu teilen oder zusätzliche Analysen durchzuführen.Navigieren Sie im Speicherdialog zu
/home/labex/project/, benennen Sie die Dateidecrypted_data.txtund klicken Sie aufSave.
Sie haben nun erfolgreich TLS-Verkehr erfasst, entschlüsselt und zur Analyse gespeichert. Die entschlüsselte Datendatei enthält die vollständige HTTP-Kommunikation, die ursprünglich mit TLS verschlüsselt war.
Sie können das Fenster "Follow TLS Stream" schließen, wenn Sie fertig sind. Wenn Sie weiter erkunden möchten, versuchen Sie verschiedene Wireshark-Filter, um andere Aspekte des erfassten Verkehrs zu untersuchen. Beispielsweise zeigt der Filter
httpIhnen nur den HTTP-Verkehr nach der Entschlüsselung. Auf diese Weise können Sie tiefer in die spezifischen Datentypen eintauchen, die über das Netzwerk übertragen werden.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie SSL/TLS-Verkehr mit Wireshark entschlüsseln können. Sie haben eine Pre - Master Secret Log-Datei erstellt, um TLS-Sitzungsschlüssel zu speichern, Wireshark so konfiguriert, dass es diese Datei für die Entschlüsselung verwendet, und SSL/TLS-Verkehr mit einem Python-Skript generiert. Anschließend haben Sie den entschlüsselten Verkehr mit Wiresharks Filter- und Stream-Folgemöglichkeiten analysiert.
Diese Fähigkeiten sind von entscheidender Bedeutung für die Netzwerkfehlersuche, die Sicherheitsanalyse und das Verständnis sicherer Kommunikationen. Das Entschlüsseln und Analysieren von TLS-Verkehr in einem kontrollierten Umfeld hilft Ihnen, Netzwerkprotokolle besser zu verstehen und Probleme in verschlüsselten Kommunikationen zu erkennen. Denken Sie daran, dass das Entschlüsseln von TLS-Verkehr in realen Situationen die entsprechende Genehmigung erfordert und nur in autorisierten Netzwerken durchgeführt werden sollte, um Verletzungen von Datenschutzgesetzen zu vermeiden.


