Home أمن المعلومات تحليل البرامج الخبيثة Malware Analysis
تحليل البرامج الخبيثة Malware Analysis

تحليل البرامج الخبيثة Malware Analysis

660
6

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

البرامج الخبيثة Malware هي برامج عادية مثل التي نستخدمها بشكل دوري، ولكن لها طابع خبيث لا نعلم عنه شيئاً حيث تختفي في بعض الأحيان خلف شاشات مبهرجة أو ألعاب قد تحبها (Trojans) وأحياناً سوف تعمل وأنت لا تعلم بأنها تسرح وتمرح على حاسوبك  (Root kits) وهذا ما يجعلها خبيثة وما يجعل برامج الأنتي فيروس في حالة بحث دائم عنها. هذا الطابع الخبيث قد يكون مجرد طباعة رسالة على الشاشة كل فترة معينة، وقد يكون مجرد سرقة كل ما تكتبه على لوحة مفاتيحك وإرساله لجهة معينة، وقد يكون حذف وتدمير جميع محتويات القرص D في جهازك. كل هذه الأدوار هي مجرد أدوار تلعبها البرامج الخبيثة بأشكالها وألوانها المتعددة والتي يحدد هدفها قبل إطلاقها وكتابتها ونشرها بين العموم.

فالبرنامج الخبيث الذي ينتظر لوحة مفاتيحك بفارغ الصبر لكي يلتقط كل ما تقوم بكتابته (Key loggers) يختلف هدفه عن البرنامج الخبيث الذي يقوم كل فترة بإصدار رسائل إعلانية مزعجة لك (Spyware) ويختلف هدفه عن البرنامج الخبيث الذي لا يفعل شيئاً سوى استقبال الأوامر من جهاز بعيد لكي يستفيد من موارد حاسوبك ويقوم بتنفيذ خوارزمية على معالجك الذي لا يقوى على منع تلك الهجمات ولا التصدي لها بأي شكل من الأشكال.

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

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

معرفة طبيعة عمل الفيروس أثناء إصابته للجهاز وكيف أصاب الجهاز والأضرار التي سببها هي من المعلومات المهمة جداً والتي تبحث عنها أي منظمة تم إصابتها بأحد الفيروسات، ولهذا زاد الطلب على المختصين بهذه المهنة “محلل البرمجيات الخبيثة” وهذا مقال منظمة SANS (بعنوان ” Coolest Jobs in Information Security”) خير دليل على ذلك والذي يحتوي على قائمة أكثر الوظائف جذباً في مجال أمن المعلومات حيث حازت مهنة “محلل البرمجيات الخبيثة” على المهنة السادسة في قائمة المهن [1].

أحد المواضع الأخرى والتي تتجلي فيه فائدة تخصص “تحليل البرمجيات الخبيثة” هو في الحالات التي لا يمكن لبرنامج مضاد الفيروسات كشف ذلك الفيروس، وهي حالات كثيرة جدأ وذلك بسبب تزايد عدد تلك الفيروسات بشكل رهيب يومياً وصعوبة تحديث الأنتي فيروس لجميع هذه الفيروسات، إضافة إلى أن الفيروسات الحديثة يصعب اكتشافها بالطرق التقليدية (كالفحص عن تواجد توقيع الفيروس) وذلك بسبب استخدام الفيروسات لطرق متقدمة تجعله مشفر عن أعين برامج الحماية ويقوم بفك تشفيره بنفسه عندما يعمل بصورة آلية. كل هذا يجعل برامج الحماية دائماً تأتي متأخرة وبشكل بطئ أيضاً ، وقد تحدثت مجلة hakin9 في عددها Mobile Malware عن موت برامج الحماية في مقالة بعنوان “Is Anti-virus Dead, The answer is YES” وان كان ما زال لبرامج الحماية دور في الحماية وتقليص الأضرار بشكل كبير خصوصاً في البرامج الخبيثة القديمة أو التي تعدل من البرمجيات الخبيثة المعروفة، إلا أن الاعتماد عليها بشكل كلي في الحماية لا يكفي خصوصاً في حال معرفة الأسباب والحوادث التي سببها وللأسباب الأخرى التي ذكرت قبل قليل [2].

