بخشی از مقاله

چکیده

فناوری کامپیوتر در زندگی روزانه انسانها بدل به یک ضرورت شده است. اما امنیت سیستمهای کامپیوتری، توسط بدافزارها تهدید میشود. راهحلهای مختلفی برای شناسایی این تهدیدها وجود دارد. اما این روشها نیز با استفاده از تکنیکهایی که توسط سازندگان بدافزارها مورد استفاده قرار میگیرد، کارایی خود را از دست میدهند. بنا بر این تشخیص بلادرنگ وجود ویروسهای کامپیوتری، ضروری است. انتشار ویروسی، یکی از پدیدههای مهم در بحث ویروسهای کامپیوتری است. ویروسهای کامپیوتری به منظور نامریی شدن و دور ماندن از دسترس ضد ویروسها، به تدریج کدهای خود را بهبود میبخشند. برنامهنویسانمعمولاً در ساخت ویروسهای کامپیوتری، از روشهایی استفاده میکنند تا ویروسها بتوانند ساختار داخلی خود را در هر بار آلودهسازی، تغییر دهند.

برای تحلیل بهتر بدافزارها، بدافزار نمونه در یک محیط آزمایشگاهی - Sandbox - اجرا میشود تا رفتار آن تحت نظر گرفته شده و تحلیل گردد. کاربرد سیستمهای تحلیل و نظارت بر ویروس - VMAS - به طور کلی برای نظارت و ثبت رفتارهای ویروسها است و خروجی آن گزارشی تحلیلی است که میتواند برای مطالعه فعالیتهای ویروسها مورد استفاده قرار گیرد. این بسترهای نرمافزاری پویا، کدهای اجرایی ارسال شده را در یک محیط کنترل شده، اجرا میکنند و برای ایجاد شرایط تحلیل، فراخوانیهای APIهای مهم ویندوز و سرویسهای سیستمی را تحت نظر گرفته و ترافیک شبکه را ثبت میکنند. در این مقاله، روشهای تشخیص، تحلیل و مقابله با کدهای مخرب و مروری کلی بر سیر تکامل روشهای اختفا در ویروسهای کامپیوتری و روشهای دفاعی در نرمافزارهای ضد ویروس بیان میگردد.

واژههای کلیدی:ویروس، بدافزار، شناسایی، تحلیل رفتار

-1مقدمه 

یکی از اساسیترین تهدیدات امنیتی که امروزه در رابطه با اینترنت وجود دارد،    بدافزار1 است .[1] همچنان که اینترنت تبدیل به رسانه ارتباطی جهانی در کسب و کار و زندگی شخصی افراد شده است، تهدیدات امنیتی که به موجب بدافزارها ایجاد میگردند نیز، تبدیل به معضلی اساسی شده است که تاثیرات چشمگیری بر زندگی افراد میگذارد .[2] بدافزار، کدی مخرب است که بر روی سیستمهای متصل به شبکه منتشر میشود. باپیشرفت روزافزون فناوریهای محاسباتی و شبکههای ارتباطی، بدافزارها نیز در حال گسترش اند. .[3] از روزهای آغازین پیدایش بدافزارها، مبارزه    
شدیدی بین سازندگان ویروس و متخصصان ضد ویروس وجود داشته است و این جدال، هر روز پیچیدهتر شده و ادامه خواهد داشت. عمده شرکتهای سازنده نرمافزارهای ضد ویروس، مجبورند همه روزه با دهها هزار نمونه بدافزاری جدید دست و پنجه نرم کنند. همزمان با توسعه نرمافزارهای ضد ویروس، نویسندگان ویروس نیز به   یافتن راهکارهای جدیدی برای غلبه بر آنها میپردازند و با ابداع روشهای جدید و ارتقای کدهایشان در تلاشند تا بر این نرمافزارها غلبه کنند. بر این  اساس، روشهای ویروس نویسی در ارتقای چشمگیری داشتهاند .[4]    
 
-2 تحلیل بدافزار

به طور کلی، فناوریهای ضد ویروس به دو دسته عمومی و اختصاصی تقسیم میشوند. روشهای اختصاصی به منظور تشخیص ویروسهای کامپیوتری، نیاز به اطلاعات مربوط به شناسایی آنها دارند. اما در حال حاضر با پیشرفت این فناوری، در بسیاری از نرمافزارهای ضد ویروس فعلی این نیاز برطرف شده است و در عوض، از روشهای اکتشافی و مشاهده خصوصیات و رفتارهای ویروسها برای تشخیص استفاده میشود .[5]روشهای تحلیل رایج که برای تحلیل ویروسها مورد استفاده قرار میگیرند، عبارتند از روش ایستا2، روش پویا3 و روش ترکیبی .[3]تحلیل ایستا عبارت است از استخراج کدها و تحلیل آن بدون اجرای ویروس. در تحلیل ایستا، اطلاعات سطح پایین کدها به کمک بازگردانی به کد منبع4 و یا اسمبلی استخراج میشوند.

تحلیل ایستا این امکان را به دست میدهد تا ساختار اصلی برنامه مشخص گردد و به این ترتیب، بخشهای مختلف برنامه بدون اجرا شدن مورد بررسی قرار گیرد. کارایی این روش نسبت به تحلیل پویا، کمتر است. زیرا بدافزارها و ویروسها معمولاً در مقابل این روش، محافظت شده و دستیابی به کد اصلی آنها مشکل است. این روش تحلیل معمولاً در مورد بدافزارهای ناشناسی که از مبهمسازی کدها استفاده میکنند، ناکام میماند. همچنین برای تحلیل صحیح با این روش، آگاهی کامل از زبان اسمبلی و سیستم عامل مورد نظر ضروری است. به علاوه، نتایج بررسیها نشان میدهد که کد اسمبلی حدود %90 از فایلهای اجرایی ویروسها را نمیتوان با نرمافزارهای بازگردانی به اسمبلی 5 به دست آورد.

اما مزیت اصلی تحلیل ایستا نسبت به تحلیل پویا، نداشتن سربار زمانی برای اجرای برنامه است .[3]اما تحلیل پویا که تحلیل رفتاری نیز نامیده میشود، بر خلاف تحلیل ایستا، با کد ویروس سر و کار نداشته و به جای آن، فایل مخرب را اجرا کرده و مستقیماً بر رفتار، تعاملات و تاثیرات آن بر روی کامپیوتر میزبان نظارت میکند. در تحلیل پویا، فایلهای آلوده برای مدت زمانی مشخص در محیطهای شبیهسازی شده از قبیل ماشین مجازی یا سندباکس، مورد نظارت قرار گرفته و در این مدت، فعالیتهای آن ثبت میگردد. تمامی این اطلاعات در گزارشی، به کاربر تحویل داده شده و از آن برای تحلیل رفتارویروس استفاده میشود .[6]روش تحلیل ترکیبی، شامل ترکیبی از هر دو نوع تحلیل ایستا و پویا است، به این ترتیب که ابتدا مشخصات امضای هر بدافزار تحلیل شده و سپس برای بهبود نتایج تحلیل، از پارامترهای رفتاری استفاده میشود .[3]

-3 دستهبندی بدافزارها

بدافزارها را میتوان به طور کلی به شکل زیر دستهبندی کرد:

-ویروسها: برنامههای کامپیوتری هستند که خود را تکثیر کرده و فایلهای مختلف سیستمی را آلوده میکنند.

-کرم6ها: برنامههای کامپیوتری هستند که خود به خود تکثیر شده و میتوانند خود را به دیگر کامپیوترهای موجود در شبکه یا اینترنت نیز ارسال کنند.

-تروجان7ها: برنامههایی هستند که رفتار نرمافزارهای معتبر را شبیهسازی کرده و به منظور ایجاد امکان کنترل سیستم از راه دور، به نام کاربری و رمز عبور کاربران دست میبرند.

