
ecapture v2.5.2
Cattura del testo in chiaro SSL/TLS senza un certificato CA utilizzando eBPF. Supportato su kernel Linux/Android per amd64/arm64.
汉字 | English
eCapture(旁观者): cattura il contenuto testuale SSL/TLS senza un certificato CA usando eBPF.
[!IMPORTANT]
Supporta Linux/Android su x86_64 (kernel 4.18+) e aarch64 (kernel 5.5+). I requisiti di versione del kernel si applicano per architettura CPU sia per Linux che per Android. Necessita dei permessi ROOT o di capacità Linux specifiche. Non supporta i sistemi Windows e macOS.
Introduction
- Cattura del testo in chiaro SSL/TLS, supporta le librerie openssl\libressl\boringssl\gnutls\nspr(nss).
- Supporto GoTLS per la libreria go tls, che si riferisce alla comunicazione crittografata in programmi https/tls scritti in linguaggio golang.
- Audit Bash, cattura i comandi bash per Audit di Sicurezza dell'Host.
- Audit Zsh, cattura i comandi zsh per Audit di Sicurezza dell'Host.
- Audit SQL delle query MySQL, supporta mysqld 5.6\5.7\8.0 e MariaDB.
Getting started
Download
ELF binary file
[!TIP] supporta Linux/Android x86_64/aarch64.
Scarica il file zip ELF dalla release, decomprimi e usa con il comando sudo ecapture --help.
Docker image
[!TIP] Solo Linux.
# pull docker image
docker pull gojue/ecapture:latest
# run
docker run --rm --privileged=true --net=host -v ${HOST_PATH}:${CONTAINER_PATH} gojue/ecapture ARGS
⚠️ Nota di Sicurezza:
--privileged=trueconcede pieno accesso all'host. Per uso in produzione, considera invece capacità specifiche. Vedi Guida ai Privilegi Minimi.
vedi Docker Hub per maggiori informazioni.
Capture openssl text content.
sudo ecapture tls
eCapture rileverà automaticamente la libreria OpenSSL del sistema e inizierà a catturare il testo in chiaro. Quando effettui una richiesta HTTPS (es. curl https://google.com), la richiesta e la risposta catturate verranno visualizzate:
...
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"
...
📄 Per esempi di output completi, vedi docs/example-outputs.md.
Modules
Lo strumento eCapture comprende 8 moduli che supportano rispettivamente la cattura del testo in chiaro per librerie di crittografia TLS/SSL come OpenSSL, GnuTLS, NSPR, BoringSSL e GoTLS. Inoltre, facilita gli audit software per applicazioni Bash, MySQL e PostgreSQL.
- bash cattura il comando bash
- zsh cattura il comando zsh
- gnutls cattura il contenuto testuale gnutls senza certificato CA per le librerie gnutls.
- gotls Cattura la comunicazione in testo chiaro da programmi Golang crittografati con TLS/HTTPS.
- mysqld cattura le query sql da mysqld 5.6/5.7/8.0 .
- nss cattura il contenuto testuale crittografato nss/nspr senza certificato CA per le librerie nss/nspr.
- postgres cattura le query sql da postgres 10+.
- tls usato per catturare il contenuto testuale tls/ssl senza certificato CA. (Supporta openssl 1.0.x/1.1.x/3.0.x o successivi).
Puoi usare
ecapture -hper visualizzare l'elenco dei sottocomandi.
OpenSSL Module
eCapture cerca il file /etc/ld.so.conf di default per cercare le directory di caricamento dei file SO e la posizione delle librerie condivise openssl. Oppure puoi usare il flag --libssl per impostare il percorso della libreria condivisa.
Se il programma target è compilato staticamente, puoi impostare direttamente il percorso del programma come valore del flag --libssl.
Il modulo OpenSSL supporta tre modalità di cattura:
- La modalità
pcap/pcapngmemorizza i dati in testo chiaro catturati in formatopcap-NG. - La modalità
keylog/keysalva le chiavi di handshake TLS in un file. - La modalità
textcattura direttamente i dati in testo chiaro, outputtando su un file specificato o stampando sulla riga di comando.
Pcap Mode
Supporta http crittografato TLS 1.0/1.1/2.0 su TCP e il protocollo http3 QUIC su UDP.
Puoi specificare -m pcap o -m pcapng e usarli in combinazione con i parametri --pcapfile e -i. Il valore predefinito per --pcapfile è ecapture_openssl.pcapng.
sudo ecapture tls -m pcap -i eth0 --pcapfile=ecapture.pcapng tcp port 443
Questo comando salva i pacchetti di dati in testo chiaro catturati come file pcapng, che può essere visualizzato usando Wireshark.
📄 Per l'output completo della modalità pcapng, vedi docs/example-outputs.md.
Keylog Mode
Puoi specificare -m keylog o -m key e usarli in combinazione con il parametro --keylogfile, che predefinisce a ecapture_masterkey.log.
Le informazioni Master Secret di OpenSSL TLS catturate vengono salvate in --keylogfile. Puoi anche abilitare la cattura di pacchetti tcpdump e poi usare Wireshark per aprire il file e impostare il percorso del Master Secret per visualizzare i pacchetti di dati in chiaro.
sudo ecapture tls -m keylog -keylogfile=openssl_keylog.log
Puoi anche usare direttamente il software tshark per la decifratura e visualizzazione in tempo reale:
tshark -o tls.keylog_file:ecapture_masterkey.log -Y http -T fields -e http.file_data -f "port 443" -i eth0
Text Mode
sudo ecapture tls -m text outputterà tutti i pacchetti di dati in chiaro. (A partire dalla v0.7.0, non cattura più le informazioni SSLKEYLOG.)
GoTLS Module
Simile al modulo OpenSSL.
gotls command
cattura il contesto testuale tls.
Step 1:
sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex
Step 2:
/home/cfc4n/go_https_client
more help
sudo ecapture gotls -h
Other Modules
come i moduli bash\mysqld\postgres, puoi usare ecapture -h per visualizzare l'elenco dei sottocomandi.
Videos
- Video YouTube: Come usare eCapture v0.1.0
- eCapture:supports capturing plaintext of Golang TLS/HTTPS traffic
eCaptureQ GUI Application
eCaptureQ è un'interfaccia utente grafica cross-platform per eCapture, che visualizza le capacità di cattura TLS eBPF. Costruita usando lo stack tecnologico Rust + Tauri + React, fornisce un'interfaccia reattiva in tempo reale, consentendo un'analisi facile del traffico crittografato senza la necessità di certificati CA. Semplifica le complesse tecniche di cattura eBPF, rendendole facili da usare. Supporta due modalità:
- Modalità Integrata: Esecuzione unificata Linux/Android
- Modalità Remota: Client Windows/macOS/Linux si connette a un servizio eCapture remoto
Event Forwarding
Video Demonstration
https://github.com/user-attachments/assets/c8b7a84d-58eb-4fdb-9843-f775c97bdbfb
Protobuf Protocols
Per i dettagli dello schema log Protobuf usato da eCapture/eCaptureQ, vedi:
Stargazers over time
Security & Operations
- Politica di Sicurezza — Segnalazione delle vulnerabilità e versioni supportate
- Privilegi Minimi — Capacità Linux richieste e configurazione a privilegi minimi
- Difesa e Rilevamento — Come rilevare e difendersi da usi non autorizzati
- Benchmark delle Prestazioni — Metodologia di misurazione del sovraccarico e caratteristiche attese
- Verifica delle Release — Come verificare l'integrità degli artefatti delle release
Contributing
Vedi CONTRIBUTING per i dettagli su come inviare patch e il flusso di lavoro dei contributi.
Compilation
Custom Compilation
Puoi personalizzare le funzionalità che desideri, come impostare l'indirizzo di offset per uprobe per supportare librerie OpenSSL compilate staticamente. Fai riferimento alla guida alla compilazione per le istruzioni di compilazione.
Configurations Remote Update
Dopo che eCapture è in esecuzione, puoi modificare dinamicamente le configurazioni tramite interfacce HTTP. Fai riferimento alla Documentazione API HTTP.
Event Forwarding
eCapture supporta vari metodi di inoltro degli eventi. Puoi inoltrare eventi a software di cattura di pacchetti come Burp Suite. Per i dettagli, fai riferimento alla Documentazione API di Inoltro Eventi.