بخشی از مقاله

چکیده

مسأله اصلی که در این مقاله مورد بررسی قرار می گیرد، تشخیص بدافزارهای رایانهای با استفاده از بررسی فراخوانیهای سیستمی توسط نرمافزار به وسیله یک شبکه عصبی می باشد. در این راه برای انتخاب زیرمجموعهای مناسب از فراخوانیهای سیستمی برای دستیابی به حداکثر دقت، از الگوریتم ژنتیک استفاده کردهایم. اما با توجه به آنکه ارزیابی هر کروموزوم با استفاده از شبکه عصبی کاری زمانبر بوده و باعث افزایش زمان یادگیری سیستم می شود؛ لذا برای ارزیابی هر کروموزوم در الگوریتم ژنتیک از یک طبقهبند ابداعی که از یک تکنیک ساخت سیستم خبره الهام گرفته شده است، استفاده کردهایم. روش ارائه شده در مقایسه با روش های مشابه نتایج بسیار خوبی ارائه داده است.

1 مقدمه

بدافزار1 به مجموعهای از نرم افزارهای رایانهای اطلاق می شود که به منظور آسیب رساندن به سیستمهای کامپیوتری یا انجام کارهایی ناخواسته و بدون اجازه صاحب سیستم و گاهی سرقت اطلاعات طراحی شدهاند. از انواع بسیار رایج بدافزارهای رایانهای می توان به viruse، worm، Trojan و spyware اشاره کرد که وجه تمایز هرکدام از آنها نحوه ورود به سیستم کامپیوتری و نوع رفتار و عملکرد آنها و همچنین هدفی که برای آن طراحی شدهاند میباشد.

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

-2 کارهای انجام شده

برای تشخیص بدافزارهای رایانهای یکی از راههای معمول در گذشته بررسی امضا نرمافزار بوده است. در این روش برای شناسایی فایل مخرب نیاز است تا بدافزار قبلاً شناسایی شده باشد و به عنوان بدافزار رایانهای به ثبت رسیده باشد. امروزه از این روش در کنار سایر روشها برای تشخیص بدافزارهای معروف کاربرد دارد. برای تشخیص بدافزارهای رایانهای تاکنون از بررسی دنبالهای از کدهای اسمبلی3 نرمافزار>1@ و همچنین بررسی فراخوانیهای توابع سیستمی4 توسط الگوریتم >2@Support Vector Machine استفاده شده است. همچنین برای تشخیص بدافزار از نرم افزارهای عادی می توان از بررسی ترتیبی n تایی از فرخوانیهای سیستمی>3@ و یا بررسی گراف فراخوانی توابع در کد نرم افزار به وسیله الگوریتم ژنتیک>4@ بهره برد.

-3 روش انجام کار

برای تشخیص بدافزار از فایل عادی و به منظور آموزش طبقه بند 5 نیاز به جمع آوری مجموعه داده6 داریم. ما از تعداد 2000 فایل استفاده کردهایم که نیمی از آنها را فایلهای عادی و نیمی دیگر را فایلهای بدافزار تشکیل میدهند که قبلا توسط نرمافزار امنیتی رایگان AVG به عنوان بدافزار شناسایی شدهاند. این فایل ها بخشی از فایل های مجموعه داده ی معروف VXHeaven می باشند. روش ارائه شده ما برای تشخیص بدافزار از فایل عادی مبتنی بر فراخوانیهای سیستمی به عنوان ویژگی7 برای انجام عملیات دستهبندی8 میباشد. ما برای استخراج فراخوانیهای سیستمی توسط یک نرم افزار، از IATExtractor استفاده کردهایم . برای این کار نرم افزارهایی مثل Sandboxie نیز وجود دارند که این کار را انجام میدهند.

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

ماتریس نهایی تهیه شده تنها حاوی اعداد صفر و یک است که وجود عدد یک در سطر i و ستون j ماتریس نشان می دهد که فایلی که اطلاعات آن در سطر با شماره i قرار دارد از تابعی که در ستون j قرار دارد استفاده کرده است و به همین ترتیب عدد صفر نشان دهنده آن است که فایل مورد بحث از تابع مربوط به آن ستون استفاده نکرده است. در واقع ماتریس X حاوی 2000 سطر است که هر سطر حاوی اطلاعات یک فایل است و تعداد 31262 ستون که هر ستون نماینده یکی از توابع استفاده شده در مجموعه داده است. مقدار هر عنصر از این ماتریس در - 1 - آورده شده است. همچنین اکثر عنصرهای این ماتریس را عدد صفر تشکیل می دهند.

