بخشی از مقاله

روش های تشخیص ویروسهای متامورفیک
چکیده -
در این مقاله به روش های تشخیص ویروس های متامورفیک (دگرگون شده ) می پردازد. برای شناسایی یک ویروس متامورفیک از تکنیک هایی مانند بررسی ساختار فایل یا آنالیز عملکرد کد باید استفاده شود. برای تشخیص کامل ویروس های دگرگونی شده یک روال تشخیصی نوشته شده است که می تواند مجموعه ای از دستور العمل های ضروری ساختمان ویروس را از نمونه ی واقعی که آلودگی ایجاد می کند تشخیص دهد .
کلید واژه - شبیه سازی، کد، متافیزیک، نقاط ضعف ، ویروس
۱- مقدمه
ویروس های دگرگون شده هنگام تکثیر با حفظ کارایی کد خود را تغییر می دهند ، در نتیجه توسط پویشگر شناسایی نمی شوند . آنها با استفاده از تکنیک های مبهم سازی کدها باعث به چالش کشیدن تحلیل عمیق تری شده و همچنین بر تحلیلگرها ی پویا مانند شبیه سازی با استفاده از تغییر رفتارشان غلبه می کنند . بدین منظور ویروس های دگرگون شده از تغییر شکل های گوناگونی استفاده می کنند مانند نامگذاری مجدد ثبات ها ، تغییر کد ، توسعه کد، کوتاه کردن کد و درج کد های بی ارزش نرم افزار های مخرب یا به اختصار malware ، برنامه هایی هستند که عمدا برای انجام برخی از عمل های غیر مجاز که اغلب نامطلوب و مضرند طراحی شده اند . تروجان یک اصطلاح عمومی است و برای توصیف بسیاری از انواع برنامه های مخرب مانند ویروس ها و کرم ها استفاده می شود .
ویروسهای متامورفیک شده وقتی منتشر می شوند کدهای خود را تغیر می دهند تا توسط اسکنرهای ویروس استاتیک مبنی بر امضاء تشخیص داده نشوند و از تکنیکهای obfuscation کد برای به چالش کشیدن آنالیز استاتیک عمیق تر استفاده میکنند. آنها همچنین زمانی که متوجه می شوند در یک محیط کنترل شده اجرا می شوند آنالیزرهای پویا را با تغیر رفتارشان مورد حمله قرار دهند مانند شبیه سازها، ویروسهای obfuscation شده به سختی تشخیص داده میشوند چرا که سازندگان آنها با استفاده از نقاط ضعف اسکنر آنتی ویروسهای آنالیز استاتیک و دینامیک می آیند.
به منظور تغیر کدشان نسل به نسل ویروسهای متامورفیک باید کد خودشان را آنالیز کنند بنابراین آنها بسیار با محدودیتهای استاتیک و دینامیک مواجه می شوند. علاوه بر این ویروس متامورفیک باید بتواند درباره کد تغییر یافته ای که تولید می کند آنالیز کند. این به این معناست که پیچیدگی تحولات و تغییرات در نسل های قبلی مستقیم بر آنالیز ویروس دارد و کد را در نسل فعلی تغییر می دهد. بنابر این ویروس های متامورفیک نیازمند استفاده از برخی تبدیلات کدینگ هستند ، یا الگریتم های ویژه ای را توسعه می دهند که برای تشخیص آنها به آنها کمک می کند. یک اسکنر آنتی ویروس باید بتواند یک ویروس متامورفیک را بوسیله هر روشی که ویروس برای آنالیز خودش استفاده می کند آنالیز کند. بنابراین بک « مرفر معکوس » می تواند ایجا شود که از تمام قوانین تبدیل و تغییر ویروس در اعمال معکوس و آشکار کردن کد واقعی ویروس استفاده نماید.
۲- تشخیص هندسی
تشخیص هندسی بر اساس تغییراتی است که یک ویروس بر روی ساختار فایل ایجاد کرده است. پتر اسزور ، این روش را اکتشافی شکل نامیده زیرا دور از مقدار درست و مستعداد خطای مقادیر مثبت است . تشخیص هندسی برای تشخیص Win95 / Zmist میتواند استفاده شود. زیرا قسمت داده فایل وقتی توسطورژن رمز گذاری شده حداقل kb ۳۲ افزایش میابد. البته وقتی فایل آلوده می شود ممکن است گزارش داده شود که سایز مجازی فایل kb ۳۲ بزرگتر از سایز فیزیکی آن شده است بهر حال این روش میتواند خطای مقادیر مثبت تولید کند. زمانیکه ساختار فایل قبلی تغییر میکند میتواند شاصی از فایل فشرده شده زمان اجرا باشد.
این روش میتواند در ترکیب ب مارکرهای آلوده ی ویروس به منظور کاهش خطر مقادیر مثبت استفاده شود. گاهی اوقات ویروسها از یک مار کر الوده استفاده میکنند تا فایل های الوده شده موجود را تشخیص دهند و از آلودگی های متعدد اجتناب کنند. برای مثال ویروس Win 95 / Bistrob یک مقدار بایت بالای 0X51را در اتصال کوچکتر ورژن فیلد جابجا کند به هر حال خطر مقادیر مثبت هرگز حذف نمی شود. |
۲ - ۱ - رشته ی ویل کارد و اسکن کردن نیم بایت
ویروس متامورفیک ساده مانند ویروسی که از عوض کردن رجیستر با هم و جابجا کردن دستورالعمل ها با یکدیگر استفاده میکند همان طور که ۲-۱-۳ صفحه ۱۵ دیدید که بوسیله رشته ویل کارد و اسکن کردن نسم بایت قابل تشخیص است. به عنوان مثال قطعه کد زیر که متعلق به ویروس Win 95 Reyswap است و در (۴۰) منتشر شده است.