-نرمافزارهای جاسوسی:8 نرمافزارهایی هستند که بدون جلب توجه کاربر، به منظور جمع آوری اطلاعات شخصی و محرمانه وی بر روی کامپیوتر نصب میشوند.

-روتکیت9ها: برنامههایی که به کمک دستیابی به سطح دسترسی مدیریتی10، کنترل سیستم آلوده را به دست میگیرند. نام این بدافزارها بدافزارها از عبارت root در سیستم عامل لینوکس اقتباس شده است.

-باتنت11ها: بدافزارهای خودمختاری هستند که از راه دور کنترل شده و تا زمان دریافت فرمان، در حالت خفته میمانند.

-برنامههای تبلیغاتی مزاحم:12 عملکرد این برنامهها پس از نصب، دانلودونمایش تبلیغات بر روی کامپیوتر است .[3]

-4 روشهای اختفای بدافزارها

بدافزارها را میتوان بر اساس خصوصیات متفاوتشان از جنبههای مختلفی مانند اهداف مورد حمله و یا روش آلودهسازی نیز دستهبندی کرد. یکی از این انواع دستهبندی، براساس روش اختفایی است که بدافزارها از آن استفاده میکنند.ویروس نویسان برای به چالش کشیدن نرمافزارهای ضد ویروس، دایماً در حال توسعه روشهای جدید هستند تا شناسایی کدهای ویروسی خود را مشکلتر سازند. ویروسها میتوانند برای گریز از روشهای رایج جستجوی ویروس، کدهای خود را عوض کرده و در هر بار آلودهسازی، ظاهر خود را تغییر دهند. تکنیکهایی که برای دستیابی به این هدف مورد استفاده قرار میگیرند، شامل روشهای مختلف مبهم سازی13، فشردهسازی 14، رمزنگاری15، چندریختی16 و تکنیکهای نوین تغییر ماهیت17 است .[7]

-1-4 ویروسهای رمزنگاری شده

سادهترین راه برای تغییر ظاهر یک ویروس، استفاده از رمزنگاری است. رمزنگاری، قدیمیترین و متداولترین روشی است که در پنهانسازی دستورات و کدهای ویروس به کار میرود. هدف اصلی از رمزنگاری ویروس با استفاده الگوریتمهای رمزنگاری، تغییر بدنه اجرایی ویروس و پنهان کردن آن به نحوی است که شناسایی و تحلیل آن را مشکلتر کند .[ 4] از آنجا که در روش رمزنگاری، ماژول رمزگشا حتی با تغییر نسل ویروس همیشه ثابت میماند، در اغلب موارد، نرمافزارهای ضد ویروسی که قادر به رمزگشایی و شناسایی مستقیم بدنه ویروس نیستند، میتوانند ماژول رمزگشا را شناسایی کنند. در صورتی که در هر بار آلودهسازی، از کلید رمزنگاری متفاوتی استفاده شود، بدنه رمزگذاری شده ویروس، شکلی متفاوت به خود میگیرد .[7]

-2-4 ویروسهای نیمه چندریخت18
اگرچه سازندگان ویروس سعی میکنند با روشهای رمزنگاری، ویروسها را پنهان کنند، اما حلقه رمزگشایی در تمامی نسخههای مختلف از یک ویروس، دست نخورده باقی میماند. بنا بر این نرمافزارهای ضد ویروس معمولاً مشکلی در شناسایی این ویروسها با استفاده از روش تشخیص امضا ندارند. ویروسهای نیمه چندریخت، به منظور غلبه بر مشکل ذکرشده برای رمزنگاری، یعنی این حقیقت که طول و یکتایی کد رمزگشا موجب شناسایی شدن آن میگردد، کد رمزگشای خود را نیز در آلودهسازیهای جدید، تغییر میدهند .[7] بدین منظور، ویروس نویسان از روشهای متعددی برای تغییر قسمت رمزگشای ویروس استفاده میکنند.

