Important
Prend en charge les versions du noyau Linux/Android x86_64 4.18 et supérieures, aarch64 5.5 et supérieures. Besoin de l'autorisation ROOT. Ne prend pas en charge les systèmes Windows et macOS.
Introduction
Commencer
Module OpenSSL
Module GoTLS
Autres modules
Fichier binaire ELF
Image Docker
Télécharger
Capturez le contenu texte openssl.
Modules
Vidéos
Contribuer
Compilation
Capture de texte brut SSL/TLS, prise en charge des bibliothèques openssllibresslboringsslgnutlsnspr(nss).
La prise en charge du texte brut GoTLS est la bibliothèque go tls, qui fait référence à la communication cryptée dans les programmes https/tls écrits en langage golang.
bash audit, capturez la commande bash pour l'audit de sécurité de l'hôte.
Audit SQL des requêtes mysql, prise en charge de mysqld 5.65.78.0 et mariadDB.
Conseil
prend en charge Linux/Android x86_64/aarch64.
Téléchargez la version du fichier zip ELF, décompressez-le et utilisez-le par la commande sudo ecapture --help
.
Conseil
Linux uniquement.
# pull docker imagedocker pull gojue/ecapture:latest# rundocker run --rm --privileged=true --net=host -v ${HOST_PATH}:${CONTAINER_PATH} gojue/ecapture ARGS
voir Docker Hub pour plus d'informations.
sudo capture tls 2024-09-15T11:51:31Z INF AppName="eCapture(旁观者)"2024-09-15T11:51:31Z INF HomePage=https://ecapture.cc 2024-09-15T11:51:31Z Dépôt INF=https://github.com/gojue/ecapture 2024-09-15T11:51:31Z INF Author="CFC4N <[email protected]>"2024-09-15T11:51:31Z INF Description="Capture de texte brut SSL/TLS sans certificat CA à l'aide d'eBPF. Pris en charge sous Linux /Noyaux Android pour amd64/arm64."2024-09-15T11:51:31Z INF Version=linux_arm64:0.8.6-20240915-d87ae48:5.15.0-113-generic 2024-09-15T11:51:31Z INF Écouter=localhost:28256 2024-09-15T11:51:31Z INF eCapture enregistreur de journaux d'exécution = 2024-09-15T11:51:31Z INF le gestionnaire de fichiers qui reçoit l'événement capturé eventCollector= 2024-09-15T11:51:31Z INF écoute=localhost:28256 2024-09-15T11:51:31Z Démarrage du serveur https INF...Vous pouvez mettre à jour le fichier de configuration via l'interface HTTP. 2024-09-15T11:51:31Z WRN ========== démarrage du module. ========== 2024-09-15T11:51:31Z INF Informations sur le noyau = 5.15.152 Pid = 233698 2024-09-15T11:51:31Z Mode bytecode INF BTF : CORE. btfMode=0 2024-09-15T11:51:31Z INF keylogger de clé principale a été défini. eBPPFProgramType=Enregistreur de frappe texte= 2024-09-15T11:51:31Z Initialisation du module INF. isReload=false moduleName=EBPFProbeOPENSSL 2024-09-15T11:51:31Z INF Module.Exécuter() 2024-09-15T11:51:31Z WRN Version OpenSSL/BoringSSL introuvable dans le fichier de bibliothèque partagée, version par défaut utilisée OpenSSL Version=linux_default_3_0 2024-09-15T11:51:31Z INF Hook masterKey function ElfType=2 Functions=["SSL_get_wbio","SSL_in_before","SSL_do_handshake"] binrayPath=/usr/lib/aarch64-linux-gnu/libssl.so.3 2024-09-15T11:51:31Z INF cible tous les processus. 2024-09-15T11:51:31Z INF cible tous les utilisateurs. 2024-09-15T11:51:31Z INF setupManagers eBPPFProgramType = Texte 2024-09-15T11:51:31Le fichier de bytecode Z INF BPF correspond. bpfFileName=user/bytecode/openssl_3_0_0_kern_core.o 2024-09-15T11:51:32Z INF perfEventReader créé mapSize(MB)=4 2024-09-15T11:51:32Z INF perfEventReader créé mapSize(MB)=4 2024-09-15T11:51:32Le module Z INF a démarré avec succès. isReload=false moduleName=EBPFProbeOPENSSL 2024-09-15T11:51:53Z ??? UUID : 233851_233851_curl_5_1_172.16.71.1:51837, Nom : HTTP2Request, Type : 2, Longueur : 304 Type de cadre => PARAMÈTRES Type de trame => WINDOW_UPDATE Type de trame => EN-TÊTES champ d'en-tête ":method" = "GET"champ d'en-tête ":path" = "/"champ d'en-tête ":scheme" = "https"champ d'en-tête ":authority" = "google.com"champ d'en-tête "user-agent" = Champ d'en-tête "curl/7.81.0" "accepter" = "*/*" Type de trame => PARAMÈTRES 2024-09-15T11:51:53Z ??? UUID : 233851_233851_curl_5_0_172.16.71.1:51837, Nom : HTTP2Response, Type : 4, Longueur : 1160 Type de cadre => PARAMÈTRES Type de trame => WINDOW_UPDATE Type de cadre => PARAMÈTRES Type de trame => EN-TÊTES champ d'en-tête ":status" = "301"champ d'en-tête "location" = "https://www.google.com/"champ d'en-tête "content-type" = "text/html; charset=UTF-8"champ d'en-tête " content-security-policy-report-only" = "object-src 'none';base-uri 'self';script-src 'nonce-qvZZ0XreBfeqRnUEV1WoYw' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https : http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp"champ d'en-tête"date " = "Dim. 15 septembre 2024 11:51:52 GMT"le champ d'en-tête "expire" = "Mardi 15 octobre 2024 11:51:52 GMT"champ d'en-tête "cache-control" = "public, max-age=2592000"champ d'en-tête "server" = "gws"champ d'en-tête "content-length" = "220"champ d'en-tête "x-xss -protection" = "0"champ d'en-tête "x-frame-options" = "SAMEORIGIN"champ d'en-tête "alt-svc" = "h3=":443"; ma=2592000,h3-29=":443"; ma=2592000"Type de trame => PING Type de trame => DONNEES<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"><TITLE>301 déplacé</TITLE></HEAD>< BODY><H1>301 Déplacé</H1>Le document a été déplacé<A HREF="https://www.google.com/">ici</A>.</BODY></HTML>
L'outil eCapture comprend 8 modules qui prennent respectivement en charge la capture de texte brut 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.
commande bash capture bash
gnutls capture le contenu texte gnutls sans certificat CA pour les bibliothèques gnutls.
gotls Capture les communications en texte clair à partir de programmes Golang cryptées avec TLS/HTTPS.
mysqld capture les requêtes SQL de mysqld 5.6/5.7/8.0 .
nss capture le contenu texte crypté nss/nspr sans certificat CA pour les bibliothèques nss/nspr.
postgres capture les requêtes SQL de postgres 10+.
tls est 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 -h
pour afficher la liste des sous-commandes.
eCapture recherche le fichier /etc/ld.so.conf
par défaut, pour rechercher les répertoires de chargement du fichier SO
et rechercher l'emplacement des bibliothèques de partitions openssl
. ou vous pouvez utiliser l'indicateur --libssl
pour définir le chemin de la bibliothèque de partitions.
Si le programme cible est compilé de manière statique, vous pouvez définir directement le chemin du programme comme valeur de l'indicateur --libssl
.
Le module OpenSSL prend en charge trois modes de capture :
Le mode pcap
/ pcapng
stocke les données en texte brut capturées au format pcap-NG
.
Le mode keylog
/ key
enregistre les clés de négociation TLS dans un fichier.
Le mode text
capture directement les données en texte brut, soit en les exportant vers un fichier spécifié, soit en les imprimant sur la ligne de commande.
Prise en charge du protocole http 1.0/1.1/2.0
crypté TLS sur TCP et du 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 port TCP 443
Cette commande enregistre les paquets de données en texte brut capturés sous forme de fichier pcapng, qui peut être visualisé à l'aide Wireshark
.
sudo ecapture tls -m pcap -w ecap.pcapng -i ens160 2024-09-15T06:54:12Z INF AppName="eCapture(旁观者)"2024-09-15T06:54:12Z INF HomePage=https://ecapture.cc 2024-09-15T06:54:12Z Dépôt INF=https://github.com/gojue/ecapture 2024-09-15T06:54:12Z INF Author="CFC4N <[email protected]>"2024-09-15T06:54:12Z INF Description="Capture de texte brut SSL/TLS sans certificat CA à l'aide d'eBPF. Pris en charge sous Linux /Noyaux Android pour amd64/arm64."2024-09-15T06:54:12Z INF Version=linux_arm64:0.8.6-20240915-d87ae48:5.15.0-113-generic 2024-09-15T06:54:12Z INF Écouter=localhost:28256 2024-09-15T06:54:12Z INF eCapture enregistreur de journaux d'exécution = 2024-09-15T06:54:12Z INF le gestionnaire de fichiers qui reçoit l'événement capturé eventCollector= 2024-09-15T06:54:12Z WRN ========== démarrage du module. ========== 2024-09-15T06:54:12Z INF Informations sur le noyau = 5.15.152 Pid = 230440 2024-09-15T06:54:12Z Mode bytecode INF BTF : CORE. btfMode=0 2024-09-15T06:54:12Z INF écoute=localhost:28256 2024-09-15T06:54:12Z Initialisation du module INF. isReload=false moduleName=EBPFProbeOPENSSL 2024-09-15T06:54:12Z INF Module.Exécuter() 2024-09-15T06:54:12Z Démarrage du serveur https INF...Vous pouvez mettre à jour le fichier de configuration via l'interface HTTP. 2024-09-15T06:54:12Z Version WRN OpenSSL/BoringSSL introuvable dans le fichier de bibliothèque partagée, version par défaut utilisée OpenSSL Version=linux_default_3_0 2024-09-15T06:54:12Z INF HOOK type:Openssl elf ElfType=2 IFindex=2 IFname=ens160 PcapFilter= binrayPath=/usr/lib/aarch64-linux-gnu/libssl.so.3 2024-09-15T06:54:12Z INF Hook masterKey function Functions=["SSL_get_wbio","SSL_in_before","SSL_do_handshake"]2024-09-15T06:54:12Z INF cible tous les processus. 2024-09-15T06:54:12Z INF cible tous les utilisateurs. 2024-09-15T06:54:12Z INF setupManagers eBPFProgramType=PcapNG 2024-09-15T06:54:12Le fichier de bytecode Z INF BPF correspond. bpfFileName=user/bytecode/openssl_3_0_0_kern_core.o 2024-09-15T06:54:12Z Paquets INF enregistrés dans le fichier pcapng. chemin pcapng=/home/ecapture/ecap.pcapng 2024-09-15T06:54:12Z INF perfEventReader créé mapSize(Mo)=4 2024-09-15T06:54:12Z INF perfEventReader créé mapSize(Mo)=4 2024-09-15T06:54:12Le module Z INF a démarré avec succès. isReload=false moduleName=EBPFProbeOPENSSL 2024-09-15T06:54:14Z Paquets INF enregistrés dans le fichier pcapng. compte = 4 2024-09-15T06:54:16Z INF suite de chiffrement non TLSv1.3 trouvée CLientRandom=f08e8d784962d1693c042f9fe266345507ccfaba58b823904a357f30dbfa1e71 CipherId=0 2024-09-15T06:54:16Z INF suite de chiffrement non TLSv1.3 trouvée CLientRandom=f08e8d784962d1693c042f9fe266345507ccfaba58b823904a357f30dbfa1e71 CipherId=0 2024-09-15T06:54:16Z Paquets INF enregistrés dans le fichier pcapng. nombre = 183 2024-09-15T06:54:16Z INF CLIENT_RANDOM sauvegarde réussie CLIentRandom=f08e8d784962d1693c042f9fe266345507ccfaba58b823904a357f30dbfa1e71 TlsVersion=TLS1_2_VERSION octets=176 2024-09-15T06:54:18Z Paquets INF enregistrés dans le fichier pcapng. compte = 65 ^C2024-09-15T06:54:18Z Module INF fermé. 2024-09-15T06:54:18Z Paquets INF enregistrés dans le fichier pcapng. compte = 3 2024-09-15T06:54:18Z Paquets INF enregistrés dans le fichier pcapng. nombre = 255 2024-09-15T06:54:18Z Module INF fermé, message reçu du contexte 2024-09-15T06:54:18Z Module iModule INF fermé 2024-09-15T06:54:18Z INF au revoir.
Utilisation Wireshark
pour ouvrir le fichier ecap.pcapng
afin d'afficher les paquets de données en texte brut.
Vous pouvez spécifier -m keylog
ou -m key
et l'utiliser conjointement avec le paramètre --keylogfile
, qui est par défaut ecapture_masterkey.log
.
Les informations OpenSSL TLS Master Secret
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 brut.
sudo ecapture tls -m keylog -keylogfile=openssl_keylog.log
Vous pouvez également utiliser directement le logiciel tshark
pour le décryptage et l'affichage en temps réel :
tshark -o tls.keylog_file:ecapture_masterkey.log -Y http -T champs -e http.file_data -f "port 443" -i eth0
sudo ecapture tls -m text
affichera tous les paquets de données en texte brut. (À partir de la version 0.7.0, il ne capture plus les informations SSLKEYLOG.)
Similaire au module OpenSSL.
capturer le contexte du texte TLS.
Étape 1 :
sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex
Étape 2 :
/home/cfc4n/go_https_client
sudo ecapture gotls -h
tels que les modules bashmysqldpostgres
, vous pouvez utiliser ecapture -h
pour afficher la liste des sous-commandes.
Vidéo Youtube : Comment utiliser eCapture v0.1.0
eCapture : prend en charge la capture du texte brut du trafic Golang TLS/HTTPS
Voir CONTRIBUTION pour plus de détails sur la soumission de correctifs et le flux de travail de contribution.
Voir COMPILATION pour plus de détails sur la compilation du code source d'eCapture.