البداية في تحليل البرمجيات الخبيثة

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

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

1)      أدوات توفير بيئة عمل أمنة Safe Environment

2)      أدوات متابعة سلوك النظام بشكل دائم System Monitoring.

3)      أدوات تحليل البرنامج التنفيذي نفسه Software Analysis

 

أدوات توفير بيئة العمل الآمنة The Safe Environment

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

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

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

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

 

الشكل رقم (1) يبين الجهاز التخيلي أثناء العمل
الشكل رقم (1) يبين الجهاز التخيلي أثناء العمل

 

أدوات متابعة سلوك النظام System Monitoring

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

أدوات شركة مايكروسوفت SysInternals وهي مجموعه من أشهر الأدوات (اشترتها الشركة قبل سنوات هي ومبرمج هذه البرامج) التي تساعد في فهم سلوك النظام فمنها ما يراقب اتصالات الشبكة عبر بروتوكول TCP/UDP (مثل برنامج TCPView) ومنها ما يراقب مسجل النظام (مثل برنامج Registry Monitoring) ومنها ما يراقب البرامج والعمليات في النظام (مثل برنامج Process Explorer و Process Monitor) ومنها ما يوضح لك قائمة جميع البرامج التي تعمل عند بدء التشغيل (Autoruns). وفيما يلي توضيح لبعض أشهر هذه البرامج التي تفيد محللي البرامج الخبيثة.

    • الأداة FileMon: وهذه الأداة تراقب أي عملية تجري على الملفات والمجلدات في النظام ويمكن أن تشاهد كل عمليات القراءة والكتابة التي تتم على الملفات من خلال البرامج والعمليات الموجودة على النظام. وبالتالي باستخدامك هذه الأداة يمكنك معرفة الملفات التي يقوم البرنامج الخبيث بفتحها أو الكتابة فيها أو لقرائه منها أيضاً يمكنك معرفة الملفات التي يقوم البرنامج الخبيث بحذفها. الشكل رقم (2) يبين الأداة FileMon .
الشكل رقم (2) يبين أداة مراقبة العمليات على الملفات التي تقوم بها جميع العمليات على النظام
الشكل رقم (2) يبين أداة مراقبة العمليات على الملفات التي تقوم بها جميع العمليات على النظام

 

  • الأداة TCP View: هذه الأداة تراقب كل الاتصالات الشبكية (TCP or UDP) التي تجريها العملية أو البرنامج وتقوم بعرض عنوان الجهة الأخرى التي قام البرنامج بالاتصال بها وعلى أي منفذ تم ذلك ولكنها لا توضح لك البيانات المرسلة أو القادمة. الشكل (3) يبين الأداة TCPView تحت العمل.
الشكل رقم (3) يبين الأداة TCPView لمشاهدة جميع الاتصالات التي تقوم بها البرامج
الشكل رقم (3) يبين الأداة TCPView لمشاهدة جميع الاتصالات التي تقوم بها البرامج

 

  • الأداة RegMon: هي أداة تراقب مسجل النظام Registry وتقوم بعرض جميع العمليات التي تحاول الوصول لمسجل النظام سواء كانت عمليات قراءة أو كتابة أو حذف كما توضح المفاتيح التي تستخدمها العملية، وهكذا يمكن معرفة المفاتيح التي يستخدمها البرنامج الخبيث أثناء عمله. الشكل رقم (4) يبين الأداة تحت العمل.
الشكل رقم (4) يبين جميع المفاتيح التي تتعامل معها جميع العمليات على النظام
الشكل رقم (4) يبين جميع المفاتيح التي تتعامل معها جميع العمليات على النظام
  • الأداة Process Explorer: يمكن تشبيه هذه الأداة ببرنامج ال Task Managerالموجود في أنظمة ويندوز حيث يعرض جميع العمليات التي تعمل في النظام ولكنه يوضح تفاصيل أخرى عن العملية مثلاً ملفات الDLL التي تستخدمها هذه العملية والمقابض Handle واتصالات الشبكة والذاكرة المستخدمة ونسبة استخدام العملية من المعالج وغيرها من المعلومات الأخرى. الشكل (5) يبين الأداة تحت العمل.
