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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
secret_handshake — قناة C2 نموذجية لبرمجيات خبيثة تستخدم شهادات x509 عبر mTLS | Kitploit
أدوات/GitHubGitHub/jconwell/secret_handshake
التهرب من IDS/IPSتسريب البياناتالقيادة والسيطرةالفريق الأحمر
GitHubjconwell/secret_handshake

secret_handshake

قناة C2 نموذجية لبرمجيات خبيثة تستخدم شهادات x509 عبر mTLS

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Secret Handshake - قناة C2 للبرمجيات الخبيثة تستخدم شهادات x509 عبر mTLS

الدافع

أولًا، لماذا سأجعل هذا المشروع مفتوح المصدر؟

لا يتحدث MITRE ATT&CK إلا عن الشهادات المسروقة أو الموقعة ذاتيًا، وتمنح أنظمة كشف الشبكة والاستجابة (NDRs) (على حد علمي) اهتمامًا ضئيلًا جدًا بمحتوى شهادات x509 بخلاف الجهة المصدِرة (CA). بشكل عام، تُعتبر شهادات x509 موثوقة ويُسمح لها بالمرور عبر جدران الحماية لدينا دون رقابة. لكنها في جوهرها مجرد ملفات يمكن أن تحتوي بسهولة على حمولات خبيثة مثل أي ملفات أخرى. نحن نثق بها ونتجاهلها لأنها مكوّن أساسي في عملية التشفير التي اعتدنا أن نعتبرها أمرًا مسلمًا به. الهدف الأساسي من هذا المشروع هو رفع مستوى الوعي حول فئة من مؤشرات الأمان التي اعتدنا على الوثوق بها، وتسليط الضوء على الطرق التي يمكن استخدامها لكشف الاستخدامات الخبيثة لها.

الخلفية

كنت أتساءل دائمًا عما إذا كان الفاعلون الخبيثون قد استخدموا شهادات x509 كجزء من اتصالات C2 الخاصة بهم، ليس لتشفير حركة مرور الشبكة، ولكن لتضمين اتصالات C2 في شهادة x509 نفسها. بعد البحث عن شيء كهذا في البرية لمدة 5 سنوات، قررت أخيرًا أن أكتب الكود بنفسي لأرى ما إذا كان ذلك ممكنًا... وهو ممكن.

كل رسالة مشفرة تُرسل عبر HTTPS/TLS تصبح ممكنة بفضل نقل شهادة x509. عند إنشاء مصافحة TLS (الشكل أدناه)، في الخطوة الرابعة يرسل الخادم شهادته x509 إلى العميل. يتحقق العميل من الشهادة، ويقارن خوارزميات التشفير التي يدعمها الخادم، ويختار الخوارزمية التي سيستخدمها في جميع الاتصالات اللاحقة.

الشكل 1

كما يوضح هذا الرسم البياني، هذا مجرد نقل باتجاه واحد لشهادة x509 من الخادم إلى العميل. وهذا لا يصلح جيدًا لاتصالات C2 لأنه لا توجد طريقة للعميل للرد على الخادم. في أفضل الأحوال، يمكن استخدامه فقط كآلية لنقل البيانات باتجاه واحد (انظر قسم الأعمال السابقة أدناه).

لكن هناك نوع آخر من جلسات TLS يسمى مصادقة TLS المتبادلة (mTLS)، حيث يتبادل كل من العميل والخادم شهادات x509 كوسيلة لمصادقة بعضهما البعض.

الشكل 2

كما يوضح الشكل أعلاه، أثناء المصادقة المتبادلة، تُرسل شهادة x509 الخاصة بالخادم إلى العميل للمصادقة، ثم تُرسل شهادة x509 الخاصة بالعميل إلى الخادم للمصادقة. يمثل هذا التبادل للأصول فرصة لإنشاء قناة اتصال ثنائية الاتجاه لخوادم C2.

إنشاء قناة اتصال ثنائية الاتجاه عبر شهادات x509

