
Capturando texto plano SSL/TLS sin un certificado CA usando eBPF. Compatible con kernels Linux/Android para amd64/arm64.
汉字 | English
[!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.
[!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.
[!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.
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.
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.
ecapture -h para ver la lista de subcomandos.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:
pcap/pcapng almacena los datos de texto plano capturados en formato pcap-NG.keylog/key guarda las claves de handshake TLS en un archivo.text captura directamente datos de texto plano, ya sea enviándolos a un archivo especificado o imprimiéndolos en la línea de comandos.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.
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
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).
Similar al módulo OpenSSL.
capturar contexto de texto tls.
Paso 1:
sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex
Paso 2:
/home/cfc4n/go_https_client
sudo ecapture gotls -h
Como los módulos bash, mysqld, postgres, puede usar ecapture -h para ver la lista de subcomandos.
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:
Proyectos de reenvío de eventos
https://github.com/user-attachments/assets/c8b7a84d-58eb-4fdb-9843-f775c97bdbfb
Para más detalles sobre el esquema de log de Protobuf utilizado por eCapture/eCaptureQ, consulte:
Consulte CONTRIBUTING para detalles sobre cómo enviar parches y el flujo de trabajo de contribuciones.
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.
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.
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.