در دنیای کامپیوتر، همه چیز در نهایت به فایلها ختم میشه. از عکسهایی که میبینیم، تا برنامه هایی که اجرا میکنیم، همه در قالب فایلهایی با ساختار مشخص ذخیره میشن.
این ساختارها که با نام فرمت فایل (File Format) شناخته میشن، تعیین میکنن که دادههای داخل فایل چطوری تفسیر و پردازش بشن.
هر فایل، صرفنظر از نوعش (تصویر، متن، موسیقی یا برنامه)، از یک ساختار مشخص تبعیت میکنه. برای مثال، فایلهای تصویری ممکنه فرمتهایی مانند JPEG یا PNG داشته باشن. فایلهای صوتی ممکنه بصورت MP3 یا WAV ذخیره بشن. اما وقتی صحبت از برنامههای اجرایی در سیستم عامل ویندوز میشه، با فرمتی بنام PE (Portable Executable) مواجه هستیم.
فرمت PE پایه و اساس تمامی فایلهای اجرایی در ویندوز هستش. از فایلهای exe و dll گرفته تا sys و حتی بسیاری از فایلهایی که در پسزمینه اجرا میشن.
درک ساختار این فرمت نه تنها برای توسعهدهندگان نرمافزار، بلکه برای علاقهمندان به امنیت سایبری، مهندسین معکوس نرم افزار، آنالیز بدافزار و تحلیلگران سیستمهای ویندوز اهمیت حیاتی داره.
در این آموزشی و عملی، بصورت قدم به قدم با ساختار فایلهای PE آشنا میشیم. این دوره با محوریت امنیت سایبری تهیه شده، بنابراین برای تیم های قرمز، تیم های آبی، علاقمندان به امنیت سایبری کاربردی هستش.
در کل دوره در 2 فصل ارائه میشه. در فصل اول با ساختار فایلهای PE آشنا میشیم، بعد از آشنایی اولیه، در فصل دوم میریم و از این مواردی که یاد گرفتیم، در پروژه های عملی استفاده میکنیم.
اگه به دنیای امنیت سایبری، بخصوص دنیای باینری علاقمند هستید، میتونید دوره رایگان مهندسی معکوس نرم افزار رو که شامل 32 ویدیو و بیش از 21 ساعت فیلم آموزشی هستش رو هم مشاهده کنید.
وضعیت دوره: در حال پخش فصل اول (شروع از 10 مرداد 1404)
زمان انتشار: بصورت هفتگی ( سعی میکنم هر هفته، جمعه منتشر بشه)
آخرین بروزرسانی: 31-5-1404
قسمت صفر: معرفی دوره
در این ویدیو به معرفی دوره ی رایگان بررسی ساختار فایلهای PE و ابزارهای مورد نیاز این دوره پرداختیم و در ادامه نگاه کلی به ساختار فایلهای PE، تفاوت بین PE و COFF، اهمیت یادگیری ساختار فایلهای PE، تفاوت PE روی مموری و دیسک، تفاوت بین Module و Process انداختیم و با مفاهیمی مانند آفست (Offset)، آدرس مجازی (Virtual Address) و آدرس مجازی نسبی (Relative Virtual Address) آشنا شدیم. [مشاهده در یوتیوب – اسلایدها]
قسمت اول: بررسی DOS Header
در این قسمت رفتیم سراغ DOS HEADER و دو تا فیلد مهم این هدر یعنی، e_magic و e_lfanew رو بررسی کردیم. در ادامه e_magic رو بعنوان شناساگر در نظر گرفتیم و ازش در رولهای یارا (YARA) استفاده کردیم. این قضیه رو در YaraX بررسی کردیم، یک برنامه در پایتون با کتابخونه ی Yara python نوشتیم و همچنین بخش YARA رو در Detect It Easy بررسی کردیم. کدهای PE Parser رو برای بخش DOS Header تکمیل کردیم. در این قسمت PE Parser رو در پایتون و سی پلاس توسعه دادیم. در نهایت روش بررسی ساختار PE در ابزارهای x64dbg و IDA Pro و Windbg رو معرفی کردیم. [مشاهده در یوتیوب – اسلایدها و کدها ]
قسمت دوم: بررسی DOS STUB
در این قسمت، DOS STUB رو بررسی کردیم. بطور کلی DOS STUB رو معرفی و ساختارش رو استخراج کردیم و در CMD، DOS BOX، PE Bear و IDA Pro بررسیش کردیم. در ادامه به کمک OPENWATCOM یه برنامه ی DOS توسعه دادیم و بجای DOS STUB معمول، داخل فایل PE قرار دادیم. در نهایت این بخش رو هم به PE Parser اضافه کردیم. [مشاهده در یوتیوب – اسلایدها و کدها]
قسمت سوم: RICH HEADER
در ادامه بررسی فایلهای PE، این جلسه ساختار Rich Header رو معرفی و در PE Bear بررسیش کردیم و در ادامه این بخش رو هم به PE Parser اضافه کردیم. در نهایت نگاهی به نحوه سوء استفاده از این هدر در OlympicDestroyer انداختیم. [مشاهده در یوتیوب – اسلایدها و کدها]