Вопрос по https, ssl, man-in-the-middle – Захват HTTPS-трафика в открытом виде?

23

У меня есть локальное приложение (которое я не писал и не могу изменить), которое взаимодействует с удаленным веб-сервисом. Он использует HTTPS, и я хотел бы видеть, что находится в трафике.

Есть ли способ, которым я могу сделать это? Я бы предпочел систему Windows, но я рад установить прокси-сервер под Linux, если это облегчит задачу.

Что я обдумываю:

Redirecting the web site by hacking my hosts file (or setting up alternate DNS). Installing an HTTPS server on that site, with a self-signed (but trusted) certificate. Apparently, WireShark can see what's in HTTPS if you feed it the private key. I've never tried this. Somehow, proxy this traffic to the real server (i.e. it's a full-blown man-in-the-middle "attack").

Это звучит разумно? Может ли WireShark действительно увидеть, что происходит в HTTPS-трафике? Может кто-нибудь указать мне на подходящий прокси (и конфигурации для того же)?

Ваш Ответ

6   ответов
2

Чарльз, Из описания продукта на момент ответа:

Charles is an HTTP proxy / HTTP monitor / Reverse Proxy that enables a developer to view all of the HTTP and SSL / HTTPS traffic between their machine and the Internet. This includes requests, responses and the HTTP headers (which contain the cookies and caching information).

4

если оно не соблюдает настройки прокси, установить прозрачный прокси и направить весь трафик https в него, прежде чем выходить на улицу. Примерно так может быть «человек» в середине:http://crypto.stanford.edu/ssl-mitm

Кроме того, вот краткие инструкции о том, как заархивировать это с помощью wireshark:http://predev.wikidot.com/decrypt-ssl-traffic

8

в виде открытого текста. Однако для этого вам обязательно понадобится закрытый ключ сервера. Закрытый ключ должен быть добавлен в Wireshark в качестве опции SSL в настройках. Обратите внимание, что это работает, только если вы можете следить за потоком SSL с самого начала. Он не будет работать, если SSL-соединение используется повторно.

Для Internet Explorer этого (повторное использование сеанса SSL) можно избежать, очистив состояние SSL с помощью диалогового окна «Свойства обозревателя». В других средах может потребоваться перезапуск браузера или даже перезагрузка системы (чтобы избежать повторного использования сеанса SSL).

Другое ключевое ограничение - использование шифра RSA. Wireshark не может декодировать поток TLS / SSL, использующий DFH (Диффи-Хеллмана).

Предполагая, что вы можете выполнить указанные выше ограничения, & quot; Follow SSL Stream & quot; Команда правой кнопкой мыши работает довольно хорошо.

Конкретные шаги (или ссылка на пост) для настройки этого было бы здорово.
13

обманщик делай что хочешь?

What is Fiddler?

Fiddler is a Web Debugging Proxy which logs all HTTP(S) traffic between your computer and the Internet. Fiddler allows you to inspect all HTTP(S) traffic, set breakpoints, and "fiddle" with incoming or outgoing data. Fiddler includes a powerful event-based scripting subsystem, and can be extended using any .NET language.

Fiddler is freeware and can debug traffic from virtually any application, including Internet Explorer, Mozilla Firefox, Opera, and thousands more.

... за исключением того, что рассматриваемое приложение работает только с правами администратора, и Fiddler, похоже, не хочет устанавливать свой HTTPS-сертификат под своей учетной записью администратора (большую часть времени я запускаю LUA). Roger Lipscombe
Я получаю его, просматривая HTTPS-трафик из Internet Explorer и Chrome; чтобы выяснить, сработает ли оно для рассматриваемого приложения ... Roger Lipscombe
Да, он может выступать в роли посредника для запросов HTTPS - обратите внимание, что он обслуживает неподписанный сертификат, поэтому если вашему приложению требуются доверенные сертификаты, вам придется либо отключить это требование, либо доверять сертификату. - какой Fiddler не советует:fiddler2.com/Fiddler/help/httpsdecryption.asp
Вы можете полностью скопировать самоподписанный корневой сертификат Fiddler в хранилище Trusted Root.
0

это лучший инструмент для отслеживания трафика. Хотя я не уверен, что вы можете увидеть с включенным SSL. Может быть, если вы поставите его с сертификатом?

Сертификат не достаточно. В противном случае мы все расшифруем весь трафик SSL. Вам нужен закрытый ключ для расшифровки трафика ... как указано OP ...
0

it depends on the type of handshake. If you local application does not check the server's certificate by CA's signature which you can not fake, and the server does not check your local application's certificate ( or if you have one to setup on https proxy) then you can set up a https proxy to monitor the https traffic. Otherwi,se, I think it is impossible to monitor traffic with https proxy.

Another way you can try is to add instrumentation probe at the routines of your client program where it send and receive messages from its https library. It needs some reverse engineering work, but should work for you for all situations.

Похожие вопросы