Перехват и анализ TLS-трафика

Утилита ecapture предназначена для перехвата и анализа TLS-трафика с использованием eBPF. Позволяет получать расшифрованное содержимое HTTPS-трафика без установки доверенного сертификата.

Основные сценарии использования:

  • Получение ключевого материала TLS. Ключи сохраняются в формате SSLKEYLOGFILE и применяются для расшифровки трафика в Wireshark или tshark.

  • Расшифровка TLS-трафика. Содержимое HTTPS-запросов и ответов становится доступным при наличии ключевого материала.

  • Анализ HTTPS-трафика в Wireshark или tshark. Выполняется разбор расшифрованного трафика, включая заголовки и содержимое HTTP/HTTP2.

Для корректной работы утилиты ecapture необходимо указать путь к библиотеке libssl.

Путь к библиотеке определяется командой:

openresty -V

Необходимо найти параметры --with-ld-opt или --with-cc-opt, содержащие путь к библиотеке.

По умолчанию библиотека может располагаться по пути:

/usr/local/openresty/openssl3/lib/libssl.so.3

Полученный путь необходимо указать в параметре --libssl.

Запись трафика в pcapng-файл:

sudo ecapture tls -m pcap -i eth0 --libssl=/PATH/TO/libssl.so --pcapfile=output.pcapng

Файл содержит встроенные данные для расшифровки и может быть открыт в Wireshark.

Логирование ключей TLS:

sudo ecapture tls -m keylog --keylogfile=/var/log/tls/tls_keys.log --libssl=/PATH/TO/libssl.so

Комбинированный сбор трафика и ключей:

# Terminal 1: захват трафика
sudo tcpdump -i any -w /tmp/traffic.pcap 'tcp port 443'

# Terminal 2: логирование ключей
sudo ecapture tls -m keylog --keylogfile=/tmp/keys.log

# Terminal 3: генерация трафика
curl https://www.google.com
curl https://www.github.com

Расшифровка трафика с помощью tshark:

tshark -r /tmp/traffic.pcap \
       -o tls.keylog_file:/tmp/keys.log \
       -Y http \
       -T fields \
       -e frame.number \
       -e http.request.full_uri \
       -e http.response.code

Расшифровка в реальном времени:

# Terminal 1: запуск логирования ключей
sudo ecapture tls -m keylog --keylogfile=ecapture_keys.log

# Terminal 2: расшифровка HTTP/1.x
tshark -o tls.keylog_file:ecapture_keys.log \
       -Y http \
       -T fields \
       -e http.file_data \
       -f "port 443" \
       -i eth0

Для HTTP/2:

tshark -o tls.keylog_file:ecapture_keys.log \
       -Y http2 \
       -T fields \
       -e http2.data.data \
       -f "port 443" \
       -i eth0

Расшифровка в Wireshark:

Открыть Wireshark, перейти в раздел Edit → Preferences → Protocols → TLS и в поле (Pre)-Master-Secret log filename указать путь к файлу с ключами. Затем открыть файл traffic.pcap или capture.pcapng и применить фильтры http или http2.