این روشها منجر به ابداع انواع جدیدی از ویروسهای پنهان به نام ویروسهای نیمه چندریخت شده است.ویروسهای نیمه چندریخت با ایجاد نسلهای جدید، کد رمزگشای خود را نیز تغییر میدهند. آسانترین روش برای اجرای این ایده، تهیه مجموعهای از رمزگشاهای متفاوت به جای یک رمزگشای ثابت است. به این ترتیب یک ویروس نیمه چندریخت، پس از هر بار آلودهسازی، هیچ بخش ثابتی نخواد داشت. گر چه این روش به شکل نظری در مقابل شناسایی مبتنی بر امضا که بر اساس الگوی بایتهای موجود در رمزگشا عمل میکند، مقاومتر است، اما کاملاً کارساز نیست. بنا بر این ویروسهای نیمه چندریخت، صرفاً فرایند تشخیص مبتنی بر امضا را مشکلتر میکنند .[4]

-3-4 ویروسهای چندریخت19
متداولترین روش شناسایی ویروسها و بدافزارها که در نرمافزارها و ابزارهای ضد ویروس به کار میرود، روش تشخیص مبتنی بر امضا است. در این روش، از رشتههای کوتاهی که حاصل بررسی کدهای ویروسی بوده وامضا نامیده میشوند، استفاده میشود. هر امضا باید نشانهای یکتا از یک نوع ویروس خاص بوده و در ویروسها و برنامههای دیگر، مشترک نباشد. بر این اساس، یافت شدن یک امضای خاص به معنی یافت شدن یک ویروس خواهد بود. ویروسهای چندریخت برای مقابله با این روش، تعدادی از دستورات موجود در خود را در هر نسل جدید تغییر داده و سیستمهای ضد ویروس را فریب میدهند.

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

ویروسهای رمزنگاری شده، نیمه چندریخت و چندریخت، از نظر استفاده از تکنیک رمزنگاری به یکدیگر شباهت دارند، با این تفاوت که ویروسهای چندریخت میتوانند تعداد نامحدودی کد رمزگشای جدید تولید کنند .[4]نرمافزارهای ضد ویروس برای شناسایی ویروسهای چندریخت، نوعی شبیه ساز ایجاد مینمایند و فرایند رمزگشایی ویروس را شبیهسازی کرده و به شکل پویا، بدنه رمزگذاری شده ویروس را رمزگشایی میکنند. به این دلیل که تمامی ویروسهای چندریخت دارای یک بدنه ثابت هستند، با رمزگشایی کد ویروس، شناسایی آن ممکن خواهد بود .[7]

-4-4 ویروسهای فراریخت20
ویروس نویسان برای مقاومتر کردن ویروسها در برابر شبیهسازی و افزایش طول عمر ویروسهای تولیدی خود، همواره تلاش نمودهاند تا شناسایی آنها را تا حد ممکن برای ضد ویروسها مشکلتر کرده و روشهای پیشرفته بسیاری را ابداع کنند. حتی پیچیدهترین ویروسهای چندریخت نیز پس از رمزگشایی کدها، به راحتی و با استفاده از روش تشخیص مبتنی بر امضا قابل شناسایی خواهند بود. اما مسئله در مورد ویروسهای فراریخت متفاوت است. ویروسهای فراریخت، علاوه بر تغییر کد رمزگشای خود در هر بار آلودهسازی، بدنه خود را نیز تغییر میدهند. در واقع ویروسهای فراریخت، ویروسهایی هستند که بدنه اصلی آنها چندریخت است. این ویروسها از لحاظ استفاده از تکنیکهای مبهم سازی، مشابه ویروسهای چندریخت هستند، با این تفاوت که تمامی ساختار ویروس، طی جهش تغییر میکند. به طور کلی روشهایی که در ویروسهای چندریخت برای تغییر کد رمزگشا به کار میرود، در ویروسهای فراریخت برای تغییر کل ساختار ویروس و ساخت نمونههای جدید مورد استفاده قرار میگیرند .[4]

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