تحليل الهندسة العكسية للبرمجيات الخبيثة.
تحليل الهندسة العكسية للبرمجيات الخبيثة.
يُعدّ تحديد بصمات الدوال مهمة بالغة الأهمية في تحليل الهندسة العكسية للبرمجيات الخبيثة. يُفيد تحديد بصمات الدوال في العديد من التطبيقات العملية، بدءًا من التحليل الجنائي الرقمي لمجموعات البرمجيات الخبيثة وصولًا إلى اكتشاف الثغرات الأمنية الحرجة.
يُمثّل أتمتة هذه العملية للملفات الثنائية تحديًا جوهريًا، نظرًا لافتقار الشفرة الثنائية إلى العديد من العناصر المجردة (مثل نماذج الدوال) الموجودة في الشفرة المصدرية. علاوة على ذلك، قد يؤدي التجميع إلى إزالة العديد من الميزات المهمة المتعلقة بالوظائف في شفرة المصدر، كما أن تعقيد الوقت والمساحة في الشفرة الثنائية أعلى من تعقيد شفرة المصدر.
من شأن نظام آلي فعال لتحديد بصمات الوظائف في ملفات البرامج الثنائية أن يساعد مهندسي الهندسة العكسية ومحللي الأمن، مما يقلل الأخطاء. في مساعيهم لتحديد بصمات الوظائف في الملفات الثنائية، غالبًا ما يستخدم مهندسو البرمجيات العكسية ومحللو الأمن أدوات استنساخ الشفرة (مايلز وكولبيرغ، 2005؛ سابجورنسن وآخرون، 2009)، وأدوات تشابه الشفرة الثنائية (بوركين وآخرون، 2013؛ ديفيد وآخرون، 2016؛ فليك، 2004)، وأدوات اكتشاف إعادة استخدام الشفرة الثنائية (الرابعي وآخرون، 2015؛ جاسكون وآخرون، 2013)، وفهارس ثنائية قابلة للبحث (ديفيد وياهف، 2014؛ دينغ وآخرون، 2016؛ خوو وآخرون، 2013)، وأدوات تشابه سلوك الوظائف (كومباريتي وآخرون، 2010). تُعدّ القدرة على تحديد بصمات الوظائف على مستوى الملفات الثنائية أمرًا بالغ الأهمية لتطبيقات الأمن، نظرًا لعدم توفر شفرة المصدر للبرمجيات الخبيثة دائمًا. وعادةً ما تُواجَه العديد من التحديات عند أتمتة عملية تحديد بصمات الوظائف في الملفات الثنائية للبرمجيات الخبيثة. أولًا، سهولة الاستخدام. تعتمد الأساليب السابقة على محركات البحث الثنائية (Khoo et al., 2013)، أو كشف الاستنساخ (Sæbjørnsen et al., 2009)، أو تحديد بصمات الدوال (David & Yahav, 2014)، ولا تُقدم سوى الدوال المرشحة الأعلى تصنيفًا. هذه المعلومات غير مفيدة ما لم يحتوي المستودع على دالة تُظهر درجة عالية من التشابه مع الدالة المستهدفة. مع ذلك، ونظرًا لاستخدام مُترجمات مختلفة، وتحسين المُترجمات، وتقنيات تحويل الشفرة، فمن غير المرجح أن تكون دالة غير معروفة مُشابهة لأي دالة في المستودع، وبالتالي لا فائدة تُذكر من إرجاع قائمة من النتائج ذات درجة التشابه المنخفضة.
ثانيًا، الكفاءة. يُمكن لنظام فعال أن يُساعد مهندسي الهندسة العكسية في العثور على النتائج فورًا. ستُوفر لهم المعلومات الفورية التي يحصلون عليها بشأن الشفرة الثنائية من نظام يُحدد بصمات مجموعة مُعينة من الدوال، توجيهًا لبدء بحثهم. ثالثًا، قابلية التوسع. يتعامل مهندسو البرمجيات العكسية مع عدد كبير من الملفات الثنائية يوميًا، لذا من الضروري تصميم نظام قابل للتوسع للتعامل مع ملايين الملفات.
يُعدّ تحديد بصمات الدوال الفردية في الشفرة الثنائية مفيدًا في العديد من تطبيقات الأمن السيبراني، بدءًا من التحليل الجنائي الرقمي لمجموعات بيانات البرمجيات الخبيثة وصولًا إلى اكتشاف الثغرات الأمنية الحرجة. مع ذلك، فإنّ الأساليب الحالية لتحديد بصمات الدوال لا تتمتع عادةً بالمرونة الكافية في مواجهة أساليب تحويل الشفرة أو استخدام مُترجمات مختلفة. علاوة على ذلك، يتمثل أحد نقاط الضعف الشائعة الأخرى لهذه الأساليب في أنها، عند الإبلاغ عن تشابه، لا تُزوّد مهندسي البرمجيات العكسية بأي معلومات حول الأدلة الكامنة. لسدّ هذه الفجوة، تُقدّم هذه الورقة البحثية "بلوميريا"، وهو أسلوب قابل للتطوير ومقاوم للتشويش، يعتمد على بنية مُتدرجة تتألف من ثلاث طبقات. تسترجع الطبقة الأولى أكبر عدد ممكن من الدوال المرشحة من خلال رصد الخصائص الإحصائية وسلوك الدوال وعلاقات الجوار بينها. ثم تُدرّب الطبقة الثانية حقلًا عشوائيًا شرطيًا خطيًا لتعلم الارتباطات بين خصائص الدالة ودلالاتها. صُمّمت هذه الطبقة لتقليل عدد النتائج الإيجابية الخاطئة.
أخيرًا، صُمّمت الطبقة الثالثة لتوفير معلومات حول الأدلة الكامنة من خلال جمع الآثار الجانبية التي تظهر من الدوال المرشحة التي اختارتها الطبقة السابقة. تقيّم دراستنا برنامج Plumeria في سياق عدة سيناريوهات: تحديد بصمات الدوال في الملفات الثنائية المشفرة/غير المشفرة؛ وتحديد بصمات الدوال عبر مُجمِّعات برمجية مختلفة؛ وتحديد بصمات الثغرات الأمنية المختلفة عبر مُجمِّعات برمجية وإصدارات متعددة؛ وتحديد بصمات دوال المكتبة القياسية. ثم نقيس أداء Plumeria على مشاريع واقعية وملفات ثنائية لبرمجيات خبيثة، ونقارنه بأحدث الحلول المتاحة. تُظهر نتائجنا تفوق Plumeria على الحلول الحالية، بدقة متوسطة تتجاوز 89%.

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