إيه هو الـPE File؟ بيتكون من إيه؟ ليه دراسته مهمة في الـ Malware Analysis؟


معظم الMalware اللي بتقابلنا بتكون في شكل PE Format ودا اختصار Portable Executable (ملف تنفيذي) يعني الويندوز يقدر يشغله وينفذ الكود اللي جواه مباشرةً زي ملفات .exe و .dll وممكن .sys و .fon و .drv وغيرهم.


البنية الأساسية
 للPE File انه بيتكون من DOS MZ Header في الاول وبعده DOS Stub وبعدهم PE Header، وفي الاخر فيه Sections بتحتوي على باقي الData بتاعت الملف.


-الDOS MZ Header موجود في بداية أي PE File وبيتكون من 64 bytes، اول 2 bytes فيه هم MZ وتقدر تشوفهم لو فتحت أي PE File على أي Hex Editor.

-الـ DOS Stub بيجي بعد الـ DOS header علطول ومفيهوش حاجة غير انه بيقولك This program cannot be run in DOS mode.. الخ

-الـ PE Header ليه Start Signature واللي هي اول 4 bytes واللي بيبدأو ب2 مكتوب فيهم PE و الـHex بتاعهم هو 50 45 وبعدهم بيجي 2 bytes اللي هم 00 و 00

-الـ File header ودا أول 20 Bytes بتيجي بعد ال 4 اللي في الأول وبيكون فيها معلومات عن عدد الSections الموجودة في الملف والTimeDate Stamp الوقت اللي اتعمل فيه والـCharacteristic اللي بتعرفنا الملف دا exe ولا dll مثلا وهل هو 32 ولا 64 bit..الخ

-الـ Optional Header بيجي بعد كدة ودا مش إختياري بالعكس دا أهم header لانه بيعرفنا حجات كتير مهمة زي الـ Address of Entry Point اللي بيبدأ عنده تنفيذ الكود وبنعتبره طرف الخيط اللي هنبدأ من عنده الـAnalysis للكود، وبيعرفنا كمان الـ Image Base اللي هيساعدنا في الـDynamic Analysis، و الـ Size of Image ودا حجم الـMalware لما يشتغل في الـMemory واللي هيوضحلنا انه Malware او فيه حاجة غلط من الفرق الكبير بينه هو والحجم اللي ع الـDisk.

مش محتاجين نحسب عدد الBytes ونطلع المعلومات منها لاننا ممكن نستخدم أدوات جاهزة زي CFF-Explorer و PEstudio عشان نحلل الPE Headers ونطلع منها المعلومات زي:
Entry Point, Image Base, Raw Size & Virtual Size, Characteristic Sections, Import Table, ASLR .. الخ

أهمية الPE Headers: 

بتساعدنا في مرحلة Static Analysis اننا نعرف منها اسماء الFunctions اللي الMalware بيعملها Import من الويندوز بحيث لو بيستخدم function بتشفر او تحذف ملفات مثلا او بتتواصل مع مواقع على الانترنت..وهكذا بالتالي نعرف قدرات الMalware ونحدد نوعه منها كمان.

أهمية الSections: بتفيدنا في مرحلة Dynamic Analysis لما نشغل الMalware ونشوف البيانات اللي جواها ودي هنزلها في جزء تاني.