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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cuddlephish — متصفح وسيط مسلح (BitM) لمختبري الاختراق | Kitploit
أدوات/GitHubGitHub/fkasler/cuddlephish
أدوات التصيداستغلال تطبيقات الويبالتصيد الاحتيالياختبار الاختراقالهندسة الاجتماعيةالفريق الأحمر
GitHubfkasler/cuddlephish

cuddlephish

متصفح وسيط مسلح (BitM) لمختبري الاختراق

عرض المستودع
67380منذ 4 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

CuddlePhish

مريب

متصفح-في-الوسط (BitM) متعدد المستخدمين مسلح لمختبرى الاختراق. يمكن استخدام هذا الهجوم لتجاوز المصادقة متعددة العوامل في العديد من تطبيقات الويب عالية القيمة. يعمل حتى مع التطبيقات التي لا تستخدم رموز الجلسة، وبالتالي لن تكون قابلة للاستغلال باستخدام هجمات سرقة الرموز التقليدية. هذه أداة هندسة اجتماعية ولا تستغل أي ثغرات تقنية في الخدمة المستهدفة.

البدء السريع

هذه الأداة هي خادم ويب متخصص. صُممت لتشغيل على خادم Linux Debian 11 (Bullseye) وتعتمد على معلومات IP العامة لحماية وظائف الإدارة. لا تتوقع أن تتمكن من الاختبار محليًا دون تجاوز بعض العقبات الكبيرة.

تحذير: Chromium غير مدعوم على ARM. بينما من الممكن تقنيًا فرض استخدام ثنائي Chromium لـ ARM، ستفقد جميع الميزات/الحماية الإضافية لـ puppeteer-extra.

يستخدم هذا الإعداد المثال Caddy للتعامل مع TLS و SNI وإضافة بعض الرؤوس المخصصة مثل 'X-Real-IP' لكل طلب. ليس عليك استخدام Caddy مع Cuddlephish، حيث يمكن إعداد نفس الوكيل العكسي باستخدام Nginx أو Apache إلخ. أنا أفضل Caddy لأنه سهل التثبيت باستخدام Docker ويحتوي على إضافات لإدارة شهادات Letsencrypt لمعظم مسجلي النطاقات. يُظهر مثال Caddyfile كيفية إعداده لـ Gandi. راجع الوثائق الخاصة بمسجلك.

قم بتثبيت Docker و Node و XVFB وبعض التبعيات الأخرى:

root@kitploit:~
git clone https://github.com/fkasler/cuddlephish
cd cuddlephish
sudo bash install_deps.sh

يمكنك بعد ذلك استخدام Docker لبناء Caddy مع إضافة شهادة أحرف بدل لمسجلك. المثال لـ Gandi. راجع الوثائق هنا وقائمة وحدات موفري DNS هنا. يمكنك تعديل Dockerfile لمسجلك قبل البناء:

root@kitploit:~
sudo docker build -t caddy .

الآن قم بتعديل ملف Caddyfile لاستبدال نطاقك ومفتاح API لـ Gandi (أو أي مسجل آخر)، ثم ابدأ Caddy. أوصي ببدء تشغيله في نافذة screen أو tmux حتى تتمكن من تشغيل خادم Node في نافذة أخرى بعد قليل:

root@kitploit:~
sudo docker run -p 80:80 -p 443:443 -p 2019:2019 -v $PWD/Caddyfile:/etc/caddy/Caddyfile --network=host caddy:latest

بعد أن يتولى Caddy حركة المرور على المنفذين 80 و 443، يمكننا أخيرًا تشغيل الأداة!

قم بتثبيت تبعيات Node:

root@kitploit:~
npm install

بعض التعديلات على الإعدادات: خطوة حاسمة: تأكد من تعديل ملف config.json لإضافة عناوين IP العامة المعتمدة لديك للوصول الإداري. قائمة IP البيضاء هذه هي التي تتحكم في الوصول إلى واجهة الويب "/admin". يجب أيضًا تغيير مفتاح المقبس الافتراضي إلى شيء أكثر أمانًا.

الأداة ليست مهيأة لاستهداف أي صفحات تسجيل دخول افتراضيًا، لذا ستحتاج إلى إضافة بعضها. يوجد نص برمجي 'add_target.js' لتسهيل هذه الخطوة. فقط قم بتشغيل النص والصق عنوان URL لبوابة تسجيل الدخول التي تريد استهدافها عند الطلب:

root@kitploit:~
node add_target.js

