Volver a actualizaciones
ActualizadaOct 4, 2026

ecapture — Actualizado!

Capturando texto plano SSL/TLS sin un certificado CA usando eBPF. Compatible con kernels Linux/Android para amd64/arm64.

Compartir
eCapture Logo

汉字 | English

GitHub stars GitHub forks CI GitHub Version

eCapture (旁观者): Captura tráfico SSL/TLS en texto plano sin un certificado CA usando eBPF.

[!IMPORTANT] Compatible con Linux y Android en x86_64 (kernel 4.18+) y aarch64 (kernel 5.5+). El requisito de kernel se aplica por arquitectura de CPU tanto para Linux como para Android. Requiere privilegios de root o capacidades de Linux específicas. No es compatible con Windows ni macOS.


Introducción

  • Captura tráfico TLS/SSL en texto plano de las bibliotecas OpenSSL, LibreSSL, BoringSSL, GnuTLS y NSS/NSPR.
  • Admite la captura en texto plano de programas Go TLS, incluido el tráfico HTTPS/TLS en aplicaciones Go.
  • Audita el historial de comandos de bash y zsh para la monitorización de la seguridad del host.
  • Audita consultas MySQL y admite MySQL 5.6/5.7/8.0 y MariaDB.

Primeros pasos

Descarga

Archivo binario ELF

[!TIP] Compatible con Linux/Android en x86_64 y aarch64.

Descarga el paquete binario ELF desde la página de releases, extráelo y ejecuta:

sudo ecapture --help

Imagen de Docker

[!TIP] Solo 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

⚠️ Nota de seguridad: --privileged=true otorga acceso completo al host. Para uso en producción, se prefieren capacidades específicas. Consulta la Guía de privilegios mínimos.

Consulta Docker Hub para más información.

Capturar datos en texto plano de OpenSSL

sudo ecapture tls

eCapture detecta automáticamente la biblioteca OpenSSL del sistema y comienza a capturar el tráfico en texto plano. Cuando realizas una solicitud HTTPS, como curl https://google.com, se muestran la solicitud y la respuesta capturadas:

...
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"
...

📄 Para ver ejemplos completos de salida, consulta docs/example-outputs.md.

Módulos

La herramienta eCapture incluye 8 módulos que pueden capturar datos en texto plano de bibliotecas TLS/SSL como OpenSSL, GnuTLS, NSS/NSPR, BoringSSL y GoTLS. También admite la auditoría de comandos y consultas de aplicaciones Bash, MySQL y PostgreSQL.

  • bash: captura comandos de bash
  • zsh: captura comandos de zsh
  • gnutls: captura texto plano de bibliotecas GnuTLS sin necesidad de un certificado CA
  • gotls: captura comunicación en texto plano de programas Go que usan TLS/HTTPS
  • mysqld: captura consultas SQL de MySQL 5.6/5.7/8.0 y MariaDB
  • nss: captura texto plano de bibliotecas NSS/NSPR sin necesidad de un certificado CA
  • postgres: captura consultas SQL de PostgreSQL 10+
  • tls: captura tráfico TLS/SSL en texto plano sin un certificado CA (compatible con OpenSSL 1.0.x/1.1.x/3.0.x y posteriores)

Puedes usar ecapture -h para ver la lista completa de subcomandos.

Módulo OpenSSL

eCapture busca en las rutas de bibliotecas predeterminadas de /etc/ld.so.conf para localizar bibliotecas compartidas y detectar la ubicación de la biblioteca OpenSSL. También puedes establecer la ruta de la biblioteca explícitamente con el flag --libssl.

Si el programa objetivo está enlazado estáticamente, puedes establecer la ruta del programa directamente como valor del flag --libssl.

El módulo OpenSSL admite tres modos de captura:

  • El modo pcap/pcapng almacena los datos en texto plano capturados en formato pcap-NG.
  • El modo keylog/key guarda las claves del handshake TLS en un archivo.
  • El modo text captura los datos en texto plano directamente, ya sea escribiéndolos en un archivo o imprimiéndolos en la consola.

Modo Pcap

Admite HTTP 1.0/1.1/2.0 cifrado con TLS sobre TCP y HTTP/3 (QUIC) sobre UDP.

Puedes especificar -m pcap o -m pcapng junto con --pcapfile y -i. El valor predeterminado de --pcapfile es ecapture_openssl.pcapng.

sudo ecapture tls -m pcap -i eth0 --pcapfile=ecapture.pcapng tcp port 443

Este comando guarda los paquetes en texto plano capturados como un archivo pcapng, que se puede abrir con Wireshark.

📄 Para ver la salida completa del modo pcapng, consulta docs/example-outputs.md.

Modo Keylog

Puedes especificar -m keylog o -m key junto con la opción --keylogfile. El archivo de salida predeterminado es ecapture_masterkey.log.

El master secret de OpenSSL TLS capturado se guarda en --keylogfile. También puedes habilitar la captura con tcpdump y luego abrir el archivo en Wireshark, estableciendo la ruta del master secret para ver los paquetes en texto plano.

sudo ecapture tls -m keylog -keylogfile=openssl_keylog.log

También puedes usar tshark para descifrado y visualización en tiempo real:

tshark -o tls.keylog_file:ecapture_masterkey.log -Y http -T fields -e http.file_data -f "port 443" -i eth0

Modo Text

sudo ecapture tls -m text

Esto muestra todos los paquetes de datos en texto plano.

Módulo GoTLS

Similar al módulo OpenSSL.

Comando gotls

Captura datos TLS en texto plano.

Paso 1:

sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex

Paso 2:

/home/cfc4n/go_https_client

Más ayuda

sudo ecapture gotls -h

Otros módulos

También se pueden usar módulos como bash, mysqld y postgres. Puedes ver la lista completa con ecapture -h.

Vídeos

Aplicación GUI eCaptureQ

Categorías