Encrypted alert wireshark что это

Как легко расшифровать TLS-трафик от браузера в Wireshark

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

Encrypted alert wireshark что это. Смотреть фото Encrypted alert wireshark что это. Смотреть картинку Encrypted alert wireshark что это. Картинка про Encrypted alert wireshark что это. Фото Encrypted alert wireshark что это

Одна из проблем с тем, как работает Wireshark, заключается в невозможности легко проанализировать зашифрованный трафик, вроде TLS. Раньше вы могли указать Wireshark приватные ключи, если они у вас были, и расшифровывать трафик на лету, но это работало только в том случае, если использовался исключительно RSA. Эта функциональность сломалась из-за того, что люди начали продвигать совершенную прямую секретность (Perfect Forward Secrecy), и приватного ключа стало недостаточно, чтобы получить сессионный ключ, который используется для расшифровки данных. Вторая проблема заключается в том, что приватный ключ не должен или не может быть выгружен с клиента, сервера или HSM (Hardware Security Module), в котором находится. Из-за этого, мне приходилось прибегать к сомнительным ухищрениям с расшифровкой трафика через man-in-the-middle (например, через sslstrip).

Логгирование сессионных ключей спешит на помощь!

Настраиваем браузеры

Нам необходимо установить переменную окружения.

Windows

Откройте свойства компьютера, затем «Дополнительные параметры системы», затем «Переменные среды…»

Encrypted alert wireshark что это. Смотреть фото Encrypted alert wireshark что это. Смотреть картинку Encrypted alert wireshark что это. Картинка про Encrypted alert wireshark что это. Фото Encrypted alert wireshark что это

Добавляем новую пользовательскую переменную «SSLKEYLOGFILE», и указываем путь до файла, куда мы хотим его сохранять.

Linux и Mac OS X

/.bashrc на Linux или в

/.MacOSX/environment на OS X, чтобы вам не пришлось ее устанавливать каждый раз после перелогина.

В следующий раз, когда вы запустите Firefox или Chrome из Dev channel, они будут логгировать TLS-ключи в этот файл.
UPD: Если у вас ничего не работает на OS X, загляните в комментарии (оригинальной статьи). Похоже, Apple изменила работу переменных окружения в новой версии OS X. Попробуйте запускать Firefox и Wireshark из этого же терминального окна:

Спасибо Tomi за это замечание.

Настраиваем Wireshark

Вам понадобится Wireshark версии 1.6 и новее. Открываем настройки Wireshark:
Encrypted alert wireshark что это. Смотреть фото Encrypted alert wireshark что это. Смотреть картинку Encrypted alert wireshark что это. Картинка про Encrypted alert wireshark что это. Фото Encrypted alert wireshark что это

Разворачиваем секцию «Protocols»:

Encrypted alert wireshark что это. Смотреть фото Encrypted alert wireshark что это. Смотреть картинку Encrypted alert wireshark что это. Картинка про Encrypted alert wireshark что это. Фото Encrypted alert wireshark что это

Указываем путь к файлу:

Encrypted alert wireshark что это. Смотреть фото Encrypted alert wireshark что это. Смотреть картинку Encrypted alert wireshark что это. Картинка про Encrypted alert wireshark что это. Фото Encrypted alert wireshark что это

Результат

Вот что мы обычно видим, когда инспектируем TLS-пакет:

Encrypted alert wireshark что это. Смотреть фото Encrypted alert wireshark что это. Смотреть картинку Encrypted alert wireshark что это. Картинка про Encrypted alert wireshark что это. Фото Encrypted alert wireshark что это

А вот что происходит, когда мы переключаемся на вкладку «Decrypted SSL Data». Теперь мы можем видеть текст запроса. Победа!

Encrypted alert wireshark что это. Смотреть фото Encrypted alert wireshark что это. Смотреть картинку Encrypted alert wireshark что это. Картинка про Encrypted alert wireshark что это. Фото Encrypted alert wireshark что это

Заключение

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

Источник

Анализ SSL/TLS трафика в Wireshark

Encrypted alert wireshark что это. Смотреть фото Encrypted alert wireshark что это. Смотреть картинку Encrypted alert wireshark что это. Картинка про Encrypted alert wireshark что это. Фото Encrypted alert wireshark что это

Как скрыть от посторонних конфиденциальную информацию?
Самое простое – зашифровать.
В Интернет и Интранет-сетях шифрацией данных управляет протокол SSL/TLS.
Солдат спит, служба идет.
Однако иногда возникает необходимость выполнить обратное – расшифровать перехваченный трафик.
Это может потребоваться как для отладки работы приложений, так и для проверки подозрительной сетевой активности.
Или в целях изучения работы SSL/TLS (очевидные, вредоносные цели не обсуждаются).

Как и при каких условиях можно расшифровать дамп SSL/TLS трафика в Wireshark?
Попробуем разобраться.

