Представен е релиз на проекта Mitmproxy 11, който развива инструменти за прихващане на трафик в рамките на HTTPS връзки, с възможности за инспектиране, модификация и последващо възпроизвеждане на трафика. Основната цел на Mitmproxy е организирането на наблюдение на трафика в корпоративни системи и диагностика на проблеми, например, откритие на скрита мрежова активност на приложения. Изходният код на проекта е написан на Python и е разпространен под MIT лиценз.
За анализ на HTTPS трафик, Mitmproxy се разполага на транзитен възел, където прихваща клиентските заявки и ги трансформира в отправяни от него заявки към целевия сървъра. В процеса на сесия с клиента Mitmproxy установява обикновена HTTPS връзка със заявените от клиента сервери, а с клиента установява образна връзка с подменен SSL сертификат, генериран на лету за клиента. Приетият от клиента трафик се пренасочва към целевия сървър, а получените отговори се трансферират обратно към клиента.

За пренасочване на трафика през mitmproxy се поддържат различни методи, като указване на адреса на mitmproxy като HTTP прокси в настройките на браузъра, работа като SOCKS5 прокси, използване като обратен прокси пред HTTP сървъра и организиране на прозрачен пробив с помощта на правила за пакетен филтър или чрез маршрутизиране. За да не води използваният при връзката с клиента подменен сертификат до предупреждения от браузъра за проблеми с безопасността на връзката, в системата на потребителя се предлага да се инсталира коренов сертификат на mitmproxy, което може да бъде направено ръчно или чрез отваряне в браузъра на специален хост mitm.it.

Mitmproxy поддържа HTTP/2, HTTP/3, Websockets, нормализация на реда на пакетите в потока, свързване на скриптове-процесори за модификация на трафика на лету, запазване на заявки за последващо възпроизвеждане, генериране TLS-сертификати за прихващане на сесии, почистване на заглавията за времето на модификация с цел деактивиране на кеширането от страна на клиента, режим на обратен прокси за пренасочване на трафика към сървъра, списъци за блокиране за филтриране на определени заявки, селективно пренасочване на заявки (включително за предоставяне на локални файлове), промяна на съдържанието и заглавията на базата на регулярни изрази. За анализ на трафика предлага се утилита mitmdump, подобна на tcpdump, и уеб интерфейсът mitmweb.


Основното подобрение в новата версия е пълната поддръжка на протокол HTTP/3, в който задействаният протокол QUIC (Quick UDP Internet Connections) служи като транспорт за HTTP/2 (QUIC е надстройка над UDP, която поддържа мултиплексиране на множество свързвания и предлага методи за шифроване, еквивалентни на TLS/SSL). В Mitmproxy за HTTP/3 могат да се използват както прозрачно прихващане на трафика, така и работа в режим на обратен прокси. Приключен е тест за прихващане на HTTP/3 в Firefox, Chrome и различни версии cURL.
Други забележителни промени в новата версия са свързани с подобряване на поддръжката на DNS в контекста на хостване на DNS записи за HTTPS и ECH (Encrypted Client Hello). В новата версия е добавена поддръжка за заявки към DNS записи, различаващи се от A/AAAA (например, в ECH информацията за открития ключ за шифроване се предава чрез DNS записи HTTPSSVC). Добавен е режим за почистване на ECH ключове от HTTPS записи в DNS. Преминава се на библиотеката Hickory, написана на Rust и развивана от проекта Let’s Encrypt. Добавена е поддръжка за DNS-over-TCP. Реализирана е опция за деактивиране на обработката на настройки от /etc/hosts.
Източник: opennet.ru
