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

ecapture v2.5.2

Захват открытого текста 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. Значение по умолчанию для --pcapfileecapture_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

eCaptureQ — это кроссплатформенный клиент с графическим пользовательским интерфейсом для eCapture, визуализирующий возможности захвата TLS eBPF. Построенный на технологическом стеке Rust + Tauri + React, он предоставляет интерфейс в реальном времени с высокой отзывчивостью, позволяя легко анализировать зашифрованный трафик без необходимости в сертификатах ЦС. Он упрощает сложные методы захвата eBPF, делая их простыми в использовании. Поддерживает два режима:

  • Интегрированный режим: единое выполнение для Linux/Android
  • Удаленный режим: клиент Windows/macOS/Linux подключается к удаленному сервису eCapture

Пересылка событий

Проекты пересылки событий

Видеодемонстрация

https://github.com/user-attachments/assets/c8b7a84d-58eb-4fdb-9843-f775c97bdbfb

🔗 Репозиторий GitHub

Протоколы Protobuf

Подробности схемы логов Protobuf, используемой eCapture/eCaptureQ, см. в:

Количество звезд с течением времени

Stargazers over time

Безопасность и эксплуатация

Участие

См. CONTRIBUTING для получения информации об отправке патчей и рабочем процессе участия.

Компиляция

Пользовательская компиляция

Вы можете настроить нужные функции, например, задать адрес смещения для uprobe, чтобы поддерживать статически скомпилированные библиотеки OpenSSL. Обратитесь к руководству по компиляции для получения инструкций по компиляции.

Удаленное обновление конфигураций

После запуска eCapture вы можете динамически изменять конфигурации через HTTP интерфейсы. Обратитесь к документации HTTP API.

Пересылка событий

eCapture поддерживает несколько методов пересылки событий. Вы можете пересылать события в программное обеспечение для захвата пакетов, такое как Burp Suite. Подробности см. в документации API пересылки событий.

Категории