Смотрим под капот защищенных соединений в Wireshark. Часть 1: TLS

Ещё в группе «Общее»
- Мы помогли Apple устранить уязвимость в ядре ее операционных систем
Мы помогли Apple устранить уязвимость в ядре ее операционных систем Эксперт PT ESC Михаил Ложников обнаружил…
- Восстановление EVTX-записей: методы карвинга
Восстановление EVTX-записей: методы карвинга 🧩 При расследовании инцидентов, когда злоумышленники шифруют образы виртуальных машин, нередко возникает…
- Операция Chewbacca
В конце июня команда PT ESC в ходе расследования инцидентов обнаружила новую группу, нацеленную как минимум…
- Ваш сервер Zimbra под угрозой
Недавно наша команда PT ESC IR столкнулась с новой атакой ransomware-группировок на почтовые серверы Zimbra с…
- Он вам не gsocket
Он вам не gsocket 😑 В ходе расследования одного из инцидентов специалисты PT ESC IR наткнулись…
Нашим сетевым экспертам часто бывает нужно расшифровывать трафик TLS-соединений и проанализировать защищенное содержимое. Современные алгоритмы TLS уже очень давно используют схему Ephemeral Diffie–Hellman (EDH), которая не позволяет расшифровывать TLS-сессии закрытым ключом RSA.
Теперь для расшифровки необходимо собирать так называемые сессионные ключи (session keys) средствами самого TLS-клиента или сервера. И за много лет мы собрали несколько лайфхаков, которые работают для большинства анализируемых приложений. Поехали!
1️⃣ Браузеры и консольные утилиты
Для расшифровки браузерных TLS-сессий или консольных утилит, например curl, необходимо установить переменную окружения SSLKEYLOG. Это делается при помощи команды
export SSLKEYLOGFILE=/path/to/keylog.log для Linux-систем или через переменные среды (скриншоты 1 и 2) в системах Windows. Теперь браузеры и утилиты будут сохранять сессионные ключи в указанном файле.2️⃣ Приложения на Go
Настройка дампа ключей в подобных приложениях потребует небольшого патча. Необходимо либо добавить эти строки в код самого приложения (пример).
w, err := os.OpenFile("/path/to/SSLKEYLOGFILE", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
config := &tls.Config{KeyLogWriter: w}
Code language: plaintext (plaintext)Либо, если в файле явно не определяется tls config, но в самой программе или в библиотеке используется стандартная библиотека crypto/go, можно задать sslkeylog-файл прямо в ней. Мы привели пример diff-файла (common_go.diff) для
go version go1.24.4 linux/amd64. После этого достаточно задать путь к keylog-файлу в переменной окружения SSLKEYLOGFILE:export SSLKEYLOGFILE=/path/to/keylog.log
Code language: Bash (bash)3️⃣ Приложения на Python
Настройка дампа ключей также работает через установку переменной окружения SSLKEYLOGFILE:
export SSLKEYLOGFILE=/path/to/keylog.log
python main.py
Code language: Bash (bash)4️⃣ Приложения на Node.js
Необходимо просто запустить приложение с ключом tls-keylog
node --tls-keylog=/path/to/keylog.log program.js
Code language: plaintext (plaintext)Либо задать переменную окружения NODE_OPTIONS и запустить программу в той же консоли:
export NODE_OPTIONS=--tls-keylog=/path/to/keylog.log
Code language: Bash (bash)5️⃣ Xray Core
Другие проприетарные приложения могут использовать свои собственные параметры для дампа сессионных ключей. Особенно те, которые реализуют TLS-соединения по-своему. Xray — это целый фреймворк, который поддерживает множество VPN-протоколов, включая VMess, VLESS и XTLS. Благодаря разработчикам ядра Xray собрать сессионные ключи не составит труда. Нужно всего лишь добавить ключ masterKeyLog в конфигурацию исходящего (outbound) подключения.
"realitySettings": {
"serverName": "yahoo.com",
"publicKey": "publicKey",
"shortId": "shortId",
"fingerprint": "chrome",
"spiderX": "/",
"masterKeyLog": "/path/to/keylog"
}
Code language: plaintext (plaintext)Большинство конфигураций Xray задается при помощи URL, для добавления ключа необходимо поправить JSON-конфигурацию внутри клиента или сервера уже после добавления ключа.
Как использовать полученные session keys
Чтобы расшифровать TLS-сессию в Wireshark, необходимо открыть Edit → Preferences, затем в настройках протокола TLS выбрать файл Master-Secret log filename (скриншот 3, результат на скриншоте 4).
☠️ Ну а в следующей части мы расскажем о расшифровке зашифрованного содержимого протоколов SMB/LDAP/DCERPC с NTLM- и Kerberos-аутентификацией.
Делитесь вашими собственными лайфхаками в комментариях ⬇️



#dfir #tip #tls #network
@ptescalator
Ещё в группе «Общее»
- Мы помогли Apple устранить уязвимость в ядре ее операционных систем
Мы помогли Apple устранить уязвимость в ядре ее операционных систем Эксперт PT ESC Михаил Ложников обнаружил…
- Восстановление EVTX-записей: методы карвинга
Восстановление EVTX-записей: методы карвинга 🧩 При расследовании инцидентов, когда злоумышленники шифруют образы виртуальных машин, нередко возникает…
- Операция Chewbacca
В конце июня команда PT ESC в ходе расследования инцидентов обнаружила новую группу, нацеленную как минимум…
- Ваш сервер Zimbra под угрозой
Недавно наша команда PT ESC IR столкнулась с новой атакой ransomware-группировок на почтовые серверы Zimbra с…
- Он вам не gsocket
Он вам не gsocket 😑 В ходе расследования одного из инцидентов специалисты PT ESC IR наткнулись…



