الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما هي تواقيع الفايروسات؟

بدأه Rasool Micro في 20 ديسمبر 2011 · 5 رد · 1,278 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام وعليكم ورحمة الله وبركاته

اخواني لقد قرأت الكثير عن برامج مكافحة الفايروسات وقرأت مصطلح يدعى ب"توقيع الفايروس virus signature" فما هو هذا المصطلح؟ ( ارجو الشرح الوافي وغير الغامض مع الروابط ان امكن)

وكيف اقوم باكتشافه واستخراجه من البرامج (الفايروسات او برامج اخرى) برمجياً ونظرياً؟؟؟؟؟؟؟؟؟؟

وشكراً

#2

السلام عليكم

توقيع الفايروس :- هو عبارة عن مجموعه متسلسلة من البيانات والاشكال المتداولة من التواقيع تكون على الاشكال التالية

hex

string

وذلك حسب طريقة محرك البحث عن التواقيع المستخدم في برنامج الحماية

الان بالنسبة لطريقة استخراج التواقيع بالنسبة للطريقة التي كنت استخدمها ببرنامج olly حيث انني كنت ابحث عن كود معين

واخذ الhex الخاص به واضعه في قاعدة البيانات.

والhex ممكن ان يكتب ب regular expression

regular expression فهو نوع ذكي او طريقة جيدة من التواقيع حيث يتم من خلاله وضع تعبير معين للتوقيع

مثلا عمليه قفز مجموعة من البايتات في الملف الذي يتم البحث فيه.

يستخدم الhex بشكل عام في البحث بداخل الملفات التنفيذية

اما الstring

هو يكون على شكل نص عادي يستخدم هذا النوع بشكل عام في البحث بداخل الملفات النصية مثل صفحات الانترنت والاسكربتات

طبعا ممكن كتابة regular expression به

291964_260506123967115_206850989332629_1001538_45132_n.jpg

اللهم إني أعوذ بك من علم لا ينفع ، ومن قلب لا يخشع ، ومن نفس لا تشبع ، ومن دعوة لا يستجاب لها

#3
ayash كتب:

السلام عليكم

توقيع الفايروس :- هو عبارة عن مجموعه متسلسلة من البيانات والاشكال المتداولة من التواقيع تكون على الاشكال التالية

hex

string

وذلك حسب طريقة محرك البحث عن التواقيع المستخدم في برنامج الحماية

الان بالنسبة لطريقة استخراج التواقيع بالنسبة للطريقة التي كنت استخدمها ببرنامج olly حيث انني كنت ابحث عن كود معين

واخذ الhex الخاص به واضعه في قاعدة البيانات.

والhex ممكن ان يكتب ب regular expression

regular expression فهو نوع ذكي او طريقة جيدة من التواقيع حيث يتم من خلاله وضع تعبير معين للتوقيع

مثلا عمليه قفز مجموعة من البايتات في الملف الذي يتم البحث فيه.

يستخدم الhex بشكل عام في البحث بداخل الملفات التنفيذية

اما الstring

هو يكون على شكل نص عادي يستخدم هذا النوع بشكل عام في البحث بداخل الملفات النصية مثل صفحات الانترنت والاسكربتات

طبعا ممكن كتابة regular expression به

اخي تعريف الذي اعطيتني اياه غامض بعض الشي هل قصدك بأنه جزء من الملف التنفيذي؟ وهذا الجزء يميزه عن باقي البرامج ام ماذا؟؟؟!!!!

وارجوا ان تعزز لي بمثال عملي مع الصور ان امكن (يوجد في الملحقات برنامج) كيف استخرج التوقيع من هذا البرنامج مع اني حملت برنامج olly وأخذت دروس فيه فيكف اخرج منه هذا التوقيع

لاني حالياً اقوم بمشروع محرك بحث عن الفايروسات.......

تم تعديل هذه المشاركة بواسطة Rasool Micro في 21 ديسمبر 2011 في 16:07

#4

توقيع الفيروسات هو "أي" مُعرّف يمكن أن يُميز به فيروس دون غيره من الملفات أو الفيروسات، إذا المفهوم واسع ..

يمكن أن يكون حجم الملف توقيع له.

يمكن أن يكون حجم الملف مع تاريخ إنشاءه توقيع له.

يمكن أن يكون تاريخ إنشاء الملف مع عدد أقسامه توقيع له... (جميع هذه البيانات يمكن استخراجها بسهولة من ترويسات الملف. راجع بنية ملفات PE.)

يمكن أن يكون اجتماع عدة دوال API في ملف ...يشي بخبثه وبالتالي هذا الاجتماع توقيع له ...

يمكن لتسلسل 10001100 معين في الملف أن يكون توقيع له. (غالبا ما يتعامل المبرمجون مع هذا التسلسل بالنظام Hex).

يمكن أن يكون MD5 أو SHA للملف أن يكون توقيع للملف ...

وبالمناسبة يمكن أن يكون تسلسل مثل 1؟000؟1؟001 حيث ؟ تسمى wildcard ويمكن أن يشغل أي قيمة بلا تأثير...

اذا هناك تقنيات عديدة لاعتماد التواقيع منها البسيطة الى المعقدة ..

أما كيف تتم المقارنة:

1- فتح الملف المراد فحصه.

 CreateFile()

2- إنشاء تخطيط ذاكري له.

.CreateFileMapping()