این بدیهی است که بسیار آپ کد مشترک وجود دارد که در تمام شکلهای ویروس Reyswap ثابت هستند که این جستجو رشته های قابل استفاده را با استفاده از ویل کارد امکانپذیر است استخراج میکند. اگر اسکنر آرا پشتیبانی کن تشخیص نیم بایت برای این نوع آلودگی نیز مناسب است
diasemble کردن کد ویروس به معنای جدا کردن استریم به دستور العمل های منحصر به فرد است. این تکنیک برای تشخیص ویروسهایی که کد زاید بین کدشان وارد می کنند خوب است. به دلیل اینکه دستور العمل بیش از حد می تواند طولانی شود و رشته های جستجوی ساده نمی تواند استفاده شود. همانطور که در {۷} توضیح داده شد این احتمال وجود دارد که یک رشته بتواند درون یک دستورالعمل ظاهر شود به جای اینکه خود آن دستورالعمل وجود داشته باشد. برای مثال:اگر کسی بخواهد دستورالعمل " AX, ZM CMP" را جستجو کند که اگر یک فایل قابل اجرا است تست می کند . چیزی مشترک در میان ویروسها رشته ی ۳D ۴D ۵A
۶۶ را جستجو میکند. رشته ی مذکور می تواند به صورت استریم زیر پیدا شود BF 0 ۶۶ ۳D ۴D ۵A اگر استریم فوق disassemble شود۹O و نمایش داده شود آنچه که یافت می شود دستور العملی مذکور در بالا نیست بلکه به این شرح است :

با استفاده از یک disassemble میتوان از بروز چنین اشتباهاتی جلوگیری نمود . این تکنیک وقتی با یک ماشین حالت ترکیب شود یک ابزار قوی خواهد شد که میتواند در آنجا که دستورالعمل جالب و غیر منتظره ای را می یابد ترتیب آن را ثبت نماید .حتی اگر با یک شبیه ساز ترکیب شود قویتر نیز میشود و قادر به تشخیص ویروسهای دشوارتری مثل /win۹۵zmist یا /win۹۵pulon که بر اساس موتور لکش تان هستند میباشد.


