
ecapture v2.5.2
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
Autres modules
tels que les modules bash\mysqld\postgres, vous pouvez utiliser ecapture -h pour afficher la liste des sous-commandes.
Vidéos
- Vidéo YouTube : Comment utiliser eCapture v0.1.0
- eCapture : prend en charge la capture du texte clair du trafic TLS/HTTPS Golang
Application GUI eCaptureQ
eCaptureQ est un client d'interface utilisateur graphique multiplateforme pour eCapture, visualisant les capacités de capture TLS eBPF. Construit avec la pile technologique Rust + Tauri + React, il fournit une interface réactive en temps réel, permettant une analyse facile du trafic chiffré sans avoir besoin de certificats CA. Il simplifie les techniques complexes de capture eBPF, les rendant faciles à utiliser. Prend en charge deux modes :
- Mode intégré : Exécution unifiée Linux/Android
- Mode distant : Le client Windows/macOS/Linux se connecte à un service eCapture distant
Transfert d'événements
Projets de transfert d'événements
Démonstration vidéo
https://github.com/user-attachments/assets/c8b7a84d-58eb-4fdb-9843-f775c97bdbfb
Protocoles Protobuf
Pour plus de détails sur le schéma de journal Protobuf utilisé par eCapture/eCaptureQ, voir :
Stargazers over time
Sécurité et opérations
- Politique de sécurité — Signalement des vulnérabilités et versions prises en charge
- Privilèges minimaux — Capacités Linux requises et configuration de moindre privilège
- Défense et détection — Comment détecter et se défendre contre les utilisations non autorisées
- Références de performance — Méthodologie de mesure de la surcharge et caractéristiques attendues
- Vérification des versions — Comment vérifier l'intégrité des artefacts de version
Contribuer
Voir CONTRIBUTING pour les détails sur la soumission de correctifs et le flux de travail de contribution.
Compilation
Compilation personnalisée
Vous pouvez personnaliser les fonctionnalités souhaitées, par exemple en définissant l'adresse de décalage pour uprobe afin de prendre en charge les bibliothèques OpenSSL compilées statiquement. Reportez-vous au guide de compilation pour les instructions de compilation.
Mise à jour distante des configurations
Après le démarrage d'eCapture, vous pouvez modifier dynamiquement les configurations via des interfaces HTTP. Reportez-vous à la documentation de l'API HTTP.
Transfert d'événements
eCapture prend en charge plusieurs méthodes de transfert d'événements. Vous pouvez transférer des événements vers des logiciels de capture de paquets tels que Burp Suite. Pour plus de détails, reportez-vous à la documentation de l'API de transfert d'événements.