Zum Inhalt springen
GProxy
Registrierung
Гайды 5 Min. Lesezeit 37 Aufrufe

mitmproxy

Erkunden Sie mitmproxy, um HTTP/S-Verkehr effektiv abzufangen und zu analysieren. Ideal für Debugging, Sicherheitstests und

Безопасность
mitmproxy

mitmproxy ist ein kostenloses und quelloffenes interaktives Konsolentool, eine Weboberfläche und eine Python-Bibliothek, die zum Abfangen, Überprüfen, Modifizieren und Wiederholen von HTTP/S-Verkehr entwickelt wurde. Es dient als leistungsstarker Man-in-the-Middle-Proxy für Entwickler, Sicherheitsforscher und QA-Ingenieure, die mit Webanwendungen, APIs und mobilem Datenverkehr arbeiten.

Überblick über mitmproxy

mitmproxy fungiert als Proxy-Server, der zwischen einem Client und einem Zielserver positioniert ist. Der gesamte HTTP- und HTTPS-Verkehr, der durch den Proxy fließt, kann in Echtzeit angezeigt, gefiltert und manipuliert werden. Seine Kernfunktionalität ermöglicht eine detaillierte Überprüfung von Anfrage- und Antwort-Headern, -Bodies und anderen Attributen. Die Tool-Suite umfasst:

  • mitmproxy: Eine interaktive Terminaloberfläche für die Echtzeit-Verkehrsanalyse.
  • mitmweb: Eine browserbasierte grafische Benutzeroberfläche, die ähnliche Funktionen wie mitmproxy bietet, aber über einen Webbrowser zugänglich ist.
  • mitmdump: Ein Befehlszeilentool zur programmatischen Modifikation und Protokollierung von Verkehr, geeignet für Skripting und Automatisierung.

Hauptmerkmale

SSL/TLS-Abfangen

mitmproxy generiert seine eigenen SSL/TLS-Zertifikate im laufenden Betrieb, wodurch es verschlüsselten HTTPS-Verkehr entschlüsseln und überprüfen kann. Dies erfordert, dass der Client dem mitmproxy CA-Zertifikat vertraut.

Interaktive Oberfläche

Sowohl mitmproxy als auch mitmweb bieten interaktive Umgebungen zur Anzeige und Verwaltung von Traffic-Flows. Benutzer können Flows filtern, Inhalte durchsuchen, Anfragen/Antworten bearbeiten und bestimmte Flows für eine spätere Analyse markieren.

Verkehrsmodifikation

Anfragen und Antworten können im laufenden Betrieb über die interaktive Oberfläche oder über Python-Skripte geändert werden. Dies ermöglicht das Testen von Grenzbereichen, das Einfügen von Headern, das Ändern von Daten oder das Simulieren verschiedener Serverantworten.

Replay-Funktionalität

mitmproxy unterstützt das Wiederholen aufgezeichneter Client-Anfragen an einen Server oder das Wiederholen von Server-Antworten an einen Client. Dies ist nützlich, um bestimmte Szenarien zu testen, ohne Client-Aktionen erneut auszuführen, oder um Serververhalten zu simulieren.

Skripting und Automatisierung

mitmdump bietet eine Python-API zur Entwicklung benutzerdefinierter Skripte. Diese Skripte können den Verkehr basierend auf definierter Logik programmatisch überprüfen, modifizieren, umleiten oder verwerfen, was automatisierte Tests und komplexe Verkehrsmanipulationen erleichtert.

Transparenter Proxy-Modus

mitmproxy kann im transparenten Proxy-Modus betrieben werden, bei dem Clients keine explizite Proxy-Konfiguration benötigen. Der Netzwerkverkehr wird auf der Netzwerkschicht, oft über Routerregeln oder Firewall-Konfigurationen, zu mitmproxy umgeleitet.

Installation

mitmproxy kann mit pip installiert werden:

pip install mitmproxy

