
Cattura del testo in chiaro SSL/TLS senza un certificato CA utilizzando eBPF. Supportato su kernel Linux/Android per amd64/arm64.
汉字 | English
[!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.
[!TIP] supporta Linux/Android x86_64/aarch64.
Scarica il file zip ELF dalla release, decomprimi e usa con il comando sudo ecapture --help.
[!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.
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.
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.
ecapture -h per visualizzare l'elenco dei sottocomandi.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:
pcap/pcapng memorizza i dati in testo chiaro catturati in formato pcap-NG.keylog/key salva le chiavi di handshake TLS in un file.text cattura direttamente i dati in testo chiaro, outputtando su un file specificato o stampando sulla riga di comando.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.
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
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.)
Simile al modulo OpenSSL.
cattura il contesto testuale tls.
Step 1:
sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex
Step 2:
/home/cfc4n/go_https_client
sudo ecapture gotls -h
come i moduli bash\mysqld\postgres, puoi usare ecapture -h per visualizzare l'elenco dei sottocomandi.
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à:
https://github.com/user-attachments/assets/c8b7a84d-58eb-4fdb-9843-f775c97bdbfb
Per i dettagli dello schema log Protobuf usato da eCapture/eCaptureQ, vedi:
Vedi CONTRIBUTING per i dettagli su come inviare patch e il flusso di lavoro dei contributi.
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.
Dopo che eCapture è in esecuzione, puoi modificare dinamicamente le configurazioni tramite interfacce HTTP. Fai riferimento alla Documentazione API HTTP.
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.