Anleitung

Android-App-Traffic mitschneiden ohne WLAN-Proxy

Die Busymate DevTools-App für Android betreibt eine VPN-basierte Aufzeichnungs-Engine direkt auf dem Smartphone. Kein Desktop-Proxy, kein gemeinsames WLAN, keine Proxy-Einstellung — und eine ehrliche Auskunft darüber, welche Apps sich auf einem Gerät ohne Root tatsächlich entschlüsseln lassen.

Unter Android führt der klassische Weg zum HTTPS einer App über einen Proxy auf dem Laptop plus einen manuellen Proxy-Eintrag in den WLAN-Einstellungen des Smartphones. Das funktioniert, bis du dieses Netz verlässt. Busymate DevTools nimmt den Proxy aus dem Bild: Die App registriert sich als VPN des Smartphones, sieht jede Verbindung, die das Gerät aufbaut, entschlüsselt die von dir gewählten Hosts mit einem auf dem Gerät erzeugten Zertifikat und streamt das Ergebnis in dasselbe Dashboard, das auch die iOS-App und der Desktop-Proxy nutzen.

Eine Plattform-Tatsache wird diese Anleitung nicht verschweigen. Seit Android 7.0 ignoriert eine App vom Nutzer installierte Zertifikate, sofern sie sich nicht ausdrücklich dafür entscheidet. Das Smartphone kann also den Traffic jeder App aufzeichnen, aber nur die Apps entschlüsseln, die dem Nutzer-Zertifikatsspeicher vertrauen — in der Praxis deine eigenen Debug-Builds sowie Systembrowser und ähnliche Clients. Schritt fünf zeigt die Ein-Datei-Änderung, die deine App dazuzählt, und die Pinning-Anleitung deckt den Rest ab.

Bevor du anfängst

Was du brauchst

Ein Smartphone, ein Konto und — wenn du entschlüsselte Bodies deiner eigenen App willst — ein Debug-Build, den du neu bauen kannst.

  • Ein Android-Smartphone mit Android 7.0 oder neuer. Zum Aufzeichnen sind weder Root noch ein Computer nötig.

  • Ein Busymate-Konto. Melde dich mit Google oder mit E-Mail und Passwort an; die Anmeldung koppelt das Smartphone mit deinem Dashboard.

  • Die Hostnamen der API, die du lesen willst, für die SSL-Proxy-Liste. Nur gelistete Hosts werden entschlüsselt.

  • Für deine eigene App: die Möglichkeit, ihren Debug-Build mit einer Ein-Datei-Netzwerksicherheitskonfiguration neu zu bauen, damit sie dem vom Smartphone erzeugten Zertifikat vertraut.

Schritt für Schritt

Der Reihe nach

