Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
mitmengine — أداة كشف هجوم MITM (وحش في المنتصف). تُستخدم لبناء MALCOLM: | Kitploit
أدوات/GitHubGitHub/cloudflare/mitmengine
أدوات دفاعيةأمن الشبكاتاستخبارات التهديداتالاستجابة للحوادثArchived
GitHubcloudflare/mitmengine

mitmengine

أداة كشف هجوم MITM (وحش في المنتصف). تُستخدم لبناء MALCOLM:

عرض المستودع
81368منذ 2 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
الموقع الإلكتروني

محرك MITM

حالة البناء

إشعار الإهمال: لم يعد هذا البرنامج مدعومًا.

الهدف من هذا المشروع هو السماح بالكشف الدقيق عن اعتراض HTTPS والبصمات القوية لبروتوكول TLS. يعتمد هذا المشروع على التأثير الأمني لاعتراض HTTPS، وبدأ كمنفذ إلى Go لـ برامج المعالجة والبصمات الخاصة بهم.

مزيد من السياق حول MITMEngine متاح في هذا المنشور في مدونة Cloudflare. روابط سريعة:

  • التوقيعات والبصمات: التعريفات الأساسية
  • منهجية الكشف عن MITM
  • واجهة برمجة التطبيقات (API)
  • مثال على الاستخدام
  • البناء والاختبار
  • كيف تساهم
  • أداة mergeDB

المتطلبات

  • Go
  • Wireshark 3.0.0 (تحقق باستخدام wireshark -v)

التوثيق

التوثيق التفصيلي موجود مع الكود (انسخ الحزمة إلى $(GOPATH)/src/github.com/cloudflare/mitmengine أولاً).

root@kitploit:~
godoc -http=:6060

http://localhost:6060/pkg/github.com/cloudflare/mitmengine

التوقيعات والبصمات

في هذا المشروع، تُعيّن البصمات إلى تجسيدات ملموسة لكائن، بينما يمكن للتوقيعات أن تمثل كائنات متعددة. نستخدم هذه الاتفاقية لأن البصمة عادةً ما تكون خاصية جوهرية لكائن، بينما يمكن اختيار التوقيع. بنفس الطريقة، فإن طلب العميل الفعلي الذي يراه الخادم سيكون له بصمة، بينما يمكن للبرنامج الذي يُنشئ الطلب أن يختار توقيعه الخاص (على سبيل المثال، عن طريق اختيار مجموعات التشفير التي يدعمها).

طلب العميل

تُشتق بصمة طلب العميل من طلب العميل إلى الخادم، وتحتوي على ميزات كل من TLS و HTTP. يمثل توقيع طلب العميل جميع البصمات الممكنة التي يمكن لقطعة برمجية إنشائها. الهدف هو جعل كل توقيع محددًا بدرجة كافية بحيث يمكنه تحديد قطعة برمجية بشكل فريد.

وكيل المستخدم

يمثل توقيع وكيل المستخدم مجموعة من وكلاء المستخدم التي ينشئها متصفح. يسمح توقيع وكيل المستخدم للمتصفح بمجموعة من إصدارات المتصفح، ويسمح بتحديد اسم نظام التشغيل، ومنصة نظام التشغيل، ونطاق إصدار نظام التشغيل، ونوع الجهاز لإنشاء توقيعات أكثر دقة.

المتصفح

يحتوي توقيع المتصفح على كل من توقيع وكيل المستخدم وتوقيع طلب العميل. يسمح هذا للتوقيع بتمثيل جميع البصمات الممكنة التي ينشئها Chrome 31-38 على Windows 10، على سبيل المثال.

MITM

يحتوي توقيع MITM على توقيع طلب العميل بالإضافة إلى تفاصيل إضافية حول برنامج MITM، بما في ذلك درجة الأمان التي يمكن أن تتأثر بعوامل خارج طلب العميل، مثل ما إذا كان البرنامج يتحقق من الشهادات.

منهجية الكشف عن MITM

نعتبر اتصال HTTPS معترضًا عندما يكون هناك عدم تطابق بين توقيع طلب العميل المتوقع المطابق للمتصفح المحدد بواسطة وكيل المستخدم، وبصمة طلب العميل الفعلية للطلب.

النتائج الإيجابية الخاطئة

إذا كان التوقيع غير دقيق أو قديم بالنسبة لقطعة برمجية عميلة معينة، فمن الممكن أن يحدد التوقيع بشكل خاطئ أن الاتصال معترض.

