چهارشنبه, ۱۹ اردیبهشت, ۱۴۰۳ / 8 May, 2024
مجله ویستا

آشنایی با کار ویروسها برای ویروس کشی


آشنایی با کار ویروسها برای ویروس کشی
امروزه با توجه به فراوانی ویروس های كامپیوتری از یك طرف و صدمات حاصل از انتشار آنها از سویی دیگر شناخت و نحوه مبارزه با آنها بسیار حائز اهمیت می باشد . در این مقاله آشنایی با نحوه عملكرد ویروسهای كامپیوتری بیان شده است .
امروزه با توجه به تعدد ویروس های كامپیوتری در كشور،كه اغلب آنها نیز ایرانی می باشند، شناخت و جلوگیری از تخریب آنها مفید ولازم به نظر می رسد . پیش از هر گونه بحث فنی لازم است توضیحی در مورد ویروس و خوب وبد بودن ویروس سازی از دیدگاه مثبت آن بررسی شود تا مبادا افراد بد گمان و احتمالا متنفر از ویروس ، سیل بدو بیراه خود را نثار ویروس نویسان! كنند بد نیست بدانیم جدای از هنر و تكنیك زیبای عملكرد ویروس های مختلف و شیرینی جدال با ویروس یابها ، خود ویروس عاملی برای حمایت از برنامه های كاربردی می توامند به شمار آید، چرا كه اولین ویروس ها در راه جلوگیری از كپی برداریهای غیر مجاز طرح و نوشته شده و زمان فعالیت آن را موكول به وقتی كرده اند كه فرد خاطی از " خواهش عدم كپی غیر مجاز" نیاز به گوش مالی دارد ! تا شاید همین فرد عادت به خرید و تهیه ی برنامه های مورد استفاده خود از طریق اصولی بنماید.
واما ویروس ها برنامه هایی هستند كه به شكل پنهانی، موقع اجرا شدن برنامه آلوده خود را به برنامه های اجرایی نظیر فایل های COM و EXE می چسبانند و معمولا بدون اینكه تاثیری در كار اصلی برنامه آلوده بگذارند، منتظر زمان فعالیت نهایی یا برقراری شرط خاصی می شوند . حال این فعالیت می تواند بزرگتر كردن فایلهای مختلف DATA باشد ، یا آلوده كردن فایلهای اجرایی و یا از بین بردن اطلاعات PARTITION TABLE، معدوم كردن اطلاعا ت با ارزش یا از كار انداختن فایل های اجرایی و ... باشد .
ولی در هر حال یك چیز در اكثر ویروس ها مشترك می باشد و آن انتقال ویروس از فایل های آلوده به فایل های سالم است . در این مقاله سعی شده است كه نحوه عملكرد یكی از انواع ویروس های كامپیوتری بیان شود كه قبل از مطالعه لازم است به نكته ذیل توجه گردد.
افرادی كه مایل به مطالعه مقاله می باشند لازم است كه :
۱) با زبان اسمبلی آشنا باشند .
۲) به DEBUG و دستورات آن مسلط باشند .
۳) از اطلاعات برنامه نویسی سیستم در حد آشنایی با Header فایل های اجرایی برخوردار باشند .
بنابراین اگر ملاحظه می شود كه روشها بسیار خلاصه مطرح شده، تنها بدلیل عدم دسترسی عمومی به اطلاعاتی كه ممكن است خطرناك باشد،است و هدف، ارائه روش بوده و باقی جزئیات بر حسب توان با خود برنامه نویس است .
(توضیح اینكه ویروس ها برنامه كامپیوتری هستند و نه چیز دیگری و می توانند با انواع زبان های برنامه سازی Assenbly، C++، Pascal،Basic، ... طراحی شوند و ما از قویترین زبان یعنی اسمبلی جهت اینكاراستفاده كرده ایم .)
قبل از بیان الگوریتم كلی ویروس نویسی بهتر است به توضیح یكسری عناوین زیر بپردازیم :
▪ انواع دستكاری و تخریب ویروس های كامپیوتری
صرف نظر از ویروس هایی كه كاربران را مورد لطف قرارداده و تنها با صدورپیامی، نمایش تصویری و یا پخش موزیكی حضور خود را اعلام می كنند،سایر ویروس ها به گونه های مختلف باعث نابودی اطلاعات و در برخی موارد باعث خرابی سخت افزار كامپیوتر می شوند. در زیر نمونه هایی از خسارات ویروس ها بیان می شود:
الف) اختلال در كار سیستم(تخریب نرم افزاری)
در این حالت ویروس با ایجاد خطا دربرنامه موجب اختلال در اجرای آن می شود. این اختلال گاه همراه با تصویری بر روی صفحه نمایش و یا صدای خاصی بلندگو یا قفل شدن كامپیوتر می باشد .
بعضی از دلایل اختلال در سیستم بدلیل ویروس ها عبارتند از:
۱) خطاهای برنامه نویسی توسط برنامه نویس ویروس
۲) ناسازگاری ویروس با سیستم یا نرم افزارهای نصب شده بر روی آن
۳) تخریب اطلاعات كه شامل حذف، تغییر ویا اشغال و تكثیر در حافظه
۴) اختلال عمدی سیستم توسط ویروس(اهداف نویسندگان ویروس) كه به عنوان مثال می توان به كندی سرعت سیستم اشاره كرد.
ب) تخریب سخت افزاری
عده ای معتقدند كه ویروس ها نمی توانند به سخت افزار آسیب برسانند وتا به امروز، هیچ ویروسی پیدا نشده است كه كه این كار را انجام دهد. ولی در خلاف انتظار از بین بردن سخت افزار توسط برنامه های نرم افزاری امكان پذیر و عملی است . گرچه خسارات سخت افزاری در موارد اندكی توسط ویروسها وجود دارد ولی باید آنها را جدی گرفت . به عنوان مثال كامپیوترهای سری آمیگا از شركت كمو دور، به خاطر نداشتن كنترل در قسمت های مختلف در مقابل ویروس آسیب پذیرند.
در این كامپیوتر ها می توان به كمك نرم افزار ،موتور دیسك گردان را از حركت باز داشت و همزمان فرمان خواندن یك تراك كه وجو ندارد ، را به هد داد به این ترتیب هد به دیواره های دیسك گردان برخورد كرده و می شكند . نمونه دیگر این است كه CPU و Icهای آمیگا از جمله اگنس ، دنیس و پائولا از نوع CMOS بوده و در مقابل الكتریسیته حساس هستند . اگر همزمان به تمام ورودیهای بیت یك اعمال می شود ولتاژ اضافی باعث خرابی ICها می شود.به كمك یك برنامه كوتاه چند خطی به زبان ماشین می توان كلیه ثباتهایی كه به نام CPU می روند را حاوی بیت یك نمود و CPU را خراب كرد .
در رایانه های شخصی ویروس می تواند هد خواندن و نوشتن دیسك گردان را روی یك تراك داخلی ، كه وجودندارد قرار بدهد. در بعضی از دیسك گردانها، اینكار باعث می شود كه هد ، به بستی در داخل دیسك گردان گیركندو فقط با باز كردن دیسك گردان و جابه جا كردن هد با دست ، مشكل حل می شود.
ویروس می تواند تراك صفر دیسك را نابود كند در اینصورت ، این دیسك دیگر قابل استفاده نیست یا اینكه ویروس بطور مكرر هد از سیلندر بیرونی به سیلندر داخلی حركت دهد این امر سبب سایش ونهایتا خرابی دیسك خواهد شد . در اینجا ممكن است مستقیما چیزی تخریب نشود ولی باعث فرسودگی می شود. برای مثال ویروس AMP۲P كه روی فایل CAMMAND.COM ویندوز ۹۵ وجود دارد ،قادر است تنظیم اصلی كارخانه را تغییر دهد و ویروسی كه بتواند اینكار را انجام دهد قادر است به تمام اجزای سیستم دسترسی داشته و آنها را خراب كند . این ویروس معمولا هارد دیسك را دچار تعدادی بد سكتور می كند ویا تراك صفر را از كار می اندازد كه با فرمت فیزیكی مجدد نیز دیسك قابل اصلاح نیست .
تا چندی قبل ویروس ها فقط فایل ها را خراب می كردند كه معمولا چاره اینكار آسان بود ولی اكنون ویروس ها به آنچنان توانایی رسیده اند كه قادرند سخت افزار سیستم را مورد هدف قرار دهند كه در این صورت خسارات ایجاد شده شدید و جبران آن سنگین است . تازه ممكن است پس ازتعویض قسمت خراب شده ، ویروس مجددا آنرا تخریب كند.
معمولا و نه همیشه اولین دستور از فایل های اجرایی COM، حاوی یك آدرس پرش (Jump) می باشد كه اجرای برنامه را به مكان دیگری از داخل حافظه انتقال می دهد و سپس دستورات اصلی برنامه از مكان XXXXX در شكل فوق آغاز می گردد. اما اگر همین آدرس پرش اولیه را بتوانیم طوری تغییر دهیم كه به ابتدای برنامه خودمان منتقل شود .می توان گفت كه نصف كار آلوده سازی را انجام داده ایم .
بصورت كلی جهت انجام این كار ابتدا آدرس پرش اولیه XXXXX را در مكانی از حافظه ذخیره كرده (برای استفاده بعدی ) و سپس آدرس شروع برنامه خود را درآن قرار می دهیم . خوب تا اینجا توانسته ایم كنترل اجرایی فایل های COM را بدست گیریم . سپس كافی است در داخل ویروس عملیات مربوط به یافتن فایل های اجرایی غیر آلوده ، درستكاری آنها و انجام یكسری تخریب ها ( چاپ یكسری مطالب جهت ترساندن كاربر و معرفی خود) و نهایتا برگشت به آدرس اولیه پرش XXXXX جهت اجرای عادی فایل آلوده شده مراجعه كرده تا برنامه ازاین پس روال عادی اجرایی خود را انجام دهد.
ساختار كلی فایل های EXE پیچیده تر است . تمام فایل های EXE دارای یك Header یا عنوان بوده كه شامل اطلاعات تخصصی فایل اجرایی نظیر مشخصه فایل،اندازه واقعی فایل،آدرس های Data Segment،Code Segment و..... می باشد. بنابراین بر خلاف فایل های COM كه اولین دستور از آنها حاوی آدرس شروع برنامه است ، در این فایل ها بایت های ۲۰و۲۲ در داخل Header حاوی آدرس شروع برنامه است و چون فایل های EXE از نظر اندازه می توانند خیلی بزرگتر از COM باشند، این آدرسها شامل SEGMENT:OFFSET است
با توجه به توضیح فوق در مورد نحوه آلوده سازی فایل های COM كافی است آدرس های X۱:X۲ را به ابتدای برنامه خود تغییر داده وسپس در پایان كار نیز به محل اولیه X۱:X۲ باز گردیم . اما این نكته قابل ذكر است كه بدلیل پیچیدگی ساختار فایل های EXE، آلوده سازی اینگونه فایل ها از فایل های COM مسكلتر است .
▪ دلایل خراب شدن فایل های اجرایی
همانطور كه توضیح داده شد، به هنگام آلوده سازی فایل های اجرایی ممكن است، در محاسبه تغییر آدرس ها اشتباهاتی صورت گیرد و یا یك فایل اجرایی چندین بار آلوده گرددو در جریان چنین اعمالی نیز امكان دارد سیستم روال اجرایی عادی خود را ازدست داده و داخل یك حلقه بی نهایت قرار گیرد و یا به مكانی از حافظه پرش كند كه هیچگونه دستور العملی وجودنداردو سرانجام باعث HANG كردن یا قفل كردن كامپیوتر می شود كه گاهی اوقات بعضی از ویروس ها به هنگام آلوده سازی دچار این مشكل شده و احتمالا با این مسئله برخورد كرده اید كه به هنگام آلوده بودن كامپیوترتان سیستم بدلیل نامشخصی قفل می كند.
باتوجه به توضیحات داده شده،هم اكنون الگوریتم كلی یكی از انواع ویروس های كامپیوتری را به صورت زیر می نویسیم :
۱) اولین فایل اجرایی در مسیر جاری را پیدا كنید
۲) اگر فایل پیدا شده ، آلوده است و دیگر فایل آلوده دیگری جهت جستجو وجود ندارد به مرحله ۶بروید.
۳) اگر فایل پیدا شده آلوده است به مرحله ۱بروید
۴) فایل آلوده شده را پیدا كنید و فایل را طوری تغییر بدهید تا به صورت عادی كار كند(آسیب نبینید)
۵) به مرحله ۷بروید
۶) عملیات مربوط به دستكاری یا تخریب را انجام دهید
۷) برنامه اولیه را اجرا كنید
● نتیجه گیری
با توجه به اینكه اغلب ویروس ها جهت آلوده سازی كامپیوتر ، طبق توضیحات داده شده، فایل های اجرایی حمله ور می شوند و آدرس های داخل فایل را تغییر می دهند، پس چه بهتر است بتوانیم این مكان ها را هر چه دقیقتر كنترل كنیم و همچنین با شناخت هر چه بیشتر كار ویروس ها، آمادگی كاملتری جهت مبارزه با آنها كسب نماییم .
مراجع
۱-مجله رایانه شماره چهل و پنجم
۲-كتاب راهنمای ویروس و ضد ویروس
منبع : کامتونت