بما أن شهادتي الخادم والعميل يتم تبادلهما بواسطة مكتبة SSL الأساسية، فلا تتاح للعميل فرصة استخراج الرسالة من شهادة الخادم، وتنفيذ الأمر، وإنشاء شهادة استجابة داخل اتصال mTLS واحد. وهذا يعني أن قناة C2 تحتاج إلى تصميم بحيث يتم تبادل الطلب والرد عبر اتصالي TLS متبادلين مختلفين، تقريبًا مثل وضع إرسال شبه أحادي الاتجاه (pseudo-half duplex).

الشكل 3

تتبع عملية الطلب/الرد الخطوات التالية:

  • الخطوة 1: يقوم كل من العميل وخادم C2 بتوليد الشهادات الخاصة بكل منهما. تحتوي شهادة العميل على رسالة "beacon" عامة، بينما تحتوي شهادة الخادم على الأمر الذي يريد أن ينفذه العميل. إذا لم يكن هناك أمر للعميل لتنفيذه، يقوم الخادم بتوليد شهادة "sleep" عامة لإخبار العميل بمدة السكون قبل إشارة beacon التالية.
  • الخطوة 2: يقوم كل من العميل وخادم C2 بإعداد مقبس شبكة (socket) باستخدام الشهادات المولدة في الخطوة 1.
  • الخطوة 3: ينشئ العميل اتصالًا بالخادم.
  • الخطوة 4: يتم تبادل شهادتي الخادم والعميل أثناء مصافحة mTLS.
  • الخطوة 5: يقوم كل من الخادم والعميل بإغلاق المقابس الخاصة بكل منهما.
  • الخطوة 6: يستخرج العميل الأمر المطلوب تنفيذه من شهادة الخادم. وبما أن شهادة العميل تحتوي فقط على رسالة "beacon" عامة، يقوم الخادم بتجاهلها.
  • الخطوة 7: ينفذ العميل الأمر ويجمع مخرجات الأمر.
  • الخطوة 8: يقوم كل من العميل وخادم C2 بتوليد الشهادات الخاصة بكل منهما. تحتوي شهادة العميل على مخرجات الأمر الذي نفذه للتو، ويقوم الخادم بتوليد شهادة "sleep" عامة لإخبار العميل بمدة السكون قبل إشارة beacon التالية.
  • الخطوة 9: يقوم كل من العميل وخادم C2 بإعداد مقبس شبكة باستخدام الشهادات المولدة في الخطوة 8.
  • الخطوة 10: ينشئ العميل اتصالًا بالخادم.
  • الخطوة 11: يتم تبادل شهادتي الخادم والعميل أثناء مصافحة mTLS.
  • الخطوة 12: يقوم كل من الخادم والعميل بإغلاق المقابس الخاصة بكل منهما.
  • الخطوة 13: يستخرج العميل مدة السكون من شهادة الخادم، ويستخرج الخادم مخرجات الأمر من شهادة العميل.
  • الخطوة 14: يبقى العميل ساكنًا (sleep) للمدة التي يحددها الخادم.

الأعمال السابقة

بعد أن جعلت هذا يعمل، كنت فخورًا جدًا بنفسي لكوني مبتكرًا وكل ذلك.

ثم صادفت محاضرة BSides في 2018 لجيسون ريفز الذي كتب أداة إسقاط ثنائي للبرمجيات الخبيثة (malware binary dropper) باستخدام شهادات x509 عبر TLS. وبعد عام، نشر جيسون هذه الورقة البحثية التي توضح بالتفصيل قناة اتصال كاملة ثنائية الاتجاه باستخدام mTLS.

تعليمات التشغيل

يتطلب mTLS أن تكون شهادات كل من العميل والخادم موقعة من نفس شهادة المرجع المصدق (CA)، لذا فإن الخطوة الأولى هي توليد زوج المفتاح الخاص / الشهادة الخاص بالمرجع المصدق الخاص بك.

إنشاء المفتاح الخاص للمرجع المصدق الجذر (Root CA):

openssl genrsa -des3 -out hmCA.key 2048

ملاحظة: ستمنع عبارة المرور أي شخص يحصل على مفتاحك الخاص من توليد شهادة جذر خاصة به.

إنشاء شهادة المرجع المصدق الجذر (Root CA):

