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.log im 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.log
Dieser 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:
wireshark
Nachdem 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 namens Protocols. Klicken Sie darauf und scrollen Sie dann nach unten, bis Sie TLS finden.
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:
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.
Erfassen 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äche Start (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.py mit dem nano-Texteditor:
nano tls_client.py
Der 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 ssl und socket werden 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 + O drücken, dann Enter, und verlassen Sie nano, indem Sie Strg + X drücken.
Führen Sie jetzt das Skript aus, um den TLS-Verkehr zu generieren:
python3 tls_client.py
Sie 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.
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 Stop in 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 File in der Menüleiste und wählen Sie dann Save As.... Im Speicherdialog navigieren Sie zu /home/labex/project/, benennen Sie die Datei tls_traffic.pcapng und klicken Sie auf Save. 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 == 1
Dieser Filterausdruck wird verwendet, um Pakete anhand des Typs des TLS-Handshakes auszuwählen. Der Wert 1 entspricht den Client Hello-Paketen. Drücken Sie Enter, um den Filter anzuwenden. Nach der Anwendung des Filters wird Wireshark nur die Client 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 Stream aus 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 Datei decrypted_data.txt und klicken Sie auf Save.
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 http Ihnen 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.
We use cookies for a number of reasons, such as keeping the website reliable and secure, to improve your experience on our website and to see how you interact with it. By accepting, you agree to our use of such cookies. Privacy Policy