نرم افزار آنتی ویروس دقیقا برای محافظت از سیستمها در برابر تهدیدهای ویروسهای کامپیوتری طراحی میشود.
می توان گفت آنتی ویروس ها برنامه های کامپیوتری هستند که برای مرور فایلها و تشخیص و حذف ویروسهای کامپیوتری و دیگر بدافزارهای فضای مجازی از آنها استفاده میشوند.
در این نوشته سعی می کنیم که برخی از کارکرد های رایج در بین آنتی ویروس ها را که برای شناسایی بدافزارها به کار برده میشوند را مورد بررسی قرار دهیم. در حالت کلی آنتی ویروس ها از دو تکنیک اصلی استفاده میکنند:
اغلب برنامههای آنتی ویروس در حال حاضر از این تکنیک استفاده میکنند. در این شیوه، رایانه میزبان، درایوهای حافظه و یا فایلها با هدف پیدا کردن الگویی که نشان دهنده یک بدافزار باشد، مورد جستجو قرار میگیرند. این الگوها معمولاً در فایلهایی به نام فایلهای امضا ذخیره میشوند. فایلهای مذکور توسط فروشندگان نرم افزارهای آنتی ویروس طبق یک برنامه منظم به روز رسانی میشوند تا قادر باشند بیشترین تعداد ممکن حملههای بدافزاری را شناسایی کنند. مشکل اصلی تکنیک بررسی امضا این است که نرم افزار آنتی ویروس باید قبلاً به روز رسانی شده باشد تا بتواند به مقابله و خنثی سازی بدافزارها بپردازد و لذا بدافزارهای جدیدی که هنوز شناسایی نشده و به فایلهای امضا اضافه نشده اند تشخیص داده نمیشوند. در این شیوه زمانی که نرم افزار آنتی ویروس یک فایل را مورد آزمایش قرار میدهد، به یک دیکشنری ویروس که حاوی امضای ویروسهای شناخته شده است مراجعه میکند. در صورتی که هر تکه از کد فایل با یک ویروس شناخته شده مطابقت داشته باشد، فایل مذکور به عنوان یک فایل آلوده شناسایی شده و آنتی ویروس یا آن را پاک میکند و یا آن را قرنطینه مینماید تا برنامههای دیگر به آن دسترسی نداشته و همچنین از انتشار آن جلوگیری به عمل آید. در برخی موارد نیز امکان بازسازی فایل آلوده از طریق حذف ویروس از فایل اصلی وجود دارد که در صورت امکان آنتی ویروس این کار را انجام میدهد. همان طور که در بالا نیز گفتیم، آنتی ویروسهای مبتنی بر امضا برای موفق بودن در درازمدت، نیاز دارند که مرتباً دیکشنری حاوی امضاهای ویروس را به صورت آنلاین به روز رسانی نمایند. زمانی که یک ویروس جدید در دنیای رایانه پدیدار میشود، کاربران با تجربهتر فایلهای آلوده را برای نویسندگان آنتی ویروسها ارسال میکنند تا آنها بتوانند ویروس مزبور را شناسایی کرده و مشخصات آن را به دیکشنری اضافه کنند.
آنتی ویروسهای مبتنی بر امضا غالباً فایلها را در زمان اجرا، باز و بسته شدن و همچنین زمانی که ایمیل میشوند، مورد آزمایش قرار میدهند. به این وسیله یک ویروس شناخته شده به محض وارد شدن به رایانه تشخیص داده میشود. همچنین میتوان برنامههای آنتی ویروس را طوری برنامه ریزی کرد که در زمانهای معینی به بررسی کل فایلهای موجود بر روی دیسک سخت بپردازند. با وجودی که روش مبتنی بر امضا مؤثر شناخته شده است ولی ویروس نویسان همواره تلاش میکنند تا یک قدم جلوتر از آنتی ویروسها حرکت کنند و این کار را از طریق ایجاد ویروسهای چندریختی انجام میدهند. ویروسهای چندریختی در واقع دارای یک مکانیزم دفاعی رمزنگاری هستند. بدافزارهایی از این نوع رمزنگاری به عنوان یک مکانیزم دفاعی استفاده میکنند که میخواهند خود را تغییر دهند تا از خطر تشخیص داده شدن توسط نرم افزارهای آنتی ویروس در امان بمانند. این بدافزارها معمولاً خود را با یک الگوریتم رمزنگاری به صورت رمزی درآورده و سپس برای هر دگرگونی از یک کلید رمزگشایی متفاوت استفاده میکنند. بنابراین بدافزارهای چندریختی میتوانند از تعداد نامحدودی الگوریتم رمزنگاری به منظور ممانعت از تشخیص استفاده کنند. در هر بار تکرار بدافزار جزئی از کد رمزگشایی دچار تغییر میشود. بسته به نوع هر بدافزار، عملیات خرابکارانه یا دیگر اعمالی که توسط بدافزار انجام میشوند میتوانند تحت عملیات رمزنگاری قرار بگیرند. معمولاً یک موتور دگرگونی در بدافزار رمزنگاری شده تعبیه شده است که در هر بار تغییر، الگوریتمهای رمزنگاری تصادفی را تولید میکند. سپس موتور مذکور و بدافزار توسط الگوریتم تولیدی رمزنگاری شده و کلید رمزگشایی جدید به آنها الصاق میشود.
نکته ای که نباید آن را از نظر دور داشت اینست که روشهای متنوعی برای رمزنگاری و بسته بندی بدافزارها وجود دارد که تشخیص انواع شناخته شده بدافزارها را برای آنتی ویروسها بسیار سخت یا غیرممکن میسازد. لذا تشخیص اینگونه ویروسها نیازمند موتورهای قوی باز کردن بسته بندی است که بتوانند فایلها را قبل از آزمایش رمزگشایی نمایند. متأسفانه بسیاری از آنتی ویروسهای محبوب و معروف امروزی فاقد توانایی تشخیص ویروسهای رمزنگاری شده هستند.
وش مبتنی بر رفتار بر خلاف روش پیشین تنها در تلاش برای شناسایی ویروسهای شناخته شده نیست و به جای آن رفتار همه برنامهها را نظارت میکند. این تکنیک سعی در تشخیص انواع شناخته شده و همچنین انواع جدید بدافزار دارد و این کار را از طریق جستجوی ویژگیهای عمومی و مشترک بدافزارها انجام میدهد. برای مثال اگر یک برنامه سعی در نوشتن داده بر روی یک برنامه اجرایی دیگر را داشته باشد، این رفتار به عنوان یک رفتار مشکوک شناسایی شده و به کاربر هشدار لازم داده میشود. سپس از او در مورد اینکه چه کاری باید انجام شود سؤال میشود. آنتی ویروسهای مبتنی بر رفتار بر خلاف آنتی ویروسهای مبتنی بر امضا از رایانه در برابر ویروسهای جدید نیز که امضای آنها در هیچ دیکشنری موجود نیست، محافظت به عمل میآورند. البته مشکل این آنتی ویروسها تعداد زیاد تشخیصهای مثبت اشتباه و هشدارهای به کاربر است که موجب خستگی و سر رفتن حوصله کاربران میشود. در صورتی که کاربران به همه هشدارها پاسخ Accept را بدهند عملاً آنتی ویروس بلااستفاده شده و کارایی خود را از دست خواهد داد، به همین دلیل آنتی ویروسها استفاده از این روش را روز به روز محدودتر میکنند.
به روش مبتنی بر رفتار جستجوی اکتشافی یا Heuristic نیز گفته میشود زیرا سعی در کشف رفتارهای مشکوک و شناسایی بدافزارها دارد. مهمترین فایده این روش تکیه نکردن آن بر فایلهای امضا برای تشخیص و مقابله با بدافزار است. به هر حال همان طور که گفتیم بررسی اکتشافی نیز با مشکلات خاصی روبرو است از جمله:
– تشخیص مثبت اشتباه یا False Positive
این روش از ویژگیهای عمومی بدافزارها استفاده میکند، و بنابراین ممکن است برخی از نرم افزارهای قانونی و معتبر را در صورتی که خصوصیاتی شبیه بدافزارها داشته باشند، نیز به اشتباه بدافزار شناسایی کند.
– بررسی کندتر
پروسه جستجوی ویژگیها برای یک نرم افزار بسیار سختتر از جستجوی الگوهایی مشخص است. به همین دلیل جستجوی اکتشافی مدت زمان بیشتری نسبت به جستجوی امضا جهت شناسایی بدافزارها نیاز دارد.
– ندیدن ویژگیهای جدید
در صورتی که یک حمله بدافزاری جدید ویژگیهایی را از خود به نمایش بگذارد که پیش از این شناسایی نشده اند، جستجوی اکتشافی نیز آن را شناسایی نمیکند مگر اینکه به روز رسانی شده و ویژگی مذکور به حافظه آن اضافه شود.
اکثر آنتی ویروس ها با دو روش فوق کار می کنند البته روش هایی مبتنی بر هوش مصنوعی تلفیق شده با الگورتیم های بهینه سازی نیز وجود دارند که در مقالات بعدی درباره ی آنها سخن می گوییم.