Анализ SSL-трафика на локальной машине
От: Ruzzz  
Дата: 14.01.11 13:12
Оценка:
Нужно проанализировать SSL-трафик локального приложения под Windows. Подскажите куда копать, слышал вроде как есть возможность в XP написать какой-то свой драйвер. Или хотя бы сторонние утилиты для этого. Спасибо заранее!
Re: Анализ SSL-трафика на локальной машине
От: x64 Россия  
Дата: 14.01.11 13:19
Оценка:
R>Нужно проанализировать SSL-трафик локального приложения под Windows. Подскажите куда копать, слышал вроде как есть возможность в XP написать какой-то свой драйвер. Или хотя бы сторонние утилиты для этого. Спасибо заранее!

Есть вот такое, но оно не под Windows. Могу предложить универсальный вариант: берёшь что-нибудь типа PolarSSL и допиливаешь под свои нужды. Простая компактная библиотека, работает, проблем особых не должно быть.
Re[2]: Анализ SSL-трафика на локальной машине
От: Ruzzz  
Дата: 14.01.11 14:16
Оценка:
Здравствуйте, x64, Вы писали:

x64>Есть вот такое, но оно не под Windows. Могу предложить универсальный вариант: берёшь что-нибудь типа PolarSSL и допиливаешь под свои нужды. Простая компактная библиотека, работает, проблем особых не должно быть.


Я не совсем корректно написал что мне нужно. Мне нужно расшифровать SSL-трафик не моего локального windows-приложения.

Вроде как Wireshark умеет это делать при наличии приватного ключа с сервера http://blogs.sun.com/beuchelt/entry/decrypting_ssl_traffic_with_wireshark что конечно же не подходит. Но я когда-то встречал информацию, что такое возможно сделать перехватывая какие-то системные функции для работы с SSL в Windows XP или написав какой-то драйвер. Суть не помню.

Я предполагаю что все зависит от используемой в приложении библиотеки для работы с SSL. Есть утилиты которые могут расшифровывать SSL-трафик только IE (также и только для Firefox есть), как я понимаю вариант подходит для приложений использующих WinInet? Или все же существует какой-то универсальный способ?
Re[3]: Анализ SSL-трафика на локальной машине
От: x64 Россия  
Дата: 14.01.11 14:38
Оценка: 11 (4)
R>Я предполагаю что все зависит от используемой в приложении библиотеки для работы с SSL. Есть утилиты которые могут расшифровывать SSL-трафик только IE (также и только для Firefox есть), как я понимаю вариант подходит для приложений использующих WinInet? Или все же существует какой-то универсальный способ?

Тебе это программно нужно? Если да, тогда тебе понадобятся две вещи:

1. Библиотека для перехвата TCP-трафика.
2. Библиотека для работы с SSL/TLS трафиком.

Первого в сети прилично, найти не проблема, ссылку на второе я уже дал (PolarSSL). Далее перехватываешь handshake, перехватываешь сертификат сервера, сохраняешь его, генеришь свой, подсовываешь его клиенту вместо оригинального. Теперь у тебя есть и открытый, и закрытый ключ сервера. Остаток хендшейка проходит примерно так: клиент генерит сеансовый ключ, шифрует его открытым ключом сервера (т.е. нашим открытым ключом, который нам уже известен) и отсылает серверу. Мы перехватываем это сообщение, расшифровываем нашим закрытым ключом, сохраняем сеансовый ключ, перешифровываем открытым ключом сервера и отсылаем серверу. Ну а после все данные будут бегать шифрованные симметричным алгоритмом с помощью сеансового ключа, который нам уже известен. Вот и всё, в принципе.
Re: Анализ SSL-трафика на локальной машине
От: KRT Украина  
Дата: 14.01.11 15:05
Оценка:
Здравствуйте, Ruzzz, Вы писали:

R>Нужно проанализировать SSL-трафик локального приложения под Windows. Подскажите куда копать, слышал вроде как есть возможность в XP написать какой-то свой драйвер. Или хотя бы сторонние утилиты для этого. Спасибо заранее!

Fiddler умеет показывать SSL трафик.
Re[2]: Анализ SSL-трафика на локальной машине
От: Ruzzz  
Дата: 14.01.11 15:50
Оценка:
Здравствуйте, KRT, Вы писали:

