Назад к обновлениям
New releaseSep 10, 2026

ecapture v2.6.0

Захват открытого текста SSL/TLS без сертификата ЦС с помощью eBPF. Поддерживается на ядрах Linux/Android для amd64/arm64.

Поделиться
eCapture Logo

汉字 | English

GitHub stars GitHub forks CI Github Version

eCapture (Наблюдатель): захват текстового содержимого SSL/TLS без сертификата ЦС с помощью eBPF.

[!IMPORTANT]
Поддерживает Linux/Android на x86_64 (ядро 4.18+) и aarch64 (ядро 5.5+). Требования к версии ядра различаются в зависимости от архитектуры ЦП для Linux и Android. Требуются права ROOT или определенные возможности Linux. Не поддерживает Windows и macOS.


Введение

  • Захват открытого текста SSL/TLS, поддержка библиотек openssl, libressl, boringssl, gnutls, nspr (nss).
  • Захват открытого текста GoTLS, поддержка библиотеки go tls, которая относится к зашифрованной связи в программах https/tls, написанных на языке golang.
  • Аудит Bash, захват команд bash для аудита безопасности хоста.
  • Аудит Zsh, захват команд zsh для аудита безопасности хоста.
  • Аудит SQL запросов MySQL, поддержка mysqld 5.6, 5.7, 8.0 и MariaDB.

Начало работы

Загрузка

ELF бинарный файл

[!TIP] Поддержка Linux/Android x86_64/aarch64.

Скачайте ELF zip файл релиза, распакуйте и используйте командой sudo ecapture --help.

Docker образ

[!TIP] Только Linux.

# pull docker image
docker pull gojue/ecapture:latest
# run
docker run --rm --privileged=true --net=host -v ${HOST_PATH}:${CONTAINER_PATH} gojue/ecapture ARGS

⚠️ Замечание по безопасности: --privileged=true предоставляет полный доступ к хосту. Для промышленного использования рассмотрите конкретные возможности. См. Руководство по минимальным привилегиям.

см. Docker Hub для получения дополнительной информации.

Захват текстового содержимого openssl.

sudo ecapture tls

eCapture автоматически обнаружит библиотеку OpenSSL системы и начнет захват открытого текста. Когда вы сделаете HTTPS запрос (например, curl https://google.com), захваченный запрос и ответ будут отображены:

...
INF module started successfully. moduleName=EBPFProbeOPENSSL
??? UUID:233851_233851_curl_5_1_172.16.71.1:51837, Name:HTTP2Request, Type:2, Length:304
header field ":method" = "GET"
header field ":path" = "/"
header field ":authority" = "google.com"
...

📄 Полные примеры вывода см. в docs/example-outputs.md.

Модули

Инструмент eCapture включает 8 модулей, которые соответственно поддерживают захват открытого текста для библиотек шифрования TLS/SSL, таких как OpenSSL, GnuTLS, NSPR, BoringSSL и GoTLS. Кроме того, он облегчает аудит программного обеспечения для приложений Bash, MySQL и PostgreSQL.

  • bash захват команд bash
  • zsh захват команд zsh
  • gnutls захват текстового содержимого gnutls без сертификата ЦС для библиотек gnutls.
  • gotls захват открытого текста связи из программ на Golang, зашифрованной с помощью TLS/HTTPS.
  • mysqld захват SQL запросов из mysqld 5.6/5.7/8.0 .
  • nss захват зашифрованного текстового содержимого nss/nspr без сертификата ЦС для библиотек nss/nspr.
  • postgres захват SQL запросов из postgres 10+.
  • tls используется для захвата текстового содержимого tls/ssl без сертификата ЦС. (Поддерживает openssl 1.0.x/1.1.x/3.0.x или новее). Вы можете использовать ecapture -h для просмотра списка подкоманд.

Модуль OpenSSL

По умолчанию eCapture ищет файл /etc/ld.so.conf для поиска каталогов загрузки файлов SO и расположения разделяемых библиотек openssl. Или вы можете использовать флаг --libssl, чтобы указать путь к разделяемой библиотеке.

Если целевая программа скомпилирована статически, вы можете напрямую установить путь к программе в качестве значения флага --libssl.

Модуль OpenSSL поддерживает три режима захвата:

  • Режим pcap/pcapng сохраняет захваченные данные открытого текста в формате pcap-NG.
  • Режим keylog/key сохраняет ключи рукопожатия TLS в файл.
  • Режим text напрямую захватывает данные открытого текста, выводя их в указанный файл или печатая в командной строке.

Режим Pcap

Поддерживает зашифрованный TLS http 1.0/1.1/2.0 по TCP и протокол http3 QUIC по UDP. Вы можете указать -m pcap или -m pcapng и использовать их вместе с параметрами --pcapfile и -i. Значение по умолчанию для --pcapfile — ecapture_openssl.pcapng.

sudo ecapture tls -m pcap -i eth0 --pcapfile=ecapture.pcapng tcp port 443

Эта команда сохраняет захваченные пакеты открытого текста в файл pcapng, который можно просмотреть с помощью Wireshark.

📄 Полный вывод режима pcapng см. в docs/example-outputs.md.

Режим Keylog

Вы можете указать -m keylog или -m key и использовать их с параметром --keylogfile, который по умолчанию равен ecapture_masterkey.log.

Захваченная информация OpenSSL TLS Master Secret сохраняется в --keylogfile. Вы также можете включить захват пакетов tcpdump, а затем с помощью Wireshark открыть файл и указать путь к Master Secret для просмотра пакетов открытого текста.

sudo ecapture tls -m keylog -keylogfile=openssl_keylog.log

Вы также можете напрямую использовать программу tshark для расшифровки и отображения в реальном времени:

tshark -o tls.keylog_file:ecapture_masterkey.log -Y http -T fields -e http.file_data -f "port 443" -i eth0

Режим Text

sudo ecapture tls -m text выведет все пакеты открытого текста. (Начиная с v0.7.0, он больше не захватывает информацию SSLKEYLOG.)

Модуль GoTLS

Аналогичен модулю OpenSSL.

Команда gotls

захват текстового контекста TLS.

Шаг 1:

sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex

Шаг 2:

/home/cfc4n/go_https_client

дополнительная справка

sudo ecapture gotls -h

Другие модули

такие как модули bash, mysqld, postgres. Вы можете использовать ecapture -h для просмотра списка подкоманд.

Видео

Приложение eCaptureQ GUI

Категории