- Введение
- Зачем анализировать трафик с помощью mitmproxy?
- Практические примеры применения
- Установка и инструменты
- Настройка в качестве явного прокси (конфигурация клиента)
- Прозрачный прокси-режим (без ручной настройки клиента)
- Запись, хранение и преобразование потоков.
- Скриптинг и дополнения
- Фильтры и поиск по потоку
- Анализ TLS и технические подробности
- Масштабируемость и производительность
- Операционная безопасность и конфиденциальность
- Практические примеры: мобильные приложения, API и воспроизведение.
- Интеграция с другими инструментами (Wireshark, Burp, CI)
- Оптимальные конфигурации в зависимости от приложения
- Заключительные замечания и юридические предупреждения
- Заключение и практические рекомендации
- Часто задаваемые вопросы
Введение
mitmproxy — это мощный и гибкий инструмент для проверки, обработки и анализа трафика. HTTP/HTTPS В средах разработки он используется для тестирования безопасности и отладки мобильных и веб-приложений. Это руководство содержит пошаговую реализацию, практические примеры, распространенные конфигурации (включая прозрачный проксиРассматриваются рекомендации по безопасности и методы масштабируемости.
Данная статья предназначена для администраторов сайтов, разработчиков, специалистов по DevOps и команд безопасности и содержит примеры и исполняемые команды Linux.
Зачем анализировать трафик с помощью mitmproxy?
митмпрокси Возможность просмотра зашифрованных TLS-запросов и ответов путем установки локального сертификата.MITM CA) на стороне клиента; эта функция отлично подходит для отладки API, анализа поведения приложений, тестирования безопасности и записи/воспроизведения трафика.
В набор входят инструменты. митмпрокси (интерактивный), mitmdump (для скриптов и бэкэнда) и mitmweb (Веб-интерфейс).
Скрипты на Python позволяют автоматизировать фильтрацию, ведение журналов и модификацию полезной нагрузки. Этот инструмент предназначен для... Докер, systemd, iptables/nftables Он совместим и может использоваться как явный Или прозрачный прокси Это.
Практические примеры применения
Отладка API и мобильных приложений
Чтобы предотвратить проблемы с JSON, ошибки CORS или аутентификацию OAuth, вы можете разместить mitmproxy между мобильным устройством и сервером и отслеживать запросы/ответы.
Простой метод: настройте клиент на IP-адрес сервера mitmproxy (порт по умолчанию). 8080) и установите сертификат центра сертификации на устройство.
Тестирование на проникновение и оценка безопасности (в соответствии с правовыми принципами)
Для проведения пентестинга mitmproxy позволяет осуществлять логические атаки, проверку на утечку токенов и анализ TLS-трафика. Всегда имейте при себе письменный договор и разрешение. И избегайте сбора конфиденциальных данных без разрешения.
Запись и воспроизведение трафика
Для воспроизведения ошибок или проведения нагрузочного тестирования можно использовать захваченный трафик. сервер-повтор Попробуйте, чтобы переоценить поведение сервера или клиента.
Установка и инструменты
Базовая установка на Debian/Ubuntu
Установка с помощью pip (рекомендуется для последней версии):
pip3 install mitmproxyУстановка из пакета (простая, но устаревшая версия):
sudo apt update
sudo apt install mitmproxy
Быстрое исполнение
Три основных инструмента:
митмпрокси — Интерактивный интерфейс консоли
mitmdump — Подходит для записи скриптов и бэкэндов.
mitmweb — Веб-интерфейс с графическим пользовательским интерфейсом
Пример выполнения:
mitmweb --listen-port 8080 --showhost
Запуск в Docker
docker run --rm -p 8080:8080 -p 8081:8081 -v $(pwd)/certs:/home/mitmproxy/.mitmproxy mitmproxy/mitmproxy mitmweb --web-host 0.0.0.0
Настройка в качестве явного прокси (конфигурация клиента)
Общие шаги:
Запустите mitmproxy:
mitmproxy --listen-port 8080Генерация и установка сертификата центра сертификации:
После запуска mitmproxy центр сертификации (CA)
~/.mitmproxy/размещен (файл)mitmproxy-ca-cert.pem).В браузере или операционной системе клиента сертификат отображается следующим образом: Доверять Установка (Windows: MMC > Сертификаты; macOS: Связка ключей; Android: Настройки > Безопасность > Установить из хранилища).
Прозрачный прокси-режим (без ручной настройки клиента)
Для сред, где параметры прокси-сервера невозможно настроить на стороне клиента (например, устройства IoT или внутренние сети), используйте следующий способ: прозрачный В этом режиме требуется маршрутизация трафика с использованием iptables/nftables/TPROXY И в ядре включена функция пересылки IP-пакетов.
Включение пересылки IP-пакетов
sudo sysctl -w net.ipv4.ip_forward=1
Пример использования iptables для перенаправления HTTP/HTTPS на порт 8080.
Перенаправьте TCP-порты 80 и 443 на порт 8080 на той же машине (для локального трафика):
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8080
Запуск mitmproxy в прозрачном режиме
mitmproxy --mode transparent --listen-port 8080Примечание: Для HTTPS-трафика в прозрачном режиме на клиентских устройствах должен быть установлен центр сертификации (CA). Для масштабируемой реализации на границе сети используйте TPROXY + nftables Используется для сохранения исходного IP-адреса клиента.
Запись, хранение и преобразование потоков.
Запись с помощью mitmdump
mitmdump -w flows.mitm
Чтение записанного файла
mitmproxy -r flows.mitm
Преобразовать в HAR/pcap
mitmproxy/mitmdump обладают возможностью экспорта (mitmweb имеет опцию экспорта HAR).
Для работы с pcap можно одновременно запустить tcpdump, а затем проанализировать Wireshark с помощью pcap:
sudo tcpdump -i eth0 -w capture.pcap port 80 or port 443Если вам нужно проанализировать TLS в Wireshark, и у вас есть доступ к браузеру, вы можете это сделать. SSLKEYLOGFILE Включите эту функцию для генерации ключей на стороне клиента и передачи их в Wireshark.
Скриптинг и дополнения
mitmproxy интегрируется с Python, и вы можете писать плагины. В следующем примере показано логирование и изменение тела JSON-ответа.
from mitmproxy import http
import json
def response(flow: http.HTTPFlow):
if "api.example.com" in flow.request.pretty_host():
# log URL
print(flow.request.url)
# modify JSON response
if "application/json" in flow.response.headers.get("content-type", ""):
data = json.loads(flow.response.get_text())
data["injected"] = True
flow.response.set_text(json.dumps(data))Запустите дополнение:
mitmdump -s modify_response.py
Фильтры и поиск по потоку
Полезные примеры фильтров:
Отображать только запросы к определенному домену:
~d example.comПоказать только ответы с ошибками 5xx:
~s 500-599
Пример запуска mitmproxy с заданными настройками:
mitmproxy --set stream_large_bodies=2m --showhost
Анализ TLS и технические подробности
mitmproxy can TLS ClientHelloНаборы шифров и СНИ а также оказывать помощь в процессе снятия отпечатков пальцев.
Для полного анализа TLS в средах разработки установите центр сертификации и соберите необходимые данные. JA3 Или UADetector Оно работает.
Масштабируемость и производительность
митмпрокси Он основан на Python и для ресурсоемких задач должен запускаться на подходящем оборудовании или кластере.
Для масштабируемых систем: используйте выделенные серверы или облачные экземпляры с мощной сетью, например, облачный сервер с портами 10 Гбит/с.
В производственных средах, требующих устойчивости к атакам, используйте антивирусные серверы.DDoS и балансировщик нагрузки. Наша компания сотрудничает с Более 85 представительств по всему миру Она обладает возможностью развертывания на периферии сети, что полезно для снижения задержек в торговле и играх.
Операционная безопасность и конфиденциальность
Анализ сети следует проводить только с явного разрешения. Запись трафика без законного согласия является преступлением.
Храните закрытый ключ центра сертификации на аппаратном обеспечении или в менеджере ключей и ограничьте доступ.
Журналы могут содержать конфиденциальные данные (токены, файлы cookie); необходимо указать политику хранения и применить к ним шифрование.
Для работы с конфиденциальной информацией (платежи, карты) действуют правила. PCI/DSS и использовать инструменты MITM только на этапе тестирования.
При использовании для анализа торговых операций или игр, выбирайте выделенный VPS для торговли или игр с соответствующим соглашением об уровне обслуживания (SLA) и защитой от DDoS-атак.
Практические примеры: мобильные приложения, API и воспроизведение.
Отладка мобильных приложений
Запустите mitmproxy на своем ноутбуке:
mitmweb --listen-host 0.0.0.0 --listen-port 8080Подключите ноутбук к той же сети Wi-Fi; например, по IP-адресу. 192.168.1.10.
В настройках Wi-Fi вашего телефона установите для параметра «Прокси» значение «Вручную» и задайте IP-адрес. 192.168.1.10 и порт 8080 Поставь его.
Установите сертификат mitmproxy на телефон.
Просмотр и фильтрация трафика на mitmweb.
Запись и воспроизведение трафика API для тестирования.
Запись:
mitmdump -w api_flows.mitmТранслировать:
mitmdump --server-replay api_flows.mitm --server-replay-nopop
Интеграция с другими инструментами (Wireshark, Burp, CI)
Используйте tcpdump для захвата файлов pcap и их анализа в Wireshark.
Mitmproxy можно использовать в качестве препроцессора трафика для Burp или любого другого анализатора.
В CI/CD: полезно собирать образцы трафика с помощью mitmdump и воспроизводить их на этапах интеграции для имитации реальных условий.
Оптимальные конфигурации в зависимости от приложения
Для торговли: VPS с низкой задержкой, сервер рядом с биржей, сеть с BGP и подходящая CDN. Используйте выделенный торговый VPS для запуска mitmproxy в тестовом режиме и отдельный инструмент логирования, чтобы он не мешал работе механизма исполнения торговых операций.
Для игры: Игровой VPS с низким пингом. Примечание: используется только mitmproxy. TCP/HTTP поддерживает; для анализа UDP необходимо использовать другие инструменты, такие как tcpreplay/Wireshark и тун/тап Использовать.
Для ИИ/рендеринга: mitmproxy полезен для отладки API моделей; для ресурсоемких сетевых задач используйте графический сервер (GPU Cloud) и разместите mitmproxy на отдельном вычислительном сервере.
Заключительные замечания и юридические предупреждения
Перед проведением любого анализа всегда получайте письменное разрешение от владельца или пользователя сервиса.
Такие данные, как информация о картах, пароли и токены, следует хранить в безопасности и удалять после использования.
Для обеспечения эффективной работы используйте защищенные серверы и решение для защиты от DDoS-атак, чтобы предотвратить злоупотребления.
Заключение и практические рекомендации
Анализ трафика с помощью mitmproxy — это гибкий инструмент для отладки, тестирования безопасности и анализа трафика. Простая установка, возможность написания скриптов на Python и функции записи/воспроизведения делают его очень полезным в разработке, тестировании и некоторых сценариях обеспечения безопасности.
Для крупномасштабного производства и анализа используйте серверы с мощной сетью, защитой от DDoS-атак и размещением их в местах, близких к пользователям.