Für bestimmte Betriebssysteme sind vorkompilierte Binärdateien von der offiziellen mitmproxy-Website verfügbar, oder es kann über Paketmanager wie Homebrew unter macOS installiert werden.

Grundlegende Nutzung

mitmproxy starten

Um die interaktive Konsolenoberfläche zu starten:

mitmproxy

Um die Weboberfläche zu starten:

mitmweb

Standardmäßig lauscht mitmproxy auf localhost:8080.

Client-Konfiguration

Clients müssen so konfiguriert werden, dass sie mitmproxy als ihren HTTP/S-Proxy verwenden.

Browser-Beispiel (Firefox):
1. Firefox-Einstellungen öffnen.
2. Zu den Netzwerk-Einstellungen oder Proxy-Einstellungen navigieren.
3. "Manuelle Proxy-Konfiguration" auswählen.
4. HTTP-Proxy auf 127.0.0.1 und Port auf 8080 setzen.
5. SSL-Proxy auf 127.0.0.1 und Port auf 8080 setzen.
6. Sicherstellen, dass "Diesen Proxy-Server für alle Protokolle verwenden" aktiviert ist oder andere Protokolle ähnlich konfigurieren.

Betriebssystem (macOS):
1. Zu Systemeinstellungen > Netzwerk > WLAN > Details gehen.
2. "Proxies" auswählen.
3. "Web-Proxy (HTTP)" und "Sicherer Web-Proxy (HTTPS)" aktivieren.
4. Server auf 127.0.0.1 und Port auf 8080 für beide setzen.

SSL/TLS-Zertifikat Installation

Um HTTPS-Verkehr zu entschlüsseln, müssen Clients dem mitmproxy CA-Zertifikat vertrauen.
1. Während mitmproxy läuft, navigieren Sie mit einem konfigurierten Client-Browser zu http://mitm.it.
2. Laden Sie das entsprechende CA-Zertifikat für das Betriebssystem oder den Browser des Clients herunter und installieren Sie es.
3. Für Systeme wie Android oder iOS sind spezifische Installationsschritte erforderlich, die oft das Herunterladen des Zertifikats und das manuelle Vertrauen in den Sicherheitseinstellungen beinhalten.

Erweiterte Nutzung

Anfragen und Antworten modifizieren

Über die mitmproxy- oder mitmweb-Oberfläche:
1. Einen Flow auswählen.
2. e (edit) drücken, um die Anfrage oder Antwort zu modifizieren.
3. Die zu bearbeitende Komponente auswählen (z.B. Header, Body, URL).
4. Änderungen vornehmen und q drücken, um zu speichern und den Flow fortzusetzen.

Skripting mit mitmdump

Python-Skripte können an mitmdump übergeben werden, um die Verkehrsmanipulation zu automatisieren.

Beispiel: Modifizieren eines Anfrage-Headers

modify_header.py:

from mitmproxy import http

def request(flow: http.HTTPFlow):
    if "example.com" in flow.request.pretty_host:
        flow.request.headers["X-Modified-By"] = "mitmproxy-script"
        print(f"Modified header for {flow.request.url}")

Ausführen mit mitmdump:

mitmdump -s modify_header.py

Dieses Skript fügt Anfragen, die auf example.com abzielen, einen benutzerdefinierten Header X-Modified-By hinzu.

Beispiel: Modifizieren eines Antwort-Bodies

modify_response.py:

from mitmproxy import http

def response(flow: http.HTTPFlow):
    if "api.example.com/data" in flow.request.url and flow.response.content:
        # Assuming the response is JSON
        data = flow.response.json()
        data["status"] = "modified_by_mitmproxy"
        flow.response.set_json(data)
        print(f"Modified response body for {flow.request.url}")

Ausführen mit mitmdump:

mitmdump -s modify_response.py

