У меня есть локальное приложение (которое я не написал и не могу изменить), которое взаимодействует с удаленным веб-сервисом. Он использует HTTPS, и я хотел бы посмотреть, что в трафике.
Есть ли способ, которым я могу сделать это? Я бы предпочел систему Windows, но я рад установить прокси-сервер под Linux, если это облегчит задачу.
Что я рассматриваю:
- Перенаправление веб-сайта путем взлома моего файла hosts (или настройки альтернативного DNS).
- Установка HTTPS-сервера на этом сайте с самозаверяющим (но доверенным) сертификатом.
- По-видимому, WireShark может видеть, что находится в HTTPS, если вы передадите ему закрытый ключ. Я никогда не пробовал это.
- Так или иначе, перенаправьте этот трафик на реальный сервер (т. Е. Это полномасштабная «атака человека посередине»).
Это звучит разумно? Может ли WireShark действительно увидеть, что находится в HTTPS-трафике? Может кто-нибудь указать мне на подходящий прокси (и конфигурации для того же)?
Имеет ли Скрипач делать то , что вы хотите?
Что такое скрипач?
Fiddler - прокси-сервер отладки в Интернете, который регистрирует весь трафик HTTP (S) между вашим компьютером и Интернетом. Fiddler позволяет вам проверять весь трафик HTTP (S), устанавливать точки останова и «возиться» с входящими или исходящими данными. Fiddler включает мощную подсистему сценариев на основе событий и может быть расширена с использованием любого языка .NET.
Fiddler является бесплатной программой и может отлаживать трафик практически из любого приложения, включая Internet Explorer, Mozilla Firefox, Opera и многие другие.
Вам необходимо настроить прокси для локального приложения и, если оно не соблюдает настройки прокси, установить прозрачный прокси и направить весь трафик https в него, прежде чем выходить на улицу. Примерно так может быть «человек» посередине: http://crypto.stanford.edu/ssl-mitm
Кроме того, вот краткие инструкции по архивированию с помощью wireshark: http://predev.wikidot.com/decrypt-ssl-traffic
Использование прокси-сервера https для мониторинга зависит от типа рукопожатия. Если ваше локальное приложение не проверяет сертификат сервера по подписи CA, которую вы не можете подделать, и сервер не проверяет сертификат локального приложения (или если у вас есть сертификат для настройки на прокси https), вы можете настроить прокси https для контролировать трафик https. В противном случае, я думаю, что невозможно контролировать трафик с помощью https прокси.
Другой способ, которым вы можете попробовать, это добавить измерительный зонд в подпрограммы вашей клиентской программы, где она отправляет и получает сообщения из своей библиотеки https. Это требует некоторого реверс-инжиниринга, но должно работать для вас во всех ситуациях.
Я бы порекомендовал WireShark, это лучший инструмент для отслеживания трафика. Хотя я не уверен, что вы можете увидеть с включенным SSL. Может быть, если вы поставите его с сертификатом?
Wireshark определенно может отображать зашифрованные потоки TLS / SSL в виде открытого текста. Однако для этого вам обязательно понадобится закрытый ключ сервера. Закрытый ключ должен быть добавлен в Wireshark как опция SSL в настройках. Обратите внимание, что это работает, только если вы можете следить за потоком SSL с самого начала. Он не будет работать, если SSL-соединение используется повторно.
Для Internet Explorer этого (повторное использование сеанса SSL) можно избежать, очистив состояние SSL с помощью диалогового окна «Свойства обозревателя». В других средах может потребоваться перезапуск браузера или даже перезагрузка системы (чтобы избежать повторного использования сеанса SSL).
Другое ключевое ограничение - использование шифра RSA. Wireshark не может декодировать поток TLS / SSL, использующий DFH (Диффи-Хеллмана).
Предполагая, что вы можете удовлетворить ограничения, указанные выше, команда правой кнопкой мыши «Follow SSL Stream» работает довольно хорошо.
Вы должны также рассмотреть Чарльза . Из описания продукта на момент ответа:
Charles - это прокси-сервер HTTP / HTTP-монитор / обратный прокси-сервер, который позволяет разработчику просматривать весь трафик HTTP и SSL / HTTPS между их компьютером и Интернетом. Это включает в себя запросы, ответы и заголовки HTTP (которые содержат файлы cookie и информацию о кэшировании).