Sechs Schritte. Die geführte Einrichtung der App erledigt die Plattform-Abfragen Bildschirm für Bildschirm; die einzige Arbeit außerhalb der App ist die Debug-Build-Änderung in Schritt fünf.

  1. 01

    App installieren und der Aufzeichnung zustimmen

    Installiere Busymate DevTools aus Google Play, oder lade die signierte Release-APK von der Android-Landingpage, falls der Eintrag in deiner Region noch nicht sichtbar ist. Beim ersten Start bittet die App um deine ausdrückliche Zustimmung zur Aufzeichnung des Netzwerk-Traffics. Die Aufzeichnung ist Opt-in und bleibt aus, bis du sie einschaltest — im Hintergrund läuft nichts, bevor du es sagst.

    Der Einwilligungsbildschirm zur Netzwerkaufzeichnung in Busymate DevTools für Android
  2. 02

    Anmelden — das Smartphone koppelt sich selbst

    Melde dich mit Google oder mit E-Mail und Passwort an. Wie auf iOS ist die Anmeldung die Kopplung: Die App tauscht die Sitzung gegen ein langlebiges Geräte-Credential, das im verschlüsselten App-Speicher liegt, und das Smartphone erscheint einen Moment später als Online im Tab Devices des Dashboards. Der Startbildschirm zeigt den Gerätenamen, eine Konto-Pille, die Karte mit dem Aufzeichnungsschalter und eine Bereitschaftskarte mit einem Zahnrad für die Einstellungen.

    Der Startbildschirm von Busymate DevTools auf Android mit Aufzeichnungsschalter und Bereitschaftskarte
  3. 03

    Die zu entschlüsselnden Domains hinzufügen

    Öffne über das Zahnrad die Einstellungen und gehe zu SSL Proxying. Liste die Hosts auf, deren HTTPS-Bodies du lesen willst; alles andere bleibt Ende-zu-Ende verschlüsselt und erscheint als Hostname mit Request-Zähler. Ein führendes Sternchen mit Punkt deckt eine Domain und all ihre Subdomains ab. Im selben Bereich liegen die Entschlüsselungsoptionen und eine Ignore-Hosts-Liste für Hintergrundrauschen, das du nie im Feed haben willst.

    Das musst du nicht am Smartphone tun. Das Dashboard bearbeitet dieselbe Liste pro Gerät, und eine Änderung dort wird live aufs Smartphone gepusht — ein Teammitglied kann also einen Host hinzufügen, während du weiter testest.

  4. 04

    Die geführte Einrichtung durchlaufen

    Tippe auf die Bereitschaftskarte. Die geführte Einrichtung führt Bildschirm für Bildschirm durch drei Plattform-Abfragen: die Aufzeichnungsbenachrichtigung erlauben, das eigens für dich erzeugte Zertifikat in den Nutzer-Zertifikatsspeicher des Smartphones installieren und Androids eigene VPN-Verbindungsanfrage genehmigen. Jeder Schritt springt auf „erledigt“, sobald du ihn abschließt, und die Karte meldet Bereitschaft, wenn alle drei durch sind.

    Dieses Zertifikat gehört nur deinem Gerät — es wird auf dem Smartphone erzeugt, nie von einem gemeinsamen Server geladen — und es ist das, was der App erlaubt, für jeden Host, den du entschlüsseln willst, ein vertrauenswürdiges Zertifikat vorzulegen.

    Die geführte Aufzeichnungseinrichtung in Busymate DevTools für Android
  5. 05

    Der eigenen App Vertrauen in den Nutzer-Zertifikatsspeicher beibringen

    Diesen Schritt kann kein Android-Aufzeichnungstool überspringen. Seit Android 7.0 vertraut eine App, die auf diese Version oder höher zielt, standardmäßig nur dem System-Zertifikatsspeicher — deine App schließt die Verbindung also in dem Moment, in dem das Smartphone sein erzeugtes Zertifikat vorlegt. Die Lösung ist eine kleine Netzwerksicherheitskonfiguration, nur für Debug-Builds, die den Nutzerspeicher neben dem Systemspeicher hinzufügt. Android entfernt den Debug-Overrides-Block aus Release-Builds vollständig, er kann also nicht in die Produktion gelangen.

    Lege die Datei unten in deiner App an, behalte den System-Anker neben dem Nutzer-Anker, damit gewöhnliches HTTPS weiter funktioniert, verweise aus dem application-Tag deines Manifests darauf, und baue und installiere dann den Debug-Build neu. Das alte Binary erneut zu installieren bringt nichts — das Vertrauen steckt in der frisch gebauten App.

    Die Netzwerksicherheitskonfiguration nur für Debug, dann der Verweis im Manifest
    xml
    <!-- app/src/main/res/xml/network_security_config.xml -->
    <network-security-config>
      <debug-overrides>
        <trust-anchors>
          <certificates src="user" />
          <certificates src="system" />
        </trust-anchors>
      </debug-overrides>
    </network-security-config>
    
    <!-- AndroidManifest.xml -->
    <application
        android:networkSecurityConfig="@xml/network_security_config"
        ... >
  6. 06

    Aufzeichnung einschalten und inspizieren

    Schalte den Aufzeichnungsschalter ein. Android zeigt das VPN-Schlüsselsymbol in der Statusleiste, und jeder Request des Smartphones landet ab jetzt im Dashboard-Feed und im Network-Bildschirm der App — eine Statuszeile, Statistik-Pillen, Kategorie-Chips und eine nach Host gruppierte Liste mit Suche unten. Tippe auf einen Host und dann auf einen Request für die vollständigen Details: die Tabs General, Header, Summary, Timing und Body für Request wie Response.

    Öffne deine App und löse einen Aufruf aus. Ihre HTTPS-Einträge zeigen jetzt lesbare Header und einen entschlüsselten Body statt eines undurchsichtigen Tunnels. Wenn du fertig bist, schalte die Aufzeichnung aus — das VPN fällt weg, und Zertifikat wie App lassen sich wie jede andere entfernen.

    Der Echtzeit-Network-Feed in Busymate DevTools für Android