Dieses Skript fängt Antworten von api.example.com/data ab, parst sie als JSON, modifiziert ein Feld und sendet das modifizierte JSON zurück an den Client.

Flows wiederholen

mitmproxy ermöglicht das Wiederholen von aufgezeichneten HTTP-Flows.

Client-Anfrage wiederholen:
1. In mitmproxy oder mitmweb einen Flow auswählen.
2. r drücken, um die Client-Anfrage an den Server zu wiederholen. Dies sendet die exakte Anfrage ohne Client-Interaktion erneut.

Server-Antwort wiederholen:
1. Einen Flow auswählen.
2. R (Shift+r) drücken, um die Server-Antwort an den Client zu wiederholen. Dies sendet die aufgezeichnete Server-Antwort an den Client zurück, wobei die tatsächliche Server-Interaktion umgangen wird. Nützlich zum Testen des Client-Verhaltens mit spezifischen Server-Antworten.

Anwendungsfälle

  • API-Entwicklung und Debugging: Überprüfung von Anfragen und Antworten, um das API-Verhalten zu verstehen, Datenformate zu validieren und Integrationsprobleme zu debuggen.
  • Sicherheitstests: Identifizierung von Schwachstellen durch Manipulation von Anfragen (z.B. Einschleusen von SQL-, XSS-Payloads), Testen von Authentifizierungsmechanismen und Analyse von verschlüsseltem Verkehr.
  • Analyse mobiler Anwendungen: Abfangen und Analysieren des Verkehrs von mobilen Anwendungen, um deren Backend-Kommunikation, Datenverarbeitung und potenzielle Sicherheitslücken zu verstehen.
  • Reverse Engineering: Dekonstruktion proprietärer Protokolle oder Verständnis, wie Anwendungen mit Remote-Servern interagieren, durch Beobachtung ihrer Netzwerkkommunikation.
  • Automatisierte Tests: Verwendung von mitmdump-Skripten zur Simulation spezifischer Netzwerkbedingungen, zum Mocken von API-Antworten oder zur Durchführung automatisierter Überprüfungen des Anwendungsverhaltens.

mitmproxy vs. andere Proxy-Tools

Obwohl mehrere Tools HTTP/S-Abfangen anbieten, unterscheidet sich mitmproxy durch seine Open-Source-Natur, leistungsstarke Skriptfähigkeit und flexible Schnittstellen.

Merkmal mitmproxy Burp Suite Community Edition Fiddler (Windows)
Lizenz Open Source (MIT) Proprietär (Kostenlose/Bezahlte Stufen) Proprietär (Kostenlose/Bezahlte Stufen)
Skriptfähigkeit Python API (mitmdump) Begrenzt (Erweiterungen über Java/Python/Ruby) FiddlerScript (JScript.NET), .NET-Erweiterungen
Oberfläche Konsole (mitmproxy), Web-UI (mitmweb) Desktop-GUI Desktop-GUI
SSL/TLS Volles Abfangen Volles Abfangen Volles Abfangen
Verkehrsmod. Ja Ja Ja
Wiederholung Ja (Client/Server) Ja (Repeater) Ja (Composer)
Transparenter P. Ja Ja Ja
Zielgruppe Entwickler, Sicherheitsforscher, Automatisierung Penetrationstester, Web-App-Sicherheit Entwickler, Tester, Web-App-Sicherheit
Plattform Cross-Plattform (Linux, macOS, Windows) Cross-Plattform (Java-basiert) Windows, macOS (über Fiddler Everywhere)

Dieser Vergleich hebt die Stärken von mitmproxy in Bezug auf Automatisierung und Open-Source-Flexibilität hervor, was es zu einer robusten Wahl für technische Benutzer macht, die eine tiefe Kontrolle über ihre Traffic-Analyse-Workflows benötigen.

Aktualisiert: 04.03.2026
Zurück zur Kategorie

Testen Sie unsere Proxys

20.000+ Proxys in über 100 Ländern weltweit

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.