BASS - إطار للتوليف التلقائي للتوقيعات المضادة للفيروسات

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



مراجعة قصيرة




تتغير صورة التهديدات بسرعة - تظهر الهجمات السيبرانية الجديدة باستمرار ، والهجمات القديمة أصبحت أكثر تطوراً. في هذه الظروف ، يواجه المهنيون الأمنيون تحديات متزايدة التعقيد. في كل يوم ، يتعين عليهم معالجة وتحليل ملايين العينات من البرامج الضارة التي لم تكن معروفة سابقًا والجديدة تمامًا ، وتطوير توقيعات فعالة لمكافحة الفيروسات لوصف كامل أسر البرمجيات الخبيثة ، وتوفير قابلية تطوير الأدوات مع زيادة عدد العينات للتحليل. في الوقت نفسه ، من الضروري مراعاة الموارد المحدودة لأدوات أتمتة تحليل البرامج الضارة. لمساعدة محترفي تكنولوجيا المعلومات على التعامل مع هذه التحديات المتنوعة ، تقدم Talos منصة جديدة مفتوحة المصدر تسمى BASS.

يعد BASS (يُعرف باسم "bass") إطارًا لإنشاء التواقيع المضادة للفيروسات تلقائيًا استنادًا إلى عينات من مجموعات مكونة مسبقًا من الأكواد الخبيثة. يهدف إلى تقليل استهلاك الموارد من خلال ClamAV الأساسية عن طريق زيادة نسبة التوقيعات المستندة إلى القالب بالنسبة لتوقيعات التجزئة ، وتبسيط عمل المحللين الذين يقومون بتطوير التواقيع القائمة على القوالب. بفضل دعم حاوية Docker ، يتم قياس إطار العمل جيدًا.

تجدر الإشارة إلى أنه حتى الآن لا يتوفر سوى إصدار ألفا من BASS ولا يزال هناك الكثير الذي يتعين استكماله. يحتوي هذا المشروع على شفرة مفتوحة المصدر ، ونحن نعمل بنشاط على ذلك ، لذلك سنكون سعداء بأي ملاحظات من المجتمع والتوصيات لتحسينه. شفرة المصدر ل BASS متاحة هنا .

تم الإعلان عن مشروع BASS في عام 2017 في مؤتمر REcon في مونتريال ، كندا.

موضوعية


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



لمدة ثلاثة أشهر ، من فبراير إلى أبريل 2017 ، تمت إضافة 560،000 توقيع جديد إلى قاعدة بيانات ClamAV ، أي بزيادة قدرها 9500 توقيع يوميًا. جزء كبير منهم تلقينا تلقائيا في شكل توقيعات التجزئة. تحتوي هذه التواقيع على عيب واحد كبير مقارنةً بالتوقيعات الخاصة بالقالب أو الكود (هذان نوعان آخران مدعومان من قِبل ClamAV): يتوافق توقيع البعثرة مع ملف واحد فقط. بالإضافة إلى ذلك ، تؤدي زيادة عدد توقيعات التجزئة إلى حقيقة أن قاعدة بيانات ClamAV تشغل مساحة أكبر من الذاكرة. هذا هو السبب في أننا نفضل التوقيعات القائمة على الأنماط. إنها أبسط وأسرع بكثير في الإدارة من bytecode ، وفي نفس الوقت تسمح لك بوصف مجموعات كاملة من الملفات.

BASS


تم تصميم إطار عمل BASS لتسهيل إنشاء قوالب تستند إلى توقيع ClamAV. فإنه يولد لهم تلقائيا ، وتجهيز شرائح من التعليمات البرمجية القابلة للتنفيذ الثنائية.



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

في المرحلة الأولى ، تمر الحالات الخبيثة عبر فاتحي الحزم من ClamAV. يمكنه فك أرشيفات التنسيقات المختلفة والملفات القابلة للتنفيذ المضغوطة (على سبيل المثال ، UPX) ، وكذلك استخراج الكائنات المضمّنة (مثل ملفات EXE داخل مستندات Word). يتم تحليل القطع الأثرية المستلمة بعناية ، ويتم جمع المعلومات. الآن للمرحلة التالية ، التصفية ، نستخدم أحجامها وسلسلة UNIX السحرية.