3- نقل جزء الملف المراد مقارنته إلى الذاكرة

.MapFileView()

4- البدء بعملية المقارنة.

بالنسبة لأنظمة Unix-like كـ لينكس، فهذه الدوال المستخدمة:

open() / creat()
shm_open
mmap

بالنسبة لكيف تبدأ المقارنة عمليا:

يتم تخزين التواقيع في قاعدة بيانات .. ما المقصود بمفهوم "قاعدة البيانات" هنا ؟

البرامج المتقدمة تقوم ببساطة:

قبل القيام بعملية الفحص، يقوم البرنامج بقراءة قاعدة البيانات ثم يقوم بتصميم machine state على الذاكرة لهذه البيانات، ثم وعند القيام بفحص ملف معين يقوم البرنامج بإمرار شجرة الـ machine state على الملف برمته فإذا انطبق فرع من هذه الـmachine state على سلسلة موجودة في الملف قيد الفحص فهذا يعني أنه فيروس. أحد الخوارزميات المشهور في القيام بذلك هي Aho-Corasick.

يعني المقارنة تتم من قاعدة البيانات إلى الملف وليس من الملف إلى قاعدة البيانات.

كمبتديء ستقوم بالعكس.. يعني ستستخرج التوقيع من الملف قيد المسح ثم ستقارنه إلى قاعدة البيانات بحثا عن أي تتطابق! وهذا أمر بسيط للغاية خصوصا بوجود مثل SQLite و Berkeley DB .. وطبعا هذه الطريقة بسيطة لكنها سهلة التجاوز من المخربين وصانعي الفيروسات.

تم تعديل هذه المشاركة بواسطة A.S Hack في 21 ديسمبر 2011 في 17:26

1

" إن الله كتب الإحسان على كل شيء"

::

الإرادة ... تحقق السيادة.

#5

جيد

#6
A.S Hack كتب:

توقيع الفيروسات هو "أي" مُعرّف يمكن أن يُميز به فيروس دون غيره من الملفات أو الفيروسات، إذا المفهوم واسع ..

يمكن أن يكون حجم الملف توقيع له.

يمكن أن يكون حجم الملف مع تاريخ إنشاءه توقيع له.

يمكن أن يكون تاريخ إنشاء الملف مع عدد أقسامه توقيع له... (جميع هذه البيانات يمكن استخراجها بسهولة من ترويسات الملف. راجع بنية ملفات PE.)

يمكن أن يكون اجتماع عدة دوال API في ملف ...يشي بخبثه وبالتالي هذا الاجتماع توقيع له ...

يمكن لتسلسل 10001100 معين في الملف أن يكون توقيع له. (غالبا ما يتعامل المبرمجون مع هذا التسلسل بالنظام Hex).

يمكن أن يكون MD5 أو SHA للملف أن يكون توقيع للملف ...

وبالمناسبة يمكن أن يكون تسلسل مثل 1؟000؟1؟001 حيث ؟ تسمى wildcard ويمكن أن يشغل أي قيمة بلا تأثير...

اذا هناك تقنيات عديدة لاعتماد التواقيع منها البسيطة الى المعقدة ..

أما كيف تتم المقارنة:

1- فتح الملف المراد فحصه.

 CreateFile()

2- إنشاء تخطيط ذاكري له.

.CreateFileMapping()

3- نقل جزء الملف المراد مقارنته إلى الذاكرة

.MapFileView()

4- البدء بعملية المقارنة.

بالنسبة لأنظمة Unix-like كـ لينكس، فهذه الدوال المستخدمة:

open() / creat()
shm_open
mmap

بالنسبة لكيف تبدأ المقارنة عمليا:

يتم تخزين التواقيع في قاعدة بيانات .. ما المقصود بمفهوم "قاعدة البيانات" هنا ؟

البرامج المتقدمة تقوم ببساطة:

قبل القيام بعملية الفحص، يقوم البرنامج بقراءة قاعدة البيانات ثم يقوم بتصميم machine state على الذاكرة لهذه البيانات، ثم وعند القيام بفحص ملف معين يقوم البرنامج بإمرار شجرة الـ machine state على الملف برمته فإذا انطبق فرع من هذه الـmachine state على سلسلة موجودة في الملف قيد الفحص فهذا يعني أنه فيروس. أحد الخوارزميات المشهور في القيام بذلك هي Aho-Corasick.

يعني المقارنة تتم من قاعدة البيانات إلى الملف وليس من الملف إلى قاعدة البيانات.

كمبتديء ستقوم بالعكس.. يعني ستستخرج التوقيع من الملف قيد المسح ثم ستقارنه إلى قاعدة البيانات بحثا عن أي تتطابق! وهذا أمر بسيط للغاية خصوصا بوجود مثل SQLite و Berkeley DB .. وطبعا هذه الطريقة بسيطة لكنها سهلة التجاوز من المخربين وصانعي الفيروسات.

اشكرك اخي على الاجابة الجيدة وانا اسف لان لم ارد عليك منذ فترة لاني كنت ابحث على مفهوم MD5 وSHA

لكن لم اوفق في فهمه بشكل كامل فهل لك ان تشرح لي ماذا يعني الMD5؟

وبأي خوارزمية بحث تنصح كمبتدئ؟

وهل لديك مصادر خارجية تفيدني لاني حالياً اصنع انتي فايروس بسيط؟

مواضيع مشابهة