Retour aux mises à jour
UpdatedOct 4, 2026

ecapture — Mis à jour !

Capture du texte en clair SSL/TLS sans certificat CA à l'aide d'eBPF. Pris en charge sur les noyaux Linux/Android pour amd64/arm64.

Partager
eCapture Logo

汉字 | English

GitHub stars GitHub forks CI GitHub Version

eCapture (旁观者) : Capturer le trafic SSL/TLS en clair sans certificat CA grâce à eBPF.

[!IMPORTANT] Prend en charge Linux et Android sur x86_64 (noyau 4.18+) et aarch64 (noyau 5.5+). L'exigence de noyau s'applique par architecture CPU pour Linux et Android. Nécessite les privilèges root ou des capacités Linux spécifiques. Ne prend pas en charge Windows ni macOS.


Introduction

  • Capture le trafic TLS/SSL en clair depuis les bibliothèques OpenSSL, LibreSSL, BoringSSL, GnuTLS et NSS/NSPR.
  • Prend en charge la capture en clair pour les programmes Go TLS, y compris le trafic HTTPS/TLS dans les applications Go.
  • Audite l'historique des commandes bash et zsh pour la surveillance de la sécurité de l'hôte.
  • Audite les requêtes MySQL et prend en charge MySQL 5.6/5.7/8.0 et MariaDB.

Prise en main

Téléchargement

Fichier binaire ELF

[!TIP] Prend en charge Linux/Android sur x86_64 et aarch64.

Téléchargez le paquet binaire ELF depuis la page des releases, extrayez-le, puis exécutez :

sudo ecapture --help

Image Docker

[!TIP] Linux uniquement.

# 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

⚠️ Note de sécurité : --privileged=true accorde un accès complet à l'hôte. Pour un usage en production, préférez des capacités spécifiques. Consultez le Guide des privilèges minimaux.

Consultez Docker Hub pour plus d'informations.

Capturer les données en clair d'OpenSSL

sudo ecapture tls

eCapture détecte automatiquement la bibliothèque OpenSSL du système et commence à capturer le trafic en clair. Lorsque vous effectuez une requête HTTPS, comme curl https://google.com, la requête et la réponse capturées sont affichées :

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

📄 Pour des exemples complets de sortie, consultez docs/example-outputs.md.

Modules

L'outil eCapture comprend 8 modules capables de capturer les données en clair des bibliothèques TLS/SSL telles qu'OpenSSL, GnuTLS, NSS/NSPR, BoringSSL et GoTLS. Il prend également en charge l'audit des commandes et des requêtes des applications Bash, MySQL et PostgreSQL.

  • bash : capture les commandes bash
  • zsh : capture les commandes zsh
  • gnutls : capture le texte en clair des bibliothèques GnuTLS sans nécessiter de certificat CA
  • gotls : capture les communications en clair des programmes Go utilisant TLS/HTTPS
  • mysqld : capture les requêtes SQL de MySQL 5.6/5.7/8.0 et MariaDB
  • nss : capture le texte en clair des bibliothèques NSS/NSPR sans nécessiter de certificat CA
  • postgres : capture les requêtes SQL de PostgreSQL 10+
  • tls : capture le trafic TLS/SSL en clair sans certificat CA (prend en charge OpenSSL 1.0.x/1.1.x/3.0.x et versions ultérieures)

Vous pouvez utiliser ecapture -h pour afficher la liste complète des sous-commandes.

Module OpenSSL

eCapture parcourt les chemins de bibliothèques par défaut définis dans /etc/ld.so.conf pour localiser les bibliothèques partagées et détecter l'emplacement de la bibliothèque OpenSSL. Vous pouvez également définir explicitement le chemin de la bibliothèque avec l'option --libssl.

Si le programme cible est lié statiquement, vous pouvez définir directement le chemin du programme comme valeur de l'option --libssl.

Le module OpenSSL prend en charge trois modes de capture :

  • Le mode pcap/pcapng stocke les données en clair capturées au format pcap-NG.
  • Le mode keylog/key enregistre les clés de handshake TLS dans un fichier.
  • Le mode text capture directement les données en clair, soit en les écrivant dans un fichier, soit en les affichant sur la console.

Mode Pcap

Prend en charge le HTTP 1.0/1.1/2.0 chiffré en TLS sur TCP et HTTP/3 (QUIC) sur UDP.

Vous pouvez spécifier -m pcap ou -m pcapng avec --pcapfile et -i. La valeur par défaut de --pcapfile est ecapture_openssl.pcapng.

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

Cette commande enregistre les paquets en clair capturés dans un fichier pcapng, qui peut être ouvert avec Wireshark.

📄 Pour une sortie complète en mode pcapng, consultez docs/example-outputs.md.

Mode Keylog

Vous pouvez spécifier -m keylog ou -m key avec l'option --keylogfile. Le fichier de sortie par défaut est ecapture_masterkey.log.

Le master secret TLS OpenSSL capturé est enregistré dans --keylogfile. Vous pouvez également activer la capture tcpdump, puis ouvrir le fichier dans Wireshark en définissant le chemin du master secret pour visualiser les paquets en clair.

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

Vous pouvez aussi utiliser tshark pour un déchiffrement et un affichage en temps réel :

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

Mode Text

sudo ecapture tls -m text

Cela affiche tous les paquets de données en clair.

Module GoTLS

Similaire au module OpenSSL.

Commande gotls

Capturer les données TLS en clair.

Étape 1 :

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

Étape 2 :

/home/cfc4n/go_https_client

Aide supplémentaire

sudo ecapture gotls -h

Autres modules

Des modules tels que bash, mysqld et postgres peuvent également être utilisés. Vous pouvez afficher la liste complète avec ecapture -h.

Vidéos

Catégories