الوحدة 4
تحليل التعليمات البرمجية بحالتها الثابتة
آخر تحديث في: 26 ديسمبر 2024
GitHub تعديل هذه الصفحة علىالوحدة 4
آخر تحديث في: 26 ديسمبر 2024
GitHub تعديل هذه الصفحة علىيعد تحليل التعليمات البرمجية بحالتها الثابتة عملية تفكيك ملف ثنائي من أجل فهم ما بداخله وهي تتطلب الكثير من العمل وتتطلب معرفة بهندسة البرمجيات. لهذا السبب يُفضل معظم المحللين إجراء تحليل ديناميكي (والذي نركز عليه في الموضوع الفرعي 3) بدلاً من ذلك. هناك العديد من الأسباب التي قد تدفعك إلى إجراء تحليل التعليمات البرمجية بحالتها الثابتة، بما في ذلك عدم جدوى التحليل الديناميكي أو إذا كنت لا تريد أن يعرف المتطفل المحتمل أنك تملك الملف وتحلله.
يتناول هذا الموضوع الفرعي مهارة متقدمة للغاية وتتطلب المؤلفات التوجيهية التي تحتاج روابطها الكثير من الوقت حتى إتمامها. وإذا لم يكن لديك الوقت حاليًا للتركيز عليها وتريد بدلاً من ذلك معرفة ما يجب فعله بنتائج التحليل الديناميكي، انتقل إلى الموضوع الفرعي 5.
بعد استكمال هذا الموضوع الفرعي، يتوقع من الممارسين أن يكونوا قادرين على:
يعد تحليل التعليمات البرمجية بحالتها الثابتة عملية لتحديد المعلومات حول برمجية ضارة دون تشغيلها ومن الناحية الفنية فإن تحليل الملف الأساسي الذي أجريته أعلاه هو شكل من أشكال التحليل بالحالة الثابتة. لكن نشير عمومًا إلى تحليل الحالة الثابتة للبرمجيات الضارة على أنه التعرف على الإجراءات التي ستنفذها البرمجيات الضارة. يتضمن هذا عمومًا أخذ برنامج ثنائي تم تحويله برمجيًا ثم إلغاء تحويله البرمجي وقراءة التعليمات البرمجية الناتجة. البديل هو التحليل الديناميكي عند تشغيل البرمجيات الضارة ثم مراقبة سلوكها.
يتمتع التحليل الثابت ببعض المزايا مقارنة بالتحليل الديناميكي، أولاً، بما أنك لا تقوم بتشغيل البرمجيات الضارة، فإن احتمالية إصابتك أقل (وهناك حالات نادرة من البرمجيات الضارة التي يمكنها الخروج من الجهاز الظاهري أو بيئة اختبار معزولة). وأيضًا إذا لم تقم بتشغيل البرمجيات الضارة فمن غير المرجح أن تُنبه ممثل التهديد إلى أنه تم الكشف عن برمجيته الضارة، وبالإضافة إلى ذلك قد تحاول البرمجيات الضارة المتطورة اكتشاف ما إذا كان يتم تحليلها عند تشغيلها. إذا كشفت عن محاولة تحليلها قد تغير سلوكها مما يمكن أن يؤدي إلى تحليل غير صحيح.
من ناحية أخرى، يمكن أن يكون التحليل الثابت أمرًا يستهلك الوقت وصعبًا للغاية ويمكن لمنشئي البرمجيات الضارة استخدام مجموعة متنوعة من تقنيات الطمس (مثل التشفير والتعبئة وتنزيل المراحل اللاحقة بطريقة ديناميكية) لجعل التحليل الثابت أكثر صعوبة.
في حين أن الكثير من تركيز مسار التعلّم هذا ينصب على التحليل الثابت للبرامج الثنائية المحولة برمجيًا، يجب مراعاة وجود أنواع من البرمجيات الضارة من الأسهل تحليلها متل تلك المكتوبة بلغات HTML/JavaScript، ولغات برمجة شيل (shell)، وما إلى ذلك.
للبدء في التحليل الثابت لنظام ويندوز، سنترك ريمنوكس وننتقل إلى مجموعة من البرامج التعليمية حول الهندسة العكسية البرمجيات الضارة لنظام ويندوز، علمًا أن هذا الدليل التعليمي يتضمن القليل من التحليل الديناميكي ولكنه يركز بشكل كبير على التحليل الثابت. من أجل الاتساق عليك استكمال التمارين الموضحة أدناه. تذكر أنه إذا وجدت أي أدوات تحبها وليست جزءًا من ريمنوكس فيمكنك إضافتها إلى الجهاز الظاهري الذي يعمل عليه نظام ريمنوكس. (يمكنك أيضًا البدء من جديد في أي وقت باستخدام جهاز ظاهري فارغ إذا كنت ترغب بذلك.)
نظام ويندوز: موارد التعلّم
الهندسة العكسية 101 و102 للبرمجيات الضارة على ويندوز
مجانيدورة ممتازة وشاملة حول الهندسة العكسية للبرمجيات الضارة في ويندوز. لاحظ أن هذه التمارين هي مقدمة ليست بسهلة وقد تضطر إلى إجراء دراسة إضافية (الموارد أدناه) من أجل فهم تمارين معينة وقد يستغرق إكمالها عدة أيام.
دورات OpenSecurityTraining2
مجانًا، مدفوع مع دعم المدرسدورات تُوفر دراسة متعمّقة جدًا لهندسة النظام منخفضة المستوى وعكسها.
الهندسة العكسية لنظام ويندوز باستخدام x64dbg
مجانيتُركز سلسلة الفيديو هذه بشكل خاص على استخدام x64dbg وهي أداة تصحيح أخطاء مفتوحة المصدر لعكس هندسة البرمجيات الضارة في ويندوز
بينما تُكتب برامج ويندوز عادةً باستخدام أداة تجميع x86 أو x64، تستهدف الملفات الثنائيات على أندرويد عادةً جهازًا افتراضيًا يسمى وقت تنفيذ أندرويد (ART)، وهو مشابه لجهاز جافا الظاهري. يمكن عادةً عكس الرمز المكون من وحدات البايت لوقت تنفيذ أندرويد تلقائيًا إلى لغة جافا على النقيض من الرمز المكون من وحدات البايت لهندسة x86/x64 الذي يمكن عكسه عادةً باستخدام الآلة فقط حتى مرحلة التجميع. قبل أن تتحمس أكثر، اعلم بوجود العديد من أدوات الطمس التي يمكنها بسهولة جعل التعليمات البرمجية المكتوبة بلغة جافا والتي تُطبق عليها الهندسة العكسية غير قابلة للقراءة تقريبًا، كما أن نظام أندرويد يدعم التعليمات البرمجية الأصلية من خلال مكتبة NDK library. لاحظ أن معظم أجهزة أندرويد تحتوي على هندسات تستند إلى ARM وليس x86/x64، لذلك ستحتاج إلى تعلم تجميع ARM لإجراء هندسة عكسية على معظم التعليمات البرمجية الأصلية لنظام أندرويد التي من المحتمل أن تجدها.
قد تواجه أيضًا لغة برمجة كولتين عند تعلّمك عن نظام أندرويد حيث تتحول برمجيًا كل من كولتين وجافا إلى نفس الرمز المكون من وحدات البايت وهما متشابهتان جدًا على المستوى المنخفض. عند إجراء تحليل ثابت على تطبيق أندرويد يجب ألا تكون لغة البرمجة الأصلية مهمة ونوصي بالتركيز على جافا لأن أدوات إلغاء التحويل البرمجي المتاحة تُحول وقت تنفيذ أندرويد إلى جافا، وليس كولتين.
كما هو الحال مع قسم التحليل الثابت لنظام ويندوز، يرتكز هذا القسم حول التحليل الثابت لنظام أندرويد على مسار ممتاز وشامل ولكن ليس سهلًا. ستحتاج على الأرجح إلى دراسة المزيد من أجل فهم المادة في المقرر الأساسي.
نظام أندرويد: موارد التعلّم
الهندسة العكسية 101 لتطبيقات أندرويد
مجانيدورة ممتازة وشاملة حول الهندسة العكسية لتطبيقات أندرويد. لاحظ أن هذه التمارين هي مقدمة ليست بسهلة لذا قد تضطر إلى إجراء دراسة إضافية (الموارد أدناه) من أجل فهم تمارين معينة وقد يستغرق إكمالها عدة أيام. قد تساعدك الموارد أدناه على استيعاب أقسام الدورة التدريبية.
كيفية التحليل الثابت لتطبيق أندرويد مشبوه
مجانيمقدمة متوسطة المستوى ممتازة للتحليل الثابت لتطبيقات أندرويد.
دورة تعلم جافا من Codecademy
مجانيمقدمة أساسية حول لغة جافا. حيث تحتاج إلى فهمها من أجل العمل مع برامج أندرويد.
أنشئ أول تطبيق أندرويد في جافا.
مجانيدورة أساسية حول بناء التطبيقات من Google. يجب أن تمنحك فكرة عن طريقة عمل تطبيقات أندرويد وتُحضرك للتعرف على التفاصيل الداخلية لتطبيقات أندرويد.
اجلس مع أحد النظراء أو مُرشِد لديه خبرة كبيرة في الفحص غير النشط ضد الخوادم على الإنترنت وبعدها:
تهانينا على إنهائك الوحدة 4!
حدد خانة الاختيار لتأكيد إكمالك والمتابعة إلى الوحدة التالية.
تحديد الوحدة الحالية على أنها مكتملة وحفظ التقدم للمستخدم.
لقد أكملت جميع الوحدات في مسار التعلم هذا.