Как установить и использовать Mitmproxy для перехвата трафика

Mitmproxy

Mitmproxy — это бесплатный и открытый интерактивный HTTPS-прокси. В этой статье покажу, как установить и использовать Mitmproxy. Это будет больше шпаргалка, чем гайд, чтобы у вас всегда было под рукой описание базовых операций и функций.

Еще по теме: Работа с Proxy в Python

Что такое Mitmproxy

Это набор инструментов для перехвата и модификации HTTP/HTTPS-трафика в реальном времени, поддерживающий также работу с WebSocket. Основная функция заключается в том, что он позволяет перехватывать и изменять запросы и ответы прямо на лету, что делает его мощным инструментом для тестирования и анализа сетевого трафика.

Возможности:

  • Перехват и модификация HTTP и HTTPS запросов и ответов в реальном времени
  • Сохранение полных HTTP-сессий для последующего воспроизведения и анализа
  • Повторное воспроизведение клиентских запросов
  • Повторное воспроизведение ответов сервера из ранее записанных сессий
  • Работа в режиме реверсивного прокси для перенаправления трафика на указанный сервер
  • Прозрачный прокси на macOS и Linux
  • Возможность написания пользовательских скриптов для изменения HTTP-трафика на Python
  • Генерация SSL/TLS-сертификатов для перехвата трафика на лету

Mitmproxy предоставляет несколько интерфейсов для работы с основным функционалом. Под Mitmproxy обычно подразумевают любой из этих трех инструментов, каждый из которых использует один и тот же прокси-движок.

  • Mitmproxy — консольный инструмент для интерактивного перехвата и модификации HTTP-трафика. Он поддерживает работу с HTTP/1, HTTP/2 и WebSocket. Тулза позволяет сохранять и модифицировать трафик в режиме реального времени через текстовый интерфейс.
  • Mitmweb — веб-интерфейс для работы с Mitmproxy. Этот инструмент позволяет визуализировать и управлять HTTP-трафиком через браузер.
  • Mitmdump — это версия для командной строки. Его можно сравнить с tcpdump, но для HTTP-трафика. Mitmdump позволяет записывать и анализировать трафик через командную строку, что делает его удобным для автоматизации задач и работы с большим объемом данных.
Mitmweb — веб-интерфейс Mitmproxy
Веб-интерфейс Mitmweb

Тулза позволяет детально изучать и модифицировать HTTP-трафик прямо из консоли. В отличие от Mitmdump, все сетевые потоки сохраняются в оперативной памяти, что делает его идеальным для работы с небольшими выборками трафика, где нужно манипулировать запросами и ответами в реальном времени.

Установка Mitmproxy

В этом разделе я подробно опишу, как установить тулзу на различные операционные системы, такие как macOS, Linux, Windows, а также расскажу про расширенные способы установки, включая использование PyPI и Docker.

Установка на macOS

Рекомендуемый способ установки на macOS — использование Homebrew. Чтобы установить mitmproxy, выполните следующую команду в терминале:

Если вы предпочитаете не использовать Homebrew, вы можете скачать автономные бинарные файлы с официального сайта mitmproxy.org.

Для систем на базе Apple Silicon требуется Rosetta.

Установка на Linux

Лучший способ установить на Linux — это скачать бинарные файлы с сайта.

Некоторые дистрибутивы Linux предоставляют пакеты Mitmproxy в своих репозиториях (например, Arch Linux, Debian, Ubuntu, Kali Linux, OpenSUSE и другие). Однако разработчики не занимаются поддержкой этих пакетов, и они часто могут отставать от последней версии. Если у вас возникнут проблемы с такими пакетами, обратитесь напрямую к поддерживающим их репозиториям.

Установка на Windows

Для установки на Windows загрузите установочный файл с сайта. Также доступны автономные бинарные файлы, но они могут запускаться медленнее из-за необходимости извлечения некоторых файлов в временные директории при первом запуске.

После установки программы mitmproxy, mitmdump и mitmweb будут добавлены в переменную окружения PATH, и вы сможете запускать их из командной строки.

Установите Windows Terminal для улучшения отображения интерфейса консоли.

Все инструменты Mitmproxy также поддерживаются в WSL (Windows Subsystem for Linux). Установив WSL, следуйте инструкциям по установке для Linux.

Другие способы установки

Если вы хотите установить напрямую из исходного кода или с основной ветки GitHub, обратитесь к файлу CONTRIBUTING.md на странице проекта в GitHub.

Если ваши дополнения для требуют установки дополнительных Python-пакетов, можно установить Mitmproxy через PyPI.

Хотя существует множество способов установки, я рекомендую использовать pipx. Это позволит вам легко управлять зависимостями для разных проектов.

  1. Установите последнюю версию Python (требуется версия 3.10 или выше).
  2. Установите pipx.
  3. Выполните команду:

Чтобы установить дополнительные пакеты для Python, выполните:

Использование Docker-образов

Инструмент также доступен в виде официальных Docker-образов, которые можно найти на DockerHub. Это особенно удобно для работы в контейнерах, когда вы хотите изолировать окружение.

Инструменты Mitmproxy распространяются в виде готовых пакетов, которые можно найти на официальном сайте проекта. Там же можно найти подробную документацию и инструкции по установке.

Исходный код проекта доступен в репозитории GitHub, что позволяет разработчикам вносить изменения и улучшения, а также создавать свои кастомные скрипты для работы с трафиком.

Использование Mitmproxy

Основные команды

Запустить прокси на порту 8001:

Запустить реверсивный прокси на порту 8001 с перенаправлением на порт 4000:

Записать потоки в файл при поступлении:

Прочитать потоки из файла:

Повторить запросы клиента из сохраненного файла:

Повторить ответы сервера из сохраненного файла:

Выполнить скрипт:

Получить быструю справку:

Управление перемещением

Копирование в буфер обмена

Команды для экспорта текущего потока в системный буфер обмена:

Копирование в curl:

Копирование в httpie:

Копирование как raw:

Копирование HTTP-запроса:

Копирование HTTP-ответа:

Сохранение в файл

Команды для сохранения потока в файл:

Экспорт в curl:

Экспорт в httpie:

Экспорт как raw:

Экспорт HTTP-запроса:

Экспорт HTTP-ответа:

Основные клавиши

Глобальные горячие клавиши

Просмотр потоков

Фильтры в Mitmproxy

Для просмотра потоков можно использовать фильтры. Например:

URL, содержащий «google.com»:

Запросы, в теле которых содержится строка «test»:

Все, кроме запросов с типом контента text/html:

Заменить строку в GET-запросе:

HTTP-запросы при посещении сайта Google
HTTP-запросы при посещении сайта Google

Скрипты в Mitmproxy

Пример скрипта, который отправляет ответ без обращения к удаленному серверу:

Пример скрипта, добавляющего HTTP-заголовок к каждому ответу:

Заключение

Теперь у вас есть удобная шпаргалка для работы с Mitmproxy, которая поможет его эффективно использовать для анализа HTTPS-трафика.

ПОЛЕЗНЫЕ ССЫЛКИ:

QUASAR

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

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