|
الموضوع ملطوش ماذا نعني عندما نقول (heuristic algorithm) : هي خوارزمية ليس بالضرورة أن نصل بها إلى حل و أحيانا نحصل على نتائج غير صحيحة (false positive) - نعلم جميعا أن مضادات الفيروسات تستخدم العديد من التقنيات منها ما هو قديم و منها ما هو جديد ومن هذه التقنيات : 1 - مراقبة ملفات النظام وتواريخ تعديلها و إنشائها و امور اخرى لكشف النشاط الفيروسي فهناك الكثير من الفيروسات تقوم بتعديل ملفات النظام ثم ترجع تاريخ التعديل إلى التاريخ السابق دون ان يشعر أحد بهذا التغيير .. طبعا هذه الطريقة لكشف الفيروسات قديمة وكثيرا ما يعبث الفيروس بالنظام دون اكتشافه 2 - توقيع الفيروس (Virus signature) : من أشهر الطرق و أكثرها استخداما حتى الان و قد أثبتت هذه الطريقة قوتها في وجه الفيروسات و تسمى أحيانا scan-string .. نقصد بتوقيع الفيروس سلسلة من البايتات يتميز بها الفيروس حيث يحتوي مضاد الفيروسات على قاعدة بيانات بهذه التوقيعات. ولكن كيف تحصل شركات أمن المعلومات على هذا التوقيع ؟ هناك خبراء في هذه الشركات مجرد وصول أحد الملفات إلى الشركة (طبعا الكثير من مضادات الفيروسات تتيح لك إرسال الملفات التي تشك بوجود فيروسات فيها إلى الشركة للتحليل) يقومون بتشغيل الفيروس ضمن debugger طبعا مع disassembler و بنظرة سريعة لاتتجاوز الدقيقة يحددون فيما إذا الملف فيه فيروس أم لا. أما مسألة الحصول على signature للملف فهي سهلة إذا كان الفيروس لايغير شكله و لا يستخدم تقنيات التشفير و لكنها تصبح معقدة في الحالة الأخرى ويلجا الخبراء إلى وضع الفيروس على جهاز يسمى بالضحية و تركه يصيب الملفات التي عليه ثم تمرر الملفات المصابة إلى برنامج يقوم باستخراج أقصر سلسلة يايتات تميز الفيروس والتي يضعها داخل الملف المصاب تسمى signature - هذا رائع فأين هي المشكلة ؟ هناك عدة مشكلات بدأت تظهر حديثا منها : 1 - ماذا لو كنت تتصفح الإنترنت بحثا عن كراك أو باتش لبرنامج قمت باستعارته من الشركة المنتجة له كما نفعل عادة طبعا أقول استعارة وليس .... ا لمهم بنسبة 90% سوف تحضر إلى جهازك فيروس أو أي نوع من أنواع التهديدات التي تسمى (maleware) ومن يدري ربما تصل إلى حد مسح بياناتك الشخصية و أشياء قد لا تخطر على بال أحد (الجزاء من جنس العمل) وماذا لو كنت طالبا في الهندسة المعلوماتية ؟! أبشر بأحدث فيروسات العالم ..كل ذلك سيجري و مضاد الفيروسات يتفرج !! 2 - الجهد الذي بدأ يزداد كثيرا على المسؤولين عن متابعة و كشف الفيروسات وخاصة أن عدد الفيروسات يتضاعف كل 9 أشهر (كارثة معلوماتية) 3 - الحاجة الدائمة إلى تحديث البرنامج المضاد للفيروسات (نحنا ما بيعجبنا التحديث لأنو ببساطة key is invalid)
- الحاجة إلى تقنية جديدة : إن الأسباب السابقة وغيرها دفعت شركات الأمن إلى البحث عن تقنية كشف عامة و ليست محددة كالتقنيات التقليدية السابقة و لتحقيق ذلك لجؤوا إلى الذكاء الصنعي (ARTIFICIAL INTELLIGENCE) و الحل هو HEURISTIC SCANNING
- HEURISTIC SCANNING : لا تعتمد هذه التقنية على قاعدة بيانات عن الفيروسات و إنما على محاكاة سلوك الإنسان المشروح سابقا (سلوك الخبراء) في كشف الفيروسات و جعل المحاكاة السابقة الية دون تدخل الخبراء - الفكرة الأساسية : تماما كما يفعل الإنسان فإن محرك الكشف عن الفيروسات (Heuristic engine) يعرف مسبقا بعض أشكال أنشطة الفيروسات مثل : 1 - تهيئة أقراص التخزين (format) مثال : MOV AH,5 INT 13h استدعاء مقاطعة لتهيئة القرص قلما تفعلها البرامج العادية 2 - الإقامة في الذاكرة Memory resident تفعلها الفيروسات و العديد من البرامج 3 - البحث عن ملفات EXE - COM الفيروسات التي تصيب البرامج التنفيذية 4 - محاولة الوصول إلى الملفات و الكتابة عليها 5 - استخدام بعض تقنيات التشفير 6 - استخدام تقنيات تغيير الشكل 7 - محاولة إرسال البريد إلى عدد كبير من الأشخاص 8 - استدعاءات نظام غير نظامية يوجد عدد كبير من الأنشطة التي تقوم بها الفيروسات على الأجهزة المصابة و تحديد هذه الأنشطة بدقة و إعطائها عوامل تقييم مناسب يحدد مى قوة مضاد الفيروسات في هذه التقنية - الية تحليل الملف المشكوك فيه : يقوم (Heuristic engine) باستخدام تقريبا نفس أدوات الإنسان disassembler - emulater - analyzer ويقوم بتشغيل الفيروس و يبحث ضمنه عن تسلسل تعليمات تؤدي إلى أنشطة فيروسية (طبعا التعليمات الرمزية) و يسجل جميع الأنشطة التي حصل عليها
- متى يكون مضاد الفيروسات قادرا على إبلاغك عن وجود فيروس ؟ هناك مشكلتان قد يقع بهما مضاد الفيروسات الذي يعتمد هذه التقنية : 1 - false positive : تبليغ خاطئ عن وجود فيروس و هذا حصل معي مع أحد الملفات و الذي هو عبارة عن برنامج يحاكي لعبة صغيرة (C++ job in 2nd year) والرسالة كانت من Eset nod32 كالتاليprobably unknown NewHeur_PE virus و طبعا الملف ليس فيروس 2 - false negative : عدم التبليغ عن وجود فيروس و هو فعلا موجود
يوجد طريقتين لتحديد وجود فيروس :
weight-based : تعطى الأنشطة السابقة عوامل تقييم مختلفة حسب أهمية النشاط فمثلا تهيئة القرص يعطى عامل تقييم أكبر من الإقامة في الذاكرة لان الكثير من البرامج العادية يقوم بذلك و القليل منها يهيئ القرص و بعد ان يكتشف مضاد الفيروسات هذه الأنشطة يقوم بجمع عوامل التقييم فإذا كانت أكبر من حد معين فإنه يبلغ عن وجود فيروس غير معروف rule-based : تقارن الأنشطة مع مجموعة من القواعد (knowledge base) فإذا تحققت بعض الشروط فإنه يبلغ عن وجود فيروس غير معروف و هذه الطريقة هي الطريقة الأحدث و المستخدمة حاليا
|