it-swarm.com.de

Abfangen Android App-Verkehr mit Burp

Ich versuche zu verstehen, was Burp und Android Apps tun, wenn der Datenverkehr https ist. Ich habe nicht die Burp-CA auf dem Telefon installiert.

  1. Einige Apps funktionieren überhaupt nicht. Sie zeigen eine Fehlermeldung an oder denken, dass das Telefon nicht online ist. Liegt das an SSL Pinning?

  2. Einige Apps funktionieren normal, aber Burp erfasst keine Pakete. Wie passiert das? Wie können Telefon und Server ohne Rülpser kommunizieren? Leitet Burp nur den Verkehr weiter?

  3. Einige Apps funktionieren normal, aber Burp fängt Pakete nur für einige Vorgänge ab. Abgefangene Vorgänge verwenden wahrscheinlich leere Vertrauensmanager oder ähnliches, aber wie kommuniziert der Rest des Codes mit dem Server?

7
mk_

Als erstes ist zu beachten, dass Burp ein HTTP (S) -Proxy ist. Es wird nichts gegen Daten unternommen, die nicht HTTP (S) sind (OK, außer Websockets). Android Apps hingegen können jedes gewünschte Protokoll verwenden. Viele verwenden HTTP (S), nur weil es der Art der Daten entspricht, die sie senden, aber es ist eigentlich nicht erforderlich.

Wenn eine App kein HTTP (S) verwendet, wird dieser Datenverkehr nicht in Burp angezeigt. Das offensichtlichste Beispiel hierfür ist der DNS-Verkehr. Selbst wenn Sie einen Browser über Burp verwenden, werden keine DNS-Suchanforderungen angezeigt.

Damit:

  1. Apps, die sich völlig weigern zu funktionieren. Sie könnten das Anheften von Zertifikaten verwenden - hier jedoch zwei Optionen. Geben Sie zunächst ein gültiges Zertifikat für den Zielstandort ein, der auf dem Gerät installiert werden soll. In diesem Fall würde die Installation des Burp CA-Zertifikats dazu führen, dass sie wieder funktionieren. Beim zweiten Typ wird ein benutzerdefiniertes Pinning verwendet, für das entweder ein bestimmtes Zertifikat vom Server bereitgestellt werden muss oder ein Zertifikat, das von einem bestimmten Eintrag in der Vertrauenskette signiert ist. Diese lassen sich vom Burp CA-Zertifikat nicht täuschen.
  2. Apps, die funktionieren, ohne dass Pakete erfasst werden. Sie verwenden wahrscheinlich kein HTTP (S). Dies können beispielsweise SSH-Clients, Messaging-Dienste wie WhatsApp oder Spiele sein, bei denen der Verlust eines Pakets weniger wichtig ist als bei den meisten schnell eintreffenden Paketen, was für eine UDP-basierte Netzwerkverbindung besser geeignet wäre als für eine TCP-basierte eine wie HTTP. Möglicherweise ignorieren sie auch vorhandene Proxy-Einstellungen, insbesondere wenn Sie nur mit einer HTTP-Proxy-App abfangen. Zum Anzeigen dieser Daten benötigen Sie ein Tool wie Wireshark, das andere Datentypen verarbeiten kann, und eine WLAN-Karte, die den Überwachungsmodus unterstützt.
  3. Apps, die nur etwas Verkehr zeigen. Wenn es sich bei dem angezeigten Datenverkehr um Statistikpakete oder Anzeigen handelt, fallen diese wahrscheinlich in die oben genannte Klasse 2 - die meisten Statistiksysteme scheinen HTTP (S) zu verwenden, da die Implementierung in alles relativ einfach ist und Sie im Allgemeinen über eine Art HTTP verfügen müssen Verbindung offen zum Herunterladen von Werbung.
  4. Apps, die sich nicht wirklich verbinden. Es gibt einige Anwendungen, die so aussehen, als sollten sie eine Verbindung zum Internet herstellen, dies jedoch nicht oder nur unregelmäßig. Dies können Fahrplan-Apps, einige Spiele (bei denen die Highscores beispielsweise täglich aktualisiert werden) oder alles sein, bei dem es möglich ist, Daten größtenteils lokal zu speichern (Mapping-Apps können den "üblichen" Bereich lokal speichern und Anrufe tätigen Bewertungen von Sehenswürdigkeiten oder weiter entfernten Orten). In diesem Fall haben Sie möglicherweise nicht gesehen, wie sie versucht haben, eine Verbindung herzustellen, während Sie zugesehen haben.

Ich würde vorschlagen, den Datenverkehr mit Wireshark zu untersuchen, wenn Sie können, und festzustellen, welche Protokolle verwendet werden, und dann mit geeigneter Software in interessante Protokolle einzutauchen, wobei zu berücksichtigen ist, dass einige absichtlich schwer zu überprüfen sind - verschlüsselte Pakete von Whatsapp sollten nicht lesbar sein , sonst haben sie etwas schlimmes falsch gemacht!

5
Matthew

Beim Pentesting einer iPhone-Anwendung ist ein ähnliches Problem aufgetreten. Die Anwendung verwendete die nativen Bibliotheken nicht und unterstützte den http-Proxy nicht. Um dies zu "beheben", habe ich den gesamten Datenverkehr transparent an den Burp-Proxy weitergeleitet. Eine Beschreibung dieses Setups finden Sie unter Wie erfassen Sie den gesamten Datenverkehr von einer Android App? .

Einige Anwendungen verwenden das Anheften von Zertifikaten. Einige Anwendungen fixieren das erste Zertifikat, das sie sehen, andere Anwendungen haben es in der Anwendung fest codiert. Im ersten Fall müssen Sie nur sicherstellen, dass der Datenverkehr beim ersten Ausführen über Ihren Proxy geleitet wird.

Ich glaube, Sie werden eine Warnung auf der Registerkarte "Burps" sehen, wenn der Client die Verbindung vorzeitig trennt (das Zertifikat wird abgelehnt).

In letzterem Fall ist es etwas schwieriger, da Sie die Binärdatei selbst ändern müssen.

Ich habe nicht versucht, das Anheften von Zertifikaten aus einer Android -Anwendung selbst zu untergraben, aber this links scheint ein guter Ansatz zu sein.

3