امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
ویروسهای polymorphic و metamorphic
نویسنده پیام
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #1
ویروسهای polymorphic و metamorphic
اولین نمونه ی ویروسها ی چند شکل ویروسهایی بودن که فقط از روشهای encryption استفاده میکردن. درواقع ویروس هنگام آلوده کردن یه برنامه کد خودش رو encrypt کرده و این کد انکریپت شده رو وارد برنامه ی قربانی میکنه. حالا یک قطعه کد دکریپشن هم به برنامه قربانی اضافه میکنه تا موقع اجرا کد انکریپت شده رو دکریپت کنه تا به این ترتیب کد قابل اجرا باشه.
خوب به این ترتیب یه ویروس که بر اساس این تکنیک طراحی شده بخشهای زیر رو داره:
1) decryption code
2) encrypted body
به 1 میگیم DC و به 2 میگیم EB.
همونطور که پیداست EB در هر آلوده سازی تغییر میکنه ولی DC ثابت میمونه چون اگه DC هم انکریپته بشه به احتمال خیلی خیلی خیلی زیاد غیر قابل اجرا میشه و یا اگر هم اجرا بشه کاری که انجام میده هیچ ربطی به دکریپشن EB نداره !!! و به این ترتیب دیگه ویروس تکثیر نخواهد شد. خوب بر این اساس آنتی ویروس برای پیدا کردن ویروس فقط میتونه از DC به عنوان علامت آلوده بودن استفاده کنه چون فقط این قطعه در کپی های متفاوت ویروس ثابت باقی میمونه. حالا اگه این قطعه به اندازهء کافی بزرگ نباشه دیگه از این قطعه هم نمیشه برای پیدا کردن ویروس استفاد کرد. پس یه روش برای جلوگیری از شناسایی این ویروسها داشتن DC کوتاهه. روش دیگه که در ویروسهای پلیمورفیک بنیانگذاری شد و در متامورفیکها هم کابرد داره "اضافه کردن یه قطعه کد قابل اجرا ولی بدون تاثیر(junk code) بر رفتار DC به DC " هستش.
برای این کار مثلا nop که کد باینری اون 0x90 هستش, و کاری انجام نمیده رو به یه قسمت از DC اضافه میکنه. به این ترتیب توالی بایتهای DC هم طی هر تکثیر تغییر میکنه و در نتیجه DC هم غیر قابل ردیابی میشه. این کار در ویروسهای پلیمورفیک توسط mutation engine انجام میشه. ویروسهای metamorphic که آخر ویروسهای غیرقابل ردیابی محسوب میشن متن کد به همون زبانی که نوشته شدن رو همراه خودشون حمل میکنن.( که اصولا این کد به زبان اسمبلیه). حالا این ویروس اگر در کامپیوتری که آلودش کرده یه کامپایلر مناسب گیر بیاره کد خودشو کامپایل میکنه ولی این دفعه یه مقدار junk code به متن کد خودش اضافه میکنه و بعد نتیجهء کامپایل رو که یه ویروس جدید با همون کارکرد سابقه اجرا میکنه و . . .. به این ترتیب ویروس به مرور داره تغییر پیدا میکنه و از اونجایی که متن کد شامل هم متن کد DC و هم متن کد EB هست هر دو در حال تغییر طی تقسیم در کامپیوتر مناسب هستن. از طرفی متامورفها بازهم از روشهای انکریپشن و دکریپشن و mutation engine استفاده میکنن که دیگه یافتن اونها رو خیلی سخت میکنه. این ویروسها برای انجام این کار نیازبه یه قسمت به اسم metamorphic engine , mutation engine
مشکل ردیابی این ویروسها همون طور که میدونید اینه که قسمت اصلی و حجم اساسی از اونها در هر همانندسازی تغییراتی غیر قابل پیشبینی داره و تنها قسمت DC از اونها که اصولا کوتاه هم هست ثابت میمونه. خوب حالا گه DC به اندازه ی کافی طولانی باشه که بشه با اطمینان بالایی گفت یونیکه میشه DC رو به عنوان رشته ی ردیابی به کاربرد وتمام. ویروس نویس n ماه زحمت کشید با 0.5 ساعت بررسی ویروسش مرد. حالا اگه DC کوتاه بود چطور ؟ اونقدری که دیگه بدونیم اصلا یونیک نیست؟ یعنی چه باید کرد؟
در اینجا یکی از روشهایی که AV ها استفاده میکنن اینه که یه کامپیوتر مجازی در واقع CPU و RAM مجازی میسازن و اجازه میدن که برنامه روش اجرا بشه. حالا dc شروع میکنه eb رو به حالت قابل اجرا و اصلی دکریپته کردن. این یعنی اینکه eb به چیزی تبدیل میشه که همیشه ثابته. هر جا ویروس رو دکریپته کنید یه کد ثابت بدست میارین و این یعنی ویروس لو رفت.! خوب البته این تکنیک مشکلات زیادی داره. یکی از اونها اینه که ساختن یه کامپیوتر مجازی پر هزینه و سخته. و تازه بعد از طراحی باید به این فکر کنیم که این پروسه چقدر زمانبر خواهد بود. هر برنامه اجرایی باید یه بار در کامپیوتر مجازی لود بشه یه مقدار اجرا بشه و بعد توی برنامه دنبال یه رشته ی مشکوک بگردیم. اینجای کار هم مشکل وجود داره. چه طور بفهمیم که ویروس به اندازه ی کافی دکریپته شده. ممکنه چند ایده به ذهن بیاد که برخی رو بررسی میکنیم.
1) بر اساس تعداد کد اجرا شده:
از کجا بدونیم DC کجا قرار گرفته که حالا . . ..
2)بر اساس زمان سپری شده:
خوب ویروس میتونه یه سیکل بسازه و ما رو برای مدتی که اون هم میتونه متغیر باشه سرکار بزاره.
3)خوب اصولا DC یه لوپه و ما میتونیم با رسیدن به اولین لوپ برای مدتی صبر کنیم .مثلا N بار لوپ اجرا بشه و بعد . . ..
خوب جوابش مشخصه. میریم سر کار . . ..
یه سری کارها برای حل برخی مشکلات انجام شده. مثلا اینکه اول ما برنامه رو برای DC با یه رشته جستجوی مناسب میگردیم. خوب اگه رشته پیدا شد میفهمیم که به یه احتمالی هرچند اندک( چون رشته جستجوی ما یونیک نیست) این برنامه آلودس. اگه رشته پیدا نشد مطمئن هستیم که ویروس وجود نداره. ولی اگه شک ایجاد شد از کامپیوتر مجازی برای بررسی استفاده میکنیم. محل رشته ی مشکوک رو هم میدونیم کجاست پس هروقت این رشته ی مشکوک وارد عمل شد میتونیم بررسی ها رو شروع کنیم.به این ترتیب استفاده از کامپیوتر مجازی در موارد نا مشکوک حذف شد=> زمان زیادی رو نجات دادیم.
و محلی به عنوان رشته ی مشکوک علامتگذاری شده پس میشه ایده هایی در مورد لحظهء شروع دکریپشن داشت. حالا این روش در پلیمورفیکها به مشکلاتش بسیار افزوده میشه
همین قدر اطلاعات برای پیاده سازی یک مدل نمونه البته به شرط تسلط به ASM و OS Structure و ساختار فایل های اجرایی کافیه .(از این تکنیک در ShellCode نویسی هم استفاده میشه)

