
ecapture — Updated!
Capturing SSL/TLS plaintext without a CA certificate using eBPF. Supported on Linux/Android kernels for amd64/arm64.
汉字 | English
eCapture (Beobachter): Klartext-SSL/TLS-Verkehr ohne CA-Zertifikat mit eBPF erfassen.
[!IMPORTANT] Unterstützt Linux und Android auf x86_64 (Kernel 4.18+) und aarch64 (Kernel 5.5+). Die Kernel-Anforderung gilt pro CPU-Architektur sowohl für Linux als auch für Android. Erfordert Root-Rechte oder spezifische Linux-Capabilities. Unterstützt weder Windows noch macOS.
Einführung
- Erfasst Klartext-TLS/SSL-Verkehr aus den Bibliotheken OpenSSL, LibreSSL, BoringSSL, GnuTLS und NSS/NSPR.
- Unterstützt die Klartexterfassung für Go-TLS-Programme, einschließlich HTTPS/TLS-Verkehr in Go-Anwendungen.
- Auditiert die Bash- und Zsh-Befehlshistorie zur Host-Sicherheitsüberwachung.
- Auditiert MySQL-Abfragen und unterstützt MySQL 5.6/5.7/8.0 sowie MariaDB.
Erste Schritte
Download
ELF-Binärdatei
[!TIP] Unterstützt Linux/Android auf x86_64 und aarch64.
Laden Sie das ELF-Binärpaket von der Releases-Seite herunter, entpacken Sie es und führen Sie aus:
sudo ecapture --help
Docker-Image
[!TIP] Nur Linux.
# Pull the Docker image
docker pull gojue/ecapture:latest
# Run it
docker run --rm --privileged=true --net=host -v ${HOST_PATH}:${CONTAINER_PATH} gojue/ecapture ARGS
⚠️ Sicherheitshinweis:
--privileged=truegewährt vollständigen Host-Zugriff. Für den Produktionseinsatz sollten Sie stattdessen spezifische Capabilities bevorzugen. Siehe den Leitfaden für minimale Privilegien.
Weitere Informationen finden Sie auf Docker Hub.
OpenSSL-Klartextdaten erfassen
sudo ecapture tls
eCapture erkennt automatisch die OpenSSL-Bibliothek des Systems und beginnt mit der Erfassung des Klartextverkehrs. Wenn Sie eine HTTPS-Anfrage stellen, z. B. curl https://google.com, werden die erfasste Anfrage und Antwort angezeigt:
...
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"
...
📄 Vollständige Ausgabebeispiele finden Sie unter docs/example-outputs.md.
Module
Das eCapture-Tool umfasst 8 Module, die Klartextdaten aus TLS/SSL-Bibliotheken wie OpenSSL, GnuTLS, NSS/NSPR, BoringSSL und GoTLS erfassen können. Es unterstützt außerdem die Auditierung von Befehlen und Abfragen aus Bash-, MySQL- und PostgreSQL-Anwendungen.
- bash: erfasst Bash-Befehle
- zsh: erfasst Zsh-Befehle
- gnutls: erfasst Klartext aus GnuTLS-Bibliotheken, ohne dass ein CA-Zertifikat benötigt wird
- gotls: erfasst Klartextkommunikation aus Go-Programmen, die TLS/HTTPS verwenden
- mysqld: erfasst SQL-Abfragen aus MySQL 5.6/5.7/8.0 und MariaDB
- nss: erfasst Klartext aus NSS/NSPR-Bibliotheken, ohne dass ein CA-Zertifikat benötigt wird
- postgres: erfasst SQL-Abfragen aus PostgreSQL 10+
- tls: erfasst Klartext-TLS/SSL-Verkehr ohne CA-Zertifikat (unterstützt OpenSSL 1.0.x/1.1.x/3.0.x und neuer)
Mit ecapture -h können Sie die vollständige Liste der Unterbefehle anzeigen.
OpenSSL-Modul
eCapture durchsucht die Standard-Bibliothekspfade aus /etc/ld.so.conf, um Shared Libraries zu finden und den Speicherort der OpenSSL-Bibliothek zu ermitteln. Sie können den Bibliothekspfad auch explizit mit dem Flag --libssl festlegen.
Wenn das Zielprogramm statisch gelinkt ist, können Sie den Programmpfad direkt als Wert des Flags --libssl angeben.
Das OpenSSL-Modul unterstützt drei Erfassungsmodi:
- Der Modus
pcap/pcapngspeichert erfasste Klartextdaten im Formatpcap-NG. - Der Modus
keylog/keyspeichert TLS-Handshake-Schlüssel in einer Datei. - Der Modus
texterfasst Klartextdaten direkt, indem er sie entweder in eine Datei schreibt oder auf der Konsole ausgibt.
Pcap-Modus
Unterstützt TLS-verschlüsseltes HTTP 1.0/1.1/2.0 über TCP und HTTP/3 (QUIC) über UDP.
Sie können -m pcap oder -m pcapng zusammen mit --pcapfile und -i angeben. Der Standardwert von --pcapfile ist ecapture_openssl.pcapng.
sudo ecapture tls -m pcap -i eth0 --pcapfile=ecapture.pcapng tcp port 443
Dieser Befehl speichert erfasste Klartextpakete als pcapng-Datei, die mit Wireshark geöffnet werden kann.
📄 Vollständige Ausgabe des pcapng-Modus finden Sie unter docs/example-outputs.md.
Keylog-Modus
Sie können -m keylog oder -m key zusammen mit der Option --keylogfile angeben. Die Standard-Ausgabedatei ist ecapture_masterkey.log.
Das erfasste OpenSSL-TLS-Master-Secret wird in --keylogfile gespeichert. Sie können auch die tcpdump-Erfassung aktivieren und die Datei dann in Wireshark öffnen, den Pfad zum Master-Secret festlegen und die Klartextpakete anzeigen.
sudo ecapture tls -m keylog -keylogfile=openssl_keylog.log
Sie können auch tshark zur Echtzeit-Entschlüsselung und -Anzeige verwenden:
tshark -o tls.keylog_file:ecapture_masterkey.log -Y http -T fields -e http.file_data -f "port 443" -i eth0
Text-Modus
sudo ecapture tls -m text
Dies gibt alle Klartext-Datenpakete aus.
GoTLS-Modul
Ähnlich wie das OpenSSL-Modul.
Befehl gotls
TLS-Klartextdaten erfassen.
Schritt 1:
sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex
Schritt 2:
/home/cfc4n/go_https_client
Weitere Hilfe
sudo ecapture gotls -h
Weitere Module
Module wie bash, mysqld und postgres können ebenfalls verwendet werden. Die vollständige Liste können Sie mit ecapture -h anzeigen.
Videos
- YouTube-Video: How to use eCapture v0.1.0
- eCapture: supports capturing plaintext of Go TLS/HTTPS traffic