ثم يتم تصفية مجموعة التعليمات البرمجية الضارة. إذا كانت الملفات لا تفي بمتطلبات BASS (في حين أن النظام الأساسي يعمل فقط مع الملفات القابلة للتنفيذ PE ، ولكن ليس من الصعب إضافة دعم للملفات الثنائية ELF و MACH-O) ، يتم حذفها من الكتلة أو ، إذا كان هناك عدد قليل جدًا من الكائنات المتبقية ، فسيتم رفض الكتلة تمامًا.

ينتقل الكتلة المصفاة إلى مرحلة إنشاء التوقيع. أولاً ، يتم تفكيك الملفات الثنائية. للقيام بذلك ، نستخدم IDA Pro ، ولكن يمكن استبداله بسهولة بمفكك تشفير آخر بقدرات مماثلة ، على سبيل المثال ، radare2.



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

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



يعد الرسم الفرعي ƒ1 ، ƒ2 ، ƒ4 ، ƒ6 مع مؤشرات تشابه عالية في الرأس (انظر الشكل أعلاه) مرشحًا ممتازًا لدور وظيفة مشتركة.

بمجرد تعيين العديد من هؤلاء المرشحين ، نقوم بمقارنتها بالقائمة البيضاء لتجنب إنشاء توقيعات استنادًا إلى الوظائف العادية للمكتبات المرتبطة بشكل ثابت بالعينة. للقيام بذلك ، يتم إرسال الوظائف إلى مثيل Kam1n0 ، الذي تم ملء قاعدة البيانات به سابقًا مع وظائف من عينات واضحة تمامًا. إذا تم اكتشاف استنساخ لأي وظيفة ، يتم تكرار إجراء اختيار الرسم البياني لتحديد الأكثر ملاءمة من الوظائف الباقية. إذا لم يكشف التحقق عن أي شيء ، يتم تمرير مجموعة الوظائف إلى المرحلة التالية.

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

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



أخيرًا ، يجب عليك اختباره قبل نشر التوقيع. نحن نتحقق تلقائيًا من التوقيع باستخدام مجموعة الاختبارات الخاصة بنا لإيجابيات خاطئة. لمزيد من الموثوقية ، نستخدم Sigalyzer ، وهي ميزة جديدة في المكون الإضافي CASC IDA Pro ClamAV لإنشاء وتحليل التواقيع (سيتم تحديثه لاحقًا). يقوم Sigalyzer بتمييز أقسام من الملف الثنائي التي تطابق توقيع ClamAV الذي كان يعمل من أجله. وبالتالي ، يتم تشكيل تمثيل مرئي للتوقيع.

هندسة معمارية


يتم تطبيق BASS كمجموعة من حاويات Docker. تتم كتابة الإطار في Python ويتفاعل مع جميع الأدوات اللازمة من خلال خدمات الويب. تم إنشاء البنية عن طريق القياس مع مشروع VxClass ، الذي أنتج أيضًا توقيعات ClamAV باستخدام IDA Pro و BinDiff ، ولكن سيتم إغلاقه لاحقًا ، وعلى عكس BASS ، لا يمكن للجمهور الوصول إليه.



قيود


يعمل BASS حصريًا مع الملفات التنفيذية الثنائية ، حيث يتم إنشاء التوقيع من نموذج التعليمات البرمجية. بالإضافة إلى ذلك ، فإنه يحلل فقط x86 و x86_64 القابل للتنفيذ. قد يظهر دعم للبنيات الأخرى في المستقبل.

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

ومرة أخرى نريد أن نذكرك بأن BASS في مرحلة اختبار ألفا ، وحتى الآن لا يعمل كل شيء بسلاسة. لكننا نأمل أن نعود بالنفع على المجتمع من خلال تطوير هذا الإطار كمشروع مفتوح المصدر ، وسنكون سعداء بأية أفكار ونقد.

تطبيق


الفرق بين أكبر سلسلة فرعية وأكبر مشترك مشترك

يوضح الرسم التوضيحي التالي الفرق بين أكبر سلسلة فرعية وأكبر مشترك مشترك. يشار إلى أكبر تتابع شائع في نشرتنا من خلال اختصار اللغة الإنجليزية LCS.



هذا كل شيء. وبالفعل في 20 يونيو ، سيكون من الممكن التعرف بشكل تفصيلي على برنامج الدورة التدريبية في البيت المفتوح ، والذي سيعقد في وضع الويبينار.

Source: https://habr.com/ru/post/ar456426/


All Articles