النتائج السلبية الخاطئة

إذا قام وكيل بتقليد طلب العميل عن كثب، فقد لا نتوقع اكتشاف عدم تطابق. إذا كانت توقيعات المتصفح واسعة جدًا، فسنفشل أيضًا في اكتشاف الاعتراض.

البصمات الإنتاجية

يمكن العثور على بصمات المتصفح المرجعية وبرامج MITM المستخدمة في MALCOLM في reference_fingerprints/mitmengine/. هذه المجموعة من البصمات هي مزيج مما يتم استخراجه من بصمات TLS Client Hello في reference_fingerprints/pcaps/، بالإضافة إلى أفضل 500 زوج من وكيل المستخدم + TLS Client Hello التي تم ملاحظتها على شبكة Cloudflare والموسومة بتصنيف موثوقية عالية (أي، حركة المرور المقابلة لنشاط بشري وروبوتات صديقة).

من الناحية المثالية، لا نضطر للاعتماد على البصمات المرجعية المأخوذة من شبكة Cloudflare؛ بدلاً من ذلك، سيكون لدينا مجموعة شاملة من ملفات pcap لبناء مجموعتنا المرجعية من TLS Client Hellos. هل أنت مهتم بمساعدتنا في بناء مجموعة البيانات الخاصة بنا؟ راجع كيف يمكنك المساهمة!

واجهة برمجة التطبيقات (API)

أولاً، يجب على المستخدم إنشاء بنية mitmengine.Config لتمريرها إلى mitmengine.NewProcessor. يمكن لبنية mitmengine.Config تحديد أسماء ملفات تحتوي على بصمات المتصفح، وبصمات MITM، ورؤوس MITM. بدلاً من ذلك، يمكنها أيضًا تحديد ملف تكوين لقراءة الملفات المذكورة أعلاه من أي مصدر آخر؛ حاليًا، يدعم MITMEngine قراءة هذه الملفات من قواعد بيانات متوافقة مع عميل Amazon S3 (بما في ذلك Amazon S3 و Ceph). يمكن تعريف قارئات ملفات إضافية لقواعد البيانات (التي نسميها "loaders") في حزمة loaders، وطالما أن المحملات الجديدة تطبق واجهة Loader، فيجب أن تعمل مع بقية MITMEngine دون أي مشاكل.

نقطة الدخول المقصودة لحزمة MITMEngine هي من خلال دالة Processor.Check، التي تأخذ وكيل مستخدم وبصمة طلب عميل، وتعيد تقرير كشف MITM. ستتم إضافة دوال API إضافية في المستقبل للسماح بإضافة توقيعات جديدة إلى عملية قيد التشغيل، على سبيل المثال.

مثال على الاستخدام

مثال على استخدام API موجود أدناه. تطبيق أكثر اكتمالاً متاح في cmd/demo/main.go، ويمكن بناؤه عن طريق تشغيل make bin/demo.

root@kitploit:~
rawUa := "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36"
requestFingerprintString := "303:dada,1301,1302,1303,c02b,c02f,c02c,c030,cca9,cca8,c013,c014,9c,9d,2f,35,a:aaaa,0,17,ff01,a,b,23,10,5,d,12,33,2d,2b,1b,dada,15:9a9a,1d,17,18:0::"
uaFingerprintString := "1:72.0.3626:2:3:10.14.3:1:"
requestFingerprint, _ := fp.NewRequestFingerprint(requestFingerprintString)
uaFingerprint, _ := fp.NewUAFingerprint(uaFingerprintString)
report := mitmProcessor.Check(uaFingerprint, rawUa, requestFingerprint)

سلسلة requestFingerprintString الخاصة بـ TLS لها التنسيق التالي:

root@kitploit:~
<tls_version>:<cipher_suites>:<extension_names>:<curves>:<ec_point_fmts>:<http_headers>:<quirks>

بصمة uaFingerprint لها التنسيق التالي:

root@kitploit:~
# <browser_name>:<browser_version>:<os_platform>:<os_name>:<os_version>:<device_type>:<quirks>

مثال على كيفية تحليل وكلاء المستخدم إلى التنسيق الخاص بـ uaFingerprint موجود في ملف cmd/demo/main.go.

البناء والاختبار

لاستخدام MITMEngine، تذكر سحب تبعياته. من المحتمل أن ترغب في تشغيل منطق vendoring أو gomod قبل تشغيل الاختبارات على MITMEngine.

