سلام
در این قسمت از پست ها در خدمتتون هستم برای آموزش نحوه آنالیز فایلهای اجرایی باینری که با پایتون نوشته شده اند.
همونجور که میدونید پایتون یک زبان مفسری هست که خب به خاطر سادگی و دارا بودن کتابخونه های زیاد و متنوع، محبوبیت بالایی داره. حالا اخیرا یه سری بدافزار هم با این زبان نوشته شده.
اما ممکنه که فکر کنید یه زبان اسکریپتی چگونه میتونه تبدیل بشه به یه ابزاری برای نوشتن بدافزار؟
در ادامه میخوام بگم که قضیه چیه و چه جور میتونیم با این نوع فایلها برخورد کنیم و آنالیزشون کنیم.
شما اول یه اسکریپت با پایتون مینویسید. بعد یک سری ابزار هستن که میان و برای شما همون اسکریپت رو تبدیل میکنن به یه فایل exe. مثلا pyinstaller یکی از اون ابزارها هست. اما چه جور ممکنه که این اتفاق بیافته؟
به این صورت هست که ابتدا اسکریپت شما به یک فایل pyc یا همون compiled python تبدیل میشه که در اصل همون کد میانی پایتون یا intermediate language هست(میتونید تصور کنید شبیه فایلهای تحت dot net). شما قطعا توی اسکریپتی که مینویسید از یک سری کتابخونه های پایتون هم ممکنه استفاده کنید. این ابزار pyinstaller میاد و در مرحله بعدی تمامی کتابخونه های پایتونی که شما توی اسکریپتتون استفاده کردید رو، در کنار فایل کامپابل شده اصلیتون قرار میده و میره داخل یه فایل zip فشردشون میکنه . در مرحله بعد میاد و این فایل زیپ رو داخل یه فایل exe قرار میده. بعد در مرحله بعدی یه تیکه کد cpp بهش اضافه میشه که در اصل عملیات استحراج فایلهای زیپ شده و اجرای اون رو بر عهده داره. در اصل، اون فایل exeی که ساخته میشه صرفا شبیه یه container هست برای اسکریپت شما. شما حالا یک فایل exe دارید که به راحتی اجرا میشه. ولی خب سایزش زیاده.
حالا موقعی که اجراش میکنید، اول اون فایل زیپ از فایل Exe استخراج میشه توی یه جایی از سیستم، و بعد هم اجراش میکنه. که اصولا این کار با فراخوانی تابع createProcess ویندوز رخ میده.
خب حالا با کلیت ماجرا آشنا شدیم حالا بریم سراغ چالش تا بهتر متوجه بشیم.
خب ببینید توی این چالش ما با یه فایل در ظاهر باینری مواجه میشیم که قراره آنالیز و تحلیلش کنیم. توی این مرحله چیا یاد میگیریم:
اولا نحوه شناسایی فایلهای باینری پایتون رو یاد میگیریم. بعد میریم و نحوه استخراج اسکریپت قابل فهم و خوانا رو یاد میگیریم و شروع میکنیم به انالیز. در آخر هم با یه ابزار خیلی مفید به نام Z3 آشنا میشیم که یکی از مهمترین استفاده های اون توی بحث تحلیل بدافزار و reverse، پیاده سازی symbolic execution هست.
چالش شماره 7 : Wopr
فایلهای مربوط به این چالش رو میتونید از اینجا دانلود کنید.
پیش نیازها:
- ویندوز 7 یا بالاتر
- IDA Pro
- ابزار 010 یا HxD
- آشنایی با زبان پایتون
قسمت اول: بررسی اولیه و شناسایی نوع فایل و استخراج اطلاعات ممکن
قسمت دوم: استخراج و تبدیل فایلهای کامپایل شده به اسکریپت
قسمت سوم: نوشتن solver برای z3 و پیدا کردن کلمه عبور