KRT>Здравствуйте, Ruzzz, Вы писали:


R>>Нужно проанализировать SSL-трафик локального приложения под Windows. Подскажите куда копать, слышал вроде как есть возможность в XP написать какой-то свой драйвер. Или хотя бы сторонние утилиты для этого. Спасибо заранее!

KRT>Fiddler умеет показывать SSL трафик.

Спасибо, вроде как действительно есть такая возможность, попробую. В сети нашел еще Http Analyzer но он заточен только для WININET, Mozilla NSS API or OpenSSL (из хелпа). Мой «пациент» не использует ничего из этого, хотя думал что используется OpenSSL.
Re[4]: Анализ SSL-трафика на локальной машине
От: Ruzzz  
Дата: 14.01.11 16:00
Оценка:
Здравствуйте, x64, Вы писали:

x64>Тебе это программно нужно? Если да, тогда тебе понадобятся две вещи:


x64>1. Библиотека для перехвата TCP-трафика.

x64>2. Библиотека для работы с SSL/TLS трафиком.

x64>Первого в сети прилично, найти не проблема, ссылку на второе я уже дал (PolarSSL). Далее перехватываешь handshake, перехватываешь сертификат сервера, сохраняешь его, генеришь свой, подсовываешь его клиенту вместо оригинального. Теперь у тебя есть и открытый, и закрытый ключ сервера. Остаток хендшейка проходит примерно так: клиент генерит сеансовый ключ, шифрует его открытым ключом сервера (т.е. нашим открытым ключом, который нам уже известен) и отсылает серверу. Мы перехватываем это сообщение, расшифровываем нашим закрытым ключом, сохраняем сеансовый ключ, перешифровываем открытым ключом сервера и отсылаем серверу. Ну а после все данные будут бегать шифрованные симметричным алгоритмом с помощью сеансового ключа, который нам уже известен. Вот и всё, в принципе.


А может ли быть проблема такого рода: подопытная программа не примет мой сертификат? Ниже мне дали ссылку на Fiddler, пытаюсь экспериментировать пока с ним, чтобы решить возможно ли вообще сделать такой «хак», и только тогда внедрять в свою прогу эту функциональность. Так вот подопытная программа не хочет соединяться через Fiddler, пишет об ошибке соединения. Fiddler сгенерировал свой сертификат, как вы и говорили выше. Без проблем ловит не ssl соединения. Возможно нужно учитывать что-то еще?
Re[5]: Анализ SSL-трафика на локальной машине
От: x64 Россия  
Дата: 14.01.11 16:20
Оценка:
R>А может ли быть проблема такого рода: подопытная программа не примет мой сертификат?

Запросто такое может быть. Чтобы доверять сертификату сервера, приложению необходимо удостовериться в двух вещах:

1. Сертификат сервера подписан сертификатом ЦС, при чём этот ЦС является доверенным.
2. Сертификат сервера не должен быть отозван, для этого приложение может направить запрос серверу ЦС.
Re[2]: Анализ SSL-трафика на локальной машине
От: std.denis Россия  
Дата: 14.01.11 17:52
Оценка:
KRT>Fiddler умеет показывать SSL трафик.
Fiddler конечно суперб. Но вот подглядеть трафик айфонового приложения им у меня не получилось, даже после установки его сертификата. Возможно дело в том, что он ненадежный
Получилось с помощью Charles. Тут вот его сертификат. Правда он платный. Но мне лишь на разок такое понадобилось
Re[3]: Анализ SSL-трафика на локальной машине
От: Ruzzz  
Дата: 14.01.11 18:26
Оценка:
Здравствуйте, std.denis, Вы писали:

KRT>>Fiddler умеет показывать SSL трафик.

SD>Fiddler конечно суперб. Но вот подглядеть трафик айфонового приложения им у меня не получилось, даже после установки его сертификата. Возможно дело в том, что он ненадежный
SD>Получилось с помощью Charles. Тут вот его сертификат. Правда он платный. Но мне лишь на разок такое понадобилось

В моем случае все равно не проходит соединение, пишет "SSLHandshake: Received fatal alert: unknown_ca". Но за ссылку спасибо!
Re[6]: Анализ SSL-трафика на локальной машине
От: Ruzzz  
Дата: 14.01.11 18:37
Оценка:
Здравствуйте, x64, Вы писали:

