HTTPS · HTTP/2 · HTTP/3 · Kostenlos für macOS 26

HTTPS auf dem Mac entschlüsseln.

Eine Aufzeichnung zeigt, dass Ihr Mac mit einem Server gesprochen hat, aber nicht, was er gesagt hat. Mit den Sitzungsschlüsseln macht Cocoa Packet Analyzer aus HTTPS, HTTP/2 und HTTP/3 wieder Requests und Responses. Die Schlüssel kommen aus einem Keylog über SSLKEYLOGFILE, aus einer App, die Cocoa Packet Analyzer so startet, dass sie ihre Schlüssel mitschreibt, oder aus dem eingebauten Proxy, der auch ein iPhone oder iPad liest.

Kostenlos, ohne Konto, und nichts verlässt Ihren Mac. Welche Version brauche ich?

Ein entschlüsselter HTTP/2-Request an www.wikipedia.org mit Methode, Authority, Pfad und User-Agent in den Paketdetails
Ein HTTP/2-Request aus einer Aufzeichnung, jeder Header lesbar.

Warum eine Aufzeichnung allein kein HTTPS lesen kann.

Jede HTTPS-Verbindung beginnt mit einem Handshake, in dem Client und Server ein neues Geheimnis vereinbaren. Wer nur das Netzwerk beobachtet, kann es nicht ermitteln; genau dafür gibt es TLS. Beide Seiten kennen das Geheimnis aber, und jede von ihnen kann es aufschreiben.

Ein Keylog ist dieses aufgeschriebene Geheimnis: eine Zeile pro TLS-Sitzung, die die Sitzung mit ihren Schlüsseln verbindet. Damit öffnet Cocoa Packet Analyzer die verschlüsselten Records einer Aufzeichnung, egal ob sie eine Minute oder einen Monat alt ist. Die Pakete bleiben, wie sie sind. Es fehlen nur die Schlüssel.

An die Schlüssel kommen Sie auf drei Wegen.

Keylog

1. Die App schreibt ihre Schlüssel selbst: SSLKEYLOGFILE.

Browser auf Chromium-Basis (Chrome, Brave, Edge), Firefox, Electron-Apps und curl mit OpenSSL hängen ihre Sitzungsschlüssel an die Datei an, die die Umgebungsvariable SSLKEYLOGFILE benennt. Beenden Sie den Browser vollständig und starten Sie ihn dann im Terminal mit gesetzter Variable, zum Beispiel:

SSLKEYLOGFILE=~/tls-keys.log "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"

Zeichnen Sie auf, während Sie surfen, und fügen Sie tls-keys.log dann im Fenster „TLS-Schlüssel“ unter „Quellen“ hinzu (Pakete ▸ TLS-Schlüssel der Aufzeichnung…). Die passenden Sitzungen werden entschlüsselt. Alternativ legen Sie das Keylog neben die Aufzeichnung, mit deren Namen und der Endung .keys: Dann liest die App es gleich beim Öffnen.

„TCP-Stream folgen“ auf einer entschlüsselten HTTP/2-Verbindung: der GET-Request an www.wikipedia.org und seine Response „200 OK“ als lesbarer Text

Schlüssel mitschreiben

2. Oder Cocoa Packet Analyzer startet die App.

Wählen Sie Ablage ▸ App öffnen und TLS-Schlüssel mitschreiben… und dann Chrome, Firefox oder eine Electron-App. Cocoa Packet Analyzer prüft, ob die App die Variable liest, bittet Sie, die App zu beenden, falls sie läuft, und öffnet sie neu. Ihre Schlüssel landen dann direkt bei den Sitzungsschlüsseln der App, und ihre Verbindungen werden in der laufenden Aufzeichnung entschlüsselt. Terminal, Proxy und Zertifikat brauchen Sie dafür nicht. Im Fenster „Apps“ zeigt ein Schlüssel-Badge, wie viele Verbindungen einer App Schlüssel haben.

Diesen Weg gibt es im Download; die Version aus dem Mac App Store liest Keylog-Dateien.

Das Fenster „Apps“ mit Podcasts, App Store, Musik, Karten und Safari und ihren Paketen, Bytes und Anteilen

Proxy

3. Oder der Proxy sitzt dazwischen: Safari, Apps, iPhone.

Safari und Apples eigene Apps geben ihre Schlüssel nie heraus. Für sie öffnen Sie Ablage ▸ MITM-Proxy…, klicken auf CA vertrauen und dann auf Proxy starten. Der Proxy steht zwischen App und Server und hat die Schlüssel deshalb selbst: Der Monitor listet jeden Request live mit der App, die ihn gesendet hat, und Ihre Aufzeichnung wird ebenfalls entschlüsselt.

Für ein iPhone oder iPad wählen Sie Ablage ▸ Gerät verbinden…, scannen den QR-Code und folgen den Schritten auf dem Gerät: Zertifikat installieren und ihm vertrauen, Proxy im WLAN eintragen. Schalten Sie den Proxy aus, wenn Sie fertig sind, und lesen Sie nur Datenverkehr, zu dem Sie berechtigt sind.

Der MITM-Proxy-Monitor mit den API-Requests einer App; ein GET ist ausgewählt und zeigt die Header von Request und Response

