Как установить переменную среды sslkeylogfile в Chrome
Обновлено: 25.11.2024
Примечание о платформе: облако, сервер и центр обработки данных. Эта статья в равной степени относится ко всем платформам.
При отправке захваченного результата в службу поддержки.
Не забудьте указать IP-адреса задействованных серверов, чтобы служба поддержки Atlassian могла использовать их для фильтрации дампа TCP. Кроме того, укажите период времени, когда вы выполнили операцию, запрошенную службой поддержки.
Wireshark
Wireshark – это анализатор сетевых протоколов, который можно установить в Windows, Linux и Mac. Он обеспечивает полный захват и более информативен, чем Fiddler.
-
.
- Откройте интернет-браузер.
- Очистите кеш браузера.
- Открыть Wireshark
- Нажмите "Захват >Интерфейсы". Появится всплывающее окно.
- Вам нужно перехватывать трафик, проходящий через драйвер Ethernet. Нажмите кнопку «Пуск», чтобы перехватить трафик через этот интерфейс.
- Перейдите по URL-адресу, с которого вы хотите получить трафик.
- Вернитесь на экран Wireshark и нажмите Ctrl + E, чтобы остановить захват.
После прекращения захвата трафика сохраните захваченный трафик в файл формата *.pcap и прикрепите его к заявке в службу поддержки.
Скрипач
- Загрузить Fiddler.
- Откройте его.
- Очистите кэш браузера.
Перейдите на свой сайт. Посетите проблемные страницы и контрастную непроблемную страницу, если это уместно.
Fiddler может перехватывать локальный трафик, используя имя компьютера в качестве имени хоста, а не "localhost".
tcpdump
tcpdump — это утилита командной строки для захвата сетевого трафика на клиентах Unix, таких как OS X. Этот инструмент имеет множество параметров, которые здесь не обсуждаются. Пожалуйста, обратитесь к своему агенту службы поддержки или прочтите справочную страницу unix/linux tcpdump для получения дополнительных опций.
Захват с течением времени
Чтобы решить более сложные проблемы, вам может потребоваться периодический сбор данных о трафике. Вот несколько полезных опций:
- Ограничьте трафик с помощью -s 96. Это приведет к усечению части данных трафика. Это позволяет перехватывать согласование и установление потоков TCP.
- Ограничить трафик одним хостом. Это может быть полезно при работе на сервере или узле центра обработки данных, а не на конечной точке пользователя.
- tcpdump -я хост
- tcpdump -i -C 500 -w
- -G Если указано с параметром -w, файл дампа следует менять каждые X секунд.
- -W Количество файлов для записи.
- Используйте переменные даты и времени в параметре -w. Это зафиксирует время смены пакета.
- -w Данные-%Y-%m-%d_%H.%M.%S.pcap
Полный пример дополнительных параметров. Эта команда будет собирать веб-трафик на хост 192.168.0.100 в течение шести часов. Он создаст 6 файлов, в основном с данными сетевого протокола:
Расшифровать с помощью Fiddler
Расшифровать с помощью SSLKEYLOGFILE
Это функция веб-браузеров. Проверьте, поддерживает ли ваш браузер эту функцию. Эти примеры приведены в качестве примера того, как это сделать для обычных браузеров.
Не используйте эту функцию на компьютерах с конфиденциальными данными. Не получайте доступ к конфиденциальным данным, если эта функция включена. Не загружайте файлы SSLKEYLOGFILE или pcap с конфиденциальными данными, если вы не уверены, что это поможет решить вашу проблему.
Подтвердите, что эта функция отключена после сбора необходимых данных. Чтобы подтвердить удаление файла журнала, полностью закройте все браузеры, запустите браузер и убедитесь, что файл не создается повторно.
Chrome и Firefox в Unix
- Открыть сеанс терминала.
- Убедитесь, что все веб-браузеры закрыты.
- Установите переменную SSLKEYLOGFILE.
- экспортировать SSLKEYLOGFILE=$HOME/sslkeylog.log
- Начать захват сетевого трафика.
- Запустите браузер из сеанса терминала.
- В Mac OS X используйте команду open: open /Applications/Firefox.app/
- В Linux: /usr/bin/chromium-browser
- Соберите данные.
- Закройте браузер и сеанс терминала.
Chrome и Firefox в Windows
- Установите SSLKEYLOGFILE в качестве переменной среды.
- Запустите sysdm.cpl из командной строки Windows.
- Откройте вкладку "Дополнительно" и нажмите кнопку "Переменные среды" в окне "Свойства системы".
- Добавьте SSLKEYLOGFILE в пользовательские переменные.
- Значением должен быть путь и имя файла журнала.
Чтение трафика выходит за рамки этой статьи. Пожалуйста, используйте эту статью, если вы хотите увидеть расшифрованный трафик.
Это реализация средства SSLKEYLOGFILE, доступного в Firefox и Chromium/Google Chrome, которое поддерживается Wireshark для расшифровки соединений SSL/TLS, даже если у вас нет закрытого ключа или при обмене ключами. методы, которые предотвратят расшифровку, даже если вы это сделаете (например, Диффи-Хеллман).
Это для стандартного модуля ssl библиотеки, он не будет работать для других модулей ssl.
Python 3.8+ включает встроенную поддержку создания файла журнала ключей SSL с помощью ssl.SSLContext.keylog_filename , а также активирует его, если переменная среды SSLKEYLOGFILE установлена при создании контекста с помощью ssl.create_default_context() . р>
В этом пакете используется тот же обратный вызов, что и во встроенной реализации, что, вероятно, приведет к тому, что обе реализации будут вытеснять друг друга, в результате чего другая не будет работать или возникнут другие непредвиденные последствия. Таким образом, вам, вероятно, не следует включать оба одновременно.
sslkeylog¶
Этот модуль позволяет регистрировать ключи SSL/TLS, которые можно использовать для расшифровки соединений SSL/TLS.
Установите переменную среды SSLKEYLOGFILE, если вы ее используете, и установите «(Pre)-Master-Secret имя файла журнала» в настройках протокола SSL Wireshark для полученного файла.
sslkeylog. get_client_random ( носок ) ¶
Получить случайный клиент из ssl.SSLSocket или ssl.SSLObject .
Не работает с сокетами TLS v1.3+.
Получить сервер случайным образом из ssl.SSLSocket или ssl.SSLObject .
Не работает с сокетами TLS v1.3+.
Новое в версии 0.4.0.
Получите главный ключ из ssl.SSLSocket или ssl.SSLObject .
Не работает с сокетами TLS v1.3+.
Получить ключевой материал для использования приложением из ssl.SSLSocket или ssl.SSLObject .
Не работает с сокетами SSL v3.0 и ниже.
Новое в версии 0.4.0.
Создайте ключевую строку журнала из ssl.SSLSocket или ssl.SSLObject .
Не работает с сокетами TLS v1.3+.
Задайте для журнала ключей значение dest, которое может быть либо путем, либо файлоподобным объектом, либо обратным вызовом.
Журнал ключей распространяется на весь процесс и регистрирует ключи для всех подключений SSL/TLS в процессе.
Обратный вызов будет вызван с сокетом и строкой журнала ключей, которая должна быть записана в журнал ключей.
Это применит патч обезьяны, необходимый для реализации этого, если он еще не применен, см. patch() .
Примените исправление обезьяны, используемое для реализации журнала ключей, если оно еще не исправлено.
Отмените исправление обезьяны, использованное для реализации журнала ключей, если оно было применено.
Безопасность транспортного уровня (TLS) обеспечивает безопасность связи между двумя хостами. Он обеспечивает целостность, аутентификацию и конфиденциальность. Чаще всего он используется в веб-браузерах, но его можно использовать с любым протоколом, использующим TCP в качестве транспортного уровня.
Secure Sockets Layer (SSL) — это предшественник протокола TLS. Эти имена часто используются взаимозаменяемо, что может привести к некоторой путанице:
Конфигурация, использующая протокол SSL (SSLv2/SSLv3), небезопасна. Вместо этого следует использовать протокол TLS.
Сертификаты X.509 для аутентификации иногда также называются SSL-сертификатами.
Некоторые приложения (например, электронная почта) используют один порт как для незашифрованных, так и для зашифрованных сеансов. Чтобы перейти от незашифрованного к зашифрованному, используется (START)TLS. Когда один порт напрямую использует протокол TLS, его часто называют SSL.
По историческим причинам программное обеспечение (включая Wireshark) относится к SSL или SSL/TLS, хотя на самом деле это означает протокол TLS, поскольку в настоящее время его используют все.
Зависимости протокола
- TCP. Как правило, TLS использует TCP в качестве транспортного протокола.
Разбор TLS в Wireshark
Начиная с Wireshark 3.0, диссектор TLS был переименован с SSL на TLS. При использовании фильтра отображения ssl будет выдано предупреждение.
Расшифровка TLS
Расшифровка с использованием закрытого ключа RSA.
Файл журнала ключей — это универсальный механизм, который всегда обеспечивает расшифровку, даже если используется обмен ключами Диффи-Хеллмана (DH). Закрытый ключ RSA работает только в ограниченном числе случаев.
Файл закрытого ключа RSA можно использовать только в следующих случаях:
Набор шифров, выбранный сервером, не использует (EC)DHE.
Версия протокола — SSLv3, (D)TLS 1.0–1.2. Он не работает с TLS 1.3.
Закрытый ключ соответствует сертификату сервера. Он не работает ни с сертификатом client, ни с сертификатом центра сертификации (CA).
Сеанс не был возобновлен. Квитирование должно включать сообщение квитирования ClientKeyExchange.
Обычно рекомендуется файл журнала ключей, поскольку он работает во всех случаях, но требует постоянной возможности экспортировать секреты из клиентского или серверного приложения.Единственным преимуществом закрытого ключа RSA является то, что его необходимо настроить только один раз в Wireshark, чтобы включить расшифровку, с учетом указанных выше ограничений.
Настройки предпочтений
Перейдите в раздел Изменить -> Настройки. Откройте дерево Протоколы и выберите TLS. Либо выберите пакет TLS в списке пакетов, щелкните правой кнопкой мыши уровень TLS в представлении сведений о пакете и откройте меню Настройки протокола.
(Pre)-Master-Secret имя файла журнала (tls.keylog_file): путь для чтения файла журнала ключей TLS для расшифровки.
Список ключей RSA: открывает диалоговое окно для настройки закрытых ключей RSA для расшифровки. Устарело и заменено диалоговым окном Настройки -> Ключи RSA.
Pre-Shared-Key: используется для настройки ключа дешифрования для наборов шифров PSK. Обычно не используется.
Файл отладки TLS (tls.debug_logfile): путь для записи внутренних сведений о процессе расшифровки. Будет содержать результаты расшифровки и ключи, которые использовались в этом процессе. Это можно использовать для диагностики причин сбоя расшифровки.
Для включения расшифровки TLS также требуются следующие настройки протокола TCP:
- Разрешить subdissector повторно собирать потоки TCP. Включено по умолчанию.
- Повторная сборка неупорядоченных сегментов (начиная с Wireshark 3.0, по умолчанию отключена).
Начиная с Wireshark 3.0, новое диалоговое окно ключей RSA можно найти в разделе Правка -> Настройки -> Ключи RSA. В этом диалоговом окне используйте кнопку Добавить новый ключевой файл…, чтобы выбрать файл. При необходимости вам будет предложено ввести пароль. Кнопку Добавить новый токен… можно использовать для добавления ключей из HSM, что может потребовать использования Добавить новый поставщик… для выбора файла DLL/.so и дополнительного поставщика. -конкретная конфигурация.
Устаревшее диалоговое окно Список ключей RSA может быть удалено в какой-то момент. Вместо этого для настройки ключей используйте диалоговое окно Ключи RSA. Чтобы изменить протокол для расшифрованных сетевых данных, щелкните правой кнопкой мыши пакет TLS и используйте Декодировать как, чтобы изменить Текущий протокол для порта TLS. . Поля IP-адрес и Порт не используются.
Пример файла захвата
tls12-dsb.pcapng — трассировка TLS 1.2 со встроенными ключами дешифрования. (здесь добавлен тестовый захват в дереве исходного кода Wireshark)
Фильтр отображения
Полный список полей фильтра отображения TLS можно найти в справочнике фильтров отображения
Показать только трафик на основе TLS:
Фильтр захвата
Вы не можете напрямую фильтровать протоколы TLS во время захвата. Однако, если вы знаете используемый TCP-порт (см. выше), вы можете отфильтровать его, например, используя TCP-порт 443 .
Использование (Pre)-Master-Secret
Главный секрет позволяет расшифровывать TLS в Wireshark и может быть предоставлен через файл журнала ключей. Предварительный секрет является результатом обмена ключами и может быть преобразован Wireshark в главный секрет. Этот предварительный секрет можно получить, если предоставлен закрытый ключ RSA и используется обмен ключами RSA.
Пошаговые инструкции по расшифровке трафика TLS из Chrome или Firefox в Wireshark:
Полностью закройте браузер (на всякий случай проверьте диспетчер задач).
Задайте для переменной среды SSLKEYLOGFILE абсолютный путь файла, доступного для записи.
Запустите браузер.
Убедитесь, что местоположение из шага 2 создано.
В Wireshark перейдите в раздел Правка -> Настройки -> Протоколы -> TLS и измените (Pre)-Master-Secret имя файла журнала на путь из шага 2.
Запустите захват Wireshark.
Для Windows глобальная переменная среды может быть установлена, как описано в этом пошаговом руководстве, но это не рекомендуется, так как об этом легко забыть, и это может быть проблемой безопасности, поскольку это позволяет расшифровывать весь ваш трафик TLS. Лучший способ установить переменную среды — через пакетный файл. Создайте файл start-fx.cmd с:
Для Linux вы открываете терминал, а затем запускаете браузер с помощью:
Для macos вы открываете терминал, а затем запускаете браузер с помощью:
При необходимости измените путь SSLKEYLOGFILE и замените firefox на chrome для Google Chrome. Этот механизм в настоящее время (2019 г.) не работает для Safari, Microsoft Edge и других, поскольку их библиотеки TLS (Microsoft SChannel/Apple SecureTransport) не поддерживают этот механизм. Этот механизм работает и для приложений, отличных от веб-браузеров, но зависит от библиотеки TLS, используемой приложением.
Примечание. Версии Edge на основе Chromium (версия 79+) также должны работать.
Примеры других приложений:
Приложения, использующие OpenSSL, могут использовать GDB или прием LD_PRELOAD для извлечения секретов. Это включает Python.
Для программ Java секреты можно извлечь из предпочтения журнала отладки TLS или вывести непосредственно в формате, который требует Wireshark, через агент Java. Два похожих проекта:
Сценарии Python также можно отредактировать для вывода ключей.
Обзор поддерживаемых приложений и библиотек TLS см. также на стр. 19 презентации Peter Wu SSL/TLS Decryption SharkFest'18 EU.
Внедрение секретов расшифровки в файл pcapng
Начиная с Wireshark 3.0, вы можете встроить файл журнала ключей TLS в файл pcapng. Это значительно упрощает распространение файлов захвата с секретами дешифрования и упрощает переключение между файлами захвата, поскольку нет необходимости обновлять предпочтение протокола TLS. Чтобы добавить содержимое файла журнала ключей keys.txt в файл захвата in.pcap и записать результат в out-dsb.pcapng :
editcap --inject-secrets tls,keys.txt in.pcap out-dsb.pcapng
Суффикс dsb означает блок секретов расшифровки (DSB) и является частью спецификации pcapng.
См. также
Некоторые другие протоколы являются производными от TLS. Сюда входят:
DTLS основан на стандарте TLS и работает поверх UDP в качестве транспортного протокола.
Внешние ссылки
PolarProxy от Netresec — это прозрачный прокси-сервер SSL/TLS, созданный для специалистов по реагированию на инциденты и исследователей вредоносных программ, который в первую очередь предназначен для перехвата и расшифровки зашифрованного TLS-трафика от вредоносных программ. PolarProxy расшифровывает и повторно шифрует трафик TLS, а также сохраняет расшифрованный трафик в файле PCAP, который можно загрузить в Wireshark или систему обнаружения вторжений (IDS).
Мы обеспечиваем ускоренную безопасность. Мы помогаем приложениям SAAS предотвращать атаки и восстанавливаться после них, преодолевать нормативные требования или требования безопасности интеграции или просто останавливать «странный» трафик до того, как он станет проблемой.
Charles Proxy — один из самых известных инструментов отладки SSL. Чарльз уже выручал нас из кучи проблем, и мы всегда хранили это на случай, если оно нам понадобится:
- Чарльзу требуется, чтобы Java была установлена и включена.
- Неуклюжий пользовательский интерфейс.
Переустанавливать корневой сертификат Чарльза после обновлений OS X скучно. Вам нужно бежать:
Эти недостатки не мешают Charles быть полезным программным обеспечением, и мы сохраним Charles. Однако, если вы просто хотите просмотреть незашифрованное содержимое вашего SSL-трафика во время сеанса просмотра веб-страниц, и если этим браузером является Chrome или Firefox, есть более простое решение.
Только что был выпущен Wireshark 2. Он имеет собственный пользовательский интерфейс OS X. Лучше всего то, что вы можете использовать его вместе с Chrome или Firefox, чтобы невероятно легко проверять SSL-трафик.
Есть копия? Поехали:
Начать захват пакетов
Замените en0 на свой сетевой интерфейс, указанный в ifconfig (OS X) или ip addr (Linux).
Заставьте браузер сохранять сеансовые ключи
Остановите все существующие экземпляры Chrome или Firefox (в зависимости от того, что вы собираетесь использовать).
Затем откройте терминал и выполните следующее:
Запустите Chrome или Firefox:
Если хотите, можете посмотреть его в терминале:
- Запись Client_Random для согласованных сеансов Диффи-Хеллмана
- Запись RSA предназначена для сеансов, использующих обмен ключами RSA или DSA.
Просмотр захвата с помощью сеансового ключа для отображения зашифрованного содержимого
И конкретный хост с:
Чтобы просмотреть конкретный сеанс TCP, щелкните правой кнопкой мыши любую из записей и выберите "Следовать за потоком SSL".
Заключение
Мы надеемся, что показанный здесь метод сеансовых ключей окажется таким же полезным, как и мы. Вы, вероятно, захотите оставить Чарльза рядом с такими приложениями, как wget и curl. Тем не менее, если причина, по которой вы используете wget или curl, заключается в тестировании REST API, подумайте о Postman: это приложение Chrome, поэтому используются сеансовые ключи Chrome. Он больше ориентирован на REST, поэтому вы потратите больше времени на тестирование и меньше на чтение справочной страницы.
Читайте также: