
ecapture v2.6.0
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.
汉字 | Anglais
eCapture(旁观者): capture le contenu texte SSL/TLS sans certificat CA en utilisant eBPF.
[!IMPORTANT]
Prend en charge Linux/Android sur x86_64 (noyau 4.18+) et aarch64 (noyau 5.5+). Les exigences de version du noyau s'appliquent par architecture CPU pour Linux et Android. Nécessite la permission ROOT ou des capacités Linux spécifiques. Ne prend pas en charge les systèmes Windows et macOS.
Introduction
- Capture de texte clair SSL/TLS, prend en charge les bibliothèques openssl\libressl\boringssl\gnutls\nspr(nss).
- Prise en charge du texte clair GoTLS pour la bibliothèque Go TLS, qui concerne la communication chiffrée dans les programmes https/tls écrits en langage golang.
- Audit Bash, capture des commandes bash pour l'audit de sécurité de l'hôte.
- Audit Zsh, capture des commandes zsh pour l'audit de sécurité de l'hôte.
- Audit des requêtes SQL MySQL, prend en charge mysqld 5.6\5.7\8.0 et MariaDB.
Pour commencer
Téléchargement
Fichier binaire ELF
[!TIP] prend en charge Linux/Android x86_64/aarch64.
Téléchargez le fichier zip ELF release, décompressez-le et utilisez-le avec la commande sudo ecapture --help.
Image Docker
[!TIP] Linux uniquement.
# pull docker image
docker pull gojue/ecapture:latest
# run
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 une utilisation en production, envisagez plutôt des capacités spécifiques. Voir Guide des privilèges minimaux.
voir Docker Hub pour plus d'informations.
Capturer le contenu texte openssl
sudo ecapture tls
eCapture détectera automatiquement la bibliothèque OpenSSL du système et commencera à capturer le texte clair. Lorsque vous effectuez une requête HTTPS (par exemple, curl https://google.com), la requête et la réponse capturées s'afficheront :
...
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, voir docs/example-outputs.md.
Modules
L'outil eCapture comprend 8 modules qui prennent respectivement en charge la capture de texte clair pour les bibliothèques de chiffrement TLS/SSL comme OpenSSL, GnuTLS, NSPR, BoringSSL et GoTLS. De plus, il facilite les audits logiciels pour les applications Bash, MySQL et PostgreSQL.
- bash capture la commande bash
- zsh capture la commande zsh
- gnutls capture le contenu texte gnutls sans certificat CA pour les bibliothèques gnutls.
- gotls Capture la communication en texte clair des programmes Golang chiffrée avec TLS/HTTPS.
- mysqld capture les requêtes SQL de mysqld 5.6/5.7/8.0 .
- nss capture le contenu texte chiffré nss/nspr sans certificat CA pour les bibliothèques nss/nspr.
- postgres capture les requêtes SQL de postgres 10+.
- tls utilisé pour capturer le contenu texte tls/ssl sans certificat CA. (Prend en charge openssl 1.0.x/1.1.x/3.0.x ou plus récent).
Vous pouvez utiliser
ecapture -hpour afficher la liste des sous-commandes.
Module OpenSSL
Par défaut, eCapture recherche le fichier /etc/ld.so.conf pour trouver les répertoires de chargement des fichiers SO, et localise les bibliothèques partagées openssl. Vous pouvez également utiliser l'indicateur --libssl pour définir le chemin de la bibliothèque partagée.
Si le programme cible est compilé statiquement, vous pouvez définir le chemin du programme comme valeur de l'indicateur --libssl directement.
Le module OpenSSL prend en charge trois modes de capture :
- Le mode
pcap/pcapngstocke les données en texte clair capturées au formatpcap-NG. - Le mode
keylog/keyenregistre les clés de négociation TLS dans un fichier. - Le mode
textcapture directement les données en texte clair, soit en les sortant vers un fichier spécifié, soit en les imprimant dans la ligne de commande.
Mode Pcap
Prend en charge le http chiffré TLS 1.0/1.1/2.0 sur TCP, et le protocole http3 QUIC sur UDP.
Vous pouvez spécifier -m pcap ou -m pcapng et l'utiliser conjointement avec les paramètres --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 de données en texte clair capturés sous forme de fichier pcapng, qui peut être visualisé avec Wireshark.
📄 Pour une sortie complète du mode pcapng, voir docs/example-outputs.md.
Mode Keylog
Vous pouvez spécifier -m keylog ou -m key et l'utiliser avec le paramètre --keylogfile, dont la valeur par défaut est ecapture_masterkey.log.
Les informations Master Secret TLS OpenSSL capturées sont enregistrées dans --keylogfile. Vous pouvez également activer la capture de paquets tcpdump, puis utiliser Wireshark pour ouvrir le fichier et définir le chemin Master Secret pour afficher les paquets de données en texte clair.
sudo ecapture tls -m keylog -keylogfile=openssl_keylog.log
Vous pouvez également utiliser directement le logiciel tshark pour le déchiffrement et l'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 Texte
sudo ecapture tls -m text produira tous les paquets de données en texte clair. (À partir de v0.7.0, il ne capture plus les informations SSLKEYLOG.)
Module GoTLS
Similaire au module OpenSSL.
commande gotls
capture le contexte texte tls.
Étape 1 :
sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex
Étape 2 :
/home/cfc4n/go_https_client
plus d'aide
sudo ecapture gotls -h