Das Certificate Pinning von Metas Messenger knacken (macOS)
- Die Messenger-Anwendung von Meta für macOS ähnelt dem Modell von Texts.com als eigenständiger Desktop-Anwendung.
- Batuhan İçöz, der bei Texts.com das Meta-Plattform-Projekt leitet, hält es für einen wichtigen ersten Schritt, Netzwerk-Anfragen abzufangen.
- Meta erhöht die Sicherheit durch Certificate Pinning und verhindert die Analyse von Server-Anfragen über MITM-Angriffe (Man-in-the-Middle).
Was ist Certificate Pinning?
- Beim Einrichten eines Proxy-Clients muss man ihn so konfigurieren, dass er einer „Zertifizierungsstelle“ vertraut.
- Mit einem von der Zertifizierungsstelle ausgestellten Zertifikat lassen sich Informationen zu Anfragen abfangen und entschlüsseln.
- Wenn ein Dienst Certificate Pinning implementiert, akzeptiert er nur Zertifikate, die von bestimmten Zertifizierungsstellen ausgestellt wurden, sodass keine von der Zertifizierungsstelle des Nutzers ausgestellten Zertifikate verwendet werden können.
Standardverhalten
- Wenn Certificate Pinning nicht deaktiviert wird, geben alle Anfragen einen „internen Fehler“ zurück, und die Proxy-Software zeigt einen „SSL-Handshake fehlgeschlagen“ an.
- Da die Anfragen ihren Lebenszyklus nicht abschließen können, lassen sich keine Informationen über sie ableiten.
Gewünschtes Verhalten
- Mithilfe eines MITM-Angriffs sollen sich Anfragen, Antworten und Header in Netzwerk-Debugging-Tools erfolgreich auslesen lassen.
Mögliche Ansätze
- Eine früher funktionierende Methode bestand darin, URL-Strings im Binärprogramm auf einen unsicheren selbstgehosteten Endpunkt zu ändern, der kein TLS implementiert.
- Dynamische Instrumentierungsbibliotheken wie Frida können verwendet werden, aber Messenger stürzt dabei leicht ab, insbesondere beim Hooking.
- Der Einsatz von Frida bringt außerdem einen komplexen Deployment-Prozess mit sich.
Vorgehensweise
- Nach dem Download von Messenger und dem Verschieben in den Programme-Ordner wird das ARM-Binärprogramm in Hopper importiert.
- Mit Hopper lässt sich das Binärprogramm disassemblieren, dekompilieren, reassemblieren, debuggen und visualisieren.
- Es wird nach Strings wie „SSL pinning verification failed“ gesucht, um die Änderungen möglichst klein zu halten.
- Dabei wird der String „Using custom sandbox -> turn off SSL verification“ gefunden und die zugehörige Funktion lokalisiert und verändert.
- Die Funktion
IsUsingSandbox wird so gesetzt, dass sie immer true zurückgibt, wodurch Certificate Pinning deaktiviert wird.
Ergebnis
- Nach dem Export der neuen ausführbaren Datei und dem Entfernen der Signatur wird das ursprüngliche Messenger-Binärprogramm durch das neue ersetzt.
- Nach dem Neustart von Messenger zeigt das Proxy-Tool Header, Response-Body und sämtliche Anfrageinformationen an.
- Das Abfangen der Anfragen gelingt, obwohl nur 4 Byte in einem Binärprogramm mit 97.477.728 Byte verändert wurden.
Deployment
- Nach dem Kompilieren des Binärprogramms wird es an Batuhan geschickt.
- Batuhan erhält ein Signaturzertifikat, installiert es und signiert die Anwendung.
- Nach Abschluss der Signierung kann er das Binärprogramm auf seinem System verwenden, um seine eigenen Anfragen einzusehen.
Meinung von GN⁺
- Dieser Artikel liefert ein interessantes Beispiel dafür, wie Sicherheitsforscher das Certificate Pinning in Metas Messenger-App umgehen.
- Certificate Pinning ist eine wichtige Sicherheitsfunktion zur Verhinderung von Man-in-the-Middle-Angriffen, doch Wege zu finden, sie zu umgehen, liefert der Security-Community wichtige Erkenntnisse.
- Diese Technik kann Entwicklern helfen, die Sicherheit ihrer eigenen Apps oder Dienste zu verbessern, und dazu beitragen, Sicherheitslücken zu finden und zu beheben.
- Allerdings besteht auch die Möglichkeit, dass solche Forschung für böswillige Zwecke genutzt wird; deshalb ist beim Teilen solcher Ergebnisse Vorsicht geboten.
- Andere Tools mit ähnlicher Funktionalität sind Netzwerk-Analysewerkzeuge wie Wireshark oder Burp Suite, die weithin zur Überwachung und Analyse von Netzwerk-Traffic verwendet werden.
1 Kommentare
Hacker-News-Kommentare
Fragen zur rechtlichen Seite
Versuch des Dekompilierens und Rekompilierens sowie der dafür nötige Einsatz
Der Verlust früherer Techniken
Beobachtungen zu Metas RE-Abwehr
IsUsingSandbox()aus dem Produktions-Build zu entfernen.Certificate Pinning im Sandbox-Modus
Nützlichkeit von Laufzeit-Binärprüfsummen
Fragen zur Nutzung von Proxy-Tools
Sicherheit von Anwendungen großer Unternehmen
Möglichkeit, den Traffic von Meta-Apps abzufangen
Bedeutung der Traffic-Überwachung