
ecapture — Actualizado!
Capturando texto plano SSL/TLS sin un certificado CA usando eBPF. Compatible con kernels Linux/Android para amd64/arm64.
汉字 | English
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=trueotorga 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/pcapngalmacena los datos en texto plano capturados en formatopcap-NG. - El modo
keylog/keyguarda las claves del handshake TLS en un archivo. - El modo
textcaptura 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
- Vídeo de YouTube: How to use eCapture v0.1.0
- eCapture: supports capturing plaintext of Go TLS/HTTPS traffic