Die Veröffentlichung des Mitmproxy 11 Projekts wurde vorgestellt, das eine Werkzeugsammlung zur Abhörung von Datenverkehr innerhalb von Verbindungen bietet, die über HTTPS hergestellt werden, mit Funktionen zur Inspektion, Modifikation und Reproduktion des Datenverkehrs. Das Hauptziel von Mitmproxy ist die Überwachung von Datenverkehr in Unternehmenssystemen und die Diagnose von Problemen, wie z.B. die Aufdeckung versteckter Netzwerkaktivitäten von Anwendungen. Der Quellcode des Projekts ist in Python geschrieben und wird unter der MIT-Lizenz vertrieben.
Um HTTPS-Datenverkehr zu analysieren, wird Mitmproxy an einem Transit-Knoten platziert, der die Anfragen des Clients abfängt und sie in seine eigenen Anfragen an das Ziel übersetzt. Server. Mit dem im Verlauf der Client-Sitzung angeforderten Server stellt Mitmproxy eine reguläre HTTPS-Verbindung her, während mit dem Client im Namen des Zielservers eine falsche Verbindung mit einem im laufenden Betrieb generierten gefälschten SSL-Zertifikat hergestellt wird. Der vom Client empfangene Datenverkehr wird an den Zielserver weitergeleitet, und die erhaltenen Antworten werden zurück an den Client übertragen.

Um den Datenverkehr über mitmproxy umzuleiten, stehen mehrere Methoden zur Verfügung, wie z. B. die Angabe der Adresse von mitmproxy als HTTP-Proxy in den Browsereinstellungen, die Nutzung als SOCKS5-Proxy, die Verwendung als Reverse-Proxy vor einem HTTP-Server und die Einrichtung einer transparenten Umleitung mithilfe von Paketfilterregeln oder Routing-Wrapper. Damit das verwendete, beim Client verwendete gefälschte Zertifikat im Browser keine Warnungen über Sicherheitsprobleme bei der Verbindung auslöst, wird dem Benutzer empfohlen, das Stammzertifikat von mitmproxy zu installieren, was sowohl manuell als auch durch den Aufruf eines speziellen Hosts im Browser, mitm.it, erfolgen kann.

Mitmproxy unterstützt HTTP/2, HTTP/3, Websockets, die Normalisierung der Paketreihenfolge im Stream, das Anbinden von Handler-Skripten zur Modifikation des Datenverkehrs in Echtzeit, das Speichern von Anfragen zur späteren Wiedergabe, die Generierung TLS-Zertifikaten für abgefangene Sitzungen, Bereinigung der Modifikationszeit-Header zur Deaktivierung des Client-Cachings, Reverse-Proxy-Modus zum Umleiten des Traffics zum Server, Blocklisten zur Filterung bestimmter Anfragen, selektive Anfrageumleitung (einschließlich der Bereitstellung lokaler Dateien in der Antwort), Inhalt- und Header-Modifikationen basierend auf regulären Ausdrücken. Zur Analyse des Traffics wird ein ähnliches Kommandozeilenwerkzeug wie tcpdump, mit dem Namen mitmdump, sowie das Web-Interface mitmweb angeboten.


Eine der Hauptverbesserungen in der neuen Version ist die vollständige Unterstützung des HTTP/3-Protokolls, bei dem QUIC (Quick UDP Internet Connections) als Transportprotokoll für HTTP/2 eingesetzt wird (QUIC ist eine Erweiterung des UDP-Protokolls, die Multiplexing mehrerer Verbindungen unterstützt und Verschlüsselungsmethoden bietet, die TLS/SSL entsprechen). In Mitmproxy kann das HTTP/3 sowohl für transparenten Traffic-Abfang als auch als Reverse-Proxy verwendet werden. Der Abfang von HTTP/3 wurde in Firefox, Chrome und verschiedenen Versionen von cURL getestet.
Weitere bemerkenswerte Änderungen in der neuen Version beziehen sich auf die verbesserte Unterstützung von DNS im Zusammenhang mit der Bereitstellung von DNS-Einträgen für HTTPS und ECH (Encrypted Client Hello). In der neuen Version wurde die Unterstützung für Anfragen von DNS-Einträgen, die nicht A/AAAA sind, hinzugefügt (zum Beispiel werden im ECH Informationen über den öffentlichen Verschlüsselungsschlüssel in den DNS-Einträgen HTTPSSVC übermittelt). Ein ECH-Key-Cleanup-Modus aus HTTPS-Einträgen in DNS wurde implementiert. Für die Arbeit mit DNS wurde auf die in Rust geschriebene Hickory-Bibliothek umgestellt, die vom Projekt Let’s Encrypt entwickelt wird. Unterstützung für DNS-over-TCP wurde hinzugefügt. Eine Option zur Deaktivierung der Verarbeitung von Einstellungen aus /etc/hosts wurde implementiert.
Quelle: opennet.ru
