مقدمة في الهندسة العكسية

Malware
بداية سلسلة جديدة في تعلم الهندسة العكسية و تحليل البرمجيات الخبيثة و نبدأ بمقدمة في الهندسة العكسية و كيفية استكشاف و تحليل الثغرات و التهديدات الأمنية
Mohamed Ewies
Oct. 28, 2023, 6 p.m.
mohamed_ewies
مقدمة في الهندسة العكسية

مقدمة

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

ما هي الهندسة العكسية و ما أهميتها في عالم أمن المعلومات ؟

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

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

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

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

تجيهزات ما قبل المعركة :

نحتاج اولا لمعرفة بلغة السي او السي بلس بلس لأن الكثير من البرمجيات سواء الخبيثة او العاديه تكون بهذه اللغات و هذا لأنها تتعامل مع العمليات الداخليه في نظام التشغيل مثل نظام تشغيل ويندوز و تسمى windows internals و ببساطة هذه الأشياء هي طريقة فهم كيف يعمل نظام التشغيل من حيث إدارة المساحة و العمليات التي يقوم بها النظام و غيرها من الأشياء و التي تهمنا لأننا مثلا هناك اشياء تسمى Windows Api او ما يسمى win32 و هذه أشياء تساعدك في التعامل بين البرنامج و نظام التشغيل و عملياته لنأخذ مثال في موقع malapi.io سنجد الاتي :

 

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

ثم علينا بفهم لغة التجميع (assembly language) ببساطة البرنامج لا نملك له source code (الكود المرجعي) لذلك نحتاج لشئ يجعلنا نحاول ان نتخيل كيف كان هذا الكود و هنا تأتي لغة التجميع لتحل هذه المشكله و لكن كيف ؟ بكل بساطه البرنامج يتم برمجته بلغه يستطيع البشر فهمها و هي الc مثلا و لكن حينما يعمل هذا البرنامج فهو يكون عباره عن إشارات كهربيه على اللوحة الأم في جهاز الكمبيوتر و غيرها من الأجزاء الاليكترونيه و لكن اعلى من هذه النقطه نجد لغة الاله (machine language) و هذه لغة مكونه من رقم صفر و رقم واحد فمجموعه منهم تساوي أمرا معينا و الواحد يساوي شحنة كهربيه عاليه الجهد و الصفر تساوي شحنة منخفضة الجهد و لكن ما قبل هذا هناك لغه هي معقده قليلا و لكن يمكننا فهمها و هي لغة التجميع و التي مهمتها ان ترينا الأوامر التي يقوم بها البرنامج في الحاسوب الخاص بنا لننظر لمثال بسيظ بلغة البايثون :

كود بسيط لجمع رقمين و طباعة مجموعهما و طباعة جملة هامه "حرروا غزة حرروا فلسطين الله اكبر" الان لنراها بلغة التجميع :

اعتقد انك بفهم بسيط للغة الإنجليزية ستفهمها بسهوله إن شاء الله فبدأ بتحميل ثابت 5 ثم اسم المكان التخزيني x ثم تحميل الثابت 10 و تخزينه في y ثم قم بتحميل الاسم x و y و + و خزن الناتج في sum ثم قام بتحميل امر print لطباعة sum و مرة اخره حمله لطباعة "حرروا غزة حرروا فلسطين الله اكبر" حسنا كان هذا مثال بسيطا لنرتقي بالمستوى للغتنا المنشودة C :

حسنا لننظر لمثال لغة التجميع :

حقيقة في أول مرة رأيته فيها كنت مذهولاً، لكن لا تقلق كورس بسيط في لغة التجميع بالعربية سيحل الأمر إن شاء الله : شرح عربي للغة التجميع  

فلتبدأ المعركة :

العدو:

فيروس الفدية المعروف wannacry لنحاول ان ننظر كيف تكون عملية الهندسة العكسية مفيدة في تحليله

كما ترى الفيروس قام بتشفير كل الملفات و أعطاك مهلة لتدفع الفدية و إلا لن تعود لك ملفاتك

الهندسة العكسية و كيف ستساعدنا :

في عمليات التحليل الأولية لهذا الفيروس بإستخدام وسائل لم نذكرها لأنها ليست ما نريد الان و لكنها ستفيدنا لمعرفة بضع الأشياء عن الفيروس و توقع بضع الأشياء عنه و الهندسة العكسية ستساعدنا إن شاء الله في التأكد من صحتها و ايضا معرفة معلومات اكثر بكثير انظر هنا :

ستجد رابط غريب ليس من الطبيعي ان نراه كل يوم و استخدام win32 المسماه InternetOpenA و إذا بحثت على الإنترنت ستجد الاتي :

نفهم انها مستخدمه للتواصل مع الرابط الغريب مع فهم لغة التجميع ستفهم انه قام بالاتصال بهذا الرابط و حمل شئ منه و خزنه في مساحة قام بعدها بعمل مقارنة

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

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

 خاتمة :

و هكذا يا صديقي طوفنا حول مفهوم الهندسة العكسية و أظنك تعلم الان كم هي مهمة للشركات فالشركه ستحتاج لمتخصصين في الهندسة العكسية ليساعدوهم على فهم البرمجيات الخبيثة و وضع وسائل للحمايه منها و كشفها و أيضا ستساعد مختصين الاختراق لدى شركات برامج الحماية من عمل فيروسات جديدة تستغل ثغرات جديدة فتستطيع ان تقوم بوضع وسائل لتأمينها و شركات البرمجيات تستعين بهم ليقوموا بكشف الثغرات في برمجياتهم و يقترحون حلولا لها و الكثير غير هذا , اسأل الله تعالى أن تكون المادة المشروحة سهلة ميسرة فإن وفقت فمن الله و إن أخفقت فمن عملي و عمل الشيطان نعوذ بالله من شرور أنفسنا و أعمالنا و من الشيطان الرجيم و ادعموا إخوانكم المسلمين في فلسطين بالدعاء و التوبة و الطاعات و لا تتهاون او تخف أبدا من نصرة إخوانك قال رسول الله صلى الله عليه و سلم : إنَّ المُؤْمِنَ لِلْمُؤْمِنِ كَالْبُنْيَانِ يَشُدُّ بَعْضُهُ بَعْضًا. وشَبَّكَ أصَابِعَهُ. الراوي : أبو موسى الأشعري | المحدث : البخاري | المصدر : صحيح البخاري الصفحة أو الرقم: 481 | خلاصة حكم المحدث : [صحيح]

المصادر :


Reverse Reverse engineering Malware analysis الهندسة العكسية تحليل البرمجيات الخبيثة الكراك cracking تعلم التهكير cyber security