للاختبار، قم بتشغيل make test ولرؤية تغطية الكود، قم بتشغيل make cover.

كيف تساهم

نظرًا لأن بصمات المتصفح و MITM تصبح قديمة بسرعة، فإننا نسعى بنشاط لتحديث مستودع البصمات بعينات جديدة.

من خلال المساهمة بعينة بصمة ( "العينة")، أنت (باسمك أو نيابة عن المنظمة التي تمثلها أو التي ترعاك (إن وجدت)) تمنح Cloudflare, Inc. وشركاتها التابعة والزميلة ترخيصًا دائمًا، غير قابل للإلغاء، غير حصري، بدون رسوم، في جميع أنحاء العالم وحقًا بموجب جميع حقوق الملكية الفكرية في العينة، من أجل: (1) نسخ ونشر وعرض وتوزيع العينة؛ و (2) إعداد أعمال مشتقة مبنية على أو جزء من العينة."

للمساهمة بعينات بصمة، يرجى اتباع هذه الخطوات:

إنشاء عينة بصمة

(تم اختباره على macOS Mojave 10.14.3)

إنشاء شهادة RSA للخادم وزوج المفاتيح:

root@kitploit:~
openssl req -new -x509 -sha256 -out server.crt -nodes -keyout server.pem -subj /CN=localhost

بدء الخادم على المنفذ 4433:

root@kitploit:~
openssl s_server -www -cipher AES256-SHA -key server.pem -cert server.crt

بدء التقاط TShark لفك تشفير رؤوس HTTP (TShark >= 3.0.0):

root@kitploit:~
tshark -i loopback -o tls.keys_list:"127.0.0.1,4433,http,server.pem" -Tjson -e http.request.line -Y http > header.json

بدء التقاط TShark لـ TLS Client Hello:

root@kitploit:~
tshark -i loopback -f "tcp port 4433" -w handshake.pcap

قم بزيارة https://localhost:4433 من عميل TLS الذي ترغب في بصمته. على سبيل المثال،

root@kitploit:~
echo -e "GET /test HTTP/1.1\r\nHost:example.com\r\n\r\n" | openssl s_client -connect localhost:4433

تقديم طلب سحب

  • قم بإنشاء عينة بصمة (header.json، handshake.pcap) كما هو موضح أعلاه، وضعها في الدليل reference_fingerprints/pcaps/<desc>، حيث <desc> هو اسم فريد ووصفي.

  • أضف سطرًا إلى reference_fingerprints/fingerprint_metadata.jsonl مع الحقول أدناه. الخيارات المعترف بها لحقول os، device، platform، و browser هي تلك المعرفة في حزمة uasurfer. الخيارات المعترف بها لـ mitm_fingerprint.type مدرجة أدناه. راجع reference_fingerprints/fingerprint_metadata.jsonl للحصول على أمثلة؛ يمكن ترك أي حقول غير معروفة فارغة أو حذفها.

    { "desc": "<اسم فريد ووصفي للعينة>", "comment": "<معلومات إضافية حول العينة>", "handshake_pcap": "<مسار إلى pcap يحتوي على TLS Client Hello>", "header_json": "<(اختياري) مسار إلى ملف يحتوي على طلب HTTP الخاص بالعميل", "ua_fingerprint": {"raw_ua": "<سلسلة وكيل المستخدم الخام>", "os": "<WindowsPhone|Windows|MacOSX|iOS|Android|...>", "os_version": "..", "device": "<Windows|Mac|Linux|...>", "platform": "<Computer|Tablet|Phone|...>", "browser": "<Chrome|IE|Safari|Firefox|...>", "browser_version": ".."}, "mitm_fingerprint": { "name": "<وصف mitm>", "type": "<Antivirus|FakeBrowser|Malware|Parental|Proxy>" }}

نرحب بطلبات السحب الأخرى وطلبات الميزات!

أداة mergeDB

mergeDB (في cmd/mergedb) هي أداة لدمج بصمات TLS ClientHello المتشابهة عبر إصدارات متقاربة متعددة من المتصفحات أو برامج MITM. استخدم mergeDB لدمج القوائم الكبيرة لبصمات وكيل المستخدم / Client Hello:

root@kitploit:~
go run cmd/mergedb/main.go

بشكل افتراضي، سيعمل mergeDB على البصمات الموجودة في دليل reference_fingerprints/mitmengine.

تنزيل الأداة
  • قدم طلب سحب مع التغييرات أعلاه.