Разобраться с расшифровкой будет гораздо проще, если есть общие представления о принципах работы протокола SSL/TLS. Рассмотрим упрощённый вариант функционирования SSL/TLS, выделив в нем только самые важные для нас моменты.

Обычно началу обмена шифрованными данными, в SSL/TLS предшествует процесс установки соединения, рукопожатие (SSL handshake).

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

Однако как стороны согласуют одинаковый сеансовый ключ, общаясь по незащищенным каналам связи?
Для этого существуют различные алгоритмы. Наиболее часто используемые в Интернет – это RSA (самый популярный) и эфемерный Диффи-Хеллмана (DHE/ECDHE).

В момент установки SSL/TLS соединения алгоритм согласования сеансовых ключей выбирает сервер.
Выбор происходит из списка алгоритмов, поддерживаемых клиентом, которые он передает на сервер.

Ниже на диаграмме показан процесс согласования сеансовых ключей в случаях RSA и DHE/ECDHE, а также информация, которую видит сниффер (Wireshark) в перехваченном SSL/TLS трафике.

Encrypted alert wireshark что это. Смотреть фото Encrypted alert wireshark что это. Смотреть картинку Encrypted alert wireshark что это. Картинка про Encrypted alert wireshark что это. Фото Encrypted alert wireshark что это

В первом случае (согласование ключей RSA) в момент установки соединения клиент генерирует случайное число, предварительный секрет (pre-master secret). Шифрует его открытым ключом, полученным в сертификате от сервера.
Отправляет в зашифрованном виде на сервер. Сервер расшифровывает предварительный секрет своим секретным ключом. Далее обе стороны, обладая одинаковым предварительным секретом, конвертируют его в главный и уже из него создают общий сеансовый ключ.

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

Во втором случае (согласование ключей DHE/ECDHE) все работает немного по-другому.
В момент установки нового соединения клиент и сервер генерируют пару случайных эфемерных (временных) ключей Диффи-Хеллмана.
Пара состоит из открытого и секретного ключей. Стороны обмениваются открытыми ключами.
Далее клиент и сервер, используя свой закрытый и полученный открытый ключи, создают предварительный секрет, главный секрет и общий сеансовый ключ.

В данном алгоритме постоянный секретный ключ сервера (RSA/DSA/ECDSA) в шифрации не участвует и используется только для подписи открытых DH-ключей. Описание очень общее, есть подробная информация в статье на хабре (Как HTTPS обеспечивает безопасность соединения: что должен знать каждый Web-разработчик) zavg.

Теперь возможно стало немного понятней.

Если клиент и сервер при согласовании сеансовых ключей используют алгоритм RSA, то перехваченный между ними трафик всегда можно расшифровать, имея секретный ключ сервера.
Дело в том, что в момент установки SSL/TLS-соединения клиент пересылает серверу зашифрованное значение предварительного секрета.
Предварительный секрет дешифруется секретным ключом сервера, далее вычисляется сеансовый ключ.
Данные расшифровываются полученным сеансовым ключом.

В случае использования алгоритма DHE/ECDHE и обладая секретным ключом сервера, расшифровать данные SSL/TLS трафика уже не получится.
В момент установки соединения передаются только открытые значения DH-ключей.
Секретные DH-ключи, необходимые для вычисления сеансовых, находятся в оперативной памяти клиента и сервера и после завершения соединения уничтожаются.

Эфемерные алгоритмы согласования ключей Диффи-Хеллмана (DHE/ECDHE) поддерживают Perfect Forward Secrecy (PFS).

Есть конечно другой, альтернативный вариант.
Подходит для расшифровки SSL/TLS-трафика без секретного ключа сервера, а также если используются алгоритмы DHE/ECDHE, RSA и другие.
В момент установки SSL/TLS-соединения в оперативной памяти клиента и сервера присутствуют открытые значения секретов, предварительного и главного.
Если успеть вытащить секреты из памяти и сохранить на диск, то в дальнейшем их также можно использовать для расшифровки данных.
Конечно, это не всегда просто сделать и не позволяет расшифровать трафик, перехваченный когда-либо ранее.

А теперь посмотрим, как на практике, обладая секретным ключом сервера или значениями секретов сессий, можно расшифровать SSL/TLS-трафик в Wireshark.

Wireshark + cекретный ключ сервера

Собственно, тут все относительно просто.
Загружаем в Wireshark дамп SSL/TLS-трафика обмена клиента с сервером, подключаем секретный ключ сервера и расшифровываем.

Конечно, предварительно стоит проверить, что клиент и сервер для согласования сеансовых ключей использовали алгоритм RSA.
Для этого находим инициализацию SSL/TLS-соединения (фильтр «ssl.handshake»).
Проверяем, что сервер в сообщении Server Hello в Cipher Suite указывает алгоритм RSA.