تشخیص ویروس puron , lexoton اگر فقط از یک disassembler و ماشین حالت استفاده کنیم کار آسانی است زیرا هر دویه این ویروسها دستورالعمل یکسانی را با ترتیب مشابهی با دستور العمل های زاید و پرش وارد شده بین هسته ی اصل دستور العملها اجرا می کنند.
استفاده از شبیه ساز
کد شبیه سازی یک ماشین مجازی برای شبیه سازی puc و سیستم مدیریت حافظه پیاده سازی می کند و کد مخرب را درون ماشین مجازی اجرا می نماید. اسکنر های انتی ویروس می توانند کدها را درون یک شبیه ساز تست نماید برای مثال "۲۱h INT"یک دستور العمل خیلی معمولی برای جستجوی ویروس در SOD است.

در یک نوع از ویروس ACGوقتی رسید و جستجوها میباشند. اساس تشخیص ACG استفاده کردن از دستورالعملهایی است که به اندازه کافی مشابهت دارند تشخیص ویروسی است که ما را با مشکل پنهان کردن داده ثابت مثل کد متغیر درون خودش از نسلی به نسل دیگر را مواجه می کند در تشخیص چنین تغیراتی رد یابی کردن میتواند بسیار مفید باشد. Erol داده ثابت را رویه پشتهای از داده متغییر میسازد و سپس آنها را به تابع واقعی یا PIAیی که به آنها نیاز دارد تحویل میدهد.با نقاط شکست مناسب شبیه سازها خیلی مفید میتواند با چنین ویروسهایی برخورد مینماید تنها چیزی که مورد نیاز است یک زبان اسکن کردن code_ P است که برای نوشتن الگوریتم های تشخیص مورد استفاده قرار میگیرد. برای ویروسهای مثل Erol که اغلب داده ثابت را روی پشته می سازد.شبیه ساز می تواند معرفی شود برای اجرای شبیه سازی تا یک محدودیت تکرار از پیش تعریف شده و چک کردن محتوای پشته میتواند در مواجه با ویروس متامورفیک شده پیچیده که داده را روی پشته کشف رمز میکند بسیار مفید باشد
۴- استفاده از ویژگی های + و -
این تکنیکی است که برای سریعتر کردن فرایند اسکن استفاده میشود. ویژگی مثبت بررسی چک کردن مجموعهای از الگوهای موجود در ساختار ویروس است در حالی که ویژگی منفی چک کردن عکس آن است. ویژگی منفی می تواند برای متوقف کردن فرایند تشخیص به وسیله شناسایی مجموعه دستوراتی که در هیچ یک از انواع واقعی ویروس متامورفیک ظاهر نمیشود مورد استفاده قرار گیرد.
۵استفاده از اکتشاف بر پایه شبیه ساز
تشخیص اکتشافی بطور خاص شناسایی ویروس ها نیست. بلکه استخراج کردن ویژگی های ویروسها و تشخیص دادن کلاس ویروسهای کامپیوتری به صورت کلی است.ادر غیر این صورت اعلام میگردد موتورهای اکتشافی می توانند دنبال کنند.وقفه ها را با یک سطح عمیق تر اکتشافی را پیاده سازی کنند که از یک ماشین مجازی که سیستم عامل را شبیه سازی میکند استفاده نمایند. چنین سیستم هایی حتی میتوانند ویروس را درون ماشین مجازی روی یک فایل مجازی سیستم تکثیر نمایند. بعضی تولید کنندگان انتی ویروس چنین سیستم هایی را پیاده سازی نموده اند و آنها را خیلی موثر یافته اند ارائه خطای مقادیر مثبت کمتر. این تکنیک نیازمند شبیه سازی از فایل های سیستمی است به عنوان مثال:هر وقت یک فایل جدید توسط ویروس شبیه سازی شده باز شود یک فایل مجازی به آن داده می شود. پس ویروس شبیه سازی شده ممکن است تصمیم به الوده کردن فایل مجازی در سیستم مجازی خود بگیرد. به منظور شناسایی و اثبات فرایند تکثیر ویروس موتور اکتشافی می تواند فایل مجازی اصلاح شده را ببرد و آن را در جای دیگر قرار دهد. اگر فایل مجازی اصلاح شده دیگر فایل های مجازی را در ماشین مجازی جدید تغییر داد به طور مشابه با شبه ویروس تجربه شده قبلی تغیر میکند بنابراین تکثیر ویروس شناسایی شده است .این مشکل بزرگ با این مسئله آن است که شبیه سازی سیستم چند رفتاری بسیار مشکل است به ویژه اگر در اسکنر ویندوز روی ویندوز ساخته شود. به دلیل پیچیدگی ویندوز چنین سیستمی نمی تواند کامل کامل باشد و حتی اگر از یک سیستم مثل vmware استفاده کنیم. DLLها نسل ۳ قسمتی از ماشین مجازی واقعی نیستند و اگر یک ویروس تلاش کن تا از چنین مجموعه API استفاده کند. شبیه سازی از ویروس احتمالا دچار شکست می شود مشکل بزرگ دیگر کارایی است مهم نیست که چقدر اسکنر خوب است .اگر اسکنر به اندازه کافی سریع نباشد حتی اگر بتواند هر نوع ویروس را تشخیص دهد بعنوان یک محصول محکوم به شکست است. مشتریان بر این باوراند که سریعتر بهتر است بنابراین اسکنر انتی ویروسها همیشه باید در رعایت سرعت سازش نمایند حتی اگر تمام منابع برای توسعه یک ماشین مجازی کامل برای شبیه سازی ویندوز روی ویندوز داخل یک اسکنر درسترس باشد. بهرحال پترازو چنین توضیح میدهد "گسترش سطوح شبیه سازی ویندوزدرون سیستم اسکنر یک ایده خوب است و منجر به قابلیت اطمینان اکتشافی بهتر میشود بدیهی است اینده اکتشافی به اتکای چنین ایده ای است "
متاسفانه نویسندگان ویروس از تکنیک های انتی ویروس که بر مبنای شبیه سازی هستند اگاه هستند. انها تکنیکهای ضد شبیه سازی مختلفی را برای به چالش کشیدن سیستم های انتی ویروس ترکیب می کنند. ویروس POE مانند ویروس INW/ ۹۵ mistZ میتواند شبیه سازها را فریب دهد. حقه های ضد شبیه سازی حتی در روزهایی که از OSD استفاده میشد به وسیله ویروس هایی مثل SGA شناخته شده بودند. که تحت شرایط مشابه یا تنها در روزهای خاص منتشر و تکثیر می شوند. اگر اسکنر از اکتشافی خالص استفاده کند و به جزئیات خاص ویروس توجه نکند تشخیص کامل نخواهد بود. برای مثال اگر یکی سه شنبه ی برای ویروسی عمل اسکن را انجام دهد که فقط در روز دوشنبه تکثیر می شود ویروس به راحتی می تواند گم شود مثال دیگر ویروس / rtsigma niW۳۲ که بدون اتصال به اینترنت الودگی ایجاد نمی کند. اگر ویروس یک وب سایت خاصی را جستجو کند و شبیه ساز قادر به پاسخ مناسب در دنیای واقعی نباشد ویروس نمی تواند تکثیر شود و به دنبال آن اسکنر نمی تواند آن را تشخیص دهد علاوه بر این ویروس هایی وجود دارد که حتی در یک محیط شبیه سازی کامل هم قابل تشخیص نمی باشند فقط تشخیص مختص ویروس برای چنین ویروس هایی می تواند کار کند بدون شک برخی از آنها خیلی دگرگونی دارند.
۶-تشخیص حلقه های مترسک
یکی دیگر از تکنیک های ضد شبیه سازی توسط ورژن بهبود یافته ویروس istroB معرفی شده است که بعضی اوقات بعضی از نسخه اصلی منتشر شده بود. این تکنیک که داخل کردن کد رندم نامیده می شود(موتور ماچو) دستورالعمل های زاید و حلقه های مترسکی را قبل از رمزگشایی کد داخل می کند و نتیجتا بعضی شبیه سازها در دوباره ساختن ویروس واقعی و شبیه سازی میلیونها دستور زاید دچار مشکل می شود شبیه سازها باید ابزاری برای شناسایی دستورات زاید و دستوراتی که کار خاصی انجام نمیدهند و حلقه های مترسک داشته باشند و باید بتوانند از آنها بپرند. برای مثال موتور ماچوی ویروس istroB به وسیله مانیتورنیک حركات و تغیرات PI و چک کردن عملکردهای (RITEW) شناسایی می شود. این روش برای تشخیص عمومی تمام ویروس های inW۳۲ که متور ماچو استفاده می کند به کار میرود. به هر حال این روش می تواند خطای مقادیر مثبت را تولید کند.
۷-تشخیص رمز گشایی پشته
انواع دیگری از ویروس morphZ یک ویروس متامورفیک ایجاد شده به وسیله نویسنده ویروس ombieZ یک قطعه از کد چند ریختی را در نقطه ورود فایل الوده شده قرار می دهد بنابراین آنها ویروس را دستورالعمل به دستورالعمل رمزگشایی میکنند و به وسیله قرار دادن نتایج در حافظه پشته دوباره میسازند. بعد از رمزگشایی آخرین دستورالعمل کنترل به ابتدای بدنه ویروس در پشته منتقل میشود.
اگر شبیه ساز قادر به تشخیص دادن رمزگشایی پشته نباشد چنین ویروسهایی گم و گور میشود. حافظه ی قابل دسترس ویروس باید به وسیله شبیه ساز مونیتور شود و وقتی کنترل به حافظه ی پشته منتقل شد شبیه ساز باید آن را تشخیص دهد و تمام کد ویروس رمزگشایی شده را برای شناسایی دمپ نماید.اشکال این روش این است که تاثیر قابل توجه بر عملکرد اسکنر دارد.. .
۸-تشخیص تغییر شکل کد
تکنیک های جایگزینی دستورالعمل بحث می کند که ویروس متامورفیک دستورالعمل ها را با دیگر دستورالعمل های معادل جایگزین می شود. تغیر شکل کد روشی است برای لغو تغییر انجام شده بوسیله ویروس کد تغیر یافته برای تبدیل دستورات جهش یافته به ساده ترین شکل بکار می رود که در آن ترکیبی از دستورالعمل ها به فرم معادل ولی ساده تبدیل شده است پس از اینکه کد مشترک تغییر یافته به وسیله ویروس ارائه شد می تواند شناخته شود اولین ویروس متامورفیک که این تکنیک در آن قابل اجرا بود ویروس /inW۳۲ simile می باشد این بخش یک بحث مختصر در مورد چگونگی تغییر شکل کد که بوسیله simile انجام میشود فراهم می نماید. برخی تکنیک های متامورفیک که simile انجام می دهد عبارت اند از نقطه ورود مبهم (poE) تبدیل و کد سنگین جهش یافته به وسیله تکنیک های کاهش و در حال توسعه. گام های که ویروس طی می کند تا به کد جهش یافته دست یابد به قرار زیر است

