آنالیز و تشخیص بد افزارهای کامپیوتری با استفاده از روش های یادگیری ماشین
چکیده
بدافزار، نرم افزاری است که نیت خرابکارانه و یا اثراتی تخریبی دارد. این نرم افزارها طیف وسیعی از خطرات و تهدیدات کامپیوتری، از قبیل ویروس ها، کرم ها، تروجان ها و نرم افزارهای جاسوسی را در بر می گیرند. یکی از اصلی ترین میزبانان بدافزارها، فایل های اجرایی هستند، به همین منظور شناسایی و تشریح بدافزارها از فایل های اجرایی، در مباحث امنیت کامپیوتری امری بسیار حیاتی و حائز اهمیت است. یکی از روش های متداول در این زمینه، استفاده از آپکدهای (opcodes) موجود در کد اسمبلی بدافزارها است. در این پایان نامه از روشی جدید مبتنی بر دسته بندی معنایی آپکدها برای تشخیص بدافزارها استفاده شده است. پس از استخراج دنباله نقش-آپکدها مربوط به هر فایل، خواص آماری آن همچون دنباله های n-گرم، خودهمبستگی، نرخ آنتروپی و فاصله محاسبه می شود و به عنوان ویژگی های مربوط به آن فایل مشخص می شود. سپس کارایی و دقت هر گروه از ویژگی ها با استفاده از دسته بندهای مختلف همچون درخت تصمیم، k-نزدیک ترین همسایه و ... مورد ارزیابی قرار گرفته است. پس از این به منظور بررسی توانمندی روش ارائه شده، با همتای خود (دنباله آپکد) از سه جنبه تعداد ویژگی ها، مدت زمان ساخت مدل و صحت داده ها مقایسه شده است. در فاز مقایسه از دو رویکرد مختلف برای استخراج ویژگی مبتنی بر محتوای اسمبلی فایل ها استفاده شده است. روش اول مبتنی بر فراوانی آپکدهای ظاهرشده در متن کد است و روش دوم مبتنی بر فراوانی نقش-آپکدهای متوالی ظاهرشده در متن کد است. پس از آن هر دو روش در شرایط برابر و با استفاده از دسته بندهای مختلف مورد آزمایش قرار گرفته اند. نتایج آزمایشات نشان می دهد که با استفاده از دسته بندی معنایی آپکدها کارایی و صحت دسته بندهای مختلف در تشخیص بدافزارها کاهش نمی یابد، علاوه بر این تعداد ویژگی ها، حجم محاسبات، حافظه و زمان مصرفی به طور قابل توجهی کاهش می یابد.