Fehlerbehebung

Was schief gehen kann

Die meisten Android-Probleme sind die Plattform, die bei Zertifikaten streng ist — und der Feed sagt dir, welches du getroffen hast.

  • Der Traffic deiner eigenen App erscheint weiterhin verschlüsselt

    Die Netzwerksicherheitskonfiguration hat nicht gegriffen. Prüfe, dass du den Debug-Build nach dem Hinzufügen neu gebaut und installiert hast, dass das Manifest auf die Datei zeigt und dass das Zertifikat im Nutzerspeicher liegt. Liegt die Konfiguration in einem reinen Debug-Source-Set, muss das Manifest-Attribut ebenfalls im Debug-Manifest stehen.

  • Eine Store-App, die du nicht gebaut hast, bleibt undurchsichtig

    Auf einem Smartphone ohne Root erwartbar: Diese App hat sich nie für Nutzerzertifikate entschieden, also zeichnet das Smartphone die Verbindung nur als Metadaten auf. Sie zu entschlüsseln braucht ein gerootetes Gerät, auf dem das Zertifikat in den Systemspeicher kann — die Stufe, die die Phone-Farm nutzt —, und selbst das öffnet keine App, die ihr eigenes Zertifikat pinnt.

  • Androids VPN-Abfrage kommt immer wieder

    Eine andere VPN-App ist aktiv, oder die frühere Genehmigung wurde in den VPN-Einstellungen des Systems widerrufen. Es kann nur ein VPN gleichzeitig laufen; trenne das andere und genehmige die Abfrage erneut über die geführte Einrichtung.

  • Die Aufzeichnungsbenachrichtigung ist nie erschienen

    Die Benachrichtigungsberechtigung wurde bei der ersten Abfrage verweigert. Aktiviere sie für Busymate DevTools in den App-Einstellungen des Systems erneut; die geführte Einrichtung prüft sie nach und setzt den Schritt auf „erledigt“.

  • Ein Host steht auf der Liste, aber die Pfad-Regel feuert nicht

    Regeln, die auf einen Pfad matchen, brauchen einen entschlüsselten Host; bei einem Host, der verschlüsselt durchläuft, ist nur der Hostname sichtbar. Setze den Host zuerst auf die SSL-Proxy-Liste und prüfe die Regel dann erneut.

FAQ

Häufige Fragen

Brauche ich Root?

Nicht fürs Aufzeichnen und nicht zum Entschlüsseln deiner eigenen Debug-Builds oder von Clients, die dem Nutzerspeicher vertrauen. Root ist nur nötig, um das Zertifikat in den Systemspeicher zu bringen, damit Apps, die du nicht gebaut hast, ihm vertrauen.

Steckt darunter ein Proxy?

Nein. Die App ist als VPN des Smartphones registriert und sieht daher den Traffic jeder App über WLAN und Mobilfunk, ohne eine Proxy-Einstellung anzufassen. Für Browser und Backends gibt es einen separaten Desktop-Proxy, aber diese Anleitung nutzt ihn nie.

Was passiert mit Apps, die nicht auf meiner Liste stehen?

Sie funktionieren genau wie zuvor. Ihre Verbindungen werden nur als Host und Timing erfasst und nie entschlüsselt, und Ignore Hosts kann die lautesten komplett aus dem Feed nehmen.

Der Traffic deiner App, auf dem Smartphone gelesen

Installiere die App, durchlaufe die geführte Einrichtung, füge die Ein-Datei-Debug-Konfiguration hinzu und sieh zu, wie die Requests deiner App entschlüsselt landen.

Ask your mate