همه چیز درباره بد افزار


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


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

انواع عملیات خرابکارانه (Payloads)

زمانی که بدافزار از طریق یکی از مکانیزم های انتقال به رایانه میزبان دسترسی پیدا می کند، معمولاً دست به یک سری اعمال می زند که به آن “عملیات خرابکارانه” یا Payload گفته می شود. عملیات خرابکارانه دارای اشکال مختلفی است که در زیر برخی از رایجترین آنها آورده شده است.

  • باز کردن راههای نفوذ یا Backdoors
    این نوع از عملیات خرابکارانه اجازه دسترسی غیر مجاز به رایانه را می دهد. راههای نفوذ می توانند یک دسترسی کامل را برای مهاجم فراهم آورند یا می توانند دسترسی های محدودی مانند فعال کردن پروتکل انتقال فایل (FTP) را از طریق پورت ۲۱ ایجاد کنند. اگر حمله موفق به فعال کردن Telnet شود، فرد مهاجم می تواند از رایانه آلوده به عنوان پایگاهی برای حمله های Telnet بر روی دیگر رایانه ها استفاده کند. گاهی اوقات به راههای نفوذ، تروجان دسترسی از راه دور یا Remote Access Trojan نیز گفته می شود.
  • خراب کردن یا پاک کردن داده ها
    یکی از بدترین انواع عملیات خرابکارانه، کد خرابکاری است که می تواند داده ها را دستکاری کرده و یا پاک کند و به این ترتیب کاربر را با یک سری اطلاعات بی فایده رها سازد. نویسنده بدافزار در اینجا دو انتخاب دارد: اول اینکه عملیات خرابکارانه را طوری طراحی کند که به سرعت اجرا شود. این شیوه علی رغم اینکه برای رایانه آلوده یک کابوس محسوب می شود، تشخیص سریع بدافزار را موجب می شود و در نتیجه بدافزار نمی تواند بدون سر و صدا گسترش پیدا کند. انتخاب دیگر رها کردن عملیات خرابکارانه بر روی سیستم آلوده برای مدت زمان مشخصی است مانند کاری که تروجانها انجام می دهند. در این صورت عملیات خرابکارانه منتظر یک اتفاق فعال کننده (trigger) می ماند که در ادامه در مورد آنها بیشتر توضیح خواهیم داد. در بازه زمانی مذکور و قبل از آگاه شدن کاربر از وجود بدافزار بر روی رایانه، بدافزار وظیفه انتشار خود را به انجام می رساند.
  • سرقت اطلاعات
    یکی از انواع نگران کننده عملیات خرابکارانه نوعی است که برای سرقت اطلاعات طراحی شده است. در صورتی که یک بدافزار بتواند از سد امنیتی رایانه میزبان عبور کند، قادر است مکانیزمی را نیز جهت فرستادن اطلاعات برای هکر فراهم کند. این اتفاق می تواند به چند طریق رخ دهد، برای مثال انتقال اطلاعات می تواند به صورت اتوماتیک اتفاق بیفتد و بدافزار به راحتی فایلهای محلی یا اطلاعاتی مانند گزارش ثبت ضربه های صفحه کلید را به امید یافتن نام کاربری یا رمز عبور برای مهاجم ارسال کند. روش دیگر فراهم آوردن محیطی بر روی رایانه میزبان است تا مهاجم بتواند کنترل از راه دور رایانه قربانی را به دست گیرد یا مستقیماً به فایلهای آن دسترسی داشته باشد.
  • انکار سرویس (DoS)
    یکی از ساده ترین انواع عملیات خرابکارانه حملات انکار سرویس است. یک حمله DoS در واقع یک یورش کامپیوتری است که توسط فرد مهاجم با نیت ایجاد سربار بر روی شبکه و یا از کار انداختن برخی سرویسهای آن مانند سرورهای فایل یا وب، صورت می گیرد. هدف از حملات انکار سرویس، غیر قابل استفاده ساختن برخی سرویسهای مشخص در یک بازه زمانی است.