با استفاده از روش شبه اسمبلر برای رمز گشایی دستورالعمل ها به یک فرم می توان آن را دست کاری نمود.سپس آن دستورالعمل را طول دستورالعمل ها نرجسترها و دیگر اطلاعات مربوط را استخراج می کند.سپس shrinker کد isassemblerD را که از نسل های قبلی تولید شده فشرده می کند. و دستورات زاید را حذف می کند.

کد ویروس در ابتدا بوسیله مبدل پردازش شده تا سطح متامورفیک را افزایش دهد . توسعه دهنده آنچه را shrinker انجام داد ، لغو مینماید. که آن عهده دار ترجمه رجیستر و انتخاب دوباره متغیر است. توسعه دهنده به طور تصادفی دستورالعمل ها را انتخاب می کند و در آخر مرحله ،اسمبلر کد شبه اسمبلی را به دستورات اسمبلی ۳۲-IA اینتل تبدیل میکند. در ادامه دو قطعه از کد در دونسل متفاوت از mileis آمده است. آنها کاملا متفاوت به نظر می رسند آما تجزیه و تحلیل دقیقتر نشان میدهد که هر دو رشته ۱۱.kernel۳۲d در پشته اسمبل میکند و سپس etModuleHandleAPIG را فرا میخواند.

در متن اصلی مقاله به هم ریختگی وجود ندارد. برای مطالعه بیشتر مقاله آن را خریداری کنید