
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.
汉字 | English
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=trueaccorde 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/pcapngstocke les données en clair capturées au formatpcap-NG. - Le mode
keylog/keyenregistre les clés de handshake TLS dans un fichier. - Le mode
textcapture 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.