انکار سرویس توزیع شده (DDoS)

در این نوع از حمله ها معمولاً از کلاینت های آلوده ای استفاده می شود که اغلب هیچگونه اطلاعی از نقش خود در چنین حمله هایی ندارند. یک حمله DDoS نوعی از انکار سرویس است که در آن مهاجم یک کد خرابکار را بر روی رایانه های زیادی به منظور مورد حمله قرار دادن یک هدف مشخص نصب می کند. معمولاً مهاجمان از این روش برای ایجاد تأثیراتی بر روی هدف استفاده می کنند که با استفاده از یک رایانه مهاجم امکان پذیر نیست. چگونگی انجام شدن اینگونه حملات در هر حمله نسبت به حمله دیگر متفاوت است ولی غالباً حملات انکار سرویس توزیع شده با استفاده از ارسال حجم زیادی از داده ها برای یک میزبان یا وب سایت انجام می شوند که منجر به عدم توانایی در پاسخگویی به درخواستهای قانونی خواهند شد. 
مقابله با این نوع حملات بسیار سخت است زیرا میزبانی که مسئول حمله است خود یک قربانی ناآگاه محسوب می شود. حملات DDoS معمولاً توسط رباتهای نرم افزاری (برنامه هایی که کارهای تکراری را اجرا می کنند) هدایت می شوند. مثلا یک هکر می تواند از Internet Relay Chat (IRC) EggDrop برای کنترل رایانه های قربانی از طریق کانال IRC استفاده کند. زمانی که کنترل رایانه ای در اختیار هکر قرار می گیرد، آن رایانه تبدیل به یک زامبی می شود که می تواند هدف را از طریق دستور هکر و بدون اطلاع صاحب رایانه مورد حمله قرار دهد.
حملات انکار سرویس (DoS ) و حملات انکار سرویس توزیع شده (DDoS) قادرند از چندین تکنیک حمله مختلف استفاده کنند که عبارتند از:

  • خاموش کردن سیستم 
    در صورتی که بدافزار بتواند رایانه میزبان را خاموش کند یا از کار بیندازد در متوقف کردن حداقل یک یا دو سرویس موفق خواهد بود. حمله به سیستم میزبان از این طریق نیازمند وجود یک آسیب پذیری یا نقص امنیتی در رایانه میزبان است که بدافزار از آن طریق بتواند سیستم را خاموش سازد.
  • سیل داده ها در پهنای باند
    بیشتر خدماتی که در اینترنت ارائه می شوند از طریق اتصالات شبکه ای با پهنای باند محدود است که ارائه دهندگان سرویس را به مشتریان متصل می کند. در صورتی که نویسند بدافزار بتواند دست به یک عملیات خرابکارانه بزند که در آن پهنای باند توسط داده های نادرست اشغال شود، در این صورت به راحتی یک حمله انکار سرویس رخ داده است چرا که مشتریان نمی توانند از سرویس مورد نظرشان بر روی منبع مربوطه استفاده کنند.
  • انکار سرویس شبکه 
    این نوع از عملیات خرابکارانه سعی دارد منابع میزبان را سرریز کند. منابعی مانند ریزپردازنده ها و حافظه ها از طریق حملات SYN flood سرریز می شوند. در حملات مذکور، مهاجم از برنامه ای برای ارسال سیلی از درخواستهای TCP SYN، جهت مختل کردن ترافیک قانونی شبکه بر روی سرور میزبان استفاده می کند. در حملات بمباران ایمیلی نیز منابع ذخیره سازی طوری از ایمیل سرریز می شوند که یک حمله انکار سرویس به وقوع می پیوندد. این حملات به منظور خراب کردن برنامه ایمیل یا ممانعت از دریافت ایمیل های واقعی توسط دریافت کننده صورت می گیرد.
  • خراب کردن سرویس
    این نوع از عملیات خرابکارانه نیز می تواند منجر به حملات انکار سرویس شود. برای مثال حمله به سرورهای نام دامنه DNS می تواند سرویس آن را از کار بیندازد و منجر به یک انکار سرویس شود. البته در این صورت معمولاً دیگر سرویسهای سیستم آسیب نمی بینند.

