
Перехватывайте открытый текст SSL/TLS с помощью eBPF — без MITM-прокси и установки собственного CA. Поддерживаются Linux и Android на x86_64 и arm64.
eCapture (旁观者)
Захват открытого текста SSL/TLS с помощью eBPF — без MITM-прокси и установки собственного CA.
English · 汉字
[!IMPORTANT] Поддерживается Linux на x86_64 (ядро 4.18+), aarch64 (ядро 5.5+) и LoongArch64
loong64(ядро 6.6+). Android поддерживает x86_64 и aarch64 с теми же минимальными требованиями к ядру. Требуются права root или определённые возможности Linux. Windows и macOS не поддерживаются.
[!TIP] Поддерживается Linux на x86_64, aarch64 и LoongArch64; Android поддерживает x86_64 и aarch64.
Скачайте пакет с ELF-бинарным файлом со страницы релизов, распакуйте его и запустите:
sudo ecapture --help
[!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предоставляет полный доступ к хосту. Для использования в производственной среде предпочтительнее указывать конкретные capabilities. См. Руководство по минимальным привилегиям.
Дополнительную информацию см. на Docker Hub.
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.
Вы можете использовать ecapture -h, чтобы просмотреть полный список подкоманд.
eCapture выполняет поиск по путям к библиотекам по умолчанию из /etc/ld.so.conf, чтобы найти общие библиотеки и определить расположение библиотеки OpenSSL. Вы также можете явно задать путь к библиотеке с помощью флага --libssl.
Если целевая программа слинкована статически, вы можете указать путь к программе непосредственно в качестве значения флага --libssl.
Модуль OpenSSL поддерживает три режима перехвата:
pcap/pcapng сохраняет перехваченные данные в открытом виде в формате pcap-NG.keylog/key сохраняет ключи TLS-рукопожатия в файл.text перехватывает данные в открытом виде напрямую, записывая их в файл или выводя на консоль.Для OpenSSL, GoTLS и GnuTLS --eventaddr является единым основным адресатом
событий. Он принимает stdout, обычный путь или URI file://,
tcp://host:port и ws:///wss:// (упорядоченные бинарные кадры). Режим
выбирает представление text, NSS Key Log или pcapng; адрес выбирает только
транспорт. --keylogfile и --pcapfile остаются совместимыми псевдонимами
основного файла в соответствующих режимах. Установка --eventaddr вместе с
соответствующим псевдонимом является ошибкой. В режиме pcapng --keylogfile
является отдельным необязательным артефактом keylog.
--logaddr передаёт только журналы времени выполнения eCapture. Консольные журналы
времени выполнения используют stderr, а перехваченный stdout содержит только байты
событий. eCaptureQ является дополнением: его включение не заменяет --eventaddr
или --logaddr.
Поддерживает TLS-шифрованный HTTP 1.0/1.1/2.0 поверх TCP и HTTP/3 (QUIC) поверх UDP.
Вы можете указать -m pcap или -m pcapng вместе с --pcapfile и -i. Текущее совместимое значение по умолчанию для --pcapfile — save.pcapng.