Mitmproxy 11.1 — локальный перехват трафика на Linux, Windows и macOS

Mitmproxy

После Windows и macOS режим локального перехвата трафика в mitmproxy добрался и до Linux. В версии 11.1 он одинаково работает на всех трех популярных платформах.

Windows, macOS… и теперь Linux!

Год назад local capture mode появился для macOS и Windows. Теперь Linux получил собственную реализацию на базе eBPF, которая позволяет перехватывать трафик конкретных приложений без изменения системных прокси настроек.

Примеры использования:

Как это устроено

Классические режимы mitmproxy (HTTP, SOCKS, reverse proxy) работают на любой операционной системе. Локальный перехват требует отдельного подхода.

  • macOS предъявляет строгие требования к подписанию системных расширении, но предоставляет удобные API для перенаправления трафика.
  • Windows в основном полагается на сторонние библиотеки.
  • Linux предлагает много вариантов, но именно eBPF обеспечивает точный и универсальный механизм перехвата.

eBPF: что происходит внутри ядра

iptables и nftables отлично подходят для фильтрации по IP или PID, но не умеют работать по имени процесса. eBPF позволяет перенаправлять трафик прямо в ядре Linux, без модификации ядра и установки полноценных kernel модулей.

Разработка eBPF оказалась непростой: документации мало, ядро часто выдает странные ошибки. Инструменты вроде Aya и документация docs.ebpf.io значительно упрощают работу.

Как работает локальный перехват трафика

  • mitmproxy_rs запускает перенаправляющий модуль через sudo для доступа к системному вызову bpf().
  • Модуль создает виртуальное сетевое устройство /dev/tun0, загружает eBPF программу и получает список приложении для перехвата.
  • Каждый новый сокет проверяется eBPF программои и при необходимости перенаправляется в mitmproxy.
  • Пакеты из /dev/tun0 возвращаются в mitmproxy_rs, где собираются в TCP и UDP потоки и передаются дальше.

Такой подход сложнее простого правила iptables, но позволяет точно контролировать, какой трафик перехватывается и из каких приложении.

Ограничения на Linux

  • Перехватывается только исходящий трафик (egress). Для входящих соединении используется reverse proxy.
  • Для загрузки BPF программы требуются root права.
  • Поддерживаются современные ядра Linux версии 6.8 и выше.
  • Имена процессов учитываются только по первым 16 символам.
  • Перехват трафика из контейнеров возможен только при использовании сети хоста ( --network host).
  • WSL не поддерживается, так как eBPF там отключен по умолчанию.

Заключение

Поддержка Linux в режиме локального перехвата делает mitmproxy по настоящему кроссплатформенным инструментом. Теперь один и тот же подход к перехвату трафика работает на Windows, macOS и Linux без необходимости вмешиваться в системные прокси настройки.

Реализация на базе eBPF сложнее классических решении вроде iptables, но именно она обеспечивает точный контроль над тем, какой трафик и из каких приложении перехватывается. Несмотря на существующие ограничения, функциональность уже готова к реальному использованию.

Выход mitmproxy 11.1 с локальным capture mode для Linux — это важный шаг в развитии инструмента. Для разработчиков, инженеров по безопасности и всех, кто анализирует сетевой трафик, это означает больше гибкости, меньше ручных настроек и единый опыт работы на всех основных платформах.

QUASAR

Этичный хакер и компьютерный ниндзя. Новые статьи в нашей Телеге!

Добавить комментарий