مکانیزمهای فعال سازی 

مکانیزم فعال سازی خصوصیتی از بدافزار است که از آن برای شروع تکرار یا شروع عملیات خرابکارانه استفاده می شود. مکانیزم های فعال سازی متداول به شرح زیر می باشند:

  • اجرای دستی
    در این نوع از مکانیزم فعال سازی اجرای بدافزار به راحتی به عهده قربانی گذاشته می شود.
    • مهندسی اجتماعی
      بدافزارها اغلب از چندین روش مهندسی اجتماعی کمک می گیرند تا کاربران را به سمت اجرای دستی کد بدافزار هدایت کنند. این روشها می توانند ساده باشند، مثلا در ارسال تعداد زیادی ایمیل آلوده به کرم از موضوعات جذاب و به روز برای ایمیل استفاده می شود تا کاربران را به باز کردن ایمیل آلوده ترغیب کند. همچنین نویسندگان بدافزار ممکن است از ایمیلهای جعلی (email spoofing) برای فریب کاربران استفاده کنند تا آنها باور کنند که ایمیل را از یکی از آشنایان دریافت کرده اند. عمل Spoofing در واقع جعل هویت یک وب سایت یا یک جریان انتقال داده به منظور فریب کاربر در تشخیص منبع واقعی است. برای مثال کرم Dumaro اولین بار در سال ۲۰۰۳ در ایمیلی دیده شد که در قسمت فرستنده ایمیل آدرس security@microsoft.com قرار گرفته بود.
  • اجرای نیمه اتوماتیک
    این نوع از مکانیزم فعال سازی در ابتدا توسط قربانی شروع می شود و از آن به بعد به صورت اتوماتیک به اجرای خود ادامه می دهد.
  • اجرای اتوماتیک
    این نوع از مکانیزم فعال سازی نیازی به هیچگونه اجرای دستی ندارد. در این حالت بدافزار حمله خود را بدون هیچگونه نیازی به اجرای یک کد خرابکار توسط قربانی بر روی رایانه هدف به انجام می رساند.
  • بمب زمانی
    این نوع از مکانیزم فعال سازی عملیات را بعد از یک مدت زمان مشخص به انجام می رساند. این بازه زمانی می تواند یک تأخیر زمانی از اولین بروز آلودگی یا یک تاریخ از پیش تعیین شده باشد. برای مثال کرم MyDoom.B در روز سوم فوریه ۲۰۰۴ بر علیه وب سایت مایکروسافت فعال شد و سپس تمام فعالیتهای انتشار خود را در اول مارس ۲۰۰۴ متوقف ساخت. با این وجود مسیر نفوذ خود را همچنان بر روی رایانه های آلوده فعال نگه داشت.
  • شرطی
    این نوع از مکانیزم فعال سازی از یک یا چندین شرط از قبل تعیین شده برای فعال ساختن عملیات خرابکارانه استفاده می کند. برای مثال، یک فایل تغییر نام داده شده، مجموعه ای مشخص از ضربات صفحه کلید یا شروع یک برنامه کاربردی همگی می توانند به عنوان شرطهای فعال سازی در نظر گرفته شوند. گاهی اوقات بدافزاری که از این نوع از مکانیزم فعال سازی استفاده می کند بمب منطقی نامیده می شود.

