JAAS

أخطاء وثغرات البرامج العربية ؟!

27 ردود في هذا الموضوع

السلام عليكم ,,,

بصراحة لم أجرب في حياتي البحث عن ثغرات أو اخطاء في البرامج التجارية العربية ؟!

والسبب اني لم اتوقع اي فائدة من إيجاد ثغرة برمجية في برنامج عربي !!!

-

-

اليوم فكرة في الموضوع ,,, من منطلق تطوير البرامج

فوجدت ان كل برنامج عالمي يتطور بعد إيجاد أخطائة وغفواته ؟؟ كل انواع التشفير تتطور إذا وجد لها طرق فك التشفير

والنقطة التي اريد ان اصل لها ؟؟ هي :

إذا لم نجد اخطاء وثغرات برامجنا ومواقعنا العربية ستبقى نفس ما هي وبنفس تقنياتها المستخدمة إلى قيام الساعة؟ بمعنى لن تتطور ابداً

أمس فتحت موضوع لإجاد ثغرات وأخطاء المواقع العربية

-

اليوم سنفتح نفس الموضوع للبرامج العربية... وسأبدا في الموضوع ؟؟

/////////////////////////////

إيجاد ثغرة فيض المكدس في برنامج مكتوب ماسنجر !!

-

بدأت في إختبار شاشة الدخول لبرنامج مكتوب ماسنجر

13_09_05_01_32_18_1126643538APS_1.gif

بصراحة وجدت التحقق من إسم المستخدم وكلمة المرور - يعتبر جيد !!

بداية بفرض رقابة على حجم البيانات المدخلة ب 255 بايت وهذا شيء جيد

وثاني خطوة يقوم بتحويل البيانات المدخلة من صيغة آسكي إلى صيغة اليونكود - لفهم الأسماء العربية والأجنبية

وقام بحجز مخزن للبيانات للتحويل بحجم 255*2 وهذا شيء ممتاز طبعاً لأن نص الينكود سيكون ضعف آسكي

-

ولكن الغفوة أو الثغرة تحدث بعد هذا؟؟؟؟؟

بعد ان يقوم بتكملة الخطوات السابقة ,, يقوم البرنامج بخدمة جليلة للمستخدم

إذا كان المستخدم أدخل إسمة بدون كلمة @maktoob.com

فإن البرنامج وبحسن نية يقوم بإضافتها إلى الإسم المدخل ؟ وهنا تظهر الورطة ,, وهي

إدخال إسم مستخدم بحجم 255 وبدون @maktoob.com ؟؟ ستحدث ثغرة مباشرة

بهذة الطريقة ؟؟؟

يقوم المستخدم بإدخال نص AAAAAA بتكرار 255 مرة في خانة إسم المستخدم

على طول سيقوم برنامج مكتوب بتحويلة إلى ينكود وسيقوم بتخزية في مخزن بيانات بحجم 510

وبهذا سيكون المخزن ممتلئ مئة بالمئة ,,, هنا سيقوم برنامج مكتوب بإضافة @maktoob.com إلى المخزن الممتلئ

وستحدث ثغرة فيض + وستكتب البيانات فوق عناوين البرنامج ,, بهذة الطريقة

13_09_05_01_33_01_1126643581APS_.gif

///////////

الحل ؟ بالتأكيد هو:

فحص حجم البيانات بدون @maktoob.com وفحص حجم البيانات ب @maktoob.com

إذا كان إسم المستخدم كامل في هذة الحال يتم متابعة التنفيذ,, إذا لم يكن كامل يتم زيادة حجم المخزن بحجم النص @maktoob.com

////////////////

ثانياً

ثغرة فيض في أداة الترجمة(عجيب) لشركة صخر

-

بنفس القصة يحدث خطأ الفيض أثناء إدخال إسم المستخدم لموقع عجيب

الثغرة تحدث في نقل البيانات المدخلة بإستخدام المايكرو strcpy

ليتم تخزينها في ملف الريجستري ؟؟ والمكشلة ان التحقق من حجم البيانات يأتي بعد نقلها إلى مخزن بيانات أصغر

-

طريقة إدخال البيانات

13_09_05_01_33_50_1126643630APS_3.gif

-

بعد إدخال إسم مستخدم بحجم كبير مثل 500 حرف

تحدث ثغرة فيض في المكدس ,, ويتم إنتقال التنفيذ ,, ستلاحظ إختفاء البرنامج

13_09_05_01_34_53_1126643693APS_4.gif

//////////////

//////////////

وفي النهاية ,, من المعروف ان عدد البرامج التجارية العربية تعد بالأصابع ؟!

أنصحك بالبحث عن أقرب برنامج لمراقبتة وكشف اخطائة وثغراتة ,, إذا وجدت :)

وبالتوفيق ,,

تم تعديل بواسطه JAAS
4

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مجهود رائع جدا اخي جاس , كان بودي ان اضيف شي للموضوع او ان اطرح سؤال لكن خبرتي بالاسمبلي صفر بالرغم من اني اتردد على هذا القسم بأستمرار :s

شاكر لك جهودك المبذوله في المنتدى :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من اليوم سابدا فى البحث عن البرامج العربيه وساتيك بالنتائج ان شاء الله :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

طبعا بعد دروسك الجميله يا Jaas في ثغرات البرامج وكيفية استغلالها فهذا يعتبر مثال تطبيقي لكن من عندنا احنا :lol:

ولي سؤال :

يقوم المستخدم بإدخال نص AAAAAA بتكرار 255 مرة في خانة إسم المستخدم

على طول سيقوم برنامج مكتوب بتحويلة إلى ينكود وسيقوم بتخزية في مخزن بيانات بحجم 510

وبهذا سيكون المخزن ممتلئ مئة بالمئة ,,, هنا سيقوم برنامج مكتوب بإضافة @maktoob.com إلى المخزن الممتلئ

وستحدث ثغرة فيض + وستكتب البيانات فوق عناوين البرنامج ,, بهذة الطريقة

طبعا البيانات التي سوف تكتب هي @maktoob.com وليست البيانات التي أدخلتها ... لذلك لا يمكن استغلال هذه الثغره بكتابة كود لاختراق البرنامج مثلا , فنتيجة هذا الفيض غير محسوبه مسبقا , اليس كذلك ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

I don't think the site allows a username with 255 char.. if so one could compromise the user msgr by giving him/her an exploitable email.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ماشاءالله عليك اخوي jaas

شرح مفصل من طقطق الى السلام عليكم

الله يزيدك من علمه

وتقبل تحيتي

وفمان الله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مشكور على ردود الجميع ,,, وبصراحة إرتحت عند قرائة سؤال Asm4all

يعني سؤال يدل على فهم كل الخطوات بالتفصيل ؟؟؟

لذلك لا يمكن استغلال هذه الثغره بكتابة كود لاختراق البرنامج مثلا , فنتيجة هذا الفيض غير محسوبه مسبقا , اليس كذلك ؟

بالعكس يمكن إستغلال هذة الثغرة وقد شرحتها بالتفصيل في موضوع ( أخطار المعالجة المنظمة لنظام التشغيل SEH )

وذلك بإستغلال المؤشر لجدول SEH او معالجة الأخطاء ؟؟

لأن الطريقة السابقة ستحدث خطأ في البرنامج ؟؟ سيقوم البرنامج بالإنتقال إلى أول عنوان في جدول SEH

وبهذا يمكن ان نبحث عن طريقة لجعل مؤشر SEH يدخل في البيانات التي ادخلناها !!! راجع موضوع SEH لتوضيح الفكرة

-

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
بالعكس يمكن إستغلال هذة الثغرة وقد شرحتها بالتفصيل في موضوع ( أخطار المعالجة المنظمة لنظام التشغيل SEH )

how is that possible? you may exploit it locally (even though i cant seem to figure how) but over network?? :wacko:

we are dealing here with a buffer overflow that needs a user name and a password (the username is the email account) so it ain't possible to send someone a username with 100 char and tell him/her that it's my email account.. send me your picture :s

