Настройка прокси для наблюдения за сетевой активностью программы или файла

Когда нужно понять, с какими серверами общается программа, какой трафик она отправляет и что получает в ответ, самый практичный способ — запустить локальный прокси-сервер и направить трафик файла через него. Вы увидите адреса запросов, заголовки, содержимое и ответы сервера в удобном виде, без разбора дампов памяти и без изменения самой программы. Ниже — как это устроено, какие инструменты выбрать и как настроить перехват, включая HTTPS.

Главный ориентир перед началом: если программа общается по HTTP — достаточно обычного прокси. Если по HTTPS — потребуется установить корневой сертификат прокси в систему, а в ряде случаев перехват всё равно не сработает из-за закрепления сертификатов (certificate pinning). Это ограничение важно понимать заранее, чтобы не тратить время на бесполезные попытки.

Как работает перехват трафика через прокси

Прокси — это посредник. Вы запускаете на своём компьютере программу-прокси, которая слушает определённый порт (например, 8080). Затем вы указываете анализируемой программе или всей системе использовать этот прокси. Весь трафик проходит через посредника, который записывает каждый запрос и ответ.

С HTTP всё просто: прокси видит запрос целиком, включая адрес, заголовки и тело. С HTTPS сложнее: соединение зашифровано, и прокси по умолчанию видит только адрес сервера. Чтобы расшифровать содержимое, прокси выполняет перехват с повторным шифрованием: он выдаёт программе собственный сертификат от имени целевого сервера, расшифровывает трафик, показывает его вам и заново шифрует для настоящего сервера. Программа соглашается на такой сертификат только если доверяет корневому сертификату прокси — поэтому его нужно добавить в системное хранилище доверенных.

Есть важное исключение: закрепление сертификатов. Некоторые приложения (банковские клиенты, мессенджеры, антивирусы, части операционных систем) хранят отпечаток «настоящего» сертификата сервера и отвергают любой другой, даже подписанный доверенным центром. В этом случае перехват на уровне прокси не сработает, и понадобятся более сложные методы на уровне отладки самого приложения — они выходят за рамки обычной настройки и часто нарушают условия использования программы.

Выбор инструмента

Для большинства задач достаточно одного из четырёх инструментов. Различия — в платформах, интерфейсе и удобстве работы с HTTPS.

Инструмент Платформы Интерфейс Сильные стороны
mitmproxy Windows, macOS, Linux Терминал + веб-панель Бесплатный, гибкий, скрипты на Python, режим прозрачного прокси
Fiddler Classic / Fiddler Everywhere Windows (Classic), кроссплатформенно (Everywhere) Графический Быстрый старт на Windows, удобные фильтры и инспекция
Charles Proxy Windows, macOS, Linux Графический Зрелый инструмент, удобная работа с HTTPS и повтором запросов
Proxyman macOS Графический Нативный для macOS, автоматическая настройка сертификатов

Если нужен бесплатный вариант с возможностью автоматизации — берите mitmproxy. Если удобнее графический интерфейс и вы работаете в Windows — Fiddler Classic. Для macOS Proxyman или Charles сэкономят время на ручной настройке сертификатов.

Подготовка: что проверить до запуска

  • Право на анализ. Убедитесь, что исследование трафика программы допустимо: это ваша система, программа используется вами легально, а условия её использования не запрещают перехват. Анализ трафика чужих сервисов и пользователей без разрешения может быть незаконным.
  • Изолированная среда. Если файл имеет неизвестное происхождение и вы проверяете его на подозрительность, запускайте его только на отдельной виртуальной машине без доступа к личным данным и рабочим аккаунтам. Наблюдение за активностью — не защита от заражения.
  • Свободный порт. Прокси по умолчанию занимает порт вроде 8080 или 8888. Убедитесь, что он не занят другой программой.
  • Понимание цели. Определите заранее, что вы ищете: список внешних серверов, содержимое запросов, периодичность обращений, передачу файлов. Это определит настройки фильтрации и объём логов.

