it-swarm.com.de

Wie erfasst man den gesamten Datenverkehr von einer Android App)?

Ich möchte den gesamten Datenverkehr von einer Android App für die Pen-Tests erfassen. Wie mache ich das?

Folgendes habe ich bereits versucht:

Ich habe die App auf einem Emulator installiert und den Emulator mit einem http-proxy Gestartet, der auf einen lokalen Port zeigt. Auf dem lokalen Port wurde ZAP ausgeführt. Ich kann den Datenverkehr vom Browser abfangen, aber nicht von der App.

Möglicherweise verwendet meine App https und ich dachte, ich hätte ein Zertifikatproblem. Also habe ich das OWASP ZAP-Zertifikat exportiert und Push auf dem Emulator Android bearbeitet. Natürlich haben Android> = ICS Versionen ihre Zertifikatsnamen mit OpenSSL gehasht. Also habe ich einige Anweisungen befolgt hier und es ist mir gelungen, mein ZAP-Zertifikat auf meinem Gerät zu erhalten. Trotzdem kann ich den Verkehr nicht abfangen.

Mein nächster Gedanke war: Möglicherweise ist diese App beschädigt. Also habe ich Facebook-, Pocket- und Guardian-Apps (Nachrichten) aus dem App Store in den Emulator installiert und versucht, deren Datenverkehr abzufangen. Ich kann den Datenverkehr von Guardian abfangen, aber Pocket und Facebook können keine Verbindung zum Internet herstellen (meine App auch). Ich kann das Internet jedoch über meinen Browser auf dem Emulator durchsuchen.

Ehrlich gesagt bin ich am Ende meines Verstandes. Ich verstehe nicht, warum das passiert. Ich habe vorher noch nicht viele Pen-Tests gemacht, also fehlt mir wohl die Erfahrung. Könnte jemand dieser armen Seele helfen?

(Natürlich kann ich immer Wireshark verwenden, aber es wäre nicht in der Lage, die Anfragen und Antworten wie ZAP oder Burp zu miTM.)

BEARBEITEN:

Nachdem ich wie ein Verrückter "googelt" hatte, stellte ich schließlich fest, dass Android keinen globalen Proxy unterstützt (der sowohl für Browser als auch für Apps funktioniert). Weitere Infos finden Sie hier .

16
Pervy Sage

Sie können den Facebook-Verkehr nicht abfangen, da SSL-Pinning verwendet wird.

Beim Pen-Testen einer Android -Anwendung können Sie auf vier verschiedene Szenarien stoßen. Ich werde sie unten kurz auflisten. Einen ausführlicheren Artikel finden Sie hier >> Mein Blog Der Artikel enthält auch Videos, auf die Sie verweisen können.

  1. Nicht-SSL-Anwendung

Dies ist die einfachste Android -Anwendung, auf die Sie möglicherweise stoßen. Spiele sind Beispiele. Ein Großteil des Datenverkehrs geht über http. Um den Datenverkehr abzufangen, müssen Sie nur auf die WLAN-Proxy-Einstellungen des Geräts/verweisen Emulator auf den Laptop, auf dem der Burp/Zap-Proxy ausgeführt wird.

  1. Anwendungen, die HTTPS-Verkehr verwenden und sich auf die vertrauenswürdigen Anmeldeinformationen des Geräts stützen

Anwendungen wie Instagram verwenden HTTPS, um mit dem Server zu kommunizieren. Sie stützen sich jedoch auf die vertrauenswürdigen Anmeldeinformationen des Geräts. Um diesen Datenverkehr abzufangen, können Sie Ihr Proxy-Zertifikat zu den vertrauenswürdigen Anmeldeinformationen Ihres Geräts hinzufügen, indem Sie das Öffnen von Settings > Security > Trusted credentials Hinzufügen.

  1. Anwendungen, die SSL-Pinning verwenden

Bestimmte Anwendungen verwenden möglicherweise SSL-Pinning, um sicherzustellen, dass die Anwendung auch dann sicher ist, wenn ein vertrauenswürdiger Berechtigungsnachweis gefährdet wird. Cydia-Substratmodul Android Trust Killer oder Xposed-Modul JustTrustMe kann verwendet werden, um die SSL-Pinning-Steuerung zu umgehen.

  1. Anwendungen, die ihren eigenen Credential Store verwenden

Die Facebook Android -Anwendung verwendet ihren pwn-Anmeldeinformationsspeicher. Aus diesem Grund können Sie den Datenverkehr nicht normal abfangen. Um dies zu umgehen, müssen Sie die Anwendung in Smali-Code zerlegen. Fügen Sie das gewünschte Zertifikat hinzu Formatieren Sie den Code, kompilieren Sie ihn neu, signieren Sie ihn und installieren Sie ihn erneut. Der Vorgang wird hier detailliert beschrieben >> Blog von DewHurst Security .

