Netzwerktraffic von Apps analysieren: Ein Leitfaden zur API-Inspektion und Dokumentation
Die Analyse des Netzwerkverkehrs bietet tiefere Einblicke in die API-Kommunikation und hilft, Sicherheitslücken aufzudecken. Dabei wird oft die SSL-Verschlüsselung aufgebrochen, um Datenpakete und deren Inhalte sichtbar zu machen. Zusätzlich kann eine OpenAPI-Spezifikation generiert werden, um die API besser zu dokumentieren.
Warum Netzwerktraffic analysieren?
Das Analysieren von Netzwerktraffic ist besonders nützlich, um:
Sicherheitslücken in Apps zu identifizieren.
Zu überprüfen, welche Daten die App mit externen Servern austauscht.
Den Aufbau und die Funktionsweise von APIs zu verstehen.
API-Dokumentationen für Debugging und Entwicklung zu erstellen.
Voraussetzungen
Hardware
Gerootetes Android-Gerät:
Erforderlich für RProxid, da es das globale Proxy-Setting erzwingt und somit auch Apps, die normalerweise den Proxy umgehen würden, über mitmproxy leitet. Für Flutter - basierte Apps ist dies leider nicht ausreichend, da diese auch nicht auf diese Einstellungen reagieren. Hierzu ist dann zwingend das Frida-Skript notwendig.
Erlaubt das Deaktivieren von SSL-Pinning und den Zugriff auf Systemdateien.
Software
ADB (Android Debug Bridge): Lade die Android Platform Tools von der offiziellen Website herunter: Android Platform Tools.
Host-System:
Installiere mitmproxy oder mitmweb.
Installiere Python 3.6+ sowie die notwendigen Bibliotheken:
pip install mitmproxy frida-tools
Optionale Tools:
disable-flutter-tls.js: Ein Frida-Skript, das TLS-Verifizierungen in Flutter-Apps deaktiviert. Dieses Skript ist notwendig, da Flutter-Apps oft TLS-Pinning verwenden. Du kannst es hier herunterladen: NVISOsecurity. Es manipuliert die App zur Laufzeit, um verschlüsselte Kommunikation sichtbar zu machen.
Mitmproxy-Zertifikat installieren
Für die meisten Android-Apps ohne TLS-Pinning kannst du das mitmproxy-Zertifikat einfach direkt über die Webschnittstelle installieren:
Mitmproxy starten:
mitmweb
Mitmproxy-Zertifikat installieren:
Öffne die Seite http://mitm.it/ im Browser des Android-Geräts.
Wähle das Betriebssystem Android und folge den Anweisungen zur Zertifikatsinstallation.
Proxy auf dem Gerät einrichten:
Gehe in die WLAN-Einstellungen deines Android-Geräts.
Wähle das aktuelle Netzwerk aus und konfiguriere manuell einen Proxy mit der IP-Adresse deines Host-Systems und Port 8080.
Diese Methode ist schnell und reicht aus, um den Netzwerktraffic von Apps ohne TLS-Pinning zu analysieren.
Analyse von Flutter-Apps mit TLS-Pinning
Für Flutter-Apps, die TLS-Pinning verwenden, sind zusätzliche Schritte erforderlich:
App zur Laufzeit anpassen: Starte die Zielanwendung und führe das TLS-Bypass-Skript mit Frida aus:
frida -U MeineApp -l ./disable-flutter-tls.js
Dieses Skript deaktiviert die SSL-Zertifikatsprüfung der App, sodass mitmproxy den verschlüsselten Traffic einsehen kann.
Schritt 1: RProxid konfigurieren
Installiere RProxid über den Google Play Store auf deinem Android-Gerät.
Konfiguriere die App:
Zielanwendung: Wähle die App aus, deren Traffic analysiert werden soll.
Proxy-Host: IP-Adresse des Hosts, auf dem mitmproxy läuft (z. B. 192.168.1.100).
Proxy-Port: Standardport von mitmproxy (8080).
Aktiviere RProxid.
Schritt 2: Netzwerktraffic mit mitmproxy erfassen
mitmproxy exportieren:Die mitmproxy-Instanz ist bereits gestartet. Öffne die Weboberfläche unter http://127.0.0.1:8081 und navigiere zu den gewünschten Daten. Exportiere die gefilterten Anfragen im gewünschten Format, z. B. als .dump-Datei für die spätere Analyse.
Traffic generieren: Interagiere mit der App, um API-Anfragen zu erzeugen.
Daten speichern:
Exportiere gefilterte Anfragen in der Weboberfläche als meineapp-flow.dump.
Schritt 3: Konvertierung in OpenAPI-Spezifikation
Dump-Datei in JSON konvertieren: Führe convertToJson.py aus:
Ergebnis: decoded_flows.jsonEs bietet sich an, die Datei vor der Konvertierung auf personenbezogene oder sensible Daten zu überprüfen und diese gegebenenfalls zu anonymisieren. Dies schützt sensible Informationen.
JSON in OpenAPI-Spezifikation umwandeln: Führe convertToOpenAPI.py aus:
Die generierte OpenAPI-Spezifikation ermöglicht es, die API-Endpunkte der App lesbar und nachvollziehbar zu dokumentieren. Die Spezifikation kann in Tools wie dem Swagger Editor importiert werden, um die API-Struktur zu visualisieren und für weitere Analysen bereitzustellen. Dies hilft, die Funktionsweise der App besser zu verstehen und die Kommunikation zwischen App und Server detailliert zu untersuchen.
Netzwerkverkehr
Dominic Böttger
Author
,
INSPIRATIONLABS
Technologie inspiriert durch Euer Potenzial! Wir gestalten IT so, dass Teams endlich ihr ganzes Potenzial nutzen können.