Настройка mitmproxy: базовый сценарий

mitmproxy — универсальный вариант, который работает одинаково на всех основных системах. Порядок действий такой:

  1. Установите mitmproxy из официального источника или через пакетный менеджер вашей системы.
  2. Запустите его в режиме веб-интерфейса командой mitmweb — откроется локальная панель, обычно на порту 8081, а сам прокси будет слушать порт 8080.
  3. Направьте трафик программы на прокси (способы — в следующем разделе).
  4. Сгенерируйте и установите сертификат: при первом запуске mitmproxy создаёт файлы в каталоге .mitmproxy в домашней папке. Файл mitmproxy-ca-cert.pem (Linux/macOS) или mitmproxy-ca-cert.cer (Windows) нужно добавить в доверенные корневые центры сертификации.
  5. Запустите анализируемый файл и наблюдайте запросы в панели.

Для Windows установка сертификата выглядит так: двойной щелчок по файлу сертификата, «Установить сертификат», «Локальный компьютер», «Поместить все сертификаты в следующее хранилище», выбрать «Доверенные корневые центры сертификации». После этого перезапустите браузер или анализируемую программу — кэшированные соединения могут не пройти через новый сертификат.

В Linux и macOS сертификат добавляется через системные утилиты доверия (в macOS — через «Связку ключей» и последующую пометку сертификата как доверенного для SSL).

Как направить трафик файла через прокси

Способ зависит от того, насколько программа уважает системные настройки.

Вариант 1. Настройки самой программы

Многие приложения, особенно браузеры, загрузчики и клиенты с открытым кодом, имеют собственную настройку прокси. Это самый надёжный путь: укажите адрес 127.0.0.1 и порт 8080 в настройках программы — и её трафик пойдёт через перехватчик, не затрагивая остальную систему.

Вариант 2. Системные настройки прокси

Если у программы нет своих настроек, задайте прокси на уровне системы: в Windows — «Параметры → Сеть и Интернет → Прокси», в macOS — раздел «Сеть» в системных настройках. Часть программ игнорирует системные настройки и ходит напрямую — тогда этот вариант не сработает, и трафик такой программы в панели прокси просто не появится.

Вариант 3. Принудительный перехват

Когда программа жёстко прописывает прямые соединения, используют прозрачное проксирование: трафик перенаправляется на прокси на уровне сети, без ведома программы. Варианты:

  • Прозрачный режим mitmproxy. На Linux с помощью правил iptables (или nftables) исходящий трафик на порты 80 и 443 перенаправляется на локальный порт mitmproxy, запущенный в режиме transparent. Это требует прав администратора и аккуратности: ошибка в правилах может оставить систему без интернета.
  • Промежуточная виртуальная машина или роутер. Анализируемый файл запускается в изолированной виртуальной машине, шлюзом для которой выступает машина с прокси. Так перехватывается вообще весь трафик, включая тот, что не уважает никакие настройки.
  • Прокси-обёртки. Утилиты вроде proxychains (Linux) позволяют запустить конкретную программу с принудительным проксированием её соединений.

Для разовой проверки обычно достаточно вариантов 1–2. Прозрачный перехват нужен, когда программа сопротивляется или когда важна полнота картины.

Что смотреть в перехваченном трафике

Сам по себе список запросов малоинформативен. Полезные признаки, на которые стоит обращать внимание:

  • Адреса назначения. Неожиданные домены, особенно «похожие» на легитимные (с подменёнными буквами), — повод насторожиться.
  • Содержимое запросов. Отправка данных формы входа, файлов из документов, содержимого буфера обмена или системной информации — то, чего программа делать не должна.
  • Периодичность. Регулярные обращения каждые несколько минут к одному серверу характерны для телеметрии, но могут указывать и на скрытый канал связи.
  • Объём. Исходящий трафик, значительно превышающий входящий, у программы, которая по задумке только скачивает данные, — аномалия.
  • Заголовки. Нестандартные заголовки, идентификаторы устройств, зашифрованные блобы в теле запроса — признаки сбора идентифицирующей информации.

