
Capturing SSL/TLS plaintext without a CA certificate using eBPF. Supported on Linux/Android kernels for amd64/arm64.
汉字 | Englisch
[!IMPORTANT]
Unterstützt Linux/Android auf x86_64 (Kernel 4.18+) und aarch64 (Kernel 5.5+). Die Kernel-Versionsanforderungen gelten pro CPU-Architektur für sowohl Linux als auch Android. Benötigt ROOT-Berechtigung oder spezifische Linux-Fähigkeiten. Unterstützt keine Windows- und macOS-Systeme.
[!TIP] unterstützt Linux/Android x86_64/aarch64.
Laden Sie die ELF-Zip-Datei von Release herunter, entpacken Sie sie und verwenden Sie sie mit dem Befehl sudo ecapture --help.
[!TIP] Nur Linux.
# Docker-Image pullen
docker pull gojue/ecapture:latest
# ausführen
docker run --rm --privileged=true --net=host -v ${HOST_PATH}:${CONTAINER_PATH} gojue/ecapture ARGS
⚠️ Sicherheitshinweis:
--privileged=truegewährt vollen Host-Zugriff. Für die Produktion sollten Sie stattdessen spezifische Fähigkeiten in Betracht ziehen. Siehe Leitfaden zu minimalen Berechtigungen.
Weitere Informationen finden Sie auf Docker Hub.
sudo ecapture tls
eCapture erkennt automatisch die OpenSSL-Bibliothek des Systems und beginnt mit der Erfassung des Klartextes. 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.
Das eCapture-Tool umfasst 8 Module, die jeweils die Klartexterfassung für TLS/SSL-Verschlüsselungsbibliotheken wie OpenSSL, GnuTLS, NSPR, BoringSSL und GoTLS unterstützen. Darüber hinaus ermöglicht es Software-Audits für Bash-, MySQL- und PostgreSQL-Anwendungen.
ecapture -h verwenden, um die Liste der Unterbefehle anzuzeigen.eCapture durchsucht standardmäßig die Datei /etc/ld.so.conf, um die Ladepfade der SO-Datei zu finden, und sucht nach den gemeinsam genutzten openssl-Bibliotheken. Oder Sie können das --libssl-Flag verwenden, um den Pfad der gemeinsam genutzten Bibliothek festzulegen.
Wenn das Zielprogramm statisch kompiliert ist, können Sie den Programm-Pfad direkt als Wert des --libssl-Flags setzen.
Das OpenSSL-Modul unterstützt drei Erfassungsmodi:
pcap/pcapng-Modus speichert erfasste Klartextdaten im pcap-NG-Format.keylog/key-Modus speichert die TLS-Handshake-Schlüssel in einer Datei.text-Modus erfasst Klartextdaten direkt und gibt sie entweder in eine angegebene Datei aus oder druckt sie auf der Befehlszeile.Unterstützt TLS-verschlüsseltes http 1.0/1.1/2.0 über TCP und http3 QUIC-Protokoll über UDP. Sie können -m pcap oder -m pcapng angeben und es in Verbindung mit den Parametern --pcapfile und -i verwenden. Der Standardwert für --pcapfile ist ecapture_openssl.pcapng.
sudo ecapture tls -m pcap -i eth0 --pcapfile=ecapture.pcapng tcp port 443
Dieser Befehl speichert erfasste Klartextdatenpakete als pcapng-Datei, die mit Wireshark angezeigt werden kann.
📄 Vollständige Ausgaben des pcapng-Modus finden Sie unter docs/example-outputs.md.
Sie können -m keylog oder -m key angeben und es in Verbindung mit dem Parameter --keylogfile verwenden, der standardmäßig ecapture_masterkey.log ist.
Die erfassten OpenSSL-TLS-Master Secret-Informationen werden in --keylogfile gespeichert. Sie können auch die tcpdump-Paketerfassung aktivieren und dann mit Wireshark die Datei öffnen und den Pfad des Master Secret festlegen, um Klartextdatenpakete anzuzeigen.
sudo ecapture tls -m keylog -keylogfile=openssl_keylog.log
Sie können auch direkt die tshark-Software 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
sudo ecapture tls -m text gibt alle Klartextdatenpakete aus. (Ab v0.7.0 werden keine SSLKEYLOG-Informationen mehr erfasst.)
Ähnlich dem OpenSSL-Modul.
Erfasst TLS-Textkontext.
Schritt 1:
sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex
Schritt 2:
/home/cfc4n/go_https_client
sudo ecapture gotls -h
Wie die Module bash\mysqld\postgres – Sie können ecapture -h verwenden, um die Liste der Unterbefehle anzuzeigen.
eCaptureQ ist ein plattformübergreifender grafischer Benutzeroberflächen-Client für eCapture, der die eBPF-TLS-Erfassungsfähigkeiten visualisiert. Entwickelt mit dem Rust + Tauri + React-Technologiestack, bietet es eine Echtzeit-, reaktionsschnelle Oberfläche und ermöglicht die einfache Analyse verschlüsselten Datenverkehrs ohne die Notwendigkeit von CA-Zertifikaten. Es vereinfacht komplexe eBPF-Erfassungstechniken und macht sie benutzerfreundlich. Unterstützt zwei Modi:
Ereignisweiterleitungs-Projekte
https://github.com/user-attachments/assets/c8b7a84d-58eb-4fdb-9843-f775c97bdbfb
Einzelheiten zum von eCapture/eCaptureQ verwendeten Protobuf-Log-Schema finden Sie unter:
Siehe CONTRIBUTING für Details zum Einreichen von Patches und den Workflow für Beiträge.
Sie können die gewünschten Funktionen anpassen, z.B. die Offset-Adresse für uprobe festlegen, um statisch kompilierte OpenSSL-Bibliotheken zu unterstützen. Siehe die Kompilierungsanleitung für Kompilierungsanweisungen.
Nachdem eCapture ausgeführt wird, können Sie die Konfigurationen dynamisch über HTTP-Schnittstellen ändern. Siehe die HTTP-API-Dokumentation.
eCapture unterstützt mehrere Ereignisweiterleitungsmethoden. Sie können Ereignisse an Paketerfassungssoftware wie Burp Suite weiterleiten. Einzelheiten finden Sie in der Ereignisweiterleitungs-API-Dokumentation.