Анализ трафика с помощью mitmproxy: полное руководство по отладке и безопасности.
В данной статье рассматривается инструмент Mytemproxy для анализа HTTP/HTTPS-трафика и его применение в области безопасности и отладки.

Анализ трафика с помощью mitmproxy: полное руководство по отладке и безопасности.

В этой статье мы рассмотрим инструмент mitmproxy, используемый для анализа и отладки HTTP/HTTPS-трафика. От установки и настройки до советов по безопасности и практического применения — это руководство поможет вам эффективно управлять вашим трафиком.
0 Акции
0
0
0
0
  1. Введение
  2. Зачем анализировать трафик с помощью mitmproxy?
  3. Практические примеры применения
    1. Отладка API и мобильных приложений
    2. Тестирование на проникновение и оценка безопасности (в соответствии с правовыми принципами)
    3. Запись и воспроизведение трафика
  4. Установка и инструменты
    1. Базовая установка на Debian/Ubuntu
    2. Быстрое исполнение
    3. Запуск в Docker
  5. Настройка в качестве явного прокси (конфигурация клиента)
  6. Прозрачный прокси-режим (без ручной настройки клиента)
    1. Включение пересылки IP-пакетов
    2. Пример использования iptables для перенаправления HTTP/HTTPS на порт 8080.
    3. Запуск mitmproxy в прозрачном режиме
  7. Запись, хранение и преобразование потоков.
    1. Запись с помощью mitmdump
    2. Чтение записанного файла
    3. Преобразовать в HAR/pcap
  8. Скриптинг и дополнения
  9. Фильтры и поиск по потоку
  10. Анализ TLS и технические подробности
  11. Масштабируемость и производительность
  12. Операционная безопасность и конфиденциальность
  13. Практические примеры: мобильные приложения, API и воспроизведение.
    1. Отладка мобильных приложений
    2. Запись и воспроизведение трафика API для тестирования.
  14. Интеграция с другими инструментами (Wireshark, Burp, CI)
  15. Оптимальные конфигурации в зависимости от приложения
  16. Заключительные замечания и юридические предупреждения
  17. Заключение и практические рекомендации
  18. Часто задаваемые вопросы

 

Введение

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

 

Настройка в качестве явного прокси (конфигурация клиента)

Общие шаги:

  1. Запустите mitmproxy:

    mitmproxy --listen-port 8080
  2. Генерация и установка сертификата центра сертификации:

    После запуска 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 и воспроизведение.

 

Отладка мобильных приложений

  1. Запустите mitmproxy на своем ноутбуке:

    mitmweb --listen-host 0.0.0.0 --listen-port 8080
  2. Подключите ноутбук к той же сети Wi-Fi; например, по IP-адресу. 192.168.1.10.

  3. В настройках Wi-Fi вашего телефона установите для параметра «Прокси» значение «Вручную» и задайте IP-адрес. 192.168.1.10 и порт 8080 Поставь его.

  4. Установите сертификат mitmproxy на телефон.

  5. Просмотр и фильтрация трафика на 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-атак и размещением их в местах, близких к пользователям.

 

Часто задаваемые вопросы

Вам также может понравиться

Как установить IBSng на CentOS 6/7

Руководство по установке IBSng на CentOS 6/7 В этой статье приведено руководство по установке IBSng на CentOS 6/7, которое поможет вам…

Как войти на сервер Windows через удаленный рабочий стол

Как подключиться к серверу Windows через удалённый рабочий стол. Программное обеспечение для подключения к удалённому рабочему столу предоставляется бесплатно во всех версиях…