
eBPF का उपयोग करके बिना CA प्रमाणपत्र के SSL/TLS प्लेनटेक्स्ट को कैप्चर करना। Linux/Android कर्नेल के लिए amd64/arm64 पर समर्थित।
汉字 | अंग्रेज़ी
[!महत्वपूर्ण]
x86_64 (कर्नेल 4.18+) और aarch64 (कर्नेल 5.5+) पर Linux/Android को सपोर्ट करता है। कर्नेल संस्करण आवश्यकताएँ Linux और Android दोनों के लिए CPU आर्किटेक्चर के अनुसार लागू होती हैं। ROOT अनुमति या विशिष्ट Linux क्षमताओं की आवश्यकता है। Windows और macOS प्रणाली को सपोर्ट नहीं करता।
[!टिप] Linux/Android x86_64/aarch64 का समर्थन करता है।
ELF ज़िप फ़ाइल रिलीज़ डाउनलोड करें, अनज़िप करें और कमांड sudo ecapture --help द्वारा उपयोग करें।
[!टिप] केवल 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
⚠️ सुरक्षा नोट:
--privileged=trueपूर्ण होस्ट एक्सेस प्रदान करता है। उत्पादन उपयोग के लिए, विशिष्ट क्षमताओं पर विचार करें। न्यूनतम विशेषाधिकार गाइड देखें।
अधिक जानकारी के लिए Docker Hub देखें।
sudo ecapture tls
eCapture स्वचालित रूप से सिस्टम की OpenSSL लाइब्रेरी का पता लगाएगा और प्लेनटेक्स्ट कैप्चर करना शुरू करेगा। जब आप 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, NSPR, BoringSSL, और GoTLS जैसी TLS/SSL एन्क्रिप्शन लाइब्रेरी के लिए प्लेनटेक्स्ट कैप्चर का समर्थन करते हैं। इसके अतिरिक्त, यह Bash, MySQL, और PostgreSQL अनुप्रयोगों के लिए सॉफ्टवेयर ऑडिट की सुविधा प्रदान करता है।
ecapture -h का उपयोग करके उपकमांड की सूची देख सकते हैं।eCapture डिफ़ॉल्ट रूप से /etc/ld.so.conf फ़ाइल खोजता है, SO फ़ाइल के लोड निर्देशिकाओं को खोजने के लिए, और openssl शेयर्ड लाइब्रेरी का स्थान खोजता है। या आप --libssl फ़्लैग का उपयोग करके शेयर्ड लाइब्रेरी पथ सेट कर सकते हैं।
यदि लक्ष्य प्रोग्राम स्थैतिक रूप से संकलित किया गया है, तो आप --libssl फ़्लैग के मान के रूप में सीधे प्रोग्राम पथ सेट कर सकते हैं।
OpenSSL मॉड्यूल तीन कैप्चर मोड का समर्थन करता है:
pcap/pcapng मोड कैप्चर किए गए प्लेनटेक्स्ट डेटा को pcap-NG प्रारूप में संग्रहीत करता है।keylog/key मोड TLS हैंडशेक कुंजियों को एक फ़ाइल में सहेजता है।text मोड सीधे प्लेनटेक्स्ट डेटा कैप्चर करता है, या तो निर्दिष्ट फ़ाइल में आउटपुट करता है या कमांड लाइन पर प्रिंट करता है।TCP पर एन्क्रिप्टेड http 1.0/1.1/2.0, और UDP पर http3 QUIC प्रोटोकॉल को सपोर्ट करता है।
आप -m pcap या -m pcapng निर्दिष्ट कर सकते हैं और इसे --pcapfile और -i पैरामीटर के साथ उपयोग कर सकते हैं। --pcapfile के लिए डिफ़ॉल्ट मान ecapture_openssl.pcapng है।
sudo ecapture tls -m pcap -i eth0 --pcapfile=ecapture.pcapng tcp port 443
यह कमांड कैप्चर किए गए प्लेनटेक्स्ट डेटा पैकेट को pcapng फ़ाइल के रूप में सहेजता है, जिसे Wireshark के साथ देखा जा सकता है।
📄 पूर्ण pcapng मोड आउटपुट के लिए, docs/example-outputs.md देखें।
आप -m keylog या -m key निर्दिष्ट कर सकते हैं और इसे --keylogfile पैरामीटर के साथ उपयोग कर सकते हैं, जो डिफ़ॉल्ट रूप से ecapture_masterkey.log है।
कैप्चर की गई OpenSSL TLS Master Secret जानकारी --keylogfile में सहेजी जाती है। आप tcpdump पैकेट कैप्चर भी सक्षम कर सकते हैं और फिर फ़ाइल खोलने और प्लेनटेक्स्ट डेटा पैकेट देखने के लिए Wireshark का उपयोग कर सकते हैं तथा 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
sudo ecapture tls -m text सभी प्लेनटेक्स्ट डेटा पैकेट आउटपुट करेगा। (v0.7.0 से, यह अब SSLKEYLOG जानकारी कैप्चर नहीं करता है।)
OpenSSL मॉड्यूल के समान।
tls टेक्स्ट संदर्भ कैप्चर करें।
चरण 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 का उपयोग करके उपकमांड की सूची देख सकते हैं।
eCaptureQ eCapture के लिए एक क्रॉस-प्लेटफ़ॉर्म ग्राफ़िकल यूज़र इंटरफ़ेस क्लाइंट है, जो eBPF TLS कैप्चर क्षमताओं को विज़ुअलाइज़ करता है। Rust + Tauri + React तकनीक स्टैक का उपयोग करके निर्मित, यह एक रीयल-टाइम, प्रतिक्रियाशील इंटरफ़ेस प्रदान करता है, जो CA प्रमाणपत्रों की आवश्यकता के बिना एन्क्रिप्टेड ट्रैफ़िक का आसानी से विश्लेषण करने में सक्षम बनाता है। यह जटिल eBPF कैप्चर तकनीकों को सरल बनाता है, जिससे वे उपयोग में आसान हो जाती हैं। दो मोड का समर्थन करता है:
https://github.com/user-attachments/assets/c8b7a84d-58eb-4fdb-9843-f775c97bdbfb
eCapture/eCaptureQ द्वारा उपयोग किए जाने वाले Protobuf लॉग स्कीमा के विवरण के लिए, देखें:
पैच सबमिट करने और योगदान वर्कफ़्लो के विवरण के लिए योगदान देखें।
आप अपनी इच्छित सुविधाओं को अनुकूलित कर सकते हैं, जैसे स्टैटिक रूप से संकलित OpenSSL लाइब्रेरी का समर्थन करने के लिए uprobe के लिए ऑफ़सेट पता सेट करना। संकलन निर्देशों के लिए संकलन गाइड देखें।
eCapture चलने के बाद, आप HTTP इंटरफ़ेस के माध्यम से कॉन्फ़िगरेशन को गतिशील रूप से संशोधित कर सकते हैं। HTTP API दस्तावेज़ीकरण देखें।
eCapture कई इवेंट फ़ॉरवर्डिंग विधियों का समर्थन करता है। आप Burp Suite जैसे पैकेट कैप्चर सॉफ़्टवेयर को इवेंट फ़ॉरवर्ड कर सकते हैं। विवरण के लिए, इवेंट फ़ॉरवर्डिंग API दस्तावेज़ीकरण देखें।