openssl req -x509 -new -nodes -key hmCA.key -sha256 -days 1825 -out hmCA.pem

انسخ ملفات المفتاح والشهادة المولدة إلى مجلد certs/ca_certs. يأتي المشروع مع زوج مفتاح/شهادة تجريبي، لذا يمكنك تخطي هذه الخطوة إذا أردت.

تشغيل العميل:

python client.py

تشغيل الخادم:

python server.py

الكشف

لا أريد أبدًا إصدار أي شيء يحتمل أن يكون خبيثًا دون توضيح كيفية اكتشافه في سجلات شبكتك.

قد تظن أن اكتشاف هذا النمط من TLS سيكون سهلًا، لكن الأمر ليس بهذه البساطة. من أهم مؤشرات قناة C2 هذه أسلوب الاتصال شبه أحادي الاتجاه (half-duplex)؛ إذ يتطلب الأمر تدفقَي مصادقة متبادلة لإكمال طلب/رد كامل بين الخادم والعميل. وسيتكرر هذا عدة مرات بينما يرسل الخادم أوامر مختلفة إلى العميل.

هذا يعني أنه يجب عليك البحث عن:

  • جلسات mTLS متعددة بين نفس عنواني IP للمصدر والوجهة، غالبًا على نفس المنفذ، مع أنه لن يكون من الصعب تهيئة ذلك للتنقل عبر منافذ مختلفة لكل اتصال mTLS.
  • نظرًا لأن نمط الطلب-الرد يتطلب جلستي mTLS لكل أمر من أوامر الخادم، ابحث عن جلستي mTLS متقاربتين نسبيًا، مع فترة توقف أطول بين الزوج التالي من جلسات mTLS.
  • ابحث عن فترات السكون (sleep) والتشويش (jitter) بين أزواج جلسات mTLS تمامًا كما تفعل مع أي قناة C2 أخرى.
  • يجب أن تكون تجزئات الشهادات (cert hashes) مختلفة لكل جلسة mTLS، حيث يتم توليد شهادات جديدة لكل جلسة.
  • لن تصدر الشهادات من جهات تصديق موثوقة.
  • ستختلف أحجام شهادات x509 بالبايت أيضًا من جلسة إلى أخرى. الأحجام الصغيرة لشهادات الخادم تشير إلى أوامر تُرسل إلى العميل، بينما تشير الأحجام الأكبر غالبًا إلى تنزيل ملف ثنائي خبيث. من المحتمل أن تتباين أحجام شهادات العميل أكثر من شهادات أوامر الخادم، لأنها تتضمن مخرجات الأوامر. أما شهادات العميل الكبيرة فتشير إلى تسريب بيانات (exfiltration).
  • إذا كانت هناك جلسات mTLS متعددة بين نفس عنواني IP للمصدر والوجهة خلال فترة زمنية قصيرة، فتحقق مما إذا كانت تُرسل أحيانًا شهادات بنفس التجزئة. قد يشير هذا إلى إعادة استخدام شهادات الأوامر/الاستجابات، مثل شهادة عميل "beacon" أو شهادة خادم "sleep".

يبدو هذا كمجموعة قواعد كشف محكمة، لكن كما قلت سابقًا، الأمر ليس بهذه السهولة. فقد اتضح أن هناك مجموعة من الخدمات المؤسسية التي لديها أيضًا نمط حركة مرور mTLS مشابه، بما في ذلك:

  • Tanium
  • Microsoft System Center Configuration Manager (SCCM)
  • Microsoft Monitoring Agent
  • Azure Hybrid Runbook Worker
  • Palo Alto Networks
  • MuleSoft
  • TrustedSource
  • Cohesity Helios
  • مؤسسة الأمن العالمية التابعة لـ EMC
  • Alert Logic

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

التخفيف المحتمل

يعد فحص SSL (SSL inspection) إحدى الطرق التي قد تحجب هذا النوع من قنوات اتصال C2، لأن خادم فحص SSL لن يمتلك شهادة المرجع المصدق (CA) الخبيثة اللازمة لمصادقة شهادة العميل.

تنزيل الأداة