
Захват открытого текста SSL/TLS без сертификата ЦС с помощью eBPF. Поддерживается на ядрах Linux/Android для amd64/arm64.
汉字 | English
[!IMPORTANT]
Поддерживает Linux/Android на x86_64 (ядро 4.18+) и aarch64 (ядро 5.5+). Требования к версии ядра различаются в зависимости от архитектуры ЦП для Linux и Android. Требуются права ROOT или определенные возможности Linux. Не поддерживает Windows и macOS.
[!TIP] Поддержка Linux/Android x86_64/aarch64.
Скачайте ELF zip файл релиза, распакуйте и используйте командой sudo ecapture --help.
[!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 для получения дополнительной информации.
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.
ecapture -h для просмотра списка подкоманд.По умолчанию eCapture ищет файл /etc/ld.so.conf для поиска каталогов загрузки файлов SO и расположения разделяемых библиотек openssl. Или вы можете использовать флаг --libssl, чтобы указать путь к разделяемой библиотеке.
Если целевая программа скомпилирована статически, вы можете напрямую установить путь к программе в качестве значения флага --libssl.
Модуль OpenSSL поддерживает три режима захвата:
pcap/pcapng сохраняет захваченные данные открытого текста в формате pcap-NG.keylog/key сохраняет ключи рукопожатия TLS в файл.text напрямую захватывает данные открытого текста, выводя их в указанный файл или печатая в командной строке.Поддерживает зашифрованный 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.
Вы можете указать -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
sudo ecapture tls -m text выведет все пакеты открытого текста. (Начиная с v0.7.0, он больше не захватывает информацию SSLKEYLOG.)
Аналогичен модулю OpenSSL.
захват текстового контекста 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 — это кроссплатформенный клиент с графическим пользовательским интерфейсом для eCapture, визуализирующий возможности захвата TLS eBPF. Построенный на технологическом стеке Rust + Tauri + React, он предоставляет интерфейс в реальном времени с высокой отзывчивостью, позволяя легко анализировать зашифрованный трафик без необходимости в сертификатах ЦС. Он упрощает сложные методы захвата eBPF, делая их простыми в использовании. Поддерживает два режима:
https://github.com/user-attachments/assets/c8b7a84d-58eb-4fdb-9843-f775c97bdbfb
Подробности схемы логов Protobuf, используемой eCapture/eCaptureQ, см. в:
См. CONTRIBUTING для получения информации об отправке патчей и рабочем процессе участия.
Вы можете настроить нужные функции, например, задать адрес смещения для uprobe, чтобы поддерживать статически скомпилированные библиотеки OpenSSL. Обратитесь к руководству по компиляции для получения инструкций по компиляции.
После запуска eCapture вы можете динамически изменять конфигурации через HTTP интерфейсы. Обратитесь к документации HTTP API.
eCapture поддерживает несколько методов пересылки событий. Вы можете пересылать события в программное обеспечение для захвата пакетов, такое как Burp Suite. Подробности см. в документации API пересылки событий.