Encrypted alert wireshark что это. Смотреть фото Encrypted alert wireshark что это. Смотреть картинку Encrypted alert wireshark что это. Картинка про Encrypted alert wireshark что это. Фото Encrypted alert wireshark что это

В ответном сообщении клиента (Client Key Exchange) присутствует зашифрованное значение предварительного секрета сессии (Encrypted PreMaster).

Encrypted alert wireshark что это. Смотреть фото Encrypted alert wireshark что это. Смотреть картинку Encrypted alert wireshark что это. Картинка про Encrypted alert wireshark что это. Фото Encrypted alert wireshark что это

Encrypted alert wireshark что это. Смотреть фото Encrypted alert wireshark что это. Смотреть картинку Encrypted alert wireshark что это. Картинка про Encrypted alert wireshark что это. Фото Encrypted alert wireshark что это

В появившемся окне жмем кнопку New и заполняем поля:

IP Address – IP-адрес SSL-сервера в IPv4 или IPv6-формате
Port – номер порта SSL-сервера (для https обычно 443)
Protocol – название протокола, использующего шифрацию SSL (например, http). Если не известен, указываем data
Key File – путь к файлу секретного ключа сервера (файл формата PEM или PKCS#12)
Password – заполняется, только если секретный ключ PKCS#12 и защищен паролем

Encrypted alert wireshark что это. Смотреть фото Encrypted alert wireshark что это. Смотреть картинку Encrypted alert wireshark что это. Картинка про Encrypted alert wireshark что это. Фото Encrypted alert wireshark что это

Подтверждаем выполненные настройки и наслаждаемся просмотром расшифрованного трафика.

Для удобства через фильтр выводим только трафик прикладного уровня, например, http.
Также открытая информация доступна на закладке «Decrypted SSL Data», в нижней части окна.

Encrypted alert wireshark что это. Смотреть фото Encrypted alert wireshark что это. Смотреть картинку Encrypted alert wireshark что это. Картинка про Encrypted alert wireshark что это. Фото Encrypted alert wireshark что это

Или выбираем любой пакет из SSL/TLS-сессии, нажимаем правую клавишу мыши, затем в списке – «Follow SSL Stream».
Получаем поток расшифрованных данных из выбранного соединения.

Encrypted alert wireshark что это. Смотреть фото Encrypted alert wireshark что это. Смотреть картинку Encrypted alert wireshark что это. Картинка про Encrypted alert wireshark что это. Фото Encrypted alert wireshark что это

Wireshark + cекреты сессий

Кроме секретного ключа сервера, для расшифровки данных в Wireshark могут использоваться известные значения секретов сессий.
Хорошая возможность для тех, у кого нет секретного ключа сервера или если сервер выбирает алгоритм согласования сеансовых ключей с поддержкой PFS (DHE/ECDHE).

Где и как можно достать секреты сессий?

Конечно, перед этим трафик должен быть расшифрован секретным ключом сервера.

Яркий пример таких приложений – это браузеры Chrome и FireFox.
Оба в своей работе используют криптографический модуль NSS, разрешающий логирование секретов в файл.
Формат лога приведён ниже и соответствует первым двум вариантам.
Более подробное описание функциональности есть в статье на хабре (Как легко расшифровать TLS-трафик от браузера в Wireshark) ValdikSS.

Используя сторонние утилиты, перехватывать секреты сессий в оперативной памяти клиента или сервера.

А теперь – о том, как и в каком виде секреты загружаются в Wireshark.
Значения секретов сессий указываются построчно в обычном текстовом файле в определенном формате.

Существует три возможных формата строк:

— зашифрованное значение предварительного секрета сессии (поле Encrypted Premaster в сообщение ClientKeyExchange)
— расшифрованное значение предварительного секрета

— случайное число клиента (Random в сообщение Client Hello)
— значение главного секрета сессии

RSA Session-ID: Master-Key:

— идентификатор сессии (поле Session ID из Server Hello или Session Ticket из Client Hello)
— значение главного секрета сессии

И теперь подключаем файл с секретами в Wireshark и дешифруем SSL/TLS-трафик.

Настройки Wireshark аналогичны указанным в предыдущем разделе.
За исключением того, что в настройках протокола SSL в «RSA keys list» не нужно ничего указывать (параметры SSL-сервера и его секретный ключ). Только в поле «(Pre)-Master-Secret log filename» путь к файлу с секретами.

Encrypted alert wireshark что это. Смотреть фото Encrypted alert wireshark что это. Смотреть картинку Encrypted alert wireshark что это. Картинка про Encrypted alert wireshark что это. Фото Encrypted alert wireshark что это

Подтверждаем настройки и смотрим расшифрованный трафик.

Заключение

Надеюсь, представленная информация окажется интересной всем,
кто планирует или уже занимается анализом SSL/TLS-трафика в Wireshark.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *