مهدی سلامی
مهدی سلامی
خواندن ۹ دقیقه·۴ سال پیش

بد افزار ها و کیت های تشخیص آن

مقدمه:

بدافزار یک برنام متخاصم و سرزده است که بدون کسب اجازه از کاربر دستگاه به‌صورت مخفیانه اقدام به دسترسی به منابع آن می‌کند. این برنامه شامل توابعی مخرب برای صدمه واردکردن به دستگاه است. این برنامه‌ها می‌توانند بدون کسب اجازه وارد دستگاه شده و باعث مداخله در امور سامانه و دست‌کاری در پیکربندی خاص در سیستم‌عامل گردند. به طور معمول کاربرانِ معمولی تمامی این نرم‌افزارهای مخرب را «ویروس» می‌نامند و تفاوتی را از لحاظ عملکرد بین آنها قائل نمی‌شوند، در صورتی‌ که انواع مختلفی از نرم‌افزارهای مخرب در دنیای رایانه وجود دارند و هر کدام دارای عملکردی متفاوت از دیگری هستند. نخستین بدافزار «وﻳﺮوس» در ﺣﺪود ﺳﺎل 1900 ﺗﺸﺨﻴﺺ داده ﺷﺪ ﻛﻪ آن را ﻛﺮم رایانه‌ای می‌نامیدند. پس‌ از آن، اﻧﻮاع ﺑﺪاﻓﺰارﻫﺎی دﻳﮕﺮ ﺗﻮﺳﻂ ﻧﻮﻳﺴﻨﺪﮔﺎن آنها ﺗﻮﻟﻴﺪ ﺷﺪ ﻛﻪ به‌ مرور زمان ﺑﺎ اﺳﺘﻔﺎده از اﺑﺰارﻫﺎ و روش‌های «ﻣﺒﻬﻢ‌ﺳﺎزی» پیچیده‌تر ﺷﺪﻧﺪ به‌گونه‌ای ﻛﻪ اﻣﺮوزه ﺗﺸﺨﻴﺺ آنها ﺑﺴﻴﺎر دﺷﻮار ﺷﺪه اﺳﺖ

بد افزار ها در قالب یک تصویر
بد افزار ها در قالب یک تصویر


مفهوم بدافزار:

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

انواع بدافزار:

برای دسته‌بندی بدافزارها تقسیم‌بندی‌های مختلفی وجود دارد. یکی از این ‌دسته‌بندی‌ها توسط شرکت کسپرسکی انجام‌شده است.
1)ویروس: ویروس‌ها دسته‌ای از ﻛﺪﻫﺎی ﻣﺨﺮب ﻫﺴﺘﻨﺪ ﻛﻪ ﻣﺸﺨﺼه اﺻﻠﻲ آنها خود‌همتاسازی ﻫﻨﮕﺎم اﺟﺮا ﺑﻪ ﻫﻤﺮاه ﺑﺮﻧﺎمه ﻣﻴﺰﺑﺎن هستند. ﭘﺲ از اﺟﺮای ﻳﻚ وﻳﺮوس، زمینه آﻟﻮده ﻛﺮدن دﻳﮕﺮ برنامه‌ها ﻳﺎ ﻣﺴﺘﻨﺪات ﻧﻴﺰ ﻓﺮاﻫﻢ می‌گردد. ﺑﻪ برنامه‌ای ﻛﻪ ﻛﺪ وﻳﺮوس ﺑﻪ آن افزوده‌شده ﺑﺎﺷﺪ ﺑﺮﻧﺎمه آﻟﻮده ﻣﻲﮔﻮﻳﻨﺪ.

2)ﻛﺮم: یکی دیگر از برنامه‌های مخرب کرم‌ها هستند که می‌توانند خود را به طور پنهانی در یک شبکه انتشار داده و منتقل شوند. اثرگذاری کرم‌ها متفاوت از بدافزارهاست چرا که ویروس‌ها برای جابه‌جایی خود نیاز به یک پرونجای کمکی دارند در حالی‌که کرم‌ها با استفاده از شبکه و یا ارسال از طریق رایانامه ناخواسته آلوده، خود را پخش می‌کنند. نمونه‌ای از کرم‌ها، Conficker است.

3)تروجان: این دسته از بدافزارها قادر به دست‌یابی از راه دور به رایانة کاربر برای مقاصد خود از جمله جاسوسی و کسب اطلاعات حساس هستند. تروجان‌ها سعی می‌کنند در ابتدا اطلاعات حساسی مانند گذرواژه‌ها را به سرقت برده و فعالیت کاربر را مشاهده کنند و در مراحل بعدی حتی پرونجا‌های دستگاهی رایانه را تخریب نمایند.

4)اکسپلوت: اگر نفوذگری با استفاده از بررسی کردن یک برنامه و یا حتی یک گام جلوتر با اجرای کدهای آن در برنامة خود بتواند خطاهایی را که از دید برنامه‌نویس و گروه نظارت امنیت پنهان مانده است مانند سرریز بافر را کشف کند و همان را تبدیل به حفره‌ای برای نفوذ به دستگاه کند این عمل را استثمار‌کردن دستگاه نامند که شامل انواع مختلفی است