تعداد فراخوانیهای سیستمی استخراج شده بسیار زیاد بوده و همچنین تعداد استفاده از برخی فراخوانیهای سیستمی بسیار پاییناست و مثلاً از برخی از آنها تنها در یک درصد از فایل ها ی موجود در مجموعه داده استفاده شده است، لذا ما در ابتدای کار تعداد دفعات استفاده از هر کدام از توابع سیستمی استخراج شده را محاسبه میکنیم که برای اینکار از - 2 - استفاده کردهایم. سپس ستونهای کمتر استفاده شده را حذف می کنیم.

 با این کار ما مجموعه داده را محدودتر کردهایم و برای استفادههای بعدی آماده نمودهایم. با این کار به شکل خودکار تعداد زیادی از توابع که در تعداد بسیار کمی از فایلها استفاده شدهاند از مجموعه داده حذف می شوند. با توجه به - 2 - در بردار C تعداد دفعات استفاده هریک از توابع سیستمی درکلیه فایلهای موجود در مجموعه داده قرار می گیرد. سپس ما تعداد 8000 عدد از ستونها که دارای بیشترین تعداد دفعات استفاده هستند را با توجه به بردار C انتخاب می کنیم و آنها را به عنوان ویژگیهای استخراج شده از مجموعه داده در نظر می گیریم. بنابراین ماتریس دادههای استخراج شده یک ماتریس در ابعاد 2000 سطر به عنوان فایل های موجود در مجموعه داده و تعداد 8000 ستون است.

-4 انتخاب ویژگی به وسیله الگوریتم ژنتیک

چنانچه بعداً ذکر خواهد شد ما برای انجام عملیات دسته بندی و تشخیص یک فایل مخرب از فایل عادی از شبکه عصبی9 استفاده خواهیم کرد. تاکنون مجموعه داده دودویی10 تهیه شده دارای تعداد 8000 ستون است که تجربه به دست آمده نشان می دهد استفاده از تمامی این ویژگیها برای آموزش شبکهعصبی لزوماً باعث رسیدن به حداکثر دقت نخواهد شد. لذا می توان با یکی از تکنیک های انتخاب ویژگی11، زیر مجموعه ای از ستون های ماتریس مجموعه داده را انتخاب کرد که بیشترین دقت آموزش12 شبکه عصبی را نتیجه دهد. برای انتخاب ویژگی روشهایی بسیاری [5] وجود دارد. ما برای انتخاب زیر مجموعه ای مناسب از ویژگیهای موجود در مجموعه داده برای رسیدن به حداکثر دقت آموزش شبکه عصبی از الگوریتم ژنتیک استفاده کردهایم.

برای انتخاب ویژگی به وسیله الگوریتم ژنتیک، ما قالب نمایش13 هر کروموزوم را از نوع bit string قرار دادهایم. با توجه به تعداد کل ویژگیهای موجود در مجموعه داده که 8000 ویژگی می باشد؛ طول هر کروموزوم در الگوریتم ژنتیک نیز به همین تعداد در نظر گرفته شده است. با توجه به ابعاد بالای مسأله و برای آنکه الگوریتم ژنتیک بتواند به خوبی تمام فضا را جستجو نماید، لذا ما تعداد جمعیت 14 اولیه الگوریتم را 2000 کروموزوم در نظر گرفتهایم. این جمعیت اولیه را به صورت تصادفی با توزیع یکنواخت تولید کردهایم. ما نرخ جهش15 در الگوریتم ژنتیک را عددی بزرگتر از حد معمول برای این عملگر در نظر گرفته و آن را برابر با 0.1 قرار داده ایم. همچنین جهش در الگوریتم ژنتیک را به ازای هر بیت انجام می دهیم. 