Was Sie nach dem Entschlüsseln sehen.

  • HTTP/1.1 und HTTP/2 als Requests und Responses mit Headern und Bodys, bei HTTP/2 jeder Stream für sich.
  • HTTP/3: QUIC auf jeder Ebene entschlüsselt, mit Frames und Headern, nach denen Sie filtern können.
  • gRPC-Aufrufe Nachricht für Nachricht und Feld für Feld, auch ohne die .proto-Datei des Dienstes. Ebenso WebSocket-Nachrichten.
  • TCP-Stream folgen setzt eine entschlüsselte Verbindung wieder zu Text zusammen, mit Request und Response.

Die Entschlüsselung unterstützt TLS 1.2 und TLS 1.3. Sitzungen mit TLS 1.0 oder 1.1 bleiben verschlüsselt.

Eine Sitzung bleibt verschlüsselt? Das Fenster „TLS-Schlüssel“ nennt den Grund.

Pakete ▸ TLS-Schlüssel der Aufzeichnung… listet jede TLS-Sitzung der Aufzeichnung mit ihrem Host auf. Sitzungen, die sich nicht entschlüsseln lassen, stehen oben, jeweils mit dem Grund:

  • Kein Schlüsselmaterial: Für die Sitzung wurde nichts aufgezeichnet. Das ist normal bei Apps, die kein Keylog geschrieben haben und nicht über den Proxy liefen.
  • Fehlt: … Ein Teil der Geheimnisse liegt vor, der Status nennt das fehlende. Ohne das Geheimnis des Servers sehen Sie, was der Client gesendet hat, aber nicht die Antwort.
  • Schlüssel passt nicht zu dieser Sitzung: Das Keylog enthält eine Zeile zur Kennung der Sitzung, die öffnet ihre Records aber nicht.
  • Kein TLS-Handshake gefunden: Die Aufzeichnung begann erst nach dem Aufbau der Verbindung. Starten Sie zuerst die Aufzeichnung und laden Sie dann die Seite.
  • TLS-Version wird für die Entschlüsselung nicht unterstützt: Die Sitzung verwendete TLS 1.0 oder 1.1.

Die Schlüssel bleiben bei der Aufzeichnung.

Wenn Sie eine Aufzeichnung öffnen oder sichern, bewahrt Cocoa Packet Analyzer die zugehörigen Schlüssel auf, damit sie auch Monate später noch entschlüsselt wird. Sichern Sie sie als PcapNG, stecken die Schlüssel in der Datei selbst: Eine Kollegin oder ein Kollege öffnet sie und liest das HTTPS sofort. Um die Schlüssel anderswo zu verwenden, schreibt Keylog exportieren… im Fenster „TLS-Schlüssel“ sie als gewöhnliche Keylog-Datei.

Schlüssel öffnen den Datenverkehr, zu dem sie gehören. Gehen Sie mit einem Keylog deshalb so sorgsam um wie mit dem Datenverkehr selbst. Die Schlüssel bleiben auf Ihrem Mac, hochgeladen wird nichts.

Mehr zu den Dateiformaten: PCAP- und PcapNG-Dateien auf dem Mac öffnen.

Fragen und Antworten.

Was ist SSLKEYLOGFILE?

Eine Umgebungsvariable, die eine Datei benennt. Programme, die sie unterstützen, etwa Browser auf Chromium-Basis, Firefox, Electron-Apps und curl mit OpenSSL, hängen für jede TLS-Sitzung eine Zeile an diese Datei an: die Kennung der Sitzung und ihre Geheimnisse. Mit diesem Keylog entschlüsselt Cocoa Packet Analyzer die Sitzungen einer Aufzeichnung.

Lässt sich das HTTPS von Safari entschlüsseln?

Ja, über den eingebauten Proxy. Safari und Apples eigene Apps schreiben ihre Sitzungsschlüssel nie in ein Keylog, mit einem Keylog kommen Sie bei ihnen also nicht weiter.

Lässt sich das HTTPS eines iPhone oder iPad entschlüsseln?

Ja. Wählen Sie Ablage ▸ Gerät verbinden…, scannen Sie den QR-Code mit dem Gerät und folgen Sie den Schritten: Zertifikat des Proxys installieren und ihm vertrauen, dann den Proxy im WLAN eintragen. Apps, die ihre eigenen Zertifikate pinnen, lehnen die Verbindung ab.

Welche TLS-Versionen lassen sich entschlüsseln?

TLS 1.2 und TLS 1.3, auch TLS innerhalb von QUIC für HTTP/3. Sitzungen mit TLS 1.0 oder 1.1 bleiben verschlüsselt.

Entschlüsselt auch die Version aus dem Mac App Store HTTPS?

Ja, mit Keylogs, mit PcapNG-Dateien, die ihre Schlüssel enthalten, und über den Proxy, den Sie dort selbst im Mac eintragen. „App öffnen und TLS-Schlüssel mitschreiben…“ und die Live-Aufzeichnung gibt es nur im Download. Welche Version brauche ich?

Verlassen die Schlüssel oder der Datenverkehr meinen Mac?

Nein. Die Schlüssel liegen auf Ihrem Mac bei den Aufzeichnungen, zu denen sie gehören, und der Proxy läuft lokal.

Cocoa Packet Analyzer

Sehen Sie, was Ihre Apps wirklich senden.

macOS 26 oder neuer · Universal · Von Apple notarisiert · brew install --cask cocoapacketanalyzer

Datenverkehr nach App, VPNs, das Plugin-SDK und alles Weitere: was Cocoa Packet Analyzer sonst noch kann.