بخشی از مقاله
چکیده
امروزه با افزایش روزافزون سطح ارتباطات در بستر اینترنت، مسئله امنیت رایانه به یکی از مسائل مهم و پر چالش دنیای رایانه تبدیل شده است. از مهمترین مواردی که امنیت رایانهها را تهدید میکند بدافزارها هستند. محققان حوزه امنیت در تلاش هستند تا با ارائه روشی برای شناسایی کدهای مخرب، از آسیبهای احتمالی بدافزارها جلوگیری کنند. روشهای تشخیص بدافزار به دو دسته کلی شناسایی مبتنی بر امضاء و شناسایی براساس ناهنجاری تقسیم میشود.
در روش تشخیص براساس امضاء محققان در تلاش هستند که یک توالی از بایتها را بهعنوان اثر انگشت منحصربهفرد یک بدافزار خاص استخراج نموده و در مخزنی نگهداری کنند و با مقایسه هر فایل مشکوک با امضاهای موجود در مخزنهای سالم و مخرب تعلق فایل را به هر دسته پیشبینی کنند.
روش پیشنهادی در این مقاله مبتنی بر تشخیص امضا در محیط ایستا است. برای استخراج امضای فایلها تمرکز بر روی آپکدهای برنامه است به این ترتیب که با استفاده از توالی آپکدها به همراه رویکرد N-gram و ایجاد ترکیبات متنوعی از این توالیها، امضای منحصربهفردی ثبت و نگهداری میشود. در نهایت تلاش میشود تا بدون داشتن اطلاعات درباره اینکه هر فایل به کدام دسته از بدافزارها تعلق دارد، بدافزارها تشخیص داده شوند.
.1 مقدمه
امنیت رایانه و شبکه یا امنیت فضای تبادل اطلاعات مقولههای مهمی در عصر حاضر هستند. در این حیطه، بدافزارها خطری جدی برای امنیت و یکپارچگی اطلاعات به شمار میروند. امنیت کامپیوتر، تلاش میکند فضای امنی را برای اجرای برنامهها فراهم کند. در واقع هر برنامه یا کاربر تنها کارهایی را میتواند انجام دهد که مجوز آنها را دارد .[1] یک اصل مهم در مبحث امنیت این است که هیچگاه نمیتوان ادعا نمود در سیستمی امنیت کامل وجود دارد و آن سیستم نفودناپذیر است. البته این اصل تنها برای امنیت کامپیوتر به کار نمیرود. براساس همین اصل مهم است که برخی از افراد، سازمانها و یا دولتها با نیتهای مختلف سعی دارند نقاط ضعف امنیتی طرف مقابل خود را بیابند.
از طرفی هر فرد یا سازمان تمایل دارد، تا خودش سیستمی را که از نظر امنیتی دچار ضعف است را بیابد و اصلاح نماید. از این رو یک رقابت بین حملهکنندگان و مدافعین وجود دارد. حملهکننده به دنبال راهی است تا بتواند نفوذ یا خرابکاری خود را بدون اینکه شناسایی شود، انجام دهد.
مدافع نیز به دنبال راهکارهایی است تا بتواند این اعمال را خنثی نماید. یکی از زیرمجموعههای امنیت کامپیوتر، شناسایی و مقابله با بدافزارها است .[2] طبق گزارش سالانه امنیتی در سال 2014، حملات مخرب از سال 2012 تا 2013 به میزان 700 درصد افزایش یافته بود. همچنین بیش از 552 میلیون هویت محرمانه در سال 2013 در معرض خطر قرار داشت، که نشاندهنده افزایش 493 درصدی حملات در سال 2012 است. بسیاری از این حملات نوعی بدافزار را در برداشتند
طبق آمار تعداد بدافزار جدید همیشه در حال افزایش است، اما بهنظر میرسد که این الگو در حال تغییر است. در سال 2016 تعداد بدافزار جدید حدود 127 میلیون و برای اولینبار در تاریخ، کمتر از سال قبل 144 - میلیون - است. با حدود 22 میلیون نمونه جدید بدافزار در سه ماهه اول سال 2017، به نظر میرسد تعداد فایلهای مخرب همچنان کاهش پیدا کرده است. البته روند کاهش بدافزار به معنا کاهش بدافزار جدید است، اما حملات بدافزارها بهطور کلی دارای روند رو به رشدی هستند و همین اهمیت شناسایی بدافزار - به ویژه با استفاده از روشهای مبتنی بر امضاء - را نشان میدهد
روشهای شناسایی بدافزار بهطور کلی به دو دسته تقسیم میشوند: شناسایی مبتنی بر رفتار و شناسایی براساس تشخیص امضاء. جزئیات این روشها در ادامه توضیح داده شده است.
شناسایی مبتنی بر رفتار: اقدامات انجامشده توسط بدافزار را بهصورت الگوی دودویی3 مشخص میکند. در نتیجه به کمک این رویکرد برنامههایی که با نحو4 متفاوت رفتار یکسانی دارند، جمعآوری میشوند. سپس این امضای رفتار خاص میتواند نمونههای متنوعی از نرمافزارهای مخرب را شناسایی کند. تشخیص مبتنی بر رفتار دارای دو مشکل زیر است :
1. حساس نسبت به نرخ مثبت کاذب.
2. حساس به حملات تقلید.
شناسایی بر اساس تشخیص امضاء: این رویکرد، قدیمیترین روش تشخیص بدافزار است. در این روش برای هر بدافزار پس از تشخیص، دنبالهای از بایتها، بهعنوان امضا در نظر گرفته میشود و در پایگاه دادهای ذخیره میشود. این روش همواره بهصورت گستردهای توسط برنامههای ضد بدافزار5 مورد استفاده قرار گرفته است. روشهای مبتنی بر امضاء بیشترین سرعت و امنیت را نسبت به سایر روشها دارند. به همین دلیل همچنان در برنامههای تشخیص بدافزار مورد استفاده قرار میگیرند. تکیه ما در این پژوهش بر روشهای مبتنی بر امضاء خواهد بود.
موضوع تشخیص ویروسهای کامپیوتری اولین بار توسط کوهن6 در سال 1983 با رسمیکردن واژهء ویروس7 کامپیوتری، به دنیای شناسایی بدافزارها راه یافت .[6] بدافزارها را میتوان به دستههای مختلفی از قبیل ویروسها، کرم8ها، کرم8ها، تروجان9ها، جاسوسافزار10ها، تبلیغافزار11ها و ترکیبی از این دستهها یا زیرمجموعهای از اینها تقسیم کرد
اولین نوع بدافزاری که به وجود آمد، با نام ویروس شناخته میشود که این نامگذاری به دلیل شباهت سازوکار آن با ویروس بیولوژی است .[6] ویروس کامپیوتری کدی است که به تنهایی نمیتواند کاری انجام دهد. این کد پس از آنکه به یک برنامه تزریق شد، با اجرای آن برنامه، اجرا میشود. به این برنامه، برنامهء آلودهشده میگوییم. این کد خصوصیت دیگری نیز دارد که پس از اجرای برنامهء آلودهشده میتواند خود را تکثیر و دیگر برنامهها را نیز آلوده کند
این کد پس از آلودهکردن سیستمها، هدف خود را عملی مینماید. ویروسها میتوانند اهداف مختلفی را دنبال کنند، از جمله این اهداف میتوان به جاسوسی، براندازی، اختلال در سیستمها و اهداف نظامی اشاره کرد. پس از ویروسها، بدافزارهای قویتری از جمله کرمها و روت کیت12ها به وجود آمدند که تواناییهای زیادی دارند .[8] برای مثال در جولای 2010 کرم استاکسنت13 با هدف اختلال در سیستمهای کنترل صنعتی برای حمله به تأسیسات ایران، شناسایی شد
روشهای قدیمی تشخیص مبتنی بر امضاء و روشهای تعمیمیافته و نوین میتوانند این بدافزارها را شناسایی نمایند. نویسندگان بدافزار برای جلوگیری از تشخیص توسط ضد بدافزارها، روشهایی را به کار میبرند که به ابهامزایی14 موسوم هستند. سهولت پیادهسازی، سرعت و امنیت روشهای مبتنی بر امضاء، ما را بر آن داشت تا از این روش به همراه استخراج ویژگیهای نوین، در این پژوهش بهره ببریم. در این تحقیق بیشتر بر روی تحلیل ایستای بدافزارها تأکید شده است. البته در مورد روشهای تحلیل پویا نیز مباحثی وجود دارد. در نهایت روش پیشنهادی مطرح، بررسی و تشریح خواهد شد.
.2 کارهای پیشین
در سالهای اخیر، نگرانیهای زیادی در مورد تشخیص بدافزار وجود داشته است. در حال حاضر روشهای شناسایی بدافزار میتوانند به دو دسته کلی تقسیم شوند:
-1 تشخیص براساس رفتار
-2 شخیص براساس امضاء
هر کدام از این روشها میتوانند به سه رویکرد پویا، ایستا و یا ترکیبی تقسیم شوند.