PDA

نسخه کامل مشاهده نسخه کامل : آشنايي با كار ويروس‌ها در راستاي ويروس زدايي



mahdilover77
13-07-2005, 19:57
آشنايي با كار ويروس‌ها در راستاي ويروس زدايي

امروزه با توجه به فراواني ويروس هاي كامپيوتري از يك طرف و صدمات حاصل از انتشار آنها از سويي ديگر شناخت و نحوه مبارزه با آنها بسيار حائز اهميت مي باشد . در اين مقاله آشنايي با نحوه عملكرد ويروسهاي كامپيوتري بيان شده است . مقدمه امروزه با توجه به تعدد ويروس هاي كامپيوتري در كشور،كه اغلب آنها نيز ايراني مي باشند، شناخت و جلوگيري از تخريب آنها مفيد ولازم به نظر مي رسد . پيش از هر گونه بحث فني لازم است توضيحي در مورد ويروس و خوب وبد بودن ويروس سازي از ديدگاه مثبت آن بررسي شود تا مبادا افراد بد گمان و احتمالا متنفر از ويروس ، سيل بدو بيراه خود را نثار ويروس نويسان! كنند بد نيست بدانيم جداي از هنر و تكنيك زيباي عملكرد ويروس هاي مختلف و شيريني جدال با ويروس يابها ، خود ويروس عاملي براي حمايت از برنامه هاي كاربردي مي توامند به شمار آيد، چرا كه اولين ويروس ها در راه جلوگيري از كپي برداريهاي غير مجاز طرح و نوشته شده و زمان فعاليت آن را موكول به وقتي كرده اند كه فرد خاطي از " خواهش عدم كپي غير مجاز" نياز به گوش مالي دارد ! تا شايد همين فرد عادت به خريد و تهيه ي برنامه هاي مورد استفاده خود از طريق اصولي بنمايد. واما ويروس ها برنامه هايي هستند كه به شكل پنهاني، موقع اجرا شدن برنامه آلوده خود را به برنامه هاي اجرايي نظير فايل هاي COM و EXE مي چسبانند و معمولا بدون اينكه تاثيري در كار اصلي برنامه آلوده بگذارند، منتظر زمان فعاليت نهايي يا برقراري شرط خاصي مي شوند . حال اين فعاليت مي تواند بزرگتر كردن فايلهاي مختلف DATA باشد ، يا آلوده كردن فايلهاي اجرايي و يا از بين بردن اطلاعات PARTITION TABLE، معدوم كردن اطلاعا ت با ارزش يا از كار انداختن فايل هاي اجرايي و ... باشد . ولي در هر حال يك چيز در اكثر ويروس ها مشترك مي باشد و آن انتقال ويروس از فايل هاي آلوده به فايل هاي سالم است . در اين مقاله سعي شده است كه نحوه عملكرد يكي از انواع ويروس هاي كامپيوتري بيان شود كه قبل از مطالعه لازم است به نكته ذيل توجه گردد. افرادي كه مايل به مطالعه مقاله مي باشند لازم است كه : 1- با زبان اسمبلي آشنا باشند . 2- به DEBUG و دستورات آن مسلط باشند . 3- از اطلاعات برنامه نويسي سيستم در حد آشنايي با Header فايل هاي اجرايي برخوردار باشند . بنابراين اگر ملاحظه مي شود كه روشها بسيار خلاصه مطرح شده، تنها بدليل عدم دسترسي عمومي به اطلاعاتي كه ممكن است خطرناك باشد،است و هدف، ارائه روش بوده و باقي جزئيات بر حسب توان با خود برنامه نويس است . (توضيح اينكه ويروس ها برنامه كامپيوتري هستند و نه چيز ديگري و مي توانند با انواع زبان هاي برنامه سازي Assenbly، C++، Pascal،Basic، ... طراحي شوند و ما از قويترين زبان يعني اسمبلي جهت اينكاراستفاده كرده ايم .) قبل از بيان الگوريتم كلي ويروس نويسي بهتر است به توضيح يكسري عناوين زير بپردازيم : انواع دستكاري و تخريب ويروس هاي كامپيوتري صرف نظر از ويروس هايي كه كاربران را مورد لطف قرارداده و تنها با صدورپيامي، نمايش تصويري و يا پخش موزيكي حضور خود را اعلام مي كنند،ساير ويروس ها به گونه هاي مختلف باعث نابودي اطلاعات و در برخي موارد باعث خرابي سخت افزار كامپيوتر مي شوند. در زير نمونه هايي از خسارات ويروس ها بيان مي شود: الف: اختلال در كار سيستم(تخريب نرم افزاري) در اين حالت ويروس با ايجاد خطا دربرنامه موجب اختلال در اجراي آن مي شود. اين اختلال گاه همراه با تصويري بر روي صفحه نمايش و يا صداي خاصي بلندگو يا قفل شدن كامپيوتر مي باشد . بعضي از دلايل اختلال در سيستم بدليل ويروس ها عبارتند از: 1-خطاهاي برنامه نويسي توسط برنامه نويس ويروس 2 - ناسازگاري ويروس با سيستم يا نرم افزارهاي نصب شده بر روي آن 3- تخريب اطلاعات كه شامل حذف، تغيير ويا اشغال و تكثير در حافظه 4- اختلال عمدي سيستم توسط ويروس(اهداف نويسندگان ويروس) كه به عنوان مثال مي توان به كندي سرعت سيستم اشاره كرد. ب:تخريب سخت افزراي عده اي معتقدند كه ويروس ها نمي توانند به سخت افزار آسيب برسانند وتا به امروز، هيچ ويروسي پيدا نشده است كه كه اين كار را انجام دهد. ولي در خلاف انتظار از بين بردن سخت افزار توسط برنامه هاي نرم افزاري امكان پذير و عملي است . گرچه خسارات سخت افزاري در موارد اندكي توسط ويروسها وجود دارد ولي بايد آنها را جدي گرفت . به عنوان مثال كامپيوترهاي سري آميگا از شركت كمو دور، به خاطر نداشتن كنترل در قسمت هاي مختلف در مقابل ويروس آسيب پذيرند. در اين كامپيوتر ها مي توان به كمك نرم افزار ،موتور ديسك گردان را از حركت باز داشت و همزمان فرمان خواندن يك تراك كه وجو ندارد ، را به هد داد به اين ترتيب هد به ديواره هاي ديسك گردان برخورد كرده و مي شكند . نمونه ديگر اين است كه CPU و Icهاي آميگا از جمله اگنس ، دنيس و پائولا از نوع CMOS بوده و در مقابل الكتريسيته حساس هستند . اگر همزمان به تمام وروديهاي بيت يك اعمال مي شود ولتاژ اضافي باعث خرابي ICها مي شود.به كمك يك برنامه كوتاه چند خطي به زبان ماشين مي توان كليه ثباتهايي كه به نام CPU مي روند را حاوي بيت يك نمود و CPU را خراب كرد . در رايانه هاي شخصي ويروس مي تواند هد خواندن و نوشتن ديسك گردان را روي يك تراك داخلي ، كه وجودندارد قرار بدهد. در بعضي از ديسك گردانها، اينكار باعث مي شود كه هد ، به بستي در داخل ديسك گردان گيركندو فقط با باز كردن ديسك گردان و جابه جا كردن هد با دست ، مشكل حل مي شود. ويروس مي تواند تراك صفر ديسك را نابود كند در اينصورت ، اين ديسك ديگر قابل استفاده نيست يا اينكه ويروس بطور مكرر هد از سيلندر بيروني به سيلندر داخلي حركت دهد اين امر سبب سايش ونهايتا خرابي ديسك خواهد شد . در اينجا ممكن است مستقيما چيزي تخريب نشود ولي باعث فرسودگي مي شود. براي مثال ويروس AMP2P كه روي فايل CAMMAND.COM ويندوز 95 وجود دارد ،قادر است تنظيم اصلي كارخانه را تغيير دهد و ويروسي كه بتواند اينكار را انجام دهد قادر است به تمام اجزاي سيستم دسترسي داشته و آنها را خراب كند . اين ويروس معمولا هارد ديسك را دچار تعدادي بد سكتور مي كند ويا تراك صفر را از كار مي اندازد كه با فرمت فيزيكي مجدد نيز ديسك قابل اصلاح نيست . تا چندي قبل ويروس ها فقط فايل ها را خراب مي كردند كه معمولا چاره اينكار آسان بود ولي اكنون ويروس ها به آنچنان توانايي رسيده اند كه قادرند سخت افزار سيستم را مورد هدف قرار دهند كه در اين صورت خسارات ايجاد شده شديد و جبران آن سنگين است . تازه ممكن است پس ازتعويض قسمت خراب شده ، ويروس مجددا آنرا تخريب كند. ساختار كلي فايل هاي COM وEXE تحت DOS ساختار كلي فايل هاي اجرايي از نوع COM تحت DOS با توجه به شكل ، مشخص مي شود كه معمولا و نه هميشه اولين دستور از فايل هاي اجرايي COM، حاوي يك آدرس پرش (Jump) مي باشد كه اجراي برنامه را به مكان ديگري از داخل حافظه انتقال مي دهد و سپس دستورات اصلي برنامهاز مكان XXXXX در شكل فوق آغاز مي گردد.اما اگر همين آدرس پرش اوليه را بتوانيم طوري تغيير دهيم كه به ابتداي برنامه خودمان منتقل شود .مي توان گفت كه نصف كار آلوده سازي را انجام داده ايم . بصورت كلي جهت انجام اين كار ابتدا آدرس پرش اوليه XXXXX را در مكاني از حافظه ذخيره كرده (براي استفاده بعدي ) و سپس آدرس شروع برنامه خود را درآن قرار مي دهيم . خوب تا اينجا توانسته ايم كنترل اجرايي فايل هاي COM را بدست گيريم . سپس كافي است در داخل ويروس عمليات مربوط به يافتن فايل هاي اجرايي غير آلوده ، درستكاري آنها و انجام يكسري تخريب ها ( چاپ يكسري مطالب جهت ترساندن كاربر معرفي خود) و نهايتا برگشت به آدرس اوليه پرش XXXXX جهت اجراي عادي فايل آلوده شده مراجعه كرده تا برنامه ازاين پس روال عادي اجرايي خود را انجام دهد. ساختار كلي فايل هاي اجرايي از نوع EXE تحت DOS ساختار كلي فايل هاي EXE پيچيده تر است . طبق شكل،تمام فايل هاي EXE داراي يك Header يا عنوان بوده كه شامل اطلاعات تخصصي فايل اجرايي نظير مشخصه فايل،اندازه واقعي فايل،آدرس هاي Data Segment،Code Segment و..... مي باشد. بنابراين بر خلاف فايل هاي COM كه اولين دستور از آنها حاوي آدرس شروع برنامه است ، در اين فايل ها بايت هاي 20و22 در داخل Header حاوي آدرس شروع برنامه است و چون فايل هاي EXE از نظر اندازه مي توانند خيلي بزرگتر از COM باشند، اين آدرسها شامل SEGMENT:OFFSET است با توجه به توضيح فوق در مورد نحوه آلوده سازي فايل هاي COM كافي است آدرس هاي X1:X2 را به ابتداي برنامه خود تغيير داده وسپس در پايان كار نيز به محل اوليه X1:X2 باز گرديم . اما اين نكته قابل ذكر است كه بدليل پيچيدگي ساختار فايل هاي EXE، آلوده سازي اينگونه فايل ها از فايل هاي COM مسكلتر است . دلايل خراب شدن فايل هاي اجرايي همانطور كه توضيح داده شد، به هنگام آلوده سازي فايل هاي اجرايي ممكن است، در محاسبه تغيير آدرس ها اشتباهاتي صورت گيرد و يا يك فايل اجرايي چندين بار آلوده گرددو در جريان چنين اعمالي نيز امكان دارد سيستم روال اجرايي عادي خود را ازدست داده و داخل يك حلقه بي نهايت قرار گيرد و يا به مكاني از حافظه پرش كند كه هيچگونه دستور العملي وجودنداردو سرانجام باعث HANG كردن يا قفل كردن كامپيوتر مي شود كه گاهي اوقات بعضي از ويروس ها به هنگام آلوده سازي دچار اين مشكل شده و احتمالا با اين مسئله برخورد كرده ايد كه به هنگام آلوده بودن كامپيوترتان سيستم بدليل نامشخصي قفل مي كند. باتوجه به توضيحات داده شده،هم اكنون الگوريتم كلي يكي از انواع ويروس هاي كامپيوتري را به صورت زير مي نويسيم : 1- اولين فايل اجرايي در مسير جاري را پيدا كنيد 2- گر فايل پيدا شده ، آلوده است و ديگر فايل آلوده ديگري جهت جستجو وجود ندارد به مرحله 6برويد 3- اگر فايل پيدا شده آلوده است به مرحله 1برويد 4- فايل آلوده شده را پيدا كنيد و فايل را طوري تغيير بدهيد تا به صورت عادي كار كند(آسيب نبينيد) 5- به مرحله 7برويد 6- عمليات مربوط به دستكاري يا تخريب را انجام دهيد 7- برنامه اوليه را اجرا كنيد نتيجه گيري با توجه به اينكه اغلب ويروس ها جهت آلوده سازي كامپيوتر ، طبق توضيحات داده شده، فايل هاي اجرايي حمله ور مي شوند و آدرس هاي داخل فايل را تغيير مي دهند، پس چه بهتر است بتوانيم اين مكان ها را هر چه دقيقتر كنترل كنيم و همچنين با شناخت هر چه بيشتر كار ويروس ها، آمادگي كاملتري جهت مبارزه با آنها كسب نماييم .

zed
19-07-2005, 08:37
ببین مقالاتت خیلی مفید بود
من که خیلی به دردم خورد....