
ecapture v2.5.2
التقاط النص الصريح لـ SSL/TLS بدون شهادة CA باستخدام eBPF. مدعوم على أنوية Linux/Android لـ amd64/arm64.
汉字 | الإنجليزية
eCapture(المراقب): التقاط محتوى نص SSL/TLS بدون شهادة CA باستخدام eBPF.
[!IMPORTANT]
يدعم Linux/Android على x86_64 (kernel 4.18+) و aarch64 (kernel 5.5+). تنطبق متطلبات إصدار النواة حسب بنية CPU لكل من Linux و Android. يتطلب صلاحية ROOT أو قدرات Linux محددة. لا يدعم نظامي Windows و macOS.
مقدمة
- التقاط النص العادي لـ SSL/TLS، يدعم مكتبات openssl\libressl\boringssl\gnutls\nspr(nss).
- النص العادي لـ GoTLS يدعم مكتبة go tls، والتي تشير إلى الاتصالات المشفرة في برامج https/tls المكتوبة بلغة golang.
- تدقيق Bash، التقاط أوامر bash لتدقيق أمان المضيف.
- تدقيق Zsh، التقاط أوامر zsh لتدقيق أمان المضيف.
- تدقيق استعلامات SQL لـ MySQL، يدعم mysqld 5.6\5.7\8.0 و MariaDB.
بدء الاستخدام
تنزيل
ملف ELF الثنائي
[!TIP] يدعم Linux/Android x86_64/aarch64.
قم بتنزيل ملف ELF المضغوط release ، قم بفك الضغط واستخدم الأمر sudo ecapture --help.
صورة Docker
[!TIP] 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 لمزيد من المعلومات.
التقاط محتوى نص 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 وNSPR وBoringSSL وGoTLS. بالإضافة إلى ذلك، تسهل تدقيق البرامج لتطبيقات Bash وMySQL وPostgreSQL.
- bash التقاط أمر bash
- zsh التقاط أمر zsh
- gnutls التقاط محتوى نص gnutls بدون شهادة CA لمكتبات gnutls.
- gotls التقاط الاتصالات النصية العادية من برامج Golang المشفرة بـ TLS/HTTPS.
- mysqld التقاط استعلامات SQL من mysqld 5.6/5.7/8.0 .
- nss التقاط محتوى نص nss/nspr المشفر بدون شهادة CA لمكتبات nss/nspr.
- postgres التقاط استعلامات SQL من postgres 10+.
- tls استخدام لالتقاط محتوى نص tls/ssl بدون شهادة CA. (يدعم openssl 1.0.x/1.1.x/3.0.x أو أحدث).
يمكنك استخدام
ecapture -hلعرض قائمة الأوامر الفرعية.
وحدة OpenSSL
يبحث eCapture افتراضيًا في ملف /etc/ld.so.conf للبحث عن أدلة تحميل ملفات SO، ويبحث عن مواقع مكتبات openssl المشتركة. أو يمكنك استخدام العلامة --libssl لتعيين مسار المكتبة المشتركة.
إذا كان البرنامج الهدف مترجمًا بشكل ثابت، يمكنك تعيين مسار البرنامج كقيمة للعلامة --libssl مباشرة.
تدعم وحدة OpenSSL ثلاثة أوضاع للالتقاط:
- وضع
pcap/pcapngيخزن بيانات النص العادي الملتقطة بتنسيقpcap-NG. - وضع
keylog/keyيحفظ مفاتيح مصافحة TLS في ملف. - وضع
textيلتقط بيانات النص العادي مباشرة، إما بإخراجها إلى ملف محدد أو طباعتها على سطر الأوامر.
وضع Pcap
يدعم http المشفر عبر TLS عبر TCP 1.0/1.1/2.0، وبروتوكول http3 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 لفتح الملف وتعيين مسار 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.)
وحدة 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 لعرض قائمة الأوامر الفرعية.
فيديوهات
- فيديو يوتيوب: كيفية استخدام eCapture v0.1.0
- eCapture: يدعم التقاط النص العادي لحركة TLS/HTTPS في Golang
تطبيق eCaptureQ الرسومي
eCaptureQ هو عميل واجهة مستخدم رسومية عبر المنصات لـ eCapture، يقوم بتصور قدرات التقاط TLS الخاصة بـ eBPF. مبني باستخدام تقنية Rust + Tauri + React، يوفر واجهة تفاعلية فورية تتيح تحليلًا سهلاً لحركة المرور المشفرة دون الحاجة إلى شهادات CA. يبسط تقنيات التقاط eBPF المعقدة، مما يجعلها سهلة الاستخدام. يدعم وضعين:
- الوضع المتكامل: تنفيذ موحد لـ Linux/Android
- الوضع البعيد: عميل Windows/macOS/Linux يتصل بخدمة eCapture عن بُعد
إعادة توجيه الأحداث
عرض فيديو
بروتوكولات Protobuf
لتفاصيل مخطط سجل Protobuf المستخدم بواسطة eCapture/eCaptureQ، انظر:
النجوم عبر الزمن
الأمان والعمليات
- سياسة الأمان — الإبلاغ عن الثغرات والإصدارات المدعومة
- الحد الأدنى من الصلاحيات — قدرات Linux المطلوبة وتكوين أقل صلاحية
- الدفاع والكشف — كيفية الكشف والدفاع ضد الاستخدام غير المصرح به
- معايير الأداء — منهجية قياس الحمل الزائد والخصائص المتوقعة
- التحقق من الإصدار — كيفية التحقق من سلامة القطع الأثرية للإصدار
المساهمة
انظر المساهمة للحصول على تفاصيل حول تقديم التصحيحات وسير عمل المساهمة.
التجميع
التجميع المخصص
يمكنك تخصيص الميزات التي تريدها، مثل تعيين عنوان الإزاحة لـ uprobe لدعم مكتبات OpenSSL المترجمة بشكل ثابت. راجع دليل التجميع للحصول على تعليمات التجميع.
تحديث التكوينات عن بُعد
بعد تشغيل eCapture، يمكنك تعديل التكوينات ديناميكيًا عبر واجهات HTTP. راجع توثيق API HTTP.
إعادة توجيه الأحداث
يدعم eCapture طرقًا متعددة لإعادة توجيه الأحداث. يمكنك إعادة توجيه الأحداث إلى برامج التقاط الحزم مثل Burp Suite. للحصول على التفاصيل، راجع توثيق API إعادة توجيه الأحداث.