
ecapture — Updated!
eBPF का उपयोग करके बिना CA प्रमाणपत्र के SSL/TLS प्लेनटेक्स्ट को कैप्चर करना। Linux/Android कर्नेल के लिए amd64/arm64 पर समर्थित।
汉字 | English
eCapture (旁观者): eBPF का उपयोग करके CA प्रमाणपत्र के बिना plaintext SSL/TLS ट्रैफ़िक कैप्चर करें।
[!IMPORTANT] x86_64 (kernel 4.18+) और aarch64 (kernel 5.5+) पर Linux और Android का समर्थन करता है। kernel की आवश्यकता Linux और Android दोनों के लिए प्रति CPU आर्किटेक्चर लागू होती है। root विशेषाधिकार या विशिष्ट Linux capabilities की आवश्यकता होती है। Windows या macOS का समर्थन नहीं करता।
परिचय
- OpenSSL, LibreSSL, BoringSSL, GnuTLS, और NSS/NSPR लाइब्रेरी से plaintext TLS/SSL ट्रैफ़िक कैप्चर करता है।
- Go TLS प्रोग्राम के लिए plaintext कैप्चर का समर्थन करता है, जिसमें Go अनुप्रयोगों में HTTPS/TLS ट्रैफ़िक शामिल है।
- होस्ट सुरक्षा निगरानी के लिए bash और zsh कमांड इतिहास का ऑडिट करता है।
- MySQL क्वेरी का ऑडिट करता है और MySQL 5.6/5.7/8.0 तथा MariaDB का समर्थन करता है।
शुरुआत करना
डाउनलोड
ELF बाइनरी फ़ाइल
[!TIP] x86_64 और aarch64 पर Linux/Android का समर्थन करता है।
releases पेज से ELF बाइनरी पैकेज डाउनलोड करें, इसे एक्सट्रैक्ट करें, और चलाएँ:
sudo ecapture --help
Docker इमेज
[!TIP] केवल 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
⚠️ सुरक्षा नोट:
--privileged=trueपूर्ण होस्ट एक्सेस प्रदान करता है। उत्पादन उपयोग के लिए, इसके बजाय विशिष्ट capabilities को प्राथमिकता दें। देखें न्यूनतम विशेषाधिकार गाइड।
अधिक जानकारी के लिए Docker Hub देखें।
OpenSSL plaintext डेटा कैप्चर करें
sudo ecapture tls
eCapture स्वचालित रूप से सिस्टम की OpenSSL लाइब्रेरी का पता लगाता है और plaintext ट्रैफ़िक कैप्चर करना शुरू कर देता है। जब आप HTTPS अनुरोध करते हैं, जैसे curl https://google.com, तो कैप्चर किया गया अनुरोध और प्रतिक्रिया प्रदर्शित होती है:
...
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"
...
📄 पूर्ण आउटपुट उदाहरणों के लिए, देखें docs/example-outputs.md।
मॉड्यूल
eCapture टूल में 8 मॉड्यूल शामिल हैं जो OpenSSL, GnuTLS, NSS/NSPR, BoringSSL, और GoTLS जैसी TLS/SSL लाइब्रेरी से plaintext डेटा कैप्चर कर सकते हैं। यह Bash, MySQL, और PostgreSQL अनुप्रयोगों से कमांड और क्वेरी का ऑडिट करने का भी समर्थन करता है।
- bash: bash कमांड कैप्चर करता है
- zsh: zsh कमांड कैप्चर करता है
- gnutls: CA प्रमाणपत्र की आवश्यकता के बिना GnuTLS लाइब्रेरी से plaintext कैप्चर करता है
- gotls: TLS/HTTPS का उपयोग करने वाले Go प्रोग्राम से plaintext संचार कैप्चर करता है
- mysqld: MySQL 5.6/5.7/8.0 और MariaDB से SQL क्वेरी कैप्चर करता है
- nss: CA प्रमाणपत्र की आवश्यकता के बिना NSS/NSPR लाइब्रेरी से plaintext कैप्चर करता है
- postgres: PostgreSQL 10+ से SQL क्वेरी कैप्चर करता है
- tls: CA प्रमाणपत्र के बिना plaintext TLS/SSL ट्रैफ़िक कैप्चर करता है (OpenSSL 1.0.x/1.1.x/3.0.x और नए का समर्थन करता है)
आप सबकमांड की पूरी सूची देखने के लिए ecapture -h का उपयोग कर सकते हैं।
OpenSSL मॉड्यूल
eCapture साझा लाइब्रेरी का पता लगाने और OpenSSL लाइब्रेरी स्थान का पता लगाने के लिए /etc/ld.so.conf से डिफ़ॉल्ट लाइब्रेरी पथ खोजता है। आप --libssl फ़्लैग के साथ लाइब्रेरी पथ स्पष्ट रूप से भी सेट कर सकते हैं।
यदि लक्ष्य प्रोग्राम स्टैटिक रूप से लिंक किया गया है, तो आप प्रोग्राम पथ को सीधे --libssl फ़्लैग के मान के रूप में सेट कर सकते हैं।
OpenSSL मॉड्यूल तीन कैप्चर मोड का समर्थन करता है:
pcap/pcapngमोड कैप्चर किए गए plaintext डेटा कोpcap-NGप्रारूप में संग्रहीत करता है।keylog/keyमोड TLS handshake कुंजियों को एक फ़ाइल में सहेजता है।textमोड सीधे plaintext डेटा कैप्चर करता है, या तो इसे फ़ाइल में लिखता है या कंसोल पर प्रिंट करता है।
Pcap मोड
TCP पर TLS-एन्क्रिप्टेड HTTP 1.0/1.1/2.0 और UDP पर HTTP/3 (QUIC) का समर्थन करता है।
आप --pcapfile और -i के साथ -m pcap या -m pcapng निर्दिष्ट कर सकते हैं। --pcapfile का डिफ़ॉल्ट मान ecapture_openssl.pcapng है।
sudo ecapture tls -m pcap -i eth0 --pcapfile=ecapture.pcapng tcp port 443
यह कमांड कैप्चर किए गए plaintext पैकेट को pcapng फ़ाइल के रूप में सहेजता है, जिसे Wireshark के साथ खोला जा सकता है।
📄 पूर्ण pcapng मोड आउटपुट के लिए, देखें docs/example-outputs.md।
Keylog मोड
आप --keylogfile विकल्प के साथ -m keylog या -m key निर्दिष्ट कर सकते हैं। डिफ़ॉल्ट आउटपुट फ़ाइल ecapture_masterkey.log है।
कैप्चर किया गया OpenSSL TLS master secret --keylogfile में सहेजा जाता है। आप tcpdump कैप्चर भी सक्षम कर सकते हैं और फिर Wireshark में फ़ाइल खोल सकते हैं, plaintext पैकेट देखने के लिए master secret पथ सेट कर सकते हैं।
sudo ecapture tls -m keylog -keylogfile=openssl_keylog.log
आप रीयल-टाइम डिक्रिप्शन और प्रदर्शन के लिए tshark का भी उपयोग कर सकते हैं:
tshark -o tls.keylog_file:ecapture_masterkey.log -Y http -T fields -e http.file_data -f "port 443" -i eth0
Text मोड
sudo ecapture tls -m text
यह सभी plaintext डेटा पैकेट आउटपुट करता है।
GoTLS मॉड्यूल
OpenSSL मॉड्यूल के समान।
gotls कमांड
TLS plaintext डेटा कैप्चर करें।
चरण 1:
sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex
चरण 2:
/home/cfc4n/go_https_client
अधिक सहायता
sudo ecapture gotls -h
अन्य मॉड्यूल
bash, mysqld, और postgres जैसे मॉड्यूल का भी उपयोग किया जा सकता है। आप ecapture -h के साथ पूरी सूची देख सकते हैं।
वीडियो
- YouTube वीडियो: How to use eCapture v0.1.0
- eCapture: supports capturing plaintext of Go TLS/HTTPS traffic