Ein-Klick-Paketmitschnitt¶
Die Ein-Klick-Man-in-the-Middle-Paketmitschnitt-Funktion startet vollautomatisch einen globalen Man-in-the-Middle-Proxy auf dem Gerät. Der Unterschied zu den von Ihnen üblicherweise verwendeten Tools besteht darin, dass Sie sich nicht um Probleme wie die Zertifikatsinstallation und die Proxy-Einrichtung kümmern müssen und auch nicht über unterschiedliche Mitschnittmethoden für verschiedene Systemversionen nachdenken müssen. Es funktioniert nahtlos mit Android 6.0 - 14. Wir haben bereits alles für Sie erledigt, sodass Sie sich nur noch auf Ihre eigentliche Aufgabe konzentrieren müssen. Zudem werden die Echtzeit-Modifikation und das Abfangen von Paketen unterstützt, was es im Vergleich zu herkömmlichen GUI-Programmen besser für den praktischen Einsatz in Ihrem Geschäftsbetrieb geeignet macht, anstatt nur zum "mal schnell Pakete anzusehen".
Darüber hinaus können wir Ihnen garantieren, dass keine Pakete übersehen werden (mit Ausnahme von Certificate Pinning), und die Erfolgsrate beim Mitschneiden ist höher als bei herkömmlichen Softwaremethoden. Sie können den HTTP/S-Traffic von Anwendungen abfangen. Der Man-in-the-Middle-Proxy wird automatisch aktiviert und deaktiviert. Nach dem Beenden des Skripts werden das Gerät und das Netzwerk in ihren ursprünglichen Zustand zurückversetzt; Sie müssen keine weiteren Einstellungen vornehmen. Das Skript unterstützt auch internationales Mitschneiden (realisiert durch einen Upstream-Proxy), sodass Sie problemlos Daten von ausländischer Software erfassen können.
Achtung
Vorbereitung¶
Stellen Sie zunächst sicher, dass sich der Computer und das Gerät im selben Netzwerksegment befinden oder über eine USB-Verbindung verbunden sind. Im Folgenden gehen wir davon aus, dass 192.168.0.2 die IP-Adresse des Mobilgeräts ist, auf dem FIRERPA ausgeführt wird. Stellen Sie außerdem sicher, dass Sie den Code des Projekts ordnungsgemäß geklont und die erforderlichen Abhängigkeiten installiert haben. Überprüfen Sie in der Kommandozeile, ob mitmproxy erfolgreich installiert wurde (kann durch Eingabe von mitmdump in der Kommandozeile überprüft werden).
Wenn Sie kein Python installiert haben oder mit dem Klonen von Repositories und der Installation von Abhängigkeiten nicht vertraut sind, können Sie startmitm.exe von unserer Release-Seite herunterladen. Dies ist eine gepackte Version von startmitm.py, mit der Sie den Paketmitschnitt ohne Python-Installation durchführen können. Es handelt sich um ein Konsolenprogramm, und die Befehlsparameter sind identisch mit denen von startmitm.py (Diese Datei kann von Antivirenprogrammen als schädlich eingestuft werden. Die Verwendung erfolgt auf eigene Gefahr).
Grundlegender Paketmitschnitt¶
Hinweis
Mit dem folgenden Befehl können Sie schnell einen Paketmitschnitt starten. Dies ist die einfachste Verwendungsmethode.
python3 -u startmitm.py 192.168.0.2
Wichtig
Drücken Sie einmal die Tastenkombination STRG + C, um den Mitschnitt zu beenden. Bitte drücken Sie die Tasten nicht mehrmals hintereinander.
Gemeinsamer Paketmitschnitt¶
Wenn Sie die Analyse gemeinsam mit Kollegen im selben LAN durchführen möchten, führen Sie den folgenden Befehl aus. Ihre Kollegen können dann in ihrem Browser http://IHRE_IP_ADRESSE:7890 öffnen, um dieselbe Mitschnitt-Weboberfläche zu sehen wie Sie. So können Sie gemeinsam analysieren.
python3 -u startmitm.py 192.168.0.2 --web-port 7890 --web-host 0.0.0.0
Spezifische Anwendung¶
Wenn Sie den Traffic einer bestimmten Anwendung anstelle des gesamten System-Traffics abfangen möchten, können Sie dies tun, indem Sie :Paketname an die IP-Adresse anhängen, um die Daten einer bestimmten Anwendung zu erfassen. Das folgende Beispiel fängt nur den Traffic von com.some.package ab.
python3 -u startmitm.py 192.168.0.2:com.some.package
Echtzeit-Modifikation¶
Sie können Anfragedaten und Antwortdaten von Anwendungen in Echtzeit ändern. Diese Funktion basiert auf den Event-Hooks von mitmproxy. Sie müssen selbst ein Hook-Skript unter Verwendung der entsprechenden mitmproxy-API schreiben. Informationen zum Schreiben von Hook-Skripten finden Sie in der offiziellen Dokumentation von mitmproxy unter docs.mitmproxy.org/stable/addons-examples sowie in den Codebeispielen unter mitmproxy/examples/contrib.
Angenommen, Ihr geschriebenes Hook-Skript heißt http_flow_hook.py, verwenden Sie den folgenden Befehl, um es anzuwenden.
python3 -u startmitm.py 192.168.0.2 -s http_flow_hook.py
Unterschiedliche Netzwerke¶
Wenn sich Ihr Mobiltelefon und Ihr Computer nicht im selben Netzwerk befinden, Sie aber physischen Zugriff auf das Gerät haben, können Sie den Paketmitschnitt auch über USB-ADB durchführen. Stellen Sie sicher, dass das Gerät über USB-ADB mit dem Computer verbunden und korrekt autorisiert ist.
Wenn nur ein ADB-Gerät mit dem Computer verbunden ist, verwenden Sie den folgenden Befehl für den Mitschnitt. localhost steht hierbei für das ADB-Gerät.
python3 -u startmitm.py localhost
Wenn mehrere ADB-Geräte mit dem Computer verbunden sind, müssen Sie die ADB-Seriennummer angeben. Diese finden Sie in der Ausgabe des Befehls adb devices.
python3 -u startmitm.py localhost --serial bfde362
Wenn Ihre Umgebung noch restriktiver ist, z. B. wenn sich das Mobiltelefon und der Computer weder im selben Netzwerk befinden noch ein physischer Kontakt möglich ist, Sie aber auf den FIRERPA-Port zugreifen können, ist ein Man-in-the-Middle-Angriff dennoch möglich. Dies ist typischerweise der Fall, wenn Sie den integrierten frp-Dienst verwenden, um FIRERPA an einen Remote-Server weiterzuleiten, oder wenn Sie den Port 65000 von FIRERPA auf andere Weise an einen anderen Ort weitergeleitet haben. In diesem Szenario können Sie und FIRERPA nur über diesen einen Port direkt kommunizieren, während andere Ports nicht gegenseitig erreichbar sind. Unter diesen Umständen kann das Mobiltelefon auf keinen Port des lokalen Computers zugreifen, und der lokale Computer kann nur auf den FIRERPA-Port des Mobiltelefons zugreifen (oder das Mobiltelefon hat eine öffentliche IP, aber der Computer befindet sich in einem privaten Netzwerk). In diesem Fall müssen Sie wie folgt vorgehen. (Ein über OpenVPN verbundenes Netzwerk fällt nicht unter diese Kategorie).
Hierfür ist eine Kombination von Schritten erforderlich. Installieren Sie zunächst Ihren eigenen öffentlichen ADB-Schlüssel auf dem Gerät, indem Sie adb_pubkey.py verwenden oder die Schnittstelle direkt aufrufen. Führen Sie nach der Installation die folgenden Schritte aus, wobei x.x.x.x die IP-Adresse oder 127.0.0.1 ist, über die der Port 65000 erreichbar ist. Passen Sie dies entsprechend Ihrer Situation an.
adb connect x.x.x.x:65000
Führen Sie abschließend den Paketmitschnitt wie oben beschrieben über die USB-Methode durch.
python3 -u startmitm.py localhost
Oder auf diese Weise, wobei die serial hier die adb connect-Adresse und nicht die hexadezimale Seriennummer ist.
python3 -u startmitm.py localhost --serial x.x.x.x:65000
Upstream-Proxy / Internationaler Paketmitschnitt¶
startmitm startet selbst mitmproxy als Proxy-Dienst. Standardmäßig wird der Traffic von mitmproxy über die Netzwerkschnittstelle des lokalen Computers gesendet. Wenn der Traffic stattdessen über einen Upstream-Proxy geleitet werden soll, können Sie diesen wie folgt angeben. Es werden nur Proxys unterstützt, die das HTTP-Protokoll verwenden. Gleichzeitig müssen Sie einen Upstream-DNS angeben, der TCP-Abfragen unterstützt, um DNS-Poisoning zu vermeiden.
Tipp
python3 -u startmitm.py 192.168.0.2 --upstream http://127.0.0.1:7890 --proxy-dns 8.8.8.8
Wenn der Upstream-HTTP-Proxy eine Authentifizierung erfordert, verwenden Sie den folgenden Befehl und ersetzen Sie USER:PASSWORD.
python3 -u startmitm.py 192.168.0.2 --upstream http://USER:PASSWORD@x.x.x.x:8080 --proxy-dns 8.8.8.8
Alle oben genannten Befehle leiten den Traffic des Geräts über den Upstream-Proxy und senden alle DNS-Abfragen des lokalen Computers über den Proxy an 8.8.8.8.