تشخیص بدافزار: برای ایجاد امنیت کامل در یک دستگاه رایانه‌ علاوه بر دیوارة آتش و دیگر تجهیزات جلوگیری از نفوذ، دستگاه‌های دیگری به نام «سیستم‌های تشخیص نفوذ» مورد نیاز هستند تا بتوانند در صورتی‌که نفوذگر از دیوارة آتش، ضدبدافزار و دیگر تجهیزات امنیتی عبور کرد و وارد دستگاه شد آن را تشخیص داده و چاره‌ای برای آن بیندیشند.

پیدا کردن سوزن در انبار کاه
پیدا کردن سوزن در انبار کاه


«سیستم‌های تشخیص نفوذ» برای کمک به مدیران امنیتی مجموعه برای کشف نفوذ و حمله به کار گرفته‌ شده‌اند. هدف یک «سیستم تشخیص نفوذ» تنها جلوگیری از حمله نیست بلکه باید به کشف و شاید شناسایی حمله‌ها و تشخیص اشکالات امنیتی در سامانه یا شبکة رایانه‌ای و اعلام آن به مدیر شبکه نیز بپردازد. «سیستم‌های تشخیص نفوذ» در کنار دیواره‌های آتش و به‌صورت مکمل امنیتی برای آنها مورد استفاده قرار می‌گیرند. امروزه دو روش اصلی برای تشخیص نفوذ به شبکه‌ها مورد استفاده قرار می‌گیرد.

الف) مبتنی بر امضا:روش تشخیص بر اساس امضا که یک روش با ماهیت ایستاست به این منظور و مقابله با بدافزارهایی با رشد روزانه توسط ضدبدافزار‌هایی به‌کار گرفته می‌گردد. یک امضا مجموعه‌ای از یک‌رشته باینری منحصربه‌فرد است که از ساختار بدافزار حاصل می‌شود. این امضا ممکن است از روش‌های ایستا، پویا و ترکیبی حاصل گردد؛ اما به دلیل اینکه هر روز بدافزار جدید ساخته و کشف می‌شوند، لازم است تا امضای مربوط به آنها هم بعد از تولید در پایگاه دادة امضا ذخیره گردد. این به روز رسانی مکرر یکی از نقاط اصلیِ‌ ضعف روش مبتنی بر امضاست؛ که در هر مرحله از به‌روز‌رسانی تعداد مقایسه‌های بین اعضای پایگاه داده امضا و برنامه مورد بررسی افزایش می‌یابد

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

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

برای مقابله با نفوذ بدافزارهای جاسوسی موارد ذیل مطرح است:

الف) پیشگیری: مهم‌ترین مسئله در رویارویی با بدافزارها، آگاهی افراد از این تهدید و پیشگیری از آن است.

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

ج‌) پشتیبان‌گیری منظم: مهم‌ترین و مؤثرترین رکن در مقابله با بدافزارهای باج‌گیر، داشتن پشتیبان‌های منظم دوره‌ای و غیرمتصل است. مقصود از پشتیبان غیرمتصل، این است که رسانه‌هایی که اطلاعات روی آن پشتیبان گرفته می‌شود، باید پس از انجام عملیات پشتیبان‌گیری از سامانه جدا شود تا در صورت آلوده‌شدن به بدافزارها، خود اطلاعات پشتیبان رمزگذاری نشوند. مهم‌ترین داده‌ها عبارت‌اند از:

  • سیستم‌عامل‌ها و سامانه‌‌های فعال
  • داده‌های عملیاتی و حساس

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

نکته مهم: همچنین باید نسبت به صحت و سلامت کامل نسخه‌های پشتیبان اطمینان حاصل کرد.

الف) امن‌سازی سامانه‌ها

نصب و به‌روز کردن ضدبدافزار

نصب و استفاده از ابزار خاص ضدبدافزار

پیکربندی امن سیستم‌عامل و نرم‌افزارها

Opcode روشی نوین برای تشخیص بد افزار

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

بدین طریق بدافزار را جمع آوری و بدین طریق مجموعه داده بدافزاری متشکل از 131899 بدافزار قابل اجرا تشکیل می دهیم. این مجموعه داده تنها حاوی فایل های قابل اجرای PE می باشد و به شکلی درست تر، از انواع و اقسام نرم افزارهای خرابکار ساخته شده است ( مثلاً ویروس های کامپیوتری، اسب های تروجان، جاسوس افزار، و غیره). برای مجموعه داده نرم افزار بی خطر، 13000 فایل قابل اجرا از کامپیوترها جمع آوری کرده ایم. این مجموعه داده بی خطر به طور مثال، شامل پردازنده های لغت، ابزارهای ترسیم، بازیهای پنجره، جستجوگرهای اینترنتی، برنامه نشان دهنده pdf و غیره می شود.

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

در این مورد خاص، دو متغیر را به شکل فراوانی رمزعمل و نمونه بدافزار تعریف می کنیم. بدین طریق، X فراوانی رمزعمل و Y کلاس فایل (به عبارتی بدافزار یا نرم افزار بی خطر)، تابع توزیع احتمال مشترک(توام) X و Y ، و توابع توزیع احتمال نهایی X و Y هستند.

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


نتایج و کار آتی

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

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

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


شاید از این پست‌ها خوشتان بیاید