
ecapture v2.5.2
Capturando texto plano SSL/TLS sin un certificado CA usando eBPF. Compatible con kernels Linux/Android para amd64/arm64.
汉字 | English
eCapture(旁观者): capturar contenido de texto SSL/TLS sin un certificado CA usando eBPF.
[!IMPORTANT]
Compatible con Linux/Android en x86_64 (kernel 4.18+) y aarch64 (kernel 5.5+). Los requisitos de versión del kernel varían según la arquitectura de la CPU tanto para Linux como para Android. Se necesita permiso ROOT o capacidades específicas de Linux. No es compatible con sistemas Windows y macOS.
Introducción
- Captura de texto plano SSL/TLS, compatible con las bibliotecas openssl, libressl, boringssl, gnutls, nspr (nss).
- Soporte de texto plano GoTLS para la biblioteca go tls, que se refiere a la comunicación cifrada en programas https/tls escritos en lenguaje golang.
- Auditoría de Bash, captura comandos de bash para auditoría de seguridad del host.
- Auditoría de Zsh, captura comandos de zsh para auditoría de seguridad del host.
- Auditoría de consultas SQL de MySQL, compatible con mysqld 5.6, 5.7, 8.0 y MariaDB.
Primeros pasos
Descarga
Archivo binario ELF
[!TIP] compatible con Linux/Android x86_64/aarch64.
Descargue el archivo zip ELF del lanzamiento, descomprímalo y úselo con el comando sudo ecapture --help.
Imagen Docker
[!TIP] Solo Linux.
# descargar imagen docker
docker pull gojue/ecapture:latest
# ejecutar
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 entornos de producción, considere usar capacidades específicas. Consulte la Guía de Privilegios Mínimos.
Consulte Docker Hub para más información.
Capturar contenido de texto de OpenSSL.
sudo ecapture tls
eCapture detectará automáticamente la biblioteca OpenSSL del sistema y comenzará a capturar texto plano. Cuando realice una solicitud HTTPS (por ejemplo, curl https://google.com), la solicitud y respuesta capturadas se mostrarán:
...
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 ejemplos de salida completos, consulte docs/example-outputs.md.
Módulos
La herramienta eCapture consta de 8 módulos que soportan respectivamente la captura de texto plano para bibliotecas de cifrado TLS/SSL como OpenSSL, GnuTLS, NSPR, BoringSSL y GoTLS. Además, facilita auditorías de software para aplicaciones Bash, MySQL y PostgreSQL.
- bash capturar comando bash
- zsh capturar comando zsh
- gnutls capturar contenido de texto gnutls sin certificado CA para bibliotecas gnutls.
- gotls Capturar comunicación de texto plano de programas Golang cifrados con TLS/HTTPS.
- mysqld capturar consultas SQL de mysqld 5.6/5.7/8.0 .
- nss capturar contenido de texto cifrado nss/nspr sin certificado CA para bibliotecas nss/nspr.
- postgres capturar consultas SQL de postgres 10+.
- tls usar para capturar contenido de texto tls/ssl sin certificado CA. (Compatible con openssl 1.0.x/1.1.x/3.0.x o más reciente).
Puede usar
ecapture -hpara ver la lista de subcomandos.
Módulo OpenSSL
eCapture busca por defecto en el archivo /etc/ld.so.conf para encontrar los directorios de carga del archivo SO y localizar las bibliotecas compartidas de openssl. O puede usar la bandera --libssl para establecer la ruta de la biblioteca compartida.
Si el programa de destino está compilado estáticamente, puede establecer la ruta del programa como valor de la bandera --libssl directamente.
El módulo OpenSSL soporta tres modos de captura:
- El modo
pcap/pcapngalmacena los datos de texto plano capturados en formatopcap-NG. - El modo
keylog/keyguarda las claves de handshake TLS en un archivo. - El modo
textcaptura directamente datos de texto plano, ya sea enviándolos a un archivo especificado o imprimiéndolos en la línea de comandos.
Modo Pcap
Soporta http 1.0/1.1/2.0 cifrado con TLS sobre TCP, y el protocolo http3 QUIC sobre UDP.
Puede especificar -m pcap o -m pcapng y usarlo junto con los parámetros --pcapfile e -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 de datos de texto plano capturados como un archivo pcapng, que puede visualizarse con Wireshark.
📄 Para una salida completa del modo pcapng, consulte docs/example-outputs.md.
Modo Keylog
Puede especificar -m keylog o -m key y usarlo junto con el parámetro --keylogfile, cuyo valor predeterminado es ecapture_masterkey.log.
La información de Master Secret de OpenSSL TLS capturada se guarda en --keylogfile. También puede habilitar la captura de paquetes tcpdump y luego usar Wireshark para abrir el archivo y establecer la ruta de Master Secret para visualizar paquetes de datos de texto plano.
sudo ecapture tls -m keylog -keylogfile=openssl_keylog.log
También puede usar directamente el software 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 Texto
sudo ecapture tls -m text mostrará todos los paquetes de datos de texto plano. (A partir de v0.7.0, ya no captura información SSLKEYLOG).
Módulo GoTLS
Similar al módulo OpenSSL.
comando gotls
capturar contexto de texto tls.
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
Como los módulos bash, mysqld, postgres, puede usar ecapture -h para ver la lista de subcomandos.
Videos
- Video de Youtube: Cómo usar eCapture v0.1.0
- eCapture: soporta captura de texto plano de tráfico Golang TLS/HTTPS
Aplicación GUI eCaptureQ
eCaptureQ es un cliente de interfaz gráfica de usuario multiplataforma para eCapture, que visualiza las capacidades de captura TLS de eBPF. Construido con la pila tecnológica Rust + Tauri + React, proporciona una interfaz en tiempo real y receptiva, permitiendo un análisis sencillo del tráfico cifrado sin necesidad de certificados CA. Simplifica las técnicas complejas de captura eBPF, haciéndolas fáciles de usar. Soporta dos modos:
- Modo Integrado: Ejecución unificada en Linux/Android
- Modo Remoto: El cliente Windows/macOS/Linux se conecta a un servicio eCapture remoto
Reenvío de eventos
Proyectos de reenvío de eventos
Demostración en video
https://github.com/user-attachments/assets/c8b7a84d-58eb-4fdb-9843-f775c97bdbfb
Protocolos Protobuf
Para más detalles sobre el esquema de log de Protobuf utilizado por eCapture/eCaptureQ, consulte:
Stargazers a lo largo del tiempo
Seguridad y operaciones
- Política de seguridad — Reporte de vulnerabilidades y versiones compatibles
- Privilegios mínimos — Capacidades requeridas de Linux y configuración de menor privilegio
- Defensa y detección — Cómo detectar y defenderse contra usos no autorizados
- Benchmarks de rendimiento — Metodología de medición de overhead y características esperadas
- Verificación de lanzamientos — Cómo verificar la integridad de los artefactos de lanzamiento
Contribuciones
Consulte CONTRIBUTING para detalles sobre cómo enviar parches y el flujo de trabajo de contribuciones.
Compilación
Compilación personalizada
Puede personalizar las funciones que desee, como establecer la dirección de desplazamiento para uprobe y así soportar bibliotecas OpenSSL compiladas estáticamente. Consulte la guía de compilación para instrucciones de compilación.
Actualización remota de configuraciones
Una vez que eCapture está en ejecución, puede modificar dinámicamente las configuraciones a través de interfaces HTTP. Consulte la Documentación de la API HTTP.
Reenvío de eventos
eCapture soporta múltiples métodos de reenvío de eventos. Puede reenviar eventos a software de captura de paquetes como Burp Suite. Para más detalles, consulte la Documentación de la API de reenvío de eventos.