12
hax

Hier sind die Schritte, die ich empfehlen würde. Schritt 6 ist die direkteste Antwort, aber ich würde empfehlen, die anderen Schritte durchzugehen. Beachten Sie, dass diese Antwort anderen Antworten ähnlich ist, jedoch in vielen Schritten einfacher ist.

1) Proxy konfigurieren - Konfigurieren Sie Burp Suite im transparenten Modus und überwachen Sie alle Schnittstellen aller von Ihrer Anwendung verwendeten Ports, z. B. 443.

2) Zertifizierungsstelle installieren - Zertifikat auf dem Desktop exportieren und dann adb Push file.der /sdcard/<file>.cer (beachten Sie, dass wir .der in .cer umbenannt haben) und dann zu Settings -> Security -> Install from Device Storage und installieren Sie Ihr Zertifikat.

3) Systemproxy - Versuchen Sie, den Datenverkehr zu übertragen, indem Sie Ihre Android Proxy-Einstellungen (in Ihrem WLAN-Setup) ändern. Wechseln Sie den Adapter Ein und Aus (Einschalten des Flugzeugmodus für eine Sekunde) kann hier manchmal helfen, wenn dies nicht funktioniert.

4) Debug-Zertifikatsprobleme - Beachten Sie die Registerkarte Alerts in Burp Suite auf SSL/TLS-Probleme. Möglicherweise verwendet Ihre Anwendung ein fest codiertes Zertifikat, ein Zertifikat-Pinning oder ein Public-Key-Pinning, um Sie von der Verwendung Ihrer Zertifizierungsstelle abzuhalten. Sie können versuchen, SSL-Passthrough auf der Registerkarte "Proxy-Optionen" zu aktivieren, um festzustellen, ob dies für einige oder alle Ihrer Zieldomänen ein Problem darstellt. Wenn das Anheften von Zertifikaten ein Problem darstellt, müssen Sie den Schutz des Anheftens von Zertifikaten umgehen.

5) Spoof DNS - Setzen Sie /etc/dnsspoof.conf so, dass es einen Eintrag für Ihre Domain und/oder einen Platzhalter enthält (Beispiele unten):

192.168.1.101 example.com
192.168.1.101 *.com

Stellen Sie Ihren DNS-Server auf einen Host ein, den Sie steuern, und führen Sie den folgenden Befehl aus (dnsspoof ist bereits auf Kali installiert):

dnsspoof -i eth0 -f /etc/dnsspoof.conf Host 192.168.1.201

Wenn Ihre Anwendung nicht den System-Proxy-Einstellungen oder dem DNS entspricht, würde ich die Verwendung von Wireshark empfehlen, um das Verhalten zu überprüfen, bevor Sie fortfahren. Möglicherweise verwendet Ihre Anwendung ein Nicht-HTTP-Protokoll.

6) Debug Network Traffic - Führen Sie Ihre Anwendung in einem Emulator wie Genymotion aus, vorzugsweise im Bridged-Modus. Hören Sie dann auf Ihre Hauptschnittstelle und verwenden Sie einen Anzeigefilter nur auf Ihrem Gerät ip.addr eq 192.168.1.201.

7) Dekompilieren der Anwendung - Verwenden Sie dex2jar, um die Anwendung zu dekomplizieren und den Code zu überprüfen, der den Netzwerkverkehr erzeugt, um Einblicke zu erhalten.

d2j-dex2jar.bat "/path/to/the.apk" -o "/path/to/the/new.jar"

Öffnen Sie die JAR-Datei mit JD-GUI.