:More Info
http://en.wikipedia.org/wiki/Polymorphic_code
http://en.wikipedia.org/wiki/Metamorphic_code
http://en.wikipedia.org/wiki/Self-modifying_code
http://en.wikipedia.org/wiki/Alphanumeric_code
http://en.wikipedia.org/wiki/Timelin...uses_and_worms
و
http://www.securityfocus.com/infocus/1635
http://vx.netlux.org/lib/ama00.html

اینا رو جایی یدیم و برداشتم الان چشمم افتاد بهش گفتم شاید برای دوستان جالب باشه
۰۴-بهمن-۱۳۸۶, ۱۸:۰۶:۵۱
وب سایت ارسال‌ها
پاسخ
Di Di آفلاین
مدير بخش هك و كرك
*****

ارسال‌ها: 2,358
موضوع‌ها: 116
تاریخ عضویت: اسفند ۱۳۸۵

تشکرها : 1816
( 4046 تشکر در 1321 ارسال )
ارسال: #2
RE: ویروسهای polymorphic و metamorphic
واقعا عالیه!
امیدوارم این مطالبت ادامه پیدا کنه چون داره بار علمی سایت رو بالا می بره.
درضمن اگه بتونیم نمونه هایی از این ویروسها رو هم بسازیم ، مقاله صد در صد کامل می شه.

۰۵-بهمن-۱۳۸۶, ۱۲:۰۰:۱۴
وب سایت ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #3
RE: ویروسهای polymorphic و metamorphic
ساختن که میشه یه کم اسمبلی و اشنایی به ساختار فایلهای pe
اینا چاشنی کارن
۰۵-بهمن-۱۳۸۶, ۱۵:۳۳:۳۱
وب سایت ارسال‌ها
پاسخ


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS