
ecapture v2.5.2
Capturing SSL/TLS plaintext without a CA certificate using eBPF. Supported on Linux/Android kernels for amd64/arm64.
汉字 | Englisch
eCapture(旁观者): SSL/TLS-Textinhalte ohne CA-Zertifikat mit eBPF erfassen.
[!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.
Einführung
- Erfassung von SSL/TLS-Klartext, unterstützt die Bibliotheken openssl\libressl\boringssl\gnutls\nspr(nss).
- GoTLS-Klartext unterstützt die go tls-Bibliothek, die sich auf verschlüsselte Kommunikation in HTTPS/TLS-Programmen bezieht, die in der Go-Sprache geschrieben sind.
- Bash-Audit, erfasst Bash-Befehle für Host-Sicherheitsaudit.
- Zsh-Audit, erfasst Zsh-Befehle für Host-Sicherheitsaudit.
- MySQL-Abfrage-SQL-Audit, unterstützt mysqld 5.6\5.7\8.0 und MariaDB.
Erste Schritte
Herunterladen
ELF-Binärdatei
[!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.
Docker-Image
[!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.
Erfassen von OpenSSL-Textinhalten
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.
Module
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.
- bash Erfasst Bash-Befehle
- zsh Erfasst Zsh-Befehle
- gnutls Erfasst GnuTLS-Textinhalte ohne CA-Zertifikat für GnuTLS-Bibliotheken.
- gotls Erfasst Klartextkommunikation von Golang-Programmen, die mit TLS/HTTPS verschlüsselt sind.
- mysqld Erfasst SQL-Abfragen von mysqld 5.6/5.7/8.0 .
- nss Erfasst NSS/NSPR-verschlüsselte Textinhalte ohne CA-Zertifikat für NSS/NSPR-Bibliotheken.
- postgres Erfasst SQL-Abfragen von Postgres 10+.
- tls Erfasst TLS/SSL-Textinhalte ohne CA-Zertifikat. (Unterstützt openssl 1.0.x/1.1.x/3.0.x oder neuer).
Sie können
ecapture -hverwenden, um die Liste der Unterbefehle anzuzeigen.
OpenSSL-Modul
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:
- Der
pcap/pcapng-Modus speichert erfasste Klartextdaten impcap-NG-Format. - Der
keylog/key-Modus speichert die TLS-Handshake-Schlüssel in einer Datei. - Der
text-Modus erfasst Klartextdaten direkt und gibt sie entweder in eine angegebene Datei aus oder druckt sie auf der Befehlszeile.
PCAP-Modus
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.
Keylog-Modus
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
Text-Modus
sudo ecapture tls -m text gibt alle Klartextdatenpakete aus. (Ab v0.7.0 werden keine SSLKEYLOG-Informationen mehr erfasst.)
GoTLS-Modul
Ähnlich dem OpenSSL-Modul.
gotls-Befehl
Erfasst TLS-Textkontext.
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
Andere Module
Wie die Module bash\mysqld\postgres – Sie können ecapture -h verwenden, um die Liste der Unterbefehle anzuzeigen.
Videos
- Youtube-Video: Verwendung von eCapture v0.1.0
- eCapture: unterstützt die Erfassung von Klartext bei Golang-TLS/HTTPS-Datenverkehr
eCaptureQ GUI-Anwendung
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:
- Integrierter Modus: Einheitliche Linux/Android-Ausführung
- Fernmodus: Windows/macOS/Linux-Client verbindet sich mit einem entfernten eCapture-Dienst
Ereignisweiterleitung
Ereignisweiterleitungs-Projekte
Video-Demonstration
https://github.com/user-attachments/assets/c8b7a84d-58eb-4fdb-9843-f775c97bdbfb
Protobuf-Protokolle
Einzelheiten zum von eCapture/eCaptureQ verwendeten Protobuf-Log-Schema finden Sie unter:
Stargazers im Zeitverlauf
Sicherheit & Betrieb
- Sicherheitsrichtlinie — Meldung von Sicherheitslücken und unterstützte Versionen
- Minimale Berechtigungen — Erforderliche Linux-Fähigkeiten und Konfiguration minimaler Berechtigungen
- Verteidigung & Erkennung — Wie man unbefugte Nutzung erkennt und sich dagegen verteidigt
- Leistungsbenchmarks — Methodik zur Overhead-Messung und erwartete Eigenschaften
- Release-Verifikation — Wie man die Integrität von Release-Artefakten überprüft
Mitwirken
Siehe CONTRIBUTING für Details zum Einreichen von Patches und den Workflow für Beiträge.
Kompilierung
Benutzerdefinierte Kompilierung
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.
Konfigurationen per Fernaktualisierung
Nachdem eCapture ausgeführt wird, können Sie die Konfigurationen dynamisch über HTTP-Schnittstellen ändern. Siehe die HTTP-API-Dokumentation.
Ereignisweiterleitung
eCapture unterstützt mehrere Ereignisweiterleitungsmethoden. Sie können Ereignisse an Paketerfassungssoftware wie Burp Suite weiterleiten. Einzelheiten finden Sie in der Ereignisweiterleitungs-API-Dokumentation.