
ecapture — Updated!
التقاط النص الصريح لـ SSL/TLS بدون شهادة CA باستخدام eBPF. مدعوم على أنوية Linux/Android لـ amd64/arm64.
汉字 | English
eCapture (旁观者): التقاط حركة مرور SSL/TLS بنص صريح دون شهادة CA باستخدام eBPF.
[!IMPORTANT] يدعم Linux وAndroid على x86_64 (نواة 4.18+) وaarch64 (نواة 5.5+). ينطبق متطلب النواة لكل معمارية CPU لكل من Linux وAndroid. يتطلب صلاحيات root أو قدرات Linux محددة. لا يدعم Windows أو macOS.
مقدمة
- يلتقط حركة مرور TLS/SSL بنص صريح من مكتبات OpenSSL وLibreSSL وBoringSSL وGnuTLS وNSS/NSPR.
- يدعم التقاط النص الصريح لبرامج Go TLS، بما في ذلك حركة مرور HTTPS/TLS في تطبيقات Go.
- يدقق في سجل أوامر bash وzsh لمراقبة أمان المضيف.
- يدقق في استعلامات MySQL ويدعم MySQL 5.6/5.7/8.0 وMariaDB.
بدء الاستخدام
التنزيل
ملف ELF الثنائي
[!TIP] يدعم Linux/Android على x86_64 وaarch64.
قم بتنزيل حزمة 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وصولاً كاملاً إلى المضيف. للاستخدام في بيئة الإنتاج، يُفضّل استخدام قدرات محددة بدلاً من ذلك. راجع دليل الحد الأدنى من الصلاحيات.
راجع Docker Hub لمزيد من المعلومات.
التقاط بيانات OpenSSL بنص صريح
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 وحدات يمكنها التقاط البيانات بنص صريح من مكتبات TLS/SSL مثل OpenSSL وGnuTLS وNSS/NSPR وBoringSSL وGoTLS. كما تدعم تدقيق الأوامر والاستعلامات من تطبيقات Bash وMySQL وPostgreSQL.
- bash: يلتقط أوامر bash
- zsh: يلتقط أوامر zsh
- gnutls: يلتقط النص الصريح من مكتبات GnuTLS دون الحاجة إلى شهادة CA
- gotls: يلتقط الاتصالات بنص صريح من برامج Go التي تستخدم TLS/HTTPS
- mysqld: يلتقط استعلامات SQL من MySQL 5.6/5.7/8.0 وMariaDB
- nss: يلتقط النص الصريح من مكتبات NSS/NSPR دون الحاجة إلى شهادة CA
- postgres: يلتقط استعلامات SQL من PostgreSQL 10+
- tls: يلتقط حركة مرور TLS/SSL بنص صريح دون الحاجة إلى شهادة CA (يدعم OpenSSL 1.0.x/1.1.x/3.0.x والإصدارات الأحدث)
يمكنك استخدام ecapture -h لعرض القائمة الكاملة للأوامر الفرعية.
وحدة OpenSSL
يبحث eCapture في مسارات المكتبات الافتراضية من /etc/ld.so.conf لتحديد موقع المكتبات المشتركة واكتشاف موقع مكتبة OpenSSL. يمكنك أيضًا تعيين مسار المكتبة صراحةً باستخدام العلامة --libssl.
إذا كان البرنامج الهدف مرتبطًا بشكل ثابت، يمكنك تعيين مسار البرنامج مباشرةً كقيمة للعلامة --libssl.
تدعم وحدة OpenSSL ثلاثة أوضاع للالتقاط:
- وضع
pcap/pcapngيخزّن البيانات الملتقطة بنص صريح بصيغةpcap-NG. - وضع
keylog/keyيحفظ مفاتيح مصافحة TLS في ملف. - وضع
textيلتقط البيانات بنص صريح مباشرةً، إما بكتابتها إلى ملف أو طباعتها على الطرفية.
وضع Pcap
يدعم HTTP 1.0/1.1/2.0 المشفّر بـ TLS عبر TCP وHTTP/3 (QUIC) عبر UDP.
يمكنك تحديد -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.
وضع Keylog
يمكنك تحديد -m keylog أو -m key مع خيار --keylogfile. ملف الإخراج الافتراضي هو ecapture_masterkey.log.
يتم حفظ السر الرئيسي (master secret) لـ OpenSSL TLS الملتقط في --keylogfile. يمكنك أيضًا تمكين التقاط tcpdump ثم فتح الملف في Wireshark، وتعيين مسار السر الرئيسي لعرض الحزم بنص صريح.
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
يُخرج هذا جميع حزم البيانات بنص صريح.
وحدة GoTLS
مشابهة لوحدة OpenSSL.
أمر gotls
التقاط بيانات 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.
مقاطع فيديو
- فيديو YouTube: كيفية استخدام eCapture v0.1.0
- eCapture: يدعم التقاط النص الصريح لحركة مرور Go TLS/HTTPS
تطبيق eCaptureQ بواجهة رسومية
eCaptureQ هو عميل رسومي متعدد المنصات لـ eCapture يعرض بصريًا قدرات التقاط TLS المعتمدة على eBPF. مبني باستخدام Rust + Tauri + React، ويوفر واجهة تفاعلية في الوقت الفعلي لتحليل حركة المرور المشفرة دون الحاجة إلى شهادة CA. يبسّط سير عمل التقاط eBPF المعقد ويجعله أسهل في الاستخدام.
يدعم وضعين:
- الوضع المدمج: تنفيذ موحّد على Linux/Android
- الوضع البعيد: عملاء Windows/macOS/Linux يتصلون بخدمة eCapture عن بُعد
تمرير الأحداث
عرض توضيحي بالفيديو
https://github.com/user-attachments/assets/c8b7a84d-58eb-4fdb-9843-f775c97bdbfb
بروتوكولات Protobuf
للحصول على تفاصيل مخطط سجل Protobuf المستخدم بواسطة eCapture/eCaptureQ، راجع: