بخشی از مقاله

چکیده

با پیشرفت علم کامپیوتر و تبدیل آن به موضوعی غیرقابل چشمپوشی، تهدیدات امنیتی بیش از پیش اهمیت یافتهاند. طبق گزارش PandaLabs در سال 2017 میلادی، در بین 75 میلیون بدافزار کشفشده، 15'107'232 بدافزار از بین آنها جدید بوده و پیش از این دیده نشدهاند. این ارقام نشان میدهد توسعهدهندگان بدافزار توجه ویژهای روی امنیت دستگاههای کامپیوتری داشته و سعی در سوءاستفاده از آن دارند. ایشان توانستهاند با استفاده از ارز دیجیتال و گسترش باج افزارها بر پایه آن سود زیادی را به دست بیاورند.

در این مقاله یکی از جدیدترین دیتاست بدافزارها که مربوط به ماه ژوئن سال 2018 میلادی است، استفادهشده است تا عملکرد روش پیشنهادیکاملاً به واقعیت و بدافزارهای تازه منتشرشده نزدیک باشد. برای آنالیز بدافزار دو روش آنالیز ایستا و پویا مطرح است که آنالیز ایستا به دلیل عدم اجرای بدافزار بهراحتی قابل دور زدن است.

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

مقدمه

هرگونه نرمافزاری که هدفی برای تخریب سیستم کامپیوتری و یا سوءاستفاده از آن داشته باشد یک بدافزار است. بدافزارها در سالهای اخیر توانستهاند پیشرفت چشمگیری داشته باشند. آنها با استفاده از تکنیکهای درهم سازی، رمزنگاری و پنهانکاری توانستهاند بهراحتی بسیاری از آنتیویروسها را دور بزنند. طبق گزارش سالانه PandaLabs، 75 میلیون بدافزار در سال 2017 شناسایی شدهاند - Panda, - 2018 و بیشتر بدافزارهای کشفشده مربوط به باج افزارها بودهاند که با کمک ارز دیجیتال توانستهاند از صاحبان دستگاههای کامپیوتری اخاذی نمایند. از طرفی روشهای قدیمی تشخیص بدافزار رو به فراموشی است و دیگر قادر به مقابله با تکنیکهای استفادهشده در بدافزارهای جدید نیستند.

آنالیز ایستا

برای تشخیص بدافزار دو روش کلی به نامهای آنالیز ایستا و آنالیز پویا شکلگرفتهاند . - Gandotra, 2014 - آنالیز ایستا بدون اجرای نرمافزار سعی در استخراج ویژگیهایی برای استفاده در دادهکاوی دارد. این روش به دلیل عدم اجرای نرمافزار، امروزه توان مقابله با تکنیکهای جدید را نداشته و کارایی آن تنها زمانی است که بدافزار بدون استفاده از درهم سازی وکاملاً آشکارا توابع سیستمی را فراخوانی کند .

یکی از دلایلی که در حال حاضر نیز این روش در تحقیقات استفاده میشود این است که دیتاست استفادهشده توسط آنها بسیار قدیمی بوده و تکنیکهای پیشرفته در این تحقیقات به کار نرفته است. در شکل 1 نمونهای از ساختار یک نرمافزار که به PE معروف است نشان دادهشده است. PE بهاختصار به Portable Executable اشاره دارد و شامل تعاریف و ساختاری جهت اجرای نرمافزار توسط سیستمعاملهای مایکروسافت است. در شکل 1 قسمت آخر که نشاندهنده Import Table یا Import Directory است، شامل توابع سیستمی است که نرمافزار جهت اجرا به آنها نیاز دارد.

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

شکل - 1 ساختار PE

آنالیز پویا

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

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

آنالیز پویا با دریافت لیست توابع سیستمی از طریق روشهایی مانند قلاب گیری یا Hooking اقدام به نظارت بر استفاده توابع لیست شده کرده و در صورت فراخوانی آنها توسط نمونه، سیستم به تابعی از قبل تعریفشده توسط روش قلاب گیری آمده و پس از طی مراحل ثبت مشخصات تابع استفادهشده و مقادیر آن به کار خودش در تابع اصلی ادامه میدهد . یکی از روشهای اصلی قلاب گیری In-line است.

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

سپس لاگ های ثبتشده جهت پیشپردازش و انتقال به بخش دادهکاوی استفاده میشوند. کارهای صورت گرفتهمعمولاً از یک دیتاست قدیمی با عنوان - VXHeaven, 2015 - VXHeaven که یکی از رایجترین دیتاستها در تحقیقات آنالیز بدافزار است استفاده میکنند. با توجه به استفاده این تحقیق از سیستمعامل ویندوز 7 جهت آزمایش نمونهها، بسیاری از نمونههای دیتاست مذکور حتی قادر به اجرا در این محیط نبوده و نیاز به سیستمعامل ویندوز XP دارند. درنتیجه نتایج به دست آمده با این دیتاست ممکن است دور از واقعیت باشد و روشهای پیشنهادی بهتر است با دیتاست های بهروزتری ارزیابی شوند.

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

در این تحقیق در ابتدا یک دیتاست از بدافزارهای بسیار جدید تهیهشده است. این امر باعث خواهد شد نتایج بهدستآمده در این تحقیق به دنیای واقع و بدافزارهای جدید منتشرشده نزدیک باشد و در شناسایی آنها بتواند با دقتی راضیکننده عمل نماید. برای لیست توابع سیستمی، توابعی از سه منبع شامل - Guarnieri, 2012 - ، - Salehi, 2017 - و - Fan, 2015 - ادغام شدهاند تا بهترین نتیجه به دست بیاید. این توابع قادر هستند عملکرد بدافزار و نرمافزار را بهخوبی نشان داده و وجه تمایز آنها را نمایان کنند.

هر چه انتخاب توابع اصولیتر و بیانگر اختلاف بدافزار و نرمافزار سالم باشد، بخش دادهکاوی میتواند عملکرد بهتری توأم با درصد تشخیص بیشتری ارائه نماید. همچنین انتخاب تعداد زیاد توابع علاوه بر سربار سیستم باعث کندی تشخیص و بالا رفتن درصد خطای روشهای دادهکاوی میشود. روش پیشنهادی توانسته است با استفاده از 233 تابع سیستمی جهت نظارت به درصد تشخیص %98 بر روی یکی از جدیدترین دیتاست های بدافزار برسد.

این دقت تشخیص توسط الگوریتم Random Forest در بین سه الگوریتم که عبارتاند از Random Forest، J48 و SVM بهدستآمده است. همچنین تمامی عملیات نظارت و مدیریت ماشینهای مجازی توسط اسکریپتهای توسعه دادهشده انجام میشود و هیچگونه دخالت دستی در این موارد مشاهده نمیشود. این کار باعث شده است علاوه بر بالا رفتن سرعت کار، بتوان در کارهای آتی از نرمافزار توسعه دادهشده برای گسترش و شبیهسازی یک آنتیویروس قابلاستفاده در دنیای واقعی بهره برد.

پیشینه

علم آنالیز بدافزار با آنالیز ایستا شروع شد و آقای یی و همکارانشان را میتوان یکی از نخستین پژوهشگرانی دانست که در این راه قدم گذاشتند. در تحقیق ایشان - Ye et al, 2007 - از قوانین اجتماع جهت شناسایی بدافزارها کمک گرفتهشده است. ایشان با استفاده از الگوریتم OOA_fast_FP_Growth توانستهاند به درصد تشخیص %93.07 برسند. IMDS نامی است که ایشان برای مدل پیشنهادی خود انتخاب نمودهاند. در این مدل هر نمونه به یک گروه 32 بیتی بهعنوان یک نشانگر تبدیل میشود، سپس نشانگرها در دیتابیس ذخیره میشوند تا الگوریتم OOA روی آنها اعمال شود. همچنین جهت رفع مشکلات مقیاسپذیری و overfitting از تکنیکی به نام Association Rule Based Classification استفادهشده است. لازم به ذکر است روش ایشان ایستا بوده و نمونهها اجرا نمیشوند.

بالدانگومبو و همکارانش - Baldangombo, 2013 - مانند تحقیق قبل از روش آنالیز ایستا بهره بردهاند . ایشان توانستند با استفاده از روشهای دادهکاوی و الگوریتمهای SVM، Naïve Bayes و J48 به نتایج بسیار خوبی دست یابند. برای ایجاد دیتاست ویژگیها، ایشان از سه مشخصهی اطلاعات سرآیند PE، اسامی DLLها و نام API استفاده کردهاند. ایشان نرمافزارهای پک شده را غربال کرده و از دیتاست خود حذف نمودهاند . این امر باعث افزایش دقت میشود ولی در عوض استفاده روش در محیط واقعی با مشکل همراه خواهد بود. زیرا بدافزارهای جدید قریب بهاتفاق از پکرها برای پنهان کردن کدهای مخرب خود استفاده میکنند. درنهایت تحقیق فوقالذکر توانسته است به نرخ تشخیص %99.6 بهوسیلهی الگوریتم J48 و با ترکیب ویژگیهای اطلاعات سرآیند PE و نام APIها برسد. منظور از نرخ تشخیص در اینجا همان نرخ True Positive است. لازم به ذکر است در این تحقیق از دیتاست VXHeaven استفادهشده است.

بهعنوان یکی از جدیدترین تحقیقات در زمینه آنالیز ایستا، وانگ و همکارانش - Wang, 2016 - به مشکلات قبلی مانند تعداد زیاد ویژگیها و عدم توضیح در مورد علل انتخاب و دستهبندی آنها پرداختهاند . دستهبندی بدافزار توسط ایشان در دو شاخص کلی قرارگرفته است. اول تشخیص بدافزار از نرمافزار سالم و دوم تشخیص خانواده بدافزار. وانگ و همکارانش در تحقیقی که ارائه کردهاند از شبکه عصبی برای تشخیص بدافزارها استفاده میکنند. تکنیک مورد استفاده آنها RNN است که قدرت خود را در تشخیص زبان انسان بهخوبی نشان داده است. روش پیشنهادی ایشان توانسته است با دقت %99 عمل دستهبندی را انجام دهد.

در زمینه آنالیز پویا نیز کارهایی توسط محققان انجامگرفته است که تحقیق فرداوسی و همکارانشان - Firdausi, 2010 - یکی از آنها است. ایشان 220 بدافزار و 250 نرمافزار سالم را جهت آنالیز پویا انتخاب کردهاند. تکنیک API Hooking برای قلاب اندازی و ثبت رفتار هر تابع استفادهشده است.

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