8) [~ # ~] mitm [~ # ~] - Mann in der Mitte des Verkehrs mit einem Tool wie ettercap. Erwägen Sie die Verwendung von https://github.com/summitt/Burp-Non-HTTP-Extension oder anderen generischen TCP Proxys (hier ist einer, den ich mag: dummyproxy.py ), um den Datenverkehr in der Mitte zu managen, obwohl dies keine Verschlüsselung wie TLS umgeht.

3
Alex Lauerman

Versuchen Sie es mit mitmproxy . Sie können damit sowohl den HTTP- als auch den HTTPS-Verkehr verfolgen. Sie können Anfragen und Antworten anzeigen sowie erfassen/bearbeiten.

1
Jonathan J.

Es gibt verschiedene Möglichkeiten, Android - Apps zuverlässig abzufangen, sofern nicht die Befehlszeilenanweisungen --tcpdump und --http-proxy des SDK-Emulators Android verwendet werden (auch in den Einstellungen des Eclipse-Emulators verfügbar).

Mein Favorit für alle mobilen Apps ist die Verwendung eines DNS Blackhole , das mit dem SDK-Emulator Android weiter automatisiert werden kann:

emulator -dns-server 192.168.0.2 -avd <avdname>

Datenverkehr wie HTTP/TLS kann leicht abgefangen werden, indem Burp (möglicherweise als Root) auf dem DNS-Platzhalterhost ausgeführt wird - obwohl Burp so konfiguriert werden muss, dass die entsprechenden Ports (normalerweise 80 und 443) im unsichtbaren Modus überwacht werden. Darüber hinaus können bestimmte Zertifikats-Pinning-Prüfungen umgangen werden, indem Burp konfigurieren CA-signierte Zertifikate pro Hostname mit einem Platzhalter für die Top-Level-Domain (z. B. * .google.com) erstellt werden.

Burp kann auch so konfiguriert werden, dass Serverantworten erfassen , was bei der Fehlerbehebung sehr nützlich sein kann.

Wenn Sie Dateihandler zusammen mit Netzwerkprotokollhandlern anzeigen möchten, empfehle ich die Verwendung des Strace-Tools über ADB. strace ist im SDK-Emulator Android enthalten und kann mit ADB oder auf andere Weise auf Geräte kopiert werden.

1
atdre

Ich habe kürzlich eine Anwendung pentestet, die keine native Proxy-Unterstützung bietet. Der Entwickler hatte es nicht absichtlich gemacht, also reparierte er es später.

Ihr Setup ist etwas anders, da ich ein physisches Telefon verwendet habe. Es sollte für Sie ziemlich einfach sein, in Ihrem Labor etwas Ähnliches zu tun. Möglicherweise benötigen Sie jedoch einen zusätzlichen VM-Gast, auf dem Linux ausgeführt wird, wenn Sie dies nicht als Host-Betriebssystem verwenden.

(Transparent Proxy Setup

Um den Datenverkehr abzufangen, habe ich das Ziel NAT den gesamten Datenverkehr auf Port 80 und 443 zu meinem Angriffsproxy) erreicht. In meinem Setup verwende ich einen drahtlosen Zugangspunkt, mit dem das Telefon eine Verbindung herstellt.

Dieses Setup sollte unabhängig davon funktionieren, ob Sie die Proxy-Einstellungen konfiguriert haben oder nicht.

  • Generieren und installieren Sie ein CA-Zertifikat für den Angriffsproxy auf dem Telefon.
  • Richten Sie auf Ihrem Linux-Computer/iptables-Computer eine transparente Weiterleitung ein (Ziel-NAT'ing):

    iptables -t nat -A PREROUTING -i wlan0 -p tcp -m Multiport --dports 80.443 -j DNAT --to attack-proxy-ip: 8080

  • Installieren Sie einen WLAN-Zugangspunkt und setzen Sie das Standard-Gateway auf den iptables-Computer (Kali Linux/192.168.0.100 im Beispiel).

Wenn Sie das Telefon jetzt mit dem drahtlosen Zugangspunkt verbinden, sollte der gesamte Webverkehr auf Ihren Angriffsproxy umgeleitet werden.

Anmerkungen:

Ich habe Burp verwendet, daher musste ich die transparente Proxy-Unterstützung aktivieren. Es heißt "Support unsichtbares Proxying" in Burp.

1

Verbinden Sie Ihr Android-Gerät und Ihre Penetrationstestplattform mit einem LAN. Führen Sie einen ARP-Spoof-/Giftangriff gegen das Android-Gerät mit ettercap (oder Ihrem bevorzugten Arp-Spoofing) durch Dies führt dazu, dass alle Pakete zum und vom Android Gerät) zuerst Ihre Penetrationstestplattform durchlaufen.

ettercap -T -w dump -M ARP /xx.xx.xx.xx/ // Ausgabe:

Dadurch wird ein Speicherauszug auf dem Bildschirm angezeigt. Sie können jedoch konfigurieren, dass ein Speicherauszug in eine Datei erfolgt und die Pakete dann mit Wireshark analysiert werden.

Ettercap

Kain

0
ap288

So erfasse ich den gesamten Datenverkehr meines Android Telefons).

1) Ich habe ein verwurzeltes Android Telefon).
2) Installieren Sie FS Cert Installer und dann habe ich das Burp-Zertifikat in mein Telefon importiert.
3) Verbinden Sie mein Telefon und meinen Laptop im selben WiFi-Netzwerk.
4) Konfigurieren Sie den Proxy im Telefon so, dass die in meinem Laptop vorhandene Burpsuite den gesamten Datenverkehr abhört, der über mein Android Telefon) kommt.

0
one