الگوریتم ژنتیک دارای عملگری به نام تولید مثل16 میباشد که ما روش انجام آن را در الگوریتم خود از نوع scattered قرار داده ایم .>5@ همچنین نرخ انجام تولید مثل در الگوریتم ژنتیک را عدد 0.95 قرار داده ایم. با توجه به آنکه اپراتور اصلی تولید کروموزوم جدید در الگوریتم ژنتیک اپراتور تولید مثل است لذا بایستی نرخ تولید مثل در این الگوریتم عددی بالا انتخاب شود. با توجه به اینکه الگوریتم ژنتیک فراموشکار است >6@ و ممکن است یک کروموزوم بسیار خوب که در نسل i بهترین کروموزوم است، در نسل i+1 وجود نداشته باشد، از مکانیزم نخبه گرایی17 در الگوریتم ژنتیک استفاده کردهایم و تعداد 5 کروموزوم برتر هر نسل به اجبار در نسل بعدی وجود خواهند داشت. ما از این مکانیزم به این دلیل استفاده کرده ایم تا با توجه به اینکه فضای جستجو بسیار گسترده است در صورت پیدا شدن یک کروموزوم خوب نباید به هیچ وجه آن را از دست بدهیم. ما برای انتخاب والدین در الگوریتم ژنتیک از روش مسابقه >5@ با اندازه 20 استفاده کردهایم.

-5 ارزیابی کروموزوم ها در الگوریتم ژنتیک

یکی از مهمترین قسمتهای الگوریتم ژنتیک نحوه ارزیابی هر کروموزوم میباشد که در آن میزان برازندگی18 کروموزومهای جمعیت اندازه گرفته می شود. در الگوریتم ما هر کروموزوم شامل یک رشته بیتی است که در آن عدد یک در ستون j کروموزم بیانگر استفاده از تابع سیستمی موجود در ستون j مجموعه داده و عدد صفر بیانگر عدم استفاده از آن تابع سیستمی به عنوان ویژگی است. هدف ما یافتن کروموزومی است که به زیر مجموعهای از تابعهای موجود در مجموعه داده اشاره کند که در صورت استفاده از آن ویژگیها دقت آموزش شبکه عصبی برای انجام دستهبندی دادههای موجود در مجموعه داده جمع آوری شده حداکثر شود. اما با توجه به آنکه در مسأله ما ابعاد 8000 است و ما به ناچار اندازه جمعیت را در الگوریتم ژنتیک تعداد 2000 کروموزوم در نظر گرفتهایم ، آموزش شبکه عصبی به ازای تک تک این کروموزومها و محاسبه دقت آموزش هرکدام از این شبکهها بسیار زمانبر است.

لذا الگوریتم ژنتیک برای حل کردن مسأله ما به زمانی بسیار طولانی نیاز دارد. ما برای رفع این مشکل از یک طبقهبند که از تکنیک ساخت سیستمهای خبره غیرقطعی19 الهام گرفتهایم، بهره بردهایم.[7] این طبقهبند با آنکه دقت خوبی را برای دستهبندی مجموعه دادههای تنک20 دارد با این حال نیاز به محاسبات پیچیده ندارد و بسیار سریع است. در نتیجه می تواند به سرعت کروموزومهای موجود در الگوریتم ژنتیک را ارزیابی نماید.

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

-6 طبقهبند ارائه شده برای ارزیابی سریع کروموزومها در الگوریتم ژنتیک

چنانچه در قسمتهای قبلی آورده شد هر کروموزوم در الگوریتم ژنتیک مورد استفاده ما به زیر مجموعهای از ویژگیهای موجود در مجموعه داده اشاره دارد. ما برای ارزیابی هر کروموزوم در ابتدا ماتریس جدید که حاوی زیرمجموعهای از اطلاعات موجود در ماتریس اصلی است و توسط کروموزوم به آنها اشاره می شود را تهیه میکنیم. سپس به ازای تمام ویژگیها و به ازای هر دسته21 داده، دو عدد به نام های LS و LN از فرمولهای - 3 - و - 4 - محاسبه می کنیم. نماد LS بیانگر Sufficiency Likelihood of و نماد LN بیانگر Likelihood of Necessity می باشد.

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