Wenn Sie jemals versucht haben, den Webverkehr mit Wireshark zu überwachen, stoßen Sie wahrscheinlich auf ein Problem – ein Großteil davon ist verschlüsselt. Tatsächlich verwenden die meisten Websites SSL- oder TLS-Verschlüsselung, um die Sicherheit ihrer Benutzer zu gewährleisten. Die allgegenwärtige Verschlüsselung ist eine gute Sache, wenn Sie bei Amazon einkaufen, aber es ist ein echtes Problem, wenn Sie versuchen, ein Netzwerk zu verwalten. So entschlüssele ich SSL mit Wireshark.
Was sind Wireshark und SSL??
Wireshark ist ein Netzwerkverkehrsanalysator; Dies ist ein Kerndienstprogramm, mit dem viele Administratoren Probleme in ihren Netzwerken beheben. Insbesondere werden Frames erfasst – die Bausteine von Paketen – und Sie können sie sortieren und analysieren. Mit Wireshark können Sie den Datenverkehr in Ihrem Netzwerk anzeigen und analysieren, um einen Einblick in die Frames der Rohdaten zu erhalten.
SSL ist ein Verschlüsselungsprotokoll, das auf der Transportschicht des OSI-Modells ausgeführt wird. Es werden verschiedene Verschlüsselungsmethoden zum Sichern von Daten verwendet, wenn diese über Netzwerke übertragen werden. Hinweis: In diesem Handbuch beziehe ich mich hauptsächlich auf SSL als Sammelbegriff für SSL und TLS, seinen Nachfolger.
Durch die SSL-Verschlüsselung wird die Verwendung von Wireshark schwieriger, da Administratoren nicht in der Lage sind, die von jedem Paket übertragenen Daten anzuzeigen. Wenn Wireshark richtig eingerichtet ist, kann es SSL entschlüsseln und Ihre Fähigkeit wiederherstellen, die Rohdaten anzuzeigen.
Verwenden eines geheimen Pre-Master-Schlüssels zum Entschlüsseln von SSL und TLS
Die Verwendung eines geheimen Pre-Master-Schlüssels zum Entschlüsseln von SSL in Wireshark wird empfohlen. EIN Pre-Master-Geheimschlüssel wird vom Client generiert und vom Server zum Ableiten eines Hauptschlüssels verwendet, der den Sitzungsverkehr verschlüsselt. Es ist der aktuelle Standard in der Kryptographie und wird normalerweise über Diffie-Hellman implementiert.
In Ihrem Browser kann der geheime Pre-Master-Schlüssel protokolliert werden, mit dem Wireshark SSL- und TLS-Sitzungen entschlüsselt.
Hier sind die Schritte zum Entschlüsseln von SSL und TLS mit einem geheimen Pre-Master-Schlüssel:
- Legen Sie eine Umgebungsvariable fest
- Starten Sie Ihren Browser
- Konfigurieren Sie Wireshark
- Erfassen und entschlüsseln Sie die Sitzung
Wenn Sie fertig sind, können Sie SSL- und TLS-Sitzungen in Wireshark entschlüsseln, ohne auf den Zielserver zugreifen zu müssen.
Legen Sie eine Windows-Umgebungsvariable fest
Im Windows, Sie müssen eine Umgebungsvariable mithilfe von festlegen Erweiterte Systemeinstellungen Nützlichkeit. Diese Variable heißt SSLKEYLOGFILE, enthält einen Pfad, in dem die geheimen Pre-Master-Schlüssel gespeichert sind.
Beginnen Sie mit einem Rechtsklick auf Mein Computer, und auswählen Eigenschaften aus dem Menü. Das System Das Menü wird geöffnet.
Klicken Sie anschließend auf Erweiterte Systemeinstellungen auf der Liste links. Das Systemeigenschaften Fenster öffnet sich.
Auf der Fortgeschritten Klicken Sie auf die Registerkarte Umgebungsvariablen Taste.
Drücke den Neu… Taste unter Benutzervariablen. Sie können die Variable auch unter erstellen Systemvariablen Wenn Sie SSL-Schlüssel für jeden Benutzer im System protokollieren möchten, diese jedoch lieber auf mein Profil beschränken möchten.
Unter Variablennamen, Geben Sie Folgendes ein:
SSLKEYLOGFILE
In dem Variabler Wert Geben Sie in das Feld einen Pfad zur Protokolldatei ein. Sie können auch auf die Schaltfläche klicken Datei durchsuchen… Klicken Sie auf die Schaltfläche und geben Sie den Pfad mit der Dateiauswahl ein.
Hinweis: Wenn Sie diese als systemweite Umgebungsvariable erstellen, müssen Sie geeignete Platzhalter verwenden oder die Datei an einem Ort speichern, auf den alle Benutzer zugreifen können. Zum Beispiel könnten Sie wählen % USERPROFILE% \ App Data \ ssl-keys.log oder C: \ ssl-keys.log.
Wenn Sie fertig sind, klicken Sie auf in Ordnung und fahren Sie mit den nächsten Schritten fort.
Legen Sie eine Linux- oder Mac-Umgebungsvariable fest
Im Linux und Mac, Sie müssen das einstellen SSLKEYLOGFILE Umgebungsvariable mit Nano. Im Linux, Die Variable wird in gespeichert ~ / .bashrc. Auf der Mac, Sie erstellen die Variable in der Datei ~ / .MacOSX / Umgebung.
Öffnen Sie ein Terminal und Verwenden Sie diesen Befehl unter Linux:
nano ~ / .bashrc
Öffnen Launchpad, klicken Andere, und starte ein Terminal zu Führen Sie diesen Befehl unter Mac OSX aus:
nano ~ / .bash_profile
Die folgenden Schritte sind für beide Betriebssysteme gleich.
Fügen Sie am Ende der Datei die folgende Zeile hinzu:
Exportieren Sie SSLKEYLOGFILE = ~ / .ssl-key.log
Drücken Sie Strg + X, Y um Ihre Änderungen zu speichern.
Schließen Sie das Terminalfenster und öffnen Sie ein anderes Fenster, um die Variable festzulegen. Geben Sie anschließend Folgendes ein, um zu bestätigen, dass die Variable erfolgreich festgelegt wurde:
echo $ SSLKEYLOGFILE
Nachdem Sie den Befehl ausgeführt haben, sollte eine Ausgabe ähnlich der Abbildung oben angezeigt werden. /Users/comparitech/.ssl-key.log ist der vollständige Pfad zu meinem SSL-Pre-Master-Schlüsselprotokoll. Hinweis: Sie möchten sich eine andere Notiz machen, um in Wireshark einzutreten.
Nachdem die Variable festgelegt wurde, können Sie mit den nächsten Schritten fortfahren.
Starten Sie Ihren Browser und suchen Sie nach der Protokolldatei
Bevor Sie Wireshark starten und so konfigurieren, dass SSL mit einem Pre-Master-Schlüssel entschlüsselt wird, sollten Sie Ihren Browser starten und sicherstellen, dass die Protokolldatei verwendet wird.
Um das Protokoll aufzufüllen, ist es wichtig, dass Sie eine Site besuchen, auf der SSL aktiviert ist. Ich verwende zum Testen meinen eigenen Apache-Server, aber jede Site funktioniert. Einer der größten Vorteile der Verwendung eines Pre-Master-Shared-Keys ist Sie benötigen keinen Zugriff auf den Server SSL zu entschlüsseln.
Überprüfen Sie nach dem Besuch einer SSL-fähigen Website die Datei auf Daten. Im Windows, Sie können verwenden Notizblock. Im Linux oder Mac, benutze den folgenden Befehl:
cat ~ / .ssl-log.key
Auf jedem Betriebssystem sollte Ihre Datei so aussehen wie oben. Nachdem Sie bestätigt haben, dass Ihr Browser Pre-Master-Schlüssel an dem von Ihnen ausgewählten Speicherort protokolliert, können Sie Wireshark so konfigurieren, dass diese Schlüssel zum Entschlüsseln von SSL verwendet werden.
Konfigurieren Sie Wireshark zum Entschlüsseln von SSL
Sobald Ihr Browser Pre-Master-Schlüssel protokolliert, müssen Sie Wireshark so konfigurieren, dass diese Protokolle zum Entschlüsseln von SSL verwendet werden.
Öffnen Sie Wireshark und klicken Sie auf Bearbeiten, dann Einstellungen. Das Einstellungen Das Dialogfeld wird geöffnet. Links sehen Sie eine Liste der Elemente. Erweitern Protokolle, Scrollen Sie nach unten und klicken Sie dann auf SSL.
In der Liste der Optionen für das SSL-Protokoll sehen Sie einen Eintrag für (Pre) -Master-Secret-Protokolldateiname. Navigieren Sie zu der Protokolldatei, die Sie im vorherigen Schritt eingerichtet haben, oder fügen Sie einfach den Pfad ein.
Wenn Sie fertig sind, stellen Sie die (Pre) -Master-Secret-Protokolldateiname, klicken in Ordnung und zurück zu Wireshark. Sie sind bereit, weiterzumachen.
Erfassen Sie die Sitzung und entschlüsseln Sie SSL
Der letzte Schritt besteht darin, eine Testsitzung aufzuzeichnen und sicherzustellen, dass Wireshark SSL erfolgreich entschlüsselt.
- Starten Sie eine ungefilterte Aufnahmesitzung, minimieren Sie sie und öffnen Sie Ihren Browser.
- Besuchen Sie eine sichere Site, um Daten zu generieren, und legen Sie optional einen Anzeigefilter von “ssl” fest, um das Sitzungsrauschen zu minimieren.
- Klicken Sie auf einen Frame, der verschlüsselte Daten enthält.
In meinem Fall wähle ich einen aus, der HTTP-Datenverkehr mit Text- / HTML-Codierung enthält, da ich den Quellcode sehen möchte, den der Webserver an meinen Browser sendet. Verschlüsselter Datenverkehr, der einen geheimen Pre-Master-Schlüssel verwendet, funktioniert jedoch mit dieser Methode. Dies umfasst alle Daten, die Perfect Forward Encryption (PFE) über Diffie-Hellman oder einen vergleichbaren Schlüsselaustausch verwenden.
Wenn Sie einen verschlüsselten Frame ausgewählt haben, sehen Sie sich das an Paketbyte-Ansicht, und insbesondere die Registerkarten unter der Ansicht. Sie sollten einen Eintrag für sehen Entschlüsseltes SSL Daten, unter anderem.
Sie werden feststellen, dass meine Sitzung immer noch voller Müll ist und kein HTML-Code sichtbar ist. Dies liegt daran, dass mein Webserver (und die meisten Apache-Server) standardmäßig die GZIP-Komprimierung verwenden.
Wenn Sie auf die Schaltfläche klicken Nicht komprimierter Entitätskörper Registerkarte, die in diesem Fall nur bei aktivierter SSL-Entschlüsselung angezeigt wird, können Sie den Quellcode der Site anzeigen. Hier ist beispielsweise das title-Element der Standard-Apache-Seite im Klartext.
Verwenden eines RSA-Schlüssels zum Entschlüsseln von SSL
Möglicherweise haben Sie bereits früher bemerkt, dass Wireshark über ein Feld verfügt, in das Sie Ihre RSA-Schlüssel hochladen und zum Entschlüsseln von SSL verwenden können. In der Praxis, Die RSA-Schlüsselentschlüsselung ist veraltet.
Der Grund, warum SSL mit einem RSA-Schlüssel nicht mehr häufig entschlüsselt wird, ist, dass Perfect Forward Encryption (PFE) es überholt hat. Mit Diffie-Hellman ausgehandelte Sitzungen verwenden den RSA-Schlüssel nicht direkt. Stattdessen wird ein einmaliger Schlüssel generiert, der nur im RAM gespeichert wird und mit dem Schlüssel auf der Festplatte verschlüsselt wird.
Wenn Sie zuvor einen RSA-Schlüssel zum Dekodieren des Datenverkehrs verwendet haben und dieser nicht mehr funktioniert, können Sie durch Aktivieren der SSL-Protokollierung bestätigen, dass der Zielcomputer Diffie-Hellman-Austausche verwendet.
Klicken Sie auf, um die Protokollierung zu aktivieren Bearbeiten Klicken Sie im Menü der Symbolleiste auf und wählen Sie Einstellungen. Erweitere die Protokolle Menüpunkt auf der linken Seite und scrollen Sie nach unten zu SSL. Von hier aus können Sie auf die Schaltfläche klicken Durchsuche Klicken Sie auf und legen Sie den Speicherort Ihres SSL-Protokolls fest.
Sobald der Speicherort festgelegt ist, werden alle SSL-Interaktionen in der angegebenen Datei protokolliert.
Zeichnen Sie eine Sitzung mit Ihrem SSL-fähigen Host auf und überprüfen Sie die Protokolle. Insbesondere sollten Sie einen Bildlauf durchführen, bis Sie den Frame finden, auf dem der TLS-Handshake ausgehandelt wurde. Wahrscheinlich wird ein verräterischer DHE-Eintrag in der Verschlüsselungszeichenfolge angezeigt.
Dies bedeutet, dass der Diffie-Hellman-Schlüsselaustausch aktiviert ist. In meinem Fall verwendet Apache speziell Diffie-Hellman mit elliptischen Kurvenschlüsseln, was durch die Zeichenfolge angegeben wird ECDHE.
Scrollen Sie etwas weiter und Sie werden wahrscheinlich feststellen, dass das Hauptgeheimnis nicht gefunden werden kann.
Wenn Ihre Protokolle so aussehen und Sie den Datenverkehr nicht mit einem RSA-Schlüssel entschlüsseln können, haben Sie keine andere Wahl, als auf die oben beschriebene geheime Pre-Master-Methode umzuschalten.
Da PFE zur Standardpraxis wird und das Problem wahrscheinlich durch TLSv1.3 verursacht wird, ist die einfache RSA-Schlüsselentschlüsselung veraltet und sollte nicht verwendet werden.
Wireshark erleichtert das Entschlüsseln von SSL-Datenverkehr
Ich mag die Art und Weise, wie Wireshark mit der SSL-Entschlüsselung umgeht. Kryptographie ist kompliziert und die Standards ändern sich ständig, um sicherer zu sein. Sobald Wireshark und Ihre Umgebung ordnungsgemäß eingerichtet sind, müssen Sie lediglich die Registerkarten wechseln, um die entschlüsselten Daten anzuzeigen. Einfacher geht es nicht.
als Name SSLKEYLOGFILE ein und als Wert den Pfad, an dem die geheimen Pre-Master-Schlüssel gespeichert werden sollen. Zum Beispiel: C:\Users\Username\sslkeylogfile.txt. Klicken Sie auf OK, um die Änderungen zu speichern.
Legen Sie eine Linux- oder Mac-Umgebungsvariable fest
Unter Linux oder Mac können Sie die Umgebungsvariable in der Befehlszeile festlegen. Öffnen Sie ein Terminalfenster und geben Sie den folgenden Befehl ein:
export SSLKEYLOGFILE=/Pfad/zur/Datei/sslkeylogfile.txt
Ersetzen Sie “/Pfad/zur/Datei/” durch den tatsächlichen Pfad, an dem die geheimen Pre-Master-Schlüssel gespeichert werden sollen. Drücken Sie die Eingabetaste, um die Umgebungsvariable zu setzen.
Starten Sie Ihren Browser und suchen Sie nach der Protokolldatei
Starten Sie Ihren Browser und navigieren Sie zu einer Website, die SSL oder TLS verwendet. Öffnen Sie dann die Protokolldatei Ihres Browsers, um den geheimen Pre-Master-Schlüssel zu finden. Die genaue Methode zum Öffnen der Protokolldatei hängt von Ihrem Browser ab. Hier sind einige Beispiele:
– Firefox: Öffnen Sie das Menü und wählen Sie Einstellungen. Scrollen Sie nach unten zu Netzwerk-Proxy und klicken Sie auf Einstellungen. Klicken Sie auf Protokollierung und wählen Sie die Option Alle Protokollierung auswählen. Starten Sie den Browser neu und navigieren Sie zur Website. Öffnen Sie dann die Protokolldatei, indem Sie about:networking in die Adressleiste eingeben und auf Enter drücken. Klicken Sie auf die Registerkarte SSL und suchen Sie nach dem geheimen Pre-Master-Schlüssel.
– Chrome: Öffnen Sie das Menü und wählen Sie Weitere Tools > Entwicklertools. Klicken Sie auf die Registerkarte Netzwerk und aktivieren Sie das Kontrollkästchen Protokollierung aktivieren. Starten Sie den Browser neu und navigieren Sie zur Website. Öffnen