الشكل رقم (5) يبين جميع العمليات والبرامج التي تعمل على النظام
الشكل رقم (5) يبين جميع العمليات والبرامج التي تعمل على النظام

من البرامج الأخرى التي تفيد محللي البرامج الخبيثة والتي برمجت بواسطة جهات مختلفة، منها:

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

أدوات فهم وتحليل البرنامج نفسه Software Analysis

وباستخدام هذه الأدوات يمكنك معرفة محتوى البرنامج التنفيذي ومعرفة النصوص التي فيه ويمكنك قرائه كود البرنامج بلغة الأسمبلي وذلك بعد تحويل البرنامج التنفيذي إلى هذه الصيغة باستخدام ما يعرف ب Disassembly فيما يلي توضح لأهم البرامج المستخدمة في تحليل البرامج الخبيثة وغير الخبيثة:

  • الأداة BinText: وعن طريق هذه الأداة يمكنك الحصول على جميع النصوص String الموجودة داخل الملف التنفيذي، وهي أداة مهمة حيث تستخرج لك جميع الأسماء والمواقع والمكتبات التي تستخدم في الملف التنفيذي وفي ملفات ال Resources التابعة للملف التنفيذي وبالتالي يستطيع المحلل أخذ فكرة جيدة عن هذا البرنامج الخبيث. الشكل رقم (10) يبين استخدام هذه الأداة.
  • أدوات الHex Editor : ومن خلال هذه الأدوات يمكن معرفة محتوى البرنامج التنفيذي أو أي ملف أخر، حيث تعرض هذه البرامج محتوى البرنامج الذي يراد تحليله بترميز السادس عشر وتقوم بمحاولة تحويل أي ASCII String إلى شكل يمكن للمستخدم قراءته. ومن أشهر هذه الأدوات Hex workshop و HxD. الشكل رقم (6) يوضح استخدام الHex Workshop.
  • أدوات تحليل البرمجيات Disassembler/Debugger: وهذه الأدوات تحول البرنامج التنفيذي إلى كود بلغة الأسمبلي ومن خلال هذا الكود يمكن للمحلل معرفة ماذا يفعل البرنامج الخبيث أثناء عمله  ولكن في العادة يصعب الاعتماد على كود لغة الأسمبلي في فهم البرامج حيث أن الكود قد يكون معقداً ويحتوي على الكثير من التفرعات والجمل الشرطية لذلك يستخدم المحللون الDebuggers حيث يقوموا بتشغيل البرنامج تحت ال Debugger والذي سيقوم بتنفيذ البرنامج سطر بسطر وسوف يشاهد المحلل تأثير كل سطر على حده، إضافة إلى الاستفادة من إمكانيات الDebuggers وذلك بوضع نقاط معينة في البرنامج يتم التحليل منها. أشهر هذه البرامج هو برنامج IDA pro التجاري و برنامج OllyDbg المجاني والغني بالكثير من الإضافات المفيدة. الشكل رقم (13) يوضح استخدام OllyDbg.

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

 

مثال مبسط لتحليل أحد البرامج الخبيثة:

من أحدى الأساسيات في أنظمة الويندوز هي أن أي ملف تنفيذي  يكون مكون من عدة أقسام لكل منها هدف ما (تسمى بنية الملفات التنفيذي في أنظمة ويندوز ب Portable Executable Format واختصارا PE Format) . لنأخذ أحد الأمثلة على برنامج الآلة الحاسبة (أو أي برنامج تنفيذي آخر) في جهازك ولنقوم بفتحها بمحرر الهكس Hex Editor وليكن HxD ، وستجد أن أول حرفين في هذا الملف هي MZ (جميع الملفات التنفيذية يجب أن تبدأ بهذين الحرفين)، ويعود الحرفين MZ إلى اسم مصمم بنية الملفات PE. الشكل (6) يبين ذلك باستخدام أحد برامج الHex Editors .

 الشكل رقم (6) يوضح استخدام محرر الهكس لمشاهدة ترويسة الملف التنفيذي

الشكل رقم (6) يوضح استخدام محرر الهكس لمشاهدة ترويسة الملف التنفيذي

