
ecapture v2.5.2
Захват открытого текста SSL/TLS без сертификата ЦС с помощью eBPF. Поддерживается на ядрах Linux/Android для amd64/arm64.
汉字 | English
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 для просмотра списка подкоманд.
Видео
- Видео на Youtube: Как использовать eCapture v0.1.0
- eCapture: поддержка захвата открытого текста Golang TLS/HTTPS трафика
Приложение 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
Протоколы Protobuf
Подробности схемы логов Protobuf, используемой eCapture/eCaptureQ, см. в:
Количество звезд с течением времени
Безопасность и эксплуатация
- Политика безопасности — Сообщение об уязвимостях и поддерживаемые версии
- Минимальные привилегии — Требуемые возможности Linux и конфигурация с минимальными привилегиями
- Защита и обнаружение — Как обнаружить и защититься от несанкционированного использования
- Бенчмарки производительности — Методология измерения накладных расходов и ожидаемые характеристики
- Верификация релизов — Как проверить целостность артефактов релиза
Участие
См. CONTRIBUTING для получения информации об отправке патчей и рабочем процессе участия.
Компиляция
Пользовательская компиляция
Вы можете настроить нужные функции, например, задать адрес смещения для uprobe, чтобы поддерживать статически скомпилированные библиотеки OpenSSL. Обратитесь к руководству по компиляции для получения инструкций по компиляции.
Удаленное обновление конфигураций
После запуска eCapture вы можете динамически изменять конфигурации через HTTP интерфейсы. Обратитесь к документации HTTP API.
Пересылка событий
eCapture поддерживает несколько методов пересылки событий. Вы можете пересылать события в программное обеспечение для захвата пакетов, такое как Burp Suite. Подробности см. в документации API пересылки событий.