سيقوم هذا بجلب اسم الخدمة وعنوان التبويب والأيقونة المفضلة لك وإضافة إدخال إلى 'targets.json'. يمكنك تشغيل هذا النص عدة مرات وسيقوم بإلحاق الأهداف الجديدة. سيقوم النص بتسمية كل خدمة بناءً على النطاق، بدون المستوى الأعلى. لذا، بالنسبة لـ 'https://www.example.com/login.php' ستكون الخدمة مجرد 'example' عند تحديد هدفك عندما...

قم بتشغيلها!

root@kitploit:~
node index.js example

بعد بضع ثوانٍ، يجب أن ترى رسالة في وحدة التحكم عندما يتصل أول مثيل Chrome آلي لديك عبر websockets. الآن يجب أن يرى زوار موقع التصيد الخاص بك ما يبدو وكأنه صفحة تسجيل الدخول الهدف ولكنها في الواقع بث فيديو لمثيل المتصفح الآلي لديك. يمكنهم أيضًا التفاعل مع مثيل المتصفح لديك وتسجيل الدخول نيابة عنك.

إذا قمت بتكوين عناوين IP الإدارية بشكل صحيح في config.json، يجب أن تكون قادرًا على عرض واجهة ويب خاصة '/admin' لتتبع المستخدمين وعرض سجلات المفاتيح والسيطرة على مثيلات المتصفح المسجلة الدخول وسرقة ملفات تعريف الارتباط وحذف مثيلات المتصفح غير المرغوب فيها.

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

استكشاف الأخطاء وإصلاحها ("أرى فقط صفحة فارغة")

واجهت عدة أشخاص يفتحون مشكلات حول "صفحة بيضاء فارغة"، وهو عرض للعديد من المشكلات المحتملة، وليس مشكلة في حد ذاتها. يرجى عدم فتح مشكلات تحت أسماء أعراض غامضة. بدلاً من ذلك، إذا كانت لديك صفحة فارغة على جانب المستخدم، فحاول أولاً النظر في ما يلي:

  • تحقق من أن عنوان التبويب للخدمة الهدف لا يحتوي على أي أحرف خاصة. نستخدم "--auto-select-desktop-capture-source" لإخبار متصفحنا الآلي بأي تبويب يجب بثه. يفشل هذا الخيار مع العناوين التي تحتوي على أحرف خاصة. ومع ذلك، لست بحاجة إلى تطابق عنوان التبويب بالكامل، بل تحتاج فقط إلى جزء فرعي كافٍ لمطابقة فريدة.
  • على نفس المنوال، إذا أرسلت خدمتك الهدف إعادة توجيه 302 أو ما شابه ذلك إلى متصفحك الآلي، وتغير عنوان التبويب قبل بدء بث WebRTC إلى الضحية، فسيفشل "--auto-select-desktop-capture-source". يمكنك الاطلاع على كيفية قيام add_target.js بالتقاط هذه المعلومات، وتكرارها في index.js مع عبارة console.log() لمعرفة ما إذا كان العنوان قد تغير قبل التفاوض على WebRTC.
  • تحقق من تحميل HTML الخاص بـ cuddlephish، وعدم وجود أخطاء JavaScript واضحة في وحدة تحكم المطور على الواجهة الأمامية. يحتوي مثال تكوين Caddy على بعض الحظر الأساسي على سلاسل وكيل المستخدم مثل curl. على الأقل، يجب أن ترى أن عنوان التبويب والأيقونة المفضلة يتم تزييفهما.
  • تأكد من أنه يمكنك التفاعل مع خدمة STUN والمنفذ (stun.l.google.com:19302) من خادمك.
  • تأكد من أن الشبكة التي تعمل منها تسمح بـ STUN. يعمل STUN فقط مع "NAT مخروطي كامل"، "NAT مخروطي مقيد (بالعنوان)"، و "NAT مخروطي مقيد بالمنفذ". لا يعمل مع "NAT متماثل".
  • تأكد من أنه يمكنك التفاعل مع خدمة STUN والمنفذ (stun.l.google.com:19302) من متصفح ضحية الاختبار الخاص بك. جرب استخدام https://icetest.info/.
  • إذا كانت شبكتك لا تستطيع الوصول إلى خادم STUN المثال، فقم بتغييره إلى خادم يمكنك الوصول إليه. إذا كانت شبكتك لا تسمح بـ STUN، فهناك مثال تكوين لخادم TURN في صفحات HTML الخاصة بـ cuddlephish و broadcast. ستحتاج إلى إعداد أو دفع مقابل خادم TURN الخاص بك. ملاحظة: خادم TURN لديه أفضل فرصة لتوصيل ضحايا التصيد بمثيلات المتصفح لديك.