إذا قمت بتغيير هذين الحرفين إلى أي قيم أخرى فلن يعمل البرنامج والسبب أن محمل الملفات التنفيذي في نظام الويندوز لن يستطيع التعرف عليها كملفات تنفيذيه وبالتالي لن تعمل هذه الملفات إلى أن تعود القيمتين إلى MZ كما كانت.

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

الشكل  (7) يبين الأدوات التي سيتم استخدامها في المثال
الشكل (7) يبين الأدوات التي سيتم استخدامها في المثال

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

الشكل (8) يبين البرنامج الخبيث والذي يحتوى على زر الإصابة وزر الإصلاح
الشكل (8) يبين البرنامج الخبيث والذي يحتوى على زر الإصابة وزر الإصلاح

هذا البرنامج الخبيث InfectTestFile.exe يمكن اعتباره على انه أحد البرامج الخبيثة والسبب في ذلك هو أن هذا البرنامج يغير في الملفات التنفيذية حتى لا تعمل مرة أخرى. هذا من وجه نظرنا المستخدمين فهذا البرنامج ضار وقد يؤثر على عملك حيث يمنع جميع الملفات التنفيذية من العمل وبالتالي يمنع نظام التشغيل من العمل. ولكن من وجه نظر المضادات فقد يعتبر هذا البرنامج على أنه برنامج حميد والسبب أن قاعدة بيانات مضاد الفيروسات لا تحتوي على توقيع هذا البرنامج. الشكل (9) يبين رأي برامج الأنتي فيروس في هذا البرنامج وأن هذا الملف ملف نظيف (يمكنك استخدام هذه المجموعة من خلال موقع virustotal.com).

الشكل (9) يبين نتيجة فحص البرنامج الخبيث على مجموعه من برامج الأنتي فيروس والنتيجة أن الملف سليم
الشكل (9) يبين نتيجة فحص البرنامج الخبيث على مجموعه من برامج الأنتي فيروس والنتيجة أن الملف سليم

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

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

بعد ذلك تبدأ خطوات التحليل الحقيقة، ويمكن تقسيم تحليل البرامج الخبيثة إلى قسمين، الأول عن طريق تحليل سلوك عمل البرنامج Behavior  Analysis وهنا سوف يتم استخدام برامج مراقبة السلوك مثل مراقبة الملفات ومراقبة مسجل النظام ومراقبة الشبكة، القسم الآخر وهو تحليل كود البرنامج Code Analysis أثناء عمله وهنا سوف نحتاج لبرامج التنقيح Debuggers.

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

أولاً يمكن استخدام الأداة BinText ولذلك لكي يتم معرفة النصوص التي وردت في البرنامج الخبيث، والقصد من ذلك هي أخذ فكرة عامة عن الأسماء التي توجد في البرنامج، سواء كانت أسماء لأشخاص أو أسماء لمواقع أو حتى ملفات موجودة على القرص. الشكل (10) يبين استخدام الأداة BinText.

الشكل رقم (10) يبين استخدام الأداة BinText لاستخراج النصوص من الملف التنفيذي
الشكل رقم (10) يبين استخدام الأداة BinText لاستخراج النصوص من الملف التنفيذي

بعد ذلك يفضل أخذ حفظ نسخة من الهاش MD5/SHA1 لهذا الملف التنفيذي، وسيتم أخذها مرة أخرى بعد تشغيل الملف والغرض من ذلك هو اكتشاف أي تعديلات أجراها الملف على نفسه، ويمكن استخدام برنامج md5sum لحفظ MD5 للملف. ولكنها حالياً غير مهمة نظراً لبساطة البرنامج.

الآن لنقوم بتشغيل البرنامج الخبيث وبرنامج الProcess Monitor لكي نلاحظ ماذا يفعل هذا البرنامج أثناء عمله، وعند فتح الProcess Monitor يمكن فلتره النتائج بحيث لا تخرج نتائج إلا النتائج المتعلقة بالبرنامج الذي نريد اختباره، وذلك من خلال القائمة Filter ثم اختيار filter وهذا ما يتضح من الشكل (11).

 

 الشكل (11) يبين تحديد فلتر معين في برنامج Process Monitor وتم تحديد البرنامج الخبيث فقط لكي تتم مراقبته

الشكل (11) يبين تحديد فلتر معين في برنامج Process Monitor وتم تحديد البرنامج الخبيث فقط لكي تتم مراقبته

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

 الشكل (12) يبين النتيجة بعد تطبيق الفلتر وتم تحديد أن العملية تكتب وتقرأ من الملف Text.exe

الشكل (12) يبين النتيجة بعد تطبيق الفلتر وتم تحديد أن العملية تكتب وتقرأ من الملف Text.exe

نأتي بعد ذلك إلى تحليل البرنامج نفسه ولننظر ماذا يفعل بالضبط أثناء عمله، يمكن أن نقوم بالنظر إلى كود البرنامج بالاسمبلي Disassembler وهو يتطلب معرفة جيدة في اللغة إضافة إلى معرفة في دوال نظام الويندوز حتى تسهل للمحلل معرفة الغرض من كل بلوك من الكود، ويمكن أن نقوم بتشغيل البرنامج تحت المنقح Debugger ويتم متابعة تأثير الأسطر خطوة بخطوة، ولكن بما أن البرنامج بسيط فيمكن تحليل الكود وقراءته بدون الحاجة إلى تشغيل المنقح Debugger ، الشكل (13) يبين البرنامج يعمل تحت المنقح OllyDbg ويوضح الكود المسئول عن الكتابة داخل الملف التنفيذي حيث يتم التحقق من وجود الأحرف AD (وهو الحرف M) و 5A (الحرف Z) فإذا وجدها يقوم بكتابة القيمة 30 (وهي تعادل صفر) مكان هذه الأحرف.

هكذا نكون قد عرفنا وظيفة البرنامج بشكل مفصل، فهو يقوم بفتح الملف Test.exe ويقوم بتغيير الحرفين MZ إلى الحرفين 00 وهكذا يتعطب الملف عن العمل ولا يمكن إعادة تشغيله إلا من خلال إعادة الحرفين MZ مكان الحرفين 00 مرة أخرى.

الشكل (13) يوضح البرنامج الخبيث تحت المنقح وتم الكشف عن البيانات التي يكتبها
الشكل (13) يوضح البرنامج الخبيث تحت المنقح وتم الكشف عن البيانات التي يكتبها

هذه المقالة تحتوي على مثال لفايروس حقيقي وطريقة تحليله (تحليل الفايروس Perlovga وكيفية كتابه المضاد له).

 

خاتمة:

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

 

المراجع:

1.       Coolest Jobs in Information Security
http://www.sans.org/20coolestcareers/

2.       Mobile Malware – the new cyber threat
http://hakin9.org/magazine/1464-mobile-malware-the-new-cyber-threat

3.       The Real World Clickjacking
http://hakin9.org/magazine/810-the-real-world-clickjacking

4. مقالتي في مركز التميز لأمن المعلومات

 

(660)

وجدي عصام مهندس برمجيات مهتم بعلوم الحاسب وبالأخص مجال الخوارزميات وهندسة البرمجيات وحماية التطبيقات،

Comment(6)

    1. نعم وهذا ما جاء في النص:

      “من أشهر البرامج التي تقدم خدمة الVirtualization هي VirtualPC من شركة مايكروسوفت و VMWare أو VirtualBox من شركة أوراكل(صن سابقاً)”

  1. إن الحرفين MZ في بداية الملف التنفيذي هما من بنية DOS EXE و ليس من بينة PE و قد تم وضع الترويسة القديمة أي DOS EXE في بداية ملفات PE من أجل التوافقية الإرجاعية و هاذان الحرفان هما اختصار لاسم Mark Zibkowski (http://en.wikipedia.org/wiki/Mark_Zbikowski)

  2. موضوع جميل و مهم أخي عصام.
    يجب لفت الانتباه الى أن هناك برامج خبيثة بإمكانها تخطي برامج ال Virtualisation و إصابة النظام المستضيف مباشرة لذلك من الأفضل تخصيص جهاز منفصل للقيام بعمليات التحليل.
    بخصوص البرامج المساعدة في التحليل فأود ذكر برنامج API monitor الرائع الذي يقوم بتتبع جميع الدوال التي يتم استدعاؤها من طرف برنامج معين مع إظهار البرامترات التي تأخذها و النتائج التي ترجعها .
    http://www.rohitab.com/apimonitor

LEAVE YOUR COMMENT

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

مشاركة