Назад к обновлениям
UpdatedOct 4, 2026

ecapture — Updated!

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

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

汉字 | English

GitHub stars GitHub forks CI GitHub Version

eCapture (наблюдатель): перехват открытого текста SSL/TLS-трафика без CA-сертификата с помощью eBPF.

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


Введение

  • Перехватывает открытый текст TLS/SSL-трафика из библиотек OpenSSL, LibreSSL, BoringSSL, GnuTLS и NSS/NSPR.
  • Поддерживает перехват открытого текста для программ на Go TLS, включая HTTPS/TLS-трафик в приложениях на Go.
  • Проводит аудит истории команд bash и zsh для мониторинга безопасности хоста.
  • Проводит аудит запросов MySQL и поддерживает MySQL 5.6/5.7/8.0 и MariaDB.

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

Загрузка

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

[!TIP] Поддерживает Linux/Android на x86_64 и aarch64.

Скачайте пакет с ELF-бинарным файлом со страницы релизов, распакуйте его и запустите:

sudo ecapture --help

Docker-образ

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

# Pull the Docker image
docker pull gojue/ecapture:latest

# Run it
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, NSS/NSPR, BoringSSL и GoTLS. Он также поддерживает аудит команд и запросов из приложений Bash, MySQL и PostgreSQL.

  • bash: перехватывает команды bash
  • zsh: перехватывает команды zsh
  • gnutls: перехватывает открытый текст из библиотек GnuTLS без необходимости в CA-сертификате
  • gotls: перехватывает открытое взаимодействие из программ на Go, использующих TLS/HTTPS
  • mysqld: перехватывает SQL-запросы из MySQL 5.6/5.7/8.0 и MariaDB
  • nss: перехватывает открытый текст из библиотек NSS/NSPR без необходимости в CA-сертификате
  • postgres: перехватывает SQL-запросы из PostgreSQL 10+
  • tls: перехватывает открытый текст TLS/SSL-трафика без CA-сертификата (поддерживает OpenSSL 1.0.x/1.1.x/3.0.x и новее)

Вы можете использовать ecapture -h, чтобы просмотреть полный список подкоманд.

Модуль OpenSSL

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

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

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

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

Режим Pcap

Поддерживает TLS-шифрованный HTTP 1.0/1.1/2.0 поверх TCP и HTTP/3 (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.

Перехваченный master secret OpenSSL TLS сохраняется в --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

Выводит все пакеты с открытыми данными.

Модуль 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.

Видео

GUI-приложение eCaptureQ

Категории