مکانیزم های دفاعی

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

  • زره
    این نوع از مکانیزم دفاعی چندین تکنیک مختلف را به کار می گیرد تا تحلیل کد خرابکارا را خنثی سازد. این تکنیکها شامل تشخیص اجرای Debugger و ممانعت از اجرای صحیح آن یا اضافه کردن تعداد زیادی کد بی معنی به منظور مشکل ساختن تشخیص هدف کد خرابکار می شود.
  • پنهان کاری
    در این روش بدافزار ها برای پنهان سازی خود از دریافت درخواستها و ارائه پاسخ های اشتباه استفاده می کنند. برای مثال یک ویروس ممکن است تصویری از یک قطاع راه اندازی (boot sector) غیر آلوده را ذخیره سازد و هر زمان که درخواستی مبنی بر مشاهده قطاع راه اندازی آلوده شده ارسال شود، ویروس مذکور تصویر قطاع راه اندازی غیر آلوده را نمایش دهد. قدیمی ترین ویروس شناخته شده به نام Brain از این روش در سال ۱۹۸۶ استفاده کرده است.
  • رمزنگاری
    بدافزارهایی که از این مکانیزم دفاعی استفاده می کنند خود یا عملیات خرابکارانه را رمزنگاری می کنند (گاهی اوقات حتی داده های سیستم را نیز رمزنگاری می کنند) تا از تشخیص بدافزار یا بازیابی اطلاعات جلوگیری کنند. بدافزار های رمزنگاری شده شامل یک الگوریتم رمزگشایی، کلید رمزنگاری و یک کد خرابکار رمزنگاری شده (شامل الگوریتم رمزنگاری) هستند. زمانی که چنین بدافزار هایی اجرا می شوند، با استفاده از کلید و الگوریتم رمزگشایی کد خرابکار خود را رمزگشایی می کنند. بدافزار از خود نسخه برداری کرده و یک کلید جدید تولید می کند. سپس با استفاده از کلید و الگوریتم رمزنگاری، نسخه جدید را دوباره رمزنگاری کرده، الگوریتم و کلید رمزنگاری جدید را به اول نسخه مذکور اضافه می کند. برخلاف ویروسهای چندریختی، بدافزار های رمزنگار همیشه از یک الگوریتم رمزگشایی ثابت استفاده می کنند. بنابراین با وجود اینکه کلید و امضای کد خرابکار رمزنگاری شده مرتباً در هر مرحله تغییر می کند، تشخیص آنها توسط آنتی ویروس ها از طریق جستجو برای الگوریتمهای ثابت رمزگشایی بدافزار ممکن خواهد بود.
  • Oligomorphic
    بدافزاری که این خصوصیت را از خود به نمایش می گذارد از رمزنگاری به عنوان یک مکانیزم دفاعی برای محافظت از خود استفاده می کند و تنها برای دفعات محدودی قادر است الگوریتم رمزنگاری خود را تغییر دهد. برای مثال ویروسی که می تواند تنها دوبار الگوریتم رمزگشایی خود را تغییر دهد نیز در رده Oligomorphic می گنجد.
  • ریختی یا Polymorphic
    بدافزارهایی از این نوع رمزنگاری به عنوان یک مکانیزم دفاعی استفاده می کنند که می خواهند خود را تغییر دهند تا از خطر تشخیص داده شدن توسط نرم افزارهای آنتی ویروس در امان بمانند. این بدافزار ها معمولاً خود را با یک الگوریتم رمزنگاری به صورت رمزی درآورده و سپس برای هر تغییر از یک کلید رمزگشایی متفاوت استفاده می کنند. بنابراین بدافزار های چندریختی می توانند از تعداد نامحدودی الگوریتم رمزنگاری به منظور ممانعت از تشخیص استفاده کنند. در هر بار تکرار بدافزار جزئی از کد رمزگشایی دچار تغییر می شود. بسته به نوع هر بدافزار، عملیات خرابکارانه یا دیگر اعمالی که توسط بدافزار انجام می شوند می توانند تحت عملیات رمزنگاری قرار بگیرند. معمولاً یک موتور دگرگونی در بدافزار رمزنگاری شده تعبیه شده است که در هر بار تغییر، الگوریتم های رمزنگاری تصادفی را تولید می کند. سپس موتور مذکور و بدافزار توسط الگوریتم تولیدی رمزنگاری شده و کلید رمزگشایی جدید به آنها الصاق می شود