|
رادیــــــــــــو110
|
دانلود اسکای ---
اين جنگ از كجا شروع شد؟
مدلهاي
اوليه ويروسها اکثراً بسيار ساده و ابتدايي بودند، به همين دليل سازندگان
ضدويروسها فقط كافي بود يك نمونه آلوده را پيدا کرده و با شناسايي ساختار
كدي آنها، شناسهاي (يا همان پاد ويروسي) برايشان تهيه ميکرند. در آن
زمانها که شبکهها بسيار محدود بودند و به نوعي مرسومترين ابزار براي
جابجايي اطلاعات، فلاپي ديسکها به حساب ميآمدند، سرعت تکثير و انتشار
ويروسها بسيار کم و محدود بود. به همين دليل ضدويروسها ميتوانستند تسلط
خوبي بر وضعيت داشته باشند. اما اين شرايط با ورود و همهگير شدن اينترنت
بطور کلي دگرگون شد. زيرا ميليونها کاربر از سراسر دنيا بدون هيچگونه
محدوديت خاصي، بطور مداوم در حال تبادل اطلاعات بودند. از اين رو بستري
مناسب براي انتشار ويروسها بوجود آمد و فصل جديد و پر التهابي از مبارزه
ضدويروسها و ويروسها آغاز شد. به همين دليل شرکتهاي امنيتي كار خود را
با جذب نيروهاي متخصص بيشتر و تاسيس دفاتر گوناگون در سراسر جهان، گسترش
دادند.
اکنون که دامنه فعاليت ويروسها زيادتر شده بود، کاربران بيشتري
نيازمند نرمافزارهاي امنيتي بودند. به همين دليل بنيه مالي شرکتهاي
توليده کننده ضدويروس بهتر از گذشته شده بود. آنها سعي کردند براي مهارِ
رشد روز افزون ويروسها، هر کاري انجام دهند. بطور مثال نيرويهاي متخصص
بيشتري در آزمايشگاههاي خود بکار گماردند و در سه شيفت کاري هميشه و هر
لحظه در حال بررسي نمونههاي مختلف دريافتي بودند. حتي دفاتر گوناگوني در
سراسر دنيا تاسيس کرند که در مناطق مختلف جغرافيايي هم حضور داشته باشند.
گام بعدي ويروسها
حال
که ضدويروسها شروع به جبههگيريهاي گسترده کرده بودند و همچنين با
يکديگر نيز همکاري گستردهاي داشتند، عرصه بر ويروس نويسان تنگتر از قبل
شده بود. آنها ميخواستند بازهم گامي فراتر بگذارند، از اينرو حرکت
بعديشان روي آوردن به ساختارهاي پيچيدهتر و ترفندهاي برنامه نويسي
حرفهاي بود.
روشهاي مخفي سازي اوليه
مطمئناً
اولين روشي كه ويروس نويسان براي مقابله با طرف ديگر ماجرا در نظر گرفتند،
روشهاي مخفيسازي بود. اصولاً هر چقدر ويروسها پنهانتر باشند هم
كاربران و هم ضدويروسها ديرتر بوجود آنها پي خواهند برد، در نتيجه زمان
بيشتري در اختيارشان قرار خواهد گرفت تا اهداف خود را پيگيري كنند. در
ادامه قصد داريم شما را با روشهاي مخفيسازي ويروسها بيشتر آشنا كنيم.
مخفي سازي (Stealth)
در اين روش ويروسها بجاي مخفيسازي بدنه، رد پاهاي خود را پاک ميکنند. چند تکنيکي که براي اينکار استفاده خواهد شد عبارتند از:
l ويروس
ميتواند با دستکاري در Timestamp (يا همان زمان ايجاد فايل) شرايط را
بگونهاي جلوه دهد که انگار اصلاً تغييري در ساختار فايل ايجاد نشده است.
نکته :
يکي از تکنيکهاي مورد استفاده براي بهينهسازي ضدويروسها اين است که
فايلهايي که قبلاً اسکن شدهاند، مجدداً بررسي نشوند. با توجه به همين
خاصيت ويروسها با دستکاري زمان ايجاد، بگونه صحنهسازي ميکنند که انگار
فايل تغييري نکرده، پس کدهاي آلوده توسط ضدويروس اسکن نخواهد شد. شايد تا
به حال برايتان پيش آمده باشد که پس از اسکن کلي سيستم ( Deep Scan - Full
Scan … ) متوجه وجود ويروس در فايلهايي شده باشيد که قبلاً سالم به نظر
ميرسيدند.
l ويروس ميتواند كليه اطلاعات فايل، مانند زمان ايجاد آن، حجم و محتوياتش را در محلي ذخيرهسازي كند و در نهايت از هرگونه آشكار سازي هنگام درخواست سيستمهاي ورودي و خروجي ( I/O ) جلوگيري به عمل آورد. به اين ترتيب كه اگر هرگونه درخواستي از طرف I/O به فايل آلوده برسد، ويروس با جايگزين كردن اطلاعات اصلي، به شكلي فايل را غيرآلوده نمايش خواهد داد.
يكي از مشكلاتي كه بطور غير مستقيم در اثر ويروسهاي مخفي ميتواند بوجود آيد، اين است كه ضدويروس پس آلوده شدن سيستم، بطور اشتباه فرض خواهد كرد اكثر فايلها (حتي فايلهاي سالم) آلوده هستند و درنتيجه آسيب شديدي به سيستم وارد خواهد كرد.
تكنيك مخفيسازي در اين چند ساله اخير مورد استفاده تهديدي نسبتاً جديدي به نام روتكيتها هم قرار گرفته است. البته روتکيتها خود بدافزار بالفعلي به حساب نميآيند و به تنهايي قادر به خرابکاري در سيستم نيستند بلکه آنها ميتوانند ترافيک شبکهاي را بگونهاي مخفي نگه دارند که کاربران متوجه موارد مشکوک در سيستم نشوند. از اين رو بدافزارهاي ديگر ميتوانند با استفاده از روتکيتها به اهداف خرابکارنه خود برسند. يكي از نمونههاي استفاده از روتكيتها در بدافزارها را مي توان در اسب تروايي به نام Ryknos ملاحظه كرد. اين تروجان با مخفي شدن توسط روتكيت اقدام به سرقت اطلاعات ميكرد.
رمزگذاري دادهها
مشخصاً
يكي از بهترين روشهاي مخفيسازي دادهها، رمزگذاري آنها است. تکنيکهاي
رمزگذاري مشکلاتي زيادي را براي کساني که ميخواهند بدون داشتن مجوز به
دادهها دسترسي پيدا کنند، ايجاد خواهد نمود. از اين رو ويروس نويسان
تصميم گرفتند براي ايجاد تاخير در کار ضدويروسها، کدهاي خود را رمزنگاري
کنند. بدين ترتيب كه اركآنهاي اصلي (كه به آن بدنه ويروس ميگويند) يعني:
مكانيزم آلوده سازي ( Infection mechanism) ، اجرا كنندة ويروس ( Trigger
) ، اثر ويروس روي سيستم ( Payload ) را رمزگذاري خواهند شد.
اما
مشخصاً اين کار به همين راحتيها هم ميسر نخواهد بود. زيرا تا زماني كه
بدنة ويروس فشرده باشد، ويروس قادر به فعالسازي خودش نيز نخواهد بود. از
اين رو براي اجرا شدن بايد دادههاي موجود، رمزخواني (Decryption) شوند.
عاملي كه اين کار را انجام ميدهد، چرخه رمزخواني ( Decryptor Loop ) نام
دارد. در حقيقت چرخة باز كننده، كدي بسيار كوچكتر از كد اصلي خود ويروس
است. به همين دليل يافتن آن، کار راحت و انجام شدندي در آن روزها نبود.
با
وجود اين که روشهاي اوليه رمزگذاري بدنه، کار ضدويروسها را از قبل
بسيار سختتر کرده بود، اما طولي نکشيد که متخصصين امنيتي از نقطه ضعف اين
روش (يعني همان کد چرخه رمزخواني) براي ضربه زدن به ويروسها استفاده
کردند. از اين رو ضدويروسها به غير از جستجو براي يافتن بدنه، فايلها را
از نظر وجود
Decryptor Loopها هم بررسي ميکردند.
روشهاي مخفي سازي پيشرفتهتر
در
حرکتهاي بعدي، ويروس نويسان پاي به عرضه جديدتري گذاشتند. آنها دريافته
بودند که اتکا به روشهاي رمزگذاري نميتواند مدت زمان زيادي را در
اختيارشان قرار دهد. به همين دليل روش و مسير جديدي را انتخاب کردند که
بوسيله آن بتوانند ضدويروسها را دور بزنند. در اين روش (که به تکنيکهاي
چندگانهسازي مشهور است) ساختار ويروس بگونهاي طراحي ميشود که امکان
تطبيق سازشان با شناسهها، به راحتي امکانپذير نباشد. در ادامه جزئيات
اين روش را بررسي خواهيم کرد:
اوليگومورفيزم (Oligomorphism)
همانطور
که گفتيم نقطه ضعف اصلي روش رمزگذاري، وجود کليدهاي رمزخوان است. براي
جبران اين ضعف، تکنيک اوليگومورفيک توسط ويروس نويسان ابداع شد. در ساختار
اين ويروسها از چندين کليد رمزخوان استفاده ميشد. بطور مثال براي ويروس
Whale،30 و براي ويروس Memorial، 96 چرخة مختلف در نظر گرفته شده بود. بدين
ترتيب ديگر يک کليد واحد براي هر ويروس وجود نداشت و در نتيجه شناسههاي
قبلي امکان تطبيقسازي را فراهم نميکردند. اما اين روش هم دوام زيادي
نياورد، زيرا محدوده کليدهاي منتشر شده بسيار کوچک و دست يافتني بود و
سازندگان ضدويروسها با جمع آوري آنها، شناسههاي مجهز شده به تمامي کليدها
را ارسال ميکردند.
پليمورفيزم (Polymorphism)
اما
ماجرا به همين جا ختم نشد و ويروس نويسان باز هم دست به کار شدند. البته
تکنيک جديد تفاوت اساسي و چنداني با روش قبل ندارد. فقط به نوعي نقطه ضعف
گذشته را پوشش ميدهد. همانطور که گفتيم ويروسهاي اليگومورفيک از دامنه
محدودي از چرخههاي رمزخواني استفاده ميکنند و سازندگان ضدويروسها کافي
است با شناسايي تمامي آنها، اطلاعات مورد نظر را در شناسه ويروس قرار دهند.
اما ويروس نويسان براي حل اين مشکل نسل ديگري از تهديدات کامپيوتري، يعني
ويروسها پليفرميک را معرفي کردند. در اين نوع ويروسها دامنه رمزخواني
بسيار وسيع شده بود. بطور مثال ويروس Tremor از 6 ميليارد چرخه استفاده
ميكند!! مطمئناً پيدا کردن و قرار دادن اين چرخهها در شناسه، کار نشدني
خواهد بود.
اما در اينجا دو سوال مهم مطرح ميشود. اول اينكه خود ويروس
با وجود اين دامنه وسيع، چگونه ميتواند از ويروسي بودن و يا نبودن
فايلهاي هدف مطلع شود و فايلهايي که قبلاً ويروسي شدهاند را مجدداً
آلوده نکند؟ دوم اينكه چگونه ميتوان چرخة بازكنندهاي را طراحي کرد که
چنين طيف وسيعي داشته باشد؟
روشهايي که ويروس براي شناسايي خود بکار ميبرد!
بطور
کلي ويروس بايد بوسيله بعضي از تکنيکهاي خاص و ويژه نشانههايي را براي
خود بجاي بگذارند که اولاً به راحتي قابل شناسايي نبوده و ثانياً متفاوت و
گوناگون باشند. مشخص است که اگر هر يک از دو شرط زير رعايت نشوند،
ضدويروسها هم ميتوانند به راحتي کدهاي آلوده را تشخيص داده و امکان گسترش
ويروس را مسدود کنند.
يکي از راههايي که ويروسها ميتوانند از آن
استفاده کنند دستکاري در زمان ايجاد فايل مورد نظر است. بطور مثال اغلب
نرمافزارها 2 رقم آخر سال را نشان ميدهند مثالاً بجاي 2008 عدد 08 را
نمايش ميدهند. به همين دليل ويروس ميتواند با اضافه كردن عدد 100 به سال،
بدون جلب توجه كار خود را انجام دهد. يا اينکه با اضافه کردن حجم بصورت
معنيدار اقدام کند، اين افزايش ميتوانند عددي مانند 123 باشد ( مثلاً حجم
نهايي يک فايل 123,127 بايت بشود) و روشها متفاوت و متنوع ديگر ...
روشهاي ايجاد تغيير در چرخه رمزخواني
همانطور
كه اشاره كرديم چرخه رمزخواني (در ويروسهاي پليفرميك) با هر بار
آلودهسازي، تغيير خواهد كرد. اين تغييرات با موتور جهش (Mutation Engine )
انجام ميشود. روال كاري آن را ميتوان به عنوان يك مبدل در نظر گرفت كه
از سويي كدي را دريافت ميكند (ورودي) و ازسوي ديگر، با تغيير ساختار آن،
خروجي جديدي را تحويل ميدهد. حال مشخص كردن اينكه از چه تكنيكي براي انجام
اين كار استفاده شود، توسط موتور با استفاده از سيستم مولد كد و اعداد
رندوم تعيين خواهد شد.
روش ديگر استفاده مکرر از دستورهاي برنامهنويسي GOTO و Jump To است که تاثيري در عملکرد کدها نداشته باشد. در اين روش که به آن کدهاي اسپاگتي ميگويند، ميتوان به اشکال مختلف کدها را تغيير داد.
متامورفيزم ( Metamorphism )
ويروسهاي
متامورفيك ويروسهايي هستند كه بدنه آنها از خصوصيات پليفرميكي بهره
ميبرد. در حقيقت اين نسل از ويروسها از روش رمزگذاري بهره نميبرند و در
نتيجه به چرخة باز كننده هم نيازي ندارند. اما براي در امان بودن از
شناسايي، در هر بار آلوده شدن، بدنه خود را تغيير شكل ميدهند. هر دوي اين
ويروسها از موتور جهش ( Mutation Engine ) براي تغيير ساختار كدهاي مورد
نظرشان بهره ميبرند. با اين تفاوت كه ويروسهاي پليفرميك پس از هر بار
آلودهسازي نيازي به تغيير در موتور جهش خود ندارند. زيرا كدهاي خود اين
موتور در بدنه فشرده شده ويروس قرار ميگيرد و قابل شناسايي نخواهند بود.
حال آنكه ويروسهاي متامورفيك، همانطور كه اشاره شد از روش رمزگذاري
استفاده نميکنند، به همين دليل پس از هر آلوده سازي، مجبورند تغيير شكل در
موتور جهش ايجاد کنند.
به هر حال با شکل گيري اين نسل از ويروسها،
کار شرکتهاي امنيتي سختتر و پيچيدهتر از قبل شده بود و تکنيکهاي ساده
وسنتي گذشته مطمئناً نميتوانست چاره گشاي مشکلات آنها شود. به همين دليل
متخصصين امنيتي دست بکار شدند و با طراحي سيستمهاي پيشگيرانه و هوشمند
عرصه رقابتي جديدي را آغاز کردند.
در شماره آينده مسير تکاملي ضدويروسها را بررسي خواهيم کرد و شما را با سيستمهاي مبتي بر هوش مصنوعي آشنا خواهيم ساخت.
منبع:ماهنامه تخصصی کامپیوتر.خرداد ماه 87 شماره 42