على مستوى عالٍ، إذا رأيت فقط صفحة فارغة على الواجهة الأمامية، فهذا يعني أن هناك خللاً يحدث في سلسلة تدفق البيانات من "بدء WebRTC" > "حدد تبويب للبث" > "تفاوض ICE مع متصفح الضحية" > "بث الفيديو". خطوات استكشاف الأخطاء وإصلاحها أعلاه تهدف إلى مساعدتك في تتبع البيانات عبر هذه العملية. عند العمل بشكل صحيح، يجب أن تتوقع رؤية تدفق سجل على الخادم مشابه لما يلي:

استكشاف الأخطاء

آمل أن يساعد هذا في أي مشكلات، وكما هو الحال دائمًا، المعلومات الكافية لتكرار المشكلة باستمرار هي شرط أساسي لتقديم المشكلات لمزيد من التحقيق.

ميزات الإدارة

إرسال حمولة:

قم بتشغيل حمولة يدويًا لتنزيلها على نظام الضحية عبر JavaScript. يبدأ كل هدف بـ 'payload.txt' كحمولة اختبار. فقط قم بتبديل موقع الملف في targets.json لإرسال حمولة مخصصة.

طرد المستخدم:

يرسل تغيير window.location للضحية لإرساله إلى بوابة تسجيل الدخول الحقيقية. سيبدو كما لو أنه يجبر على إعادة المصادقة ويمنعه من مشاهدتك وأنت تتولى زمام الأمور. إذا قمت بتعديل الكود، يمكنك القيام ببعض الأشياء الفاخرة الأخرى بهذه التقنية العامة ;)

الاستيلاء:

يسمح لك بالتدخل والتحكم في مثيل المتصفح مباشرة من بوابة الإدارة. لإيقاف التحكم في المثيل، اضغط على مفتاح ESCAPE. ملاحظة، سيؤدي هذا إلى سحب التحكم من ضحية التصيد وسيكون قادرًا على مشاهدة تحركاتك إذا لم تقم بطرده أولاً. لقد تم تحذيرك.

إعادة التحكم:

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

الحصول على ملفات تعريف الارتباط:

يستخرج جميع عناصر ملفات تعريف الارتباط والتخزين المحلي من مثيل المتصفح، ويقوم بتنزيلها كملف JSON. لحقن هذه المواد المعتمدة مرة أخرى في مثيل متصفح يعمل على نظامك المحلي، يوجد نص برمجي في المشروع يسمى 'stealer.js'. من المفترض أن يتم تشغيله من جهازك، وليس من الخادم، لذا لاستخدامه ستحتاج أيضًا إلى تثبيت مكونات Node الخاصة بالمشروع على نظامك.

root@kitploit:~
node stealer.js ~/Downloads/cuddle_asdf1234.json

إزالة المثيل:

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

ملاحظة حول سجلات المفاتيح وبيانات المستخدم:

يتم إنشاء كل متصفح بمعرّف متصفح عشوائي خاص به ودليل بيانات مستخدم مطابق في مجلد "user_data" الخاص بالمشروع. في بعض الحالات التي لا يعمل فيها 'stealer.js'، قد تحتاج إلى تكرار بيانات المستخدم لهذا المثيل أيضًا. يمكن أن يكون هذا مفيدًا في حالات استهداف الخدمات بميزة "تذكر هذا المتصفح" اعتمادًا على كيفية تنفيذ هذه الميزة.

يوجد أيضًا ملف keylog.txt في كل دليل بيانات مستخدم مع سجل كامل لمفاتيح الضحية. يحاول سجل المفاتيح العام في بوابة الإدارة مراعاة أشياء مثل مسافات الرجوع، بينما سيحتوي هذا keylog.txt على جميع ضغطات المفاتيح المسجلة.

تكامل Phishmonger

مثال pm.json:

root@kitploit:~
{
  "tacking_id": "id",
  "logging_endpoint": "https://www.phishmongerserver.com/create_event",
  "admin_cookie": "admin_cookie=s3cret",
  "post_url_search": "ppsecure"
}

تحت الغطاء

تعمل هذه الأداة عن طريق ربط زوار موقع التصيد بمتصفح Chrome آلي، يعمل على خادم التصيد. يتم بعد ذلك بث بث فيديو لمثيل Chrome الذي يتحكم فيه المهاجم إلى ضحية التصيد عبر WebRTC، ويتم إعادة توجيه جميع حركات الماوس وإدخالات لوحة المفاتيح التي يوفرها المستخدم من متصفح الضحية إلى مثيل Chrome المرتبط بهم. يستخدم الخادم websockets لتتبع الضحايا، وإقرانهم بالمتصفحات، ووساطة بث الفيديو WebRTC، والتوسط في إدخالات المستخدم. لكل زائر جديد، يقوم الخادم بإنشاء مثيل Chrome جديد. نظرًا لأننا نستخدم Chrome Devtools Protocol (CDP) لقيادة كل مثيل Chrome، يمكننا استخدام واجهات برمجة تطبيقات مثل "Storage.getCookie" لاستخراج ملفات تعريف ارتباط الجلسة للمواقع المستهدفة بمجرد أن يقوم المستخدم بتسجيل الدخول لنا. يمكننا أيضًا التدخل في أي وقت وقيادة كل مثيل Chrome مباشرة، مستفيدين من نفس الطريقة التي نستخدمها لإعطاء الضحايا التحكم عن بُعد في المقام الأول.

يقوم خادم Node بما يلي:

  • يبدأ متصفحًا جديدًا ("وعاء تصيد فارغ") مع مثيل xvfb كشاشة افتراضية، وينقل تبويبًا إلى صفحة تسجيل الدخول الهدف
  • يقوم بتحميل صفحة ويب مخصصة، broadcast.html، مع برنامج إعداد WebRTC في تبويب جديد على المتصفح الآلي
  • يقوم المتصفح بتسجيل الدخول عبر websockets
  • يزور الضحية الموقع، ويسجل الدخول عبر websockets
  • يقرن الضحية بالمتصفح، ويتوسط في بث الفيديو WebRTC عبر websockets، وينشئ متصفحًا جديدًا للضحية التالية
  • يتم تتبع المتصفحات بواسطة معرّف عشوائي للسماح للمسؤولين "بالاستيلاء" على مثيل متصفح، أو استخراج المواد المعتمدة من المثيل.

أسئلة وأجوبة

لماذا ستصدر شيئًا خطيرًا كهذا؟ (AKA، السؤال الذي تطرحه أمي عليّ في كل مرة أتحدث فيها في Black Hat)

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

كيف يمكنني الدفاع عن خدمتي من هذا النوع من الهجوم؟

أولاً، افهم أن هذا الهجوم يعتمد على الهندسة الاجتماعية لخداع المستخدم لزيارة موقع ويب ضار. قائمة النطاقات البيضاء ستساعد كثيرًا في منع هذا وغيره من أنواع الهندسة الاجتماعية. إذا اعتمدنا على المستخدمين لإدارة 100٪ من بيانات الاعتماد (كلمة المرور، OTP، SMS، PhoneFactor، إشعار الدفع، إلخ) لخدمة ويب، فسنكون عرضة لهذا الهجوم. لذلك، لإحباط هذا الهجوم، نحتاج إلى الاستفادة من بيانات الاعتماد التي لا يديرها المستخدمون. على سبيل المثال، يمكن إصدار شهادات TLS للعميل للأجهزة العميلة، وستكون صالحة فقط للخدمة الويب الحقيقية. تتم إدارة الشهادة بواسطة المتصفح ونظام التشغيل، ولا توجد طريقة لخادم المهاجم للحصول على نسخة من شهادة TLS الخاصة بالضحية. خيار آخر هو استخدام U2F أو FIDO2 مع أجهزة مثل YubiKey لإدارة بعض بيانات الاعتماد المطلوبة. لا توجد طريقة لموقع الويب الخاص بالمتسلل للتفاعل مع YubiKey المتصل بجهاز الضحية.

أنت تستخدم Docker لـ Caddy ولكن ليس لخادم Node. ما الأمر؟

أنا لست خبيرًا في Docker (بعد). إذا كان بإمكانك التوصل إلى إعداد Dockerized بسيط، فسأكون ممتنًا حقًا لطلب سحب.

ما قصة الاسم السخيف؟

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

تحيات

بينما توصلت إلى هذه التقنية والتنفيذ بشكل مستقل، علمت منذ ذلك الحين أن باحثين آخرين سبقوني في الاكتشاف. كل منهم اتخذ نهجًا لاستخدام عملاء VNC المستندة إلى الويب لتحقيق نتيجة مماثلة. إنه نهج بديهي وقد يكون قابلاً للتطبيق لتنفيذ هجمات MitM ضد برامج أخرى، وليس فقط المتصفحات (VPN-في-المتصفح ربما؟). يستحق التحقق بالتأكيد:

Franco Tommasi, Christian Catalano & Ivan Taurino https://link.springer.com/article/10.1007/s10207-021-00548-5

@mrd0x https://mrd0x.com/bypass-2fa-using-novnc/

أيضًا:

تحية لدانيال آرون @majordmg لمساعدته في المراحل المبكرة من إثبات مفهوم WebRTC.

شكر كبير لـ RJ Stallkamp @Z3rO-C00L لإصلاح وتصميم واجهة الإدارة، والشعار الجديد الرائع.

تنزيل الأداة