R>>А может ли быть проблема такого рода: подопытная программа не примет мой сертификат?


x64>Запросто такое может быть. Чтобы доверять сертификату сервера, приложению необходимо удостовериться в двух вещах:


x64>1. Сертификат сервера подписан сертификатом ЦС, при чём этот ЦС является доверенным.

x64>2. Сертификат сервера не должен быть отозван, для этого приложение может направить запрос серверу ЦС.

Воспользовался уже другой прогой, которую посоветовали ниже. Здесь также ошибка, но уже более информативное сообщение "SSLHandshake: Received fatal alert: unknown_ca". При этом сертификат установил в "Доверенные корневые центры сертификации" и в системе он считается доверенным. При старте прога пытается соединиться через ssl со своим сервером и тут же выдает ошибку. Правильно ли я понимаю что 2-ой пункт "для этого приложение может направить запрос серверу ЦС" подразумевает использование средств ОС? Иначе в программе должен быть мертво зашит доверенный сертификат? Не сильно разбираюсь в работе ssl и сертификатах, но хотелось бы прояснить для себя возможен ли «хак» или не стоит тратить время.
Re[7]: Анализ SSL-трафика на локальной машине
От: x64 Россия  
Дата: 14.01.11 18:58
Оценка: 2 (1)
R>"SSLHandshake: Received fatal alert: unknown_ca".

Сертификат сервера подписан ЦС, которому приложение не доверяет.

R>При этом сертификат установил в "Доверенные корневые центры сертификации" и в системе он считается доверенным.


Во-первых, какой именно сертификат ты добавил туда? В сообщении об ошибке речь идёт о сертификате ЦС, у меня же подозрение, что ты положил в доверенные сертификат сервера. Кроме того, может быть, что ты неправильно подписал (или вообще не подписал) сертификат сервера сертификатом ЦС. И ещё может быть, что это приложение вообще не заглядывает в системное хранилище, а использует какое-то своё, как это делают, например, Firefox или Opera.

R>При старте прога пытается соединиться через ssl со своим сервером и тут же выдает ошибку.


А может быть, оно ожидает вообще какой-то конкретный сертификат, подписанный конкретным ЦС, не?

R>Правильно ли я понимаю что 2-ой пункт "для этого приложение может направить запрос серверу ЦС" подразумевает использование средств ОС?


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

R>Иначе в программе должен быть мертво зашит доверенный сертификат?


Опять же необязательно, см. предположения выше.

R>Не сильно разбираюсь в работе ssl и сертификатах, но хотелось бы прояснить для себя возможен ли «хак» или не стоит тратить время.


Возможность хака сильно зависит от приложения. Например, Web-броузеры хаку вполне поддаются, что естественно, потому что они просто физически не могут заранее знать, какой должен быть сертификат у Web-сервера, к которому они обращаются. Приложение же, работающее с конкретным сервером, вполне может ожидать от него вполне конкретный сертификат, это логично.
Re[4]: Анализ SSL-трафика на локальной машине
От: std.denis Россия  
Дата: 14.01.11 20:04
Оценка:
R>В моем случае все равно не проходит соединение, пишет "SSLHandshake: Received fatal alert: unknown_ca". Но за ссылку спасибо!
Ну я надеюсь на то, что сертификат от Charles был установлен и для прослушки использовался сам Charles? (а то может моя ссылка на сертификат сбивает с толку и выглядит как серебряная пуля, в отрыве от программы).
Re[5]: Анализ SSL-трафика на локальной машине
От: Ruzzz  
Дата: 14.01.11 20:52
Оценка:
Здравствуйте, std.denis, Вы писали:

R>>В моем случае все равно не проходит соединение, пишет "SSLHandshake: Received fatal alert: unknown_ca". Но за ссылку спасибо!

SD>Ну я надеюсь на то, что сертификат от Charles был установлен и для прослушки использовался сам Charles? (а то может моя ссылка на сертификат сбивает с толку и выглядит как серебряная пуля, в отрыве от программы).

Да, через пункт меню Help. В подопытной проге задал прокси указав на Charles. Не ssl соединения проходят. Ssl при коннекте к Charles выдает ошибку.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.