بسم الله الرحمن الرحيم
"شرح الـsecure shell"
<منقول من منتديات ابن مصر>
<الكاتب: ACID BURN_EG>
السلام عليكم و رحمه الله و بركاته :
اليوم سوف نتطلع الى اداه فى النت ورك و هى اداه هامه جداا تستخدمها معظم السرفرات على الانترنت و هذه الاداه هى الSecure Shell اى ال SSh ::
و لنبدأ الان الحديث عنها ::
ما هى ال SSh ؟
===============
الsecure shell هى اداه (برنامج) للاتصال و الدخول الى كمبيوتر او جهاز اخر على النت ورك لتنفيذ اوامر او مهام معينه داخل هذا الجهاز اى و هو الاتصال عن بعد remotely connection و تستخدم ايضا فى نقل الملفات من كمبيوتر الى اخر و هى تقدم توثيق قوى و اتصال امن جداا فى قنوات الاتصال الغير امنه و هى تعتبر كبديل جيد جداا لادوات تستعمل لنفس الغرض فى يونكس مثل (rlogin,rsh and rcp).
و تقدم ايضا ال secure shell اتصال امن جداا لشحنات اتصالات ال tcp كونيكشن .
و هنا يأتى سؤال مهم :: و السؤال هو ::
لماذا يفضل استخدام ال secure shell على الادوات الاخرى التى يطلق عليها r- commands فى يونكس ==================================================
======================================
كالمذكورين فى الاعلى ؟
======================
فى توزيعات اليونكس مثل ال *BSD تتعرض الادوات التى يطلق عليها r- commands مثل (rlogin,rsh and rcp) الى انواع مختلفه من الهجمات حيث انه لو شخص استطاع ان يكتسب ال روت اكسيس (root access) للاجهزه التى على الشبكه بطريقه ما او فعلها ن طريق اتصال فيزيائى اى ريموتلى يمكنه ان يدخل الى كل بيانات الاجهزه التى على الشبكه بدون ادنى صعوبه لانه يستطيع بالروت اكسس ان يعبر من خلال اى اداه من المذكوره فى يونكس بدون اى صعوبه و يمكنه تفاديها بطرق معينه و هذا ما يسمى بأن الشخص لديه unauthorized access to systems اعتقد انكم فهمتونى الان و يمكن ايضا لاى شخص ان يراقب و النت ورك ترافيك و يلتقط كل الباكيدجس من خلال شبكتك و تكون هذه الباكيدجس تحتوى على الباسوردس للسيستم حق شبكتك
ملحوظه: طريقه مراقبه النت ورك ترافيك هى طريقه حقيقيه فى الاختراق و تستخدم فى اختراق المنظمات الكبرى و تقع تحت بند تقفى الاثر و الاعداد للاختراق )
و الان نعود الى السيكيور شيل و مزايا السيكيور شيل تظهر هنا مع كل عيوب الادوات فى يونكس فالسيكيور شيل يطالب الشخص الذى لديه الروت اكسس ايضا بأن يتصل اتصال موثوق عبره اى لا يعطيه الحق للدخول الى بيانات اجهزه الشبكه الا بالباسورد و لا يمكن التحايل على الssh فى هذه النقطه و بذلك حتى لو تمكن الشخص من اكتساب الروت اكسس لن يستطسع الاطلاع على بيانات الشبكه
الا ب authorized access to systems .
و النقطه الثانيه هى ان اذا حاول احد اختراقك عن طريق مراقبه النت وررك ترافيك لشبكتك و التقاط الباكيدجس التى تحمل معلوماتك و باسورداتك فسيخيب امله لان السيكيور شيل لا يرسل الباسوردات فى صوره واضحه كما ترسلها ادوات يونكس الاخرى و لكن يرسلها مشفره و لذلك سيكون على المخترق محاوله فك الشفره و الخ
و لكن مع كل هذه المزايا لم يخلى ال secure shell من الثغرات و لكن تعتبر ثغراته قليلا و تقريبا معظمها يحتاج الى الرووت اكسس و الاخرى يمكن ان تخترق السيكيور شل فقط بها (هذا كلام بينى و بينكم)
و الان سؤال اخر ::
ما هى انواع الهجوم التى تحمى منها ال ssh ؟
===========================================
1- تحمى من ال ip spoofing اى تحمى من انتحال عنواين الاى بى حيث انه لو ارسل شخص ما باكيدجس من اى بى يظهر انه موثوق به و لكنه فى الحقيقه ليس موثوق به يكشفه ال ssh و تحمى ايضا ال ssh من المنتحلين على الشبكه المحليه اى localy .
2- تحمى مما يسمى ال DNS spoofing
3- تعترض ظهور التيكستس التى يكون مخزن عليها الباسوردات الواضحه و بيانات الهوستس
4- تحميك من معالجه البيانات المخزنه اى تمنع اى شخص غير موثوق به من عمل ايديت لاى داتا مخزنه
و لكن مع كل هذا فأن ال ssh ليس امن بدرجه كبيره حيث ان الاشخاص ذو خبره كبيره فى النت ورك يستطيعون ان يجعلون ال ssh ينقطع عن الاتصال اى disconnected و لكن لا يمكن ان يكسرو تشفير بياناته او يعيدون تشخيل الترافيك الذى كان ينقلها .
و ايضا كل الاشياء التى تكلمنا عنها فوق سوف تعمل فقط اذا كنت تستخدم خاصيه التشفير التى تسمح لك بها ال ssh و هى تسمح بأكثر من نوع تشفير مثل (three-key triple-DES, DES, RC4-128, TSS, Blowfish) يمكنك استخدام ما تريد منهم و ايضا هناك اوبشن اى خيار فى الاداه تسمح لك بعدم تشغيل التشفير اى" encryption of type "none و بهذا تجعلنى اقول عليك احمق ! لان هذا يجعل ال ssh سهله الاختراق مثل الادوات التى تم ذكرها فى اول الموضوع فى يونكس , حيث ان هذا التشفير ايضا يمنع ال ip spoofing و ال DNS spoofing و هذا ايضا بالاضافه الى تغيير مفاتيح فك التشفير كل فتره معينه و يتم تدمير مفاتيح التدمير التى تم استعمالها تماما .
اذن فهى اداه حقا مميزه و تستحق الاحترام و الاهتمام مع انها لا تخلو من الثغرات و لكن لنجعلها افضل ما موجود فى هذا المجال
ارجو ان اكون قد افدتكم فى هذا الدرس بالتعرف على اداه مثل السيكيور شيل و ارجو ان اكون عند حسن ظنكم.
انتهى،،،
" شرح معنى الـ Buffer Overflows"
<منقول من منتديات شبكة الحزم الإسلامية>
<الكاتب: LAMeR>
اقدم لكم درس يشرح ما معنى الـ Buffer Overflows .. وانشالله تستفيدون منه
يله نبدأ
محتويات الدرس:
1- ما هو الـ Buffer Overflow ؟
>--------------------------
2- المعالجه(Proccess)
>-----------------
3- إدارة الذاكره (Memory management)
>--------------------------------
4-استغلال ماذكر في الـ Buffer Overflow
>----------------------------------
* ماذا يجب أن أعرف قبل أن أقرأ هذه المقالة؟
ليس الكثير،،، فهذا دليل اساسي لك اذن فقط تحتاج ان تكون لديك معرفة أساسية بمفهوم برامج الحاسوب وإدارة الذاكرة
1-ما هو الـ Buffer Overflow؟
>-----------------------<
Buffer Overflow حالة تحدث لبرنامج بسبب برمجة سيئة أو بمعنى اخر برمجة تحمل أخطاء.
احدث ثغرة يمكنك أستغلالها من نوع Buffer Overflow تسمى فايروس 'code red' ، التي أستغلت في خادم IIS لمايكروسوفت -MS web server -
عموما، يحدث Buffer Overflow عندما يظهر برنامج ما متغيّر بحجم ثابت (على سبيل المثال،حجم 20 بايت) و القيمة التي خصّصت إلى هذه المتغيّر أكبر من حجم المتغيّر.
خذ هذا المثال:
يظهر برنامجي على الشاشة هذه الجملة: "رجاء إطبع اسمك الأول: "ثم سيأخذ برنامجي من المستخدم البيانات التي سيدخلها وهي (اسمه الأول) ثم توضع في متغير فتظهر في برنامجي او تخزن.
المشكلة هنا تكمن في انه إذا كان المتغيّر مخصص لتخزين بيانات حجمها الأقصى يساوي 15 بايت والبيانات هنا(وهي اسم المستخدم)حجمها 25 بايت التي ستخزن في المتغير (يتضح لنا ان اسم المستخدم وضع في مكان اقل من حجمه ).
اذن ماذا سيحدث للبيانات الزائدة عن 15 بايت من المؤكد انها سـ"تطفح Overflow" على الذاكرة التي خصّصت لمتغيّر الاسم.
عندما يبدأ البرنامج، تخصّص الذاكرة :
<var1><var2><vname><Other things in memory>
10b 6b 15b
(var 1 وvar 2 متغيّرات ليست لها علاقة بالأسم المدخل ,vname المتغيّر الذي حجمه 15 بايت
وهو الذي سيحتوي الاسم الذي سيدخله المستخدم)
نفترض ان المستخدم سيدخل الاسم " abcabcabcabcabcabcabcabca
bc" حينها ستبدو الذاكره هكذا:
somevalue2avalusabcabcabc
abcabcabcabcabcabc
<var1 ><var2><vname ><other things go here>
اذا ماذا حدث ؟؟ المتغيّر vname "طفح overflowed" بسبب البيانات المدخلة عليه من قبل المستخدم و قيمة "other things in memory أشياء اخرى في الذاكره" تغيّرت بسبب فيض(overflow) الحروف من ادخال المستخدم.
اذن كيف أستغلّ هذا الخطأ؟؟؟
قبل أن نصل إلى الجواب، هناك بعض الأشياء الأساسية المهمة التي يجب علينا أن نعرفها حول تركيب وبنية الحاسوب .
في هذه المقالة سنناقش نظام لينكس linux، لكن المفهوم مماثل لباقي الأنظمة.
2-المعالجه(Proccess):
>----------------<
إنّ الوحدة الوظيفية الأساسية في حاسوب يعمل هي عملية المعالجه (Proccess).في الحاسوب هنالك العديد من العمليات ونظام التشغيل مسؤول عن تقسيم القوّة التي تجعل العديد من العمليات تعمل في نفس الوقت في الحاسوب.
ليس هناك شيء إسمه "متعددالعمليات Multi- proccesses" صحيح... كيف اذن؟؛ انَّ وحدة المعالجة المركزية(CPU) تنتقل بين العمليات كلُُ على حده بسرعة كبيره بحيث تبدو مثل العديد من المهام التي تعمل في وقت واحد،
اذا تبدو لنا كأن العمليات تعمل في وقت واحد وهذه من خدع الحاسوب التي يؤديها علينا ..
كلّ عملية لها عنوان فاضي من الذاكره ، ولايمكن لأي عمليةآخرى تدخل في هذا المكان الفاضي من الذاكرة. وهذا يرشدنا الى شي اخر يجب ان تفهمه وهو:
3-إدارة الذاكره (Memory management):
>------------------------------<
تدير أنظمة التشغيل-operating systems-الحديثة ذاكرة افتراضية virtual memory(تخيلية).
ذلك يعني بأنّه لايمكن لأي تطبيق (برنامج مثلا) الوصول مباشرة إلى الذاكرة الحقيقية.لماذا؟؟
انظمة التشغيل Operating System تمتلك جدول تخطيط "تحويل العناوين الحقيقية من الذاكرة الى عناوين افتراضية(تخيلية)" .
وعندما تقوم ذاكرة الـ OS (نظام التشغيل)بتحديد مكان في الذاكرة لبرنامج معين لتشغيله ،يأخذ البرنامج العنوان التخيليّ فقط ، وليس العنوان الطبيعي.
و هنالك استخدام اخر للذاكرة الإفتراضية(التخيليّة) وهي انه من المعلوم أن الذاكرة الحقيقية لا ترتبط مباشرة بكل عملية (أو برنامج)، فنظام التشغيل يستخدم مساحة على القرص الصلب كذاكرة،
والتطبيق لا يمكنه أبدا معرفة مكان الذاكرة ( مكان الذاكرة الحقيقة )،ذلك لأن المساحة المخصصة للذاكرة في القرص الصلب تتبدل وتتغير.
توضيح :. ان الذاكرة لا تنقسم الى ذاكرة حقيقة وذاكرة افتراضية بل أنهما ينتميان لذاكرة واحد
اذن ما فائدة التسمية الى حقيقية وافتراضية ؟؟ الجواب هو للمتييز فقط ، حيث ان الذاكرة الحقيقة تمثل مساحة معينة من القرص الصلب (ومكان هذه المساحة في تغير مستمر) لذلك سميت حقيقية او بمعنى اخر طبيعية (اي بأستطاعتك لمس مكان الذاكرة الطبيعية بيدك على القرص الصلب)
وفائدة الذاكرة الإفتراضية هي إعطاء عنوان افتراضي (غير حقيقي ) للذاكرة الحقيقية اي يعطي عنوان كأسم فقط لمكان مساحة الذاكرة الطبيعية في القرص الصلب ، وإن تغير مكان المساحة المخصصة للذاكرة يظل العنوان الإفتراضي(التخيلي) ثابت.
4-استغلال ماذكر في الـ Buffer Overflow
>---------------------------------<
الآن نصل إلى الجزء الأهم والمرح
كيف نستفيد من الذي قلنا عن المعالجة وإدارة الذاكرة للوصول والدخول الى الجذر (Root) وأختراق النظام؟ تذكّر نحن قلنا في وقت سابق بأنّه عندما يكون الإدخال(البيانات) من المستخدم أكبر حجما من الذاكرة التي خصّصت لهذه البيانات، البيانات الزائدة ستفيض (overflow) في الذاكرة التي بعد الاسم المتغيّر؟ هذا المكان من الذاكرة هو المكان الذي نستفيد منه في الأختراق.
ماذا نعمل في ذلك المكان: داخل خط (مكان) البيانات التي يدخلها المستخدم (في المثال السابق وهو الاسم الأول الذي يطلب من قبل البرنامج ثم أدخلناه ) نضع الأوامر الأكثر شعبية للحاسوب، حيث هذه الأوامر تجعل الحاسوب يحدث(ينتج) هيكل نستطيع استخدامه فيما بعد للقيام بالسيطرة الكاملة للنظام المستغلّ. القيام بهذا العمل ليس بيسطا كما يبدو لك، إذن لو أردت معرفة كيف يعمل ، أنت يجب أن تقرأ المقالة القادمة حول Buffer Overflows، الذي سيصف بالضبط كيف لإستغلال واحده من الـBuffer Overflows في الإختراق.
اخيرا اتمنى انكم فهمتوا الدرس زين وعرفتوا ايش معنى Buffer Overflow واللي فهم الدرس نص نص يعيد قرائته اكثر من مرة مع التدقيق وانشالله يفهم.
انتهى،،،
بالتوفيق