PDA

View Full Version : حرفه ای: نحوه بهم ریختن (Obfuscate) کد اسمبلی برای جلوگیری از تشخیص آنتی ویروس



majid_darab
شنبه 29 شهریور 1393, 12:02 عصر
با سلام و ارادت فراوان :
من یه فایل exe دارم که با زبان visual C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ‎‎ v9.0 کد زده شده است.
نکته قابل توجه در مورد این فایل این هست که سورس کد فایلو ندارم و می خوام به نحوی محتوای کد فایلو دچار بهم ریختگی کنم.

دلیل : در فایل از Library ها و string هایی استفاده شده است که توسط Anti Virus شناسایی شده و فایل مورد ظنین قرار می گیرد و این در حالی ست که فایل مورد نظر کاملاً تمیز هست و می خوام کلاً یاد بگیرم چطور میشه چنین فایل هایی رو obfuscate کرد و ظن و گمان بد رو در مورد اونها از بین برد. در عین حال نمی خوام فایلو در قسمت Exception آنتی ویروس معرفی کنم و دنبال راه اصولی برای حل این مشکل هستم!

یکی از روش های obfuscate کردن این چنین فایل ها استفاده از برنامه Olly Debugger می باشد.

من از tool های زیادی برای بهم ریختگی exe که با C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ‎‎ نوشته شده استفاده کردم. اما همه اونها فایل رو خراب کردند.
مثل :
PELock.exe (http://www.pelock.com/)
UPX.exe (http://upx.sourceforge.net/)
و غیره

مثلاً برنامه PELock این جور عمل می کنه که در کد اسمبلی فایل دست می بره و به فایل مزبور یه key اضافه می کنه که دوستان باید بگن آیا انجام این کار باعث میشه من به مقصود خود که همان بهم ریختگی فایل هست برسم یا نه؟ به هر تقدیر PELock جوری فایل منو تغییر داد که دیگه مورد استفاده نبود.

سوال 1 : برای بهم ریختگی کد اسمبلی این گونه فایل ها چکار باید بکنم؟
سوال 2 : آیا می شود با Olly Debugger برای اونها Key ایجاد کرد و آیا این روش ایجاد Key باعث بهم ریختگی فایل از نظر آنتی ویروس می شود؟ چگونه؟

=======================================


MOV EAX,01081000 -> آدرس شروع فایل (ماژول نصب)
XOR BYTE[EAX],0F -> تعریف کلید
INC EAX
CMP EAX,0108AF5E -> آدرس آخرین خط فایل قبل از این کدها(ماژول نصب)
JLE 0108AF69 -> آدرس خط کلید
JMP 010858C0 -> آدرس ماژول نصب برنامه

اینها کد هایی هستن که با Olly Debugger برای ایجاد Key و بهم ریختگی در انتهای کد اسمبلی فایل exe اضافه می شن (انتهای ماژول نصب) که از نت پیدا کردم، اما به دلیل عدم تفهمیم و استفاده نادرست باعث خراب شدن فایل شدند.
من توضیحاتی که جلوی کدها نوشتم نسبی هستند و شاید اشتباه نوشته باشم.
سوال 3 : اگر مقدور هست در مورد اونها نیز توضیح داده شود و ایرادات آنها برطرف شود.


=======================================


*اگر فایل exe فوق دات نت بود کار با برنامه Samart Assembly (http://www.red-gate.com/products/dotnet-development/smartassembly/)خیلی راحت می شد و این برنامه علاوه بر قابلیت های فراوانی که داره راحت فایل مزبورو Obfuscate می کرد.

با تشکر

Nima NT
شنبه 29 شهریور 1393, 22:57 عصر
اکر فایلتون تمیز هست و خدایی ناکرده بدافزار نیست ! میتونید از Crypter ها استفاده کنید ولی اگر احیانا" بدافزار هست یا رفتار بدافزار گونه داره باید روی Proactive Bypass کار کنید ( مطالعه و تحقیق ) چون اگر روشی باشه که کار کنه اصولا" Private هستش و در دست عموم نخواهد بود.

majid_darab
یک شنبه 30 شهریور 1393, 14:39 عصر
سلام و خسته نباشید :
فایل مزبور بداندیش نیست و این گیر افتادن در دامان AV نیز به شدت Annoying هست و من باید Client های خود را دایم در این مورد شفاف سازی کنم و در عین حال پس از شفاف سازی ظن و گمانی که به جای می گذارد مطلوب ما نیست
در مورد کدهای اسمبلی میشه با هم بحث داشته باشیم؟
در مورد Crypter ها هم اونها اکثراً پس از تغییر فایل باعث می شن فایل به عنوان ویروس شناخته بشه و اگر هم بتونن فایل نصب رو از چنگال AV نجات بدن باز پس از نصب، AV به فایل های نصب شده گیر خواهد داد.
لذا دو راه حل در نظر است :
1-یک Crypter با C++‎‎‎‎‎‎ برای این موضوع بنویسیم.
2-روی op کدها کار کنیم که به نظرم این کار راحت تر می باشد.
روش دوم که موسوم به Hijack اسمبلی می باشد باید به گونه ای هوشمندانه روش کار شود که باعث خراب شدن فایل نشود.
اگر می شود کدهای اسمبلی که نوشتم رو با هم بررسی کنیم!
مثلاً منظور از کلید چیست و دلیل استفاده از آن چیست؟و ...