Если программа общается по HTTPS, а вы не установили сертификат прокси, вы увидите только CONNECT-запросы с именем хоста — этого уже достаточно для списка серверов, но не для содержимого.

Типичные ошибки и как их избежать

  • Трафик не появляется в панели. Проверьте, что прокси реально запущен и слушает порт, что программа настроена на правильный адрес и порт, и что программа не использует собственный транспорт (некоторые приложения ходят напрямую в обход системного прокси).
  • HTTPS-запросы падают с ошибками сертификата. Сертификат прокси не установлен или установлен не в то хранилище. Также программа могла быть перезапущена до установки сертификата — перезапустите её.
  • Соединения обрываются только у одного приложения. Почти наверняка закрепление сертификатов. Прокси здесь не поможет; дальнейшие методы относятся к отладке самого приложения и требуют отдельной оценки законности.
  • Пропадает интернет после настройки iptables. Ошибка в правилах прозрачного проксирования. Всегда сохраняйте текущие правила перед изменением и знайте команду отката.
  • Сертификат прокси оставлен доверенным навсегда. Это реальный риск безопасности: любой, кто получит приватный ключ этого сертификата (он лежит у вас на диске), сможет расшифровывать ваш HTTPS-трафик. После окончания анализа удаляйте корневой сертификат прокси из доверенных.
  • Анализ подозрительного файла на рабочей машине. Не делайте этого. Виртуальная машина со снапшотом и без доступа к личным данным — минимальная мера предосторожности.

Сценарии: что делать в зависимости от задачи

Проверить, куда стучит программа. Достаточно системного прокси без HTTPS-перехвата: список доменов виден по CONNECT-запросам. Быстро и без установки сертификатов.

Разобрать содержимое запросов своего приложения. Установите сертификат прокси, при возможности используйте настройки прокси самого приложения. Для отладки собственного кода это штатный рабочий процесс.

Проверить неизвестный файл на подозрительную активность. Виртуальная машина, прозрачный прокси или контроль трафика на уровне шлюза, фиксация всех обращений. Дополните картину мониторингом файловой системы и реестра — сеть лишь часть поведения.

Отладить мобильное приложение. Прокси запускается на компьютере, телефон настраивается на него как на HTTP-прокси в параметрах Wi-Fi. Сертификат прокси устанавливается на устройство; на современных версиях Android пользовательские сертификаты по умолчанию не доверяются приложениями — это нужно учитывать и, где возможно, настраивать конфигурацию безопасности приложения.

Практические рекомендации

  • Начинайте с самого простого: mitmweb или Fiddler, системный прокси, перехват HTTP. Усложняйте схему только при необходимости.
  • Фильтруйте поток: в mitmproxy доступны фильтры по домену и типу содержимого, в Fiddler — правила скрытия шумных узлов. Без фильтрации телеметрия операционной системы быстро засорит картину.
  • Сохраняйте логи сессий: mitmproxy умеет выгружать потоки в файл, Fiddler и Charles — экспортировать сессии. Это пригодится для повторного анализа и сравнения.
  • Удаляйте корневой сертификат прокси после завершения работы — это правило, а не рекомендация.
  • Для полной картины комбинируйте прокси с мониторингом процессов: какие файлы программа читает и пишет, какие ключи создаёт. Сетевая активность без контекста легко интерпретируется неверно.

Главный принцип: перехват через прокси даёт точную картину сетевого поведения, но требует соответствия трёх условий — трафик должен пройти через прокси, программа должна доверять сертификату перехватчика, а закрепление сертификатов не должно блокировать расшифровку. Если хотя бы одно условие не выполняется, переходите к прозрачному проксированию на уровне сети или пересматривайте метод. Начните с запуска mitmweb, направьте через него одну программу и убедитесь, что видите её запросы, — дальше настройка сводится к фильтрации и установке сертификата.

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

PEFile.ru