but still.. sorta possible :) there are many unbelieveable things in the world :D

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اللي قصدته انه الثغرة عشان تستغل بتحتاج الى اسم مستخدم وكلمة مرور وعنا الخطا عم يحدث في اسم المستخدم وحسب ما شفت من الثغرة انها بتحتاج الى اسم مستخدم طويل نسبيا عشان نحدث الفيض وعلى ما يبدو انه يمكن تنفيذها بشكل محلي على النظام كنوع من الاختبار وليس للاستغلال في قرصنة او ما شابه.. لانه ما بتقدر تجبر شخص على انه يدخل اسم طوله 200 حرف ليدخل لايميل معين عشان تقرصنه!! هاد اللي قصدته بانها تستغل locally

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بالفعل هي ليست ريموت !

وبالتأكيد لن تستطيع إجبار احد على نسخ 200 حرف في إسم المستخدم ؟؟

ولكن فكر اكثر في طرق ؟؟؟ مثلاً اين يخزن إسم المستخدم ؟ بالتأكيد في الريجستري

ماذا لو غيرت المعلومات من الريجستري ,, وقمت بحفظها في ملف reg

في هذة الحالة ليس من المستحيل جعل المستخدم ان يضغط دبل كلك على ملف reg :)

وبالتوفيق ؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

همممممم.. معقول :D اغلب مستخدمينا (الله يخليهم) بينفذوا ملفات الريجستري بدون ان يطلعو على المحتويات ويبحثوا فيما تعنيه.. :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اخي jaas

"في هذة الحالة ليس من المستحيل جعل المستخدم ان يضغط دبل كلك على ملف reg "

ممكن توضح فيها شوية

وشكرا , على الموضوع

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

يعني مثلا اخي ATmax ممكن ارسلك ملف reg او حتى exe واقول بانه باتش يقوم بتغيير كذا في مكتوب وبدون ان اكذب بهذا الشان.. شوية reverse engineer وبنعمل ال "كذا" وبالتالي حتفحصه مثلا من الفيروسات ما بتلاقي شي واذا بك تفتح الملف واذا بالريجستري على افتراض انها مخزن الاسم تتعدل واذا بك تفتح مسنجرك واذا بجهازك يقوم بعمل ليس من المفترض به القيام به.. :D ويمكن حتى اخفاء وجود البايتات الزائدة في الاسم مع شوية شغل زيادة وحرص وبتكون عم تسجل في مسنجر المكتوب بدون اي شكوك :)

بدت الافكار الخطيرة تتدفق على مخي :lol:

تم تعديل بواسطه Xacker
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

رائع يا شباب

احسنتم والى الامام<<<<<<<<<<<< كاني فاههم اشي من الي قلتوه :lol:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

الSEH من السهل تخطيه

اولا:-

عند الكتابه على الSEH

سنقوم بالكتابه عليه بى xEB\x06\xff\xff Pointer To Next SEh

EB =jmp

06 = 6 بايت

العباره على بعضها = اقفز 6 بايت لتصل الى [sE Handler] الذى يوجد به عنوان الRETadd

وهو المطلوب اثباته :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

عمل ممتاز من كل الأعضاء و لكن هل تم تبليغ شركة مكتوب عن هذه الثغرة؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اخي ATmax ... كما وضحه مشرفنا Xacker

لكن هل تم تبليغ شركة مكتوب عن هذه الثغرة؟

عن نفسي لم اخبر لا مكتوب ولا صخر ... :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اذا هم مش دايرين بالهم الامر بيرجع الهم.. بس تنبيه: الـ credits لـ JAAS فمحدش يفكر هيك ولا هيك :D

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

أخي JAAS

أولا شكرا جزيلا على الموضوع الرائع

اللي أنا فاهمه من ثغرات الــBuffer Overflow هو أنه تكون مرتبطة بتحديد حجم معين لمتغير نصي.

يعني مثلا [char string[256

طيب لو فرضنا أنه أستخدمت كمتغير نصي (مثلا في الفيجوال سي) CString فهل يوجد أحتمال حصول نفس المشكلة؟؟ مع العلم أني دائما أستعمل CString و لم أفكر كثيرا بموضوع الــBuffer Overflow :rolleyes:

فهل أن فهمي خاطيء, و أستعمالي لــCString (أو ما يشابهه) ممكن أن يحدث نفس المشكلة؟؟

و شكرا

تم تعديل بواسطه MTI
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بالعكس اخي MTI ,,,

إذا استخدمت CString في برنامجك فأنت بعيد كل البعد عن ثغرات الفيض في المتغير ؟

اعرف انة شيء غريب ؟ ؟ إذا كان هذا هو الحل وموجود لماذا لا يطبق ؟

لنأخذ مثال المتغير CString

هذا المتغير موجود في لغة السي وبالتحديد مكاتب MFC ,,, ولهذا السبب لا يستخدم ؟ لأنة موجود في

مكاتب خارج البرنامج ؟!!!! وبذلك لا يرتبط في البرنامج حتى إذا حدث فيض في CString سيحدث في مكتبة MFCxx.dll وليس في البرنامج

بمعنى ؟ إذا قمت بإستخدام اي طريقة لتعريف سلسلة نصية غير الطريقة char aa[200]

معنى ذلك انك تخليت عن لغة السي في برنامجك وبهذا سيكون البرنامج مرتبط مع ملفات خارجية في الغالب

مكتبة ربط dll ,,,وفي النهاية ستكون مجبر على إرفاقها مع برنامجك

-

-

وبالتأكيد اغلب البرامج التجارية وبرامج النظام ... دائما تكون مكتوبة بلغة السي القياسية وتستخدم ملفات النظام القياسية ... دون إستخدام اي ملفات خارجية او خدمات اخرى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكرا جزيلا أخي JAAS

بالنسبة لتوزيع الــDlls ...أنا لاحظت هذه المشكلة عند عملي لبعض البرامج, حيث أني أستخدم دائما MFC في كتابتها.

أما بالنسبة لــCString فكنت قد بدأت أستخدمه بكثافة بعد قراءتي لمقال في كود بروجكت أسمه CString Management و كان الجزء الأخير يشرح فوائد أستعماله مقارنة بالمتغيرات النصية العادية.

و لم أنتبه للمشكلة الى أن بدأت قبل فترة التفكير بتعلم wxWidgets و تحويل أحد برامجي لها كأختبار.

على العموم ....لقد أبتعدت بهذا الموضوع كثيرا عن هدفه و ناقشت الــ++C في منتدى الأسمبلي. :D

و أنا آسف لذلك.

شكرا جزيلا مرة أخرى.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اخي jass بالنسبه لما قلته عن تتبع مكان تسجيل البرنامج ... بالنسبه لي قمت بتجربة

ذلك على برنامج عربي وهو محول الصوتيات 6 والذي يشتغل عدد من المرات ويطلب الشراء

فقمت بتتبع التغيير الذي يحدث في الريجستي بواسطة برنامجInstallWatch فذهبت

الى مكان التسجيل وراقبت التغيير حيث انه في كل مره تتغير الى قيمه جديده

وعند حذف القيمه يرجع عداد البرنامج 0 فقمت بالعبث بقيمة البرنامج في الريجستي

فاصبح عداد البرنامج صفر دائما وهذا يعتبر قريب من الكراك في فعالته

[HKEY_USERS\S-1-5-21-1645522239-179605362-682003330-500\Software\VB and VBA Program Settings\Tools\au]

@=""

"Text"="aljeelany"

ولكن سؤال كيف ممكن نتلافى هذه الثغره لا تشرح على اساس اننا محترفون .. مازلنا ممتدئين

وارجو ان يكون التوضيح بالنسبه للريجستي

ومشكور اخي على موضوعك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ماشاء الله ..... :rolleyes:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مشكور أخوي على هذا المجهود الجبار (h)

:lol: أرجو أن يستفيد الجميع :lol:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .