Mitmproxy 11 prosjektet er her, og det utvikler verktøy for å fange trafikk i forbindelser opprettet via HTTPS, med muligheter for inspeksjon, modifikasjon og reproduksjon av trafikk. Hovedformålet med Mitmproxy er å organisere trafikkovervåking i bedriftssystemer og diagnostisere problemer, for eksempel å avdekke skjult nettverksaktivitet fra applikasjoner. Kildekode for prosjektet er skrevet i Python og distribueres under MIT-lisensen.
For å analysere HTTPS-trafikk plasseres Mitmproxy på et transittknutepunkt, hvor det fanger opp forespørslene fra klienten og videresender dem som sine egne forespørsel til målet. server. Under den forespurte klientsesjonen etablerer Mitmproxy en vanlig HTTPS-forbindelse med den forespurte serveren, mens det oppretter en falsk forbindelse med klienten på vegne av målserveren, med et slumptaugenerert SSL-sertifikat for klienten. Trafikken mottatt fra klienten videresendes til målserveren, og de mottatte responsene oversendes tilbake til klienten.

For å videresende trafikk gjennom mitmproxy støttes flere metoder, som å spesifisere mitmproxy-adressen som HTTP-proxy i nettleserinnstillingene, å fungere som en SOCKS5-proxy, å bruke det som en omvendt proxy foran HTTP-serveren, og å organisere transparent forwarding ved hjelp av pakkefilterregler eller rutinginnpakning. For å unngå at den falske sertifikatet brukt ved forbindelsen til klienten utløser sikkerhetsvarsler i nettleseren, tilbys brukeren å installere rotsertifikatet fra mitmproxy, noe som kan gjøres enten manuelt eller ved å åpne den spesielle verten mitm.it i nettleseren.

Mitmproxy støtter HTTP/2, HTTP/3, Websockets, normalisering av pakkeordren i strømmen, tilkobling av skriptbehandlere for å modifisere trafikk i sanntid, lagring av forespørslene for senere reproduksjon, generering TLS-sertifikater For intercepted sessions, cleaning of modification time headers to disable client-side caching, reverse proxy mode for redirecting traffic to the server, blocklists for filtering specific requests, selective request redirection (including serving local files in response), and content and header modification based on regular expressions. For traffic analysis, a command-line utility similar to tcpdump, mitmdump, and the web interface, mitmweb, are provided.


A key enhancement in the new version is full support for the HTTP/3 protocol, which employs the QUIC (Quick UDP Internet Connections) protocol as a transport for HTTP/2 (QUIC is built on top of UDP and supports multiplexing of multiple connections while providing encryption methods equivalent to TLS/SSL). Mitmproxy allows for both transparent traffic interception and operation as a reverse proxy for HTTP/3. HTTP/3 interception has been tested in Firefox, Chrome, and various versions of cURL.
Other notable changes in the new branch are related to improvements in DNS support in the context of placing DNS records for HTTPS and ECH (Encrypted Client Hello). The new version adds support for DNS record requests other than A/AAAA (for example, ECH transmits encryption public key information in HTTPSSVC DNS records). A mode for cleaning ECH keys from HTTPS records in DNS has been added. For DNS operations, a transition to the Hickory library, written in Rust and developed by the Let’s Encrypt project, has been implemented. DNS-over-TCP support has been added. An option to disable processing of settings from /etc/hosts has been implemented.
Kilde: opennet.ru
