آموزش ویروس Aphrodite.a.vbs

من دانلود سورس ویروس Aphrodite.a.vbs رو در قسمت قبل گذاشتم.

این ویروس از دو قسمت تشکیل شده:

1.installation

2.infection

امروز قسمت installation این ویروس رو آموزش میدم که خیلی به شما در ضمینه نوشتن ویروس کمک میکنه.در این قسمت،ویروس،خودش را بر روی هر ویندوزی که باشد نصب میکند.کدهای قسمت اول ویروس رو در زیر مشاهده میکنید:

خط اول رو که همتون میدونید.در خط دوم ما شئ wscript.shell را برای دسترسی به رجیستری تعریف میکنیم.در خط سوم متغیری به نام rk را مقدار دهی کردم و در خط چهارم از متد regread برای خوندن رجیستری استفاده کردم.چیزی که خونده شده همان rk بوده.rk در این جا همان مسیر تنظیمات timeout برای فایل های vbs میباشد.خب ما در خط چهارم مقدار این مسیر در رجیستری رو خوندیم و در متغیر tmo قرار دادیم.در خط پنجم میگه که اگه tmo برابر صفر نبود کدهای بعدی رو اجرا میکنه.کد بعدی کد خط ششم است که مقدار صفر را برابر آن مقدار در رجیستری قرار میدهد.اگر این مقدار یک باشد،ویروس پس از یک ثانیه از کار میفته اما قبل از این که یک ثانیه بشه،ویروس این مقدار رو برابر صفر میکنه که یعنی غیرفعال.خط هفتمم که پایان شرطی بود که گذاشتیم.در خط هشتم هم شیئ fso را برای دسترسی به فایل ها،فولدر ها و درایو ها تعریف کردم و در خط نهم با متد getspecialfolder مسیر پوشه سیستم ویندوز رو به دست میاریم و در خط دهم یه مسیر به نام h رو تعریف میکنیم که قراره مسیر ویروس در کامپیوتر قربانی باشه.در خط یازدهم ویروس خودشو به عنوان یک فایل متنی باز میکند و در خط دوازدهم تمام محتویات و کدهای خودش را میخواند و در متغیر c قرار میدهد.در خط سیزدهم چک میکند که آیا فایلی با مسیر h وجود داره یا نه.اگه وجود نداشته باشه کد خط های بعدی را اجرا میکند.در خط چهاردهم خودش رو در مسیر h کپی میکنه و سپس در خط پانزده با متد getfile مشخصات فایلی با مسیر h رو میگیره و سپس در خط شانزدهم attributes فایل رو برابر یک قرار میده که همان readonly خالی میشود.اگر خط پانزدهم انجام نشود،خط شانزدهم هم انجام نخواهد شد.در خط هفدهم فقط عبارت else رو میبینید.یعنی اگه طور دیگه باشه و فایلی با مسیر h وجود داشته باشه،کدهای بهدی را تا end if اجرا کند.در خط هجدهم فایل با مسیر h را به صورت یک فایل متنی باز میکند و در خط نوزدهم تمام کدهای فایل را میخواند و در متغیر o قرار میدهد.در خط بیستم چک میکند که آیا عبارت .::Aphrodite.vbs::. در این فایل وجود داره یا نه.در خط بیست و یکم میگوید که اگر این عبارت در فایل وجود نداشته باشه کد خط های بعدی رو اجرا کنه.عبارت .::Aphrodite.vbs::. یک رمز است که مشخص میکند که آیا آن فایل همان ویروس خودمان میباشد یا نه.اگر نه در خط بیست و دوم attributes فایل رو برابر صفر یا همون عادی قرار میدیم و در خط بیست و سوم خودمون رو به جای اون فایل کپی میکنیم و سپس در خط بیست و چهارم دوباره attributes فایل رو برابر یک قرار میدیم که همون readonly خالیه.خط بییست و پنجم و بیست و ششم هم پایان شرط هایی که گذاشتیم رو مشخص میکنه.در خط بیست و هفتم یک مقدار در رجیستری را تعریف میکنیم و در متغیر lm قرار میدیم.در خط بیست و هشتم این مسیر در رجیستری را + Aphrodite میخونیم و در متغیر er قرار میدیم.در خط بیست و نهم میگیم که اگر er برابر h نبود،در خط سی یک مقدار در رجیستری نوشته بشه که باعث میشه ویروس در هر بار اجرای ویندوز اجرا بشه و  خط سی و یکم هم پایان شرطه.در خط سی و دوم یک مسیر در رجیستری را تعریف میکنیم و در متغیر cu قرار میدیم و در خط سی و سوم یک مقدار در رجیستری مینویسیم که باعث غیرفعال شدن regedit میشود.خط های بعدی هم همین کار را انجام میدهند با این تفاوت که خط سی و چهارم taskmanager غیرقعال میشود.غیرفعال شدن regedit و taskmanager به این صورت نیازی به log off یا restart کردن ویندوز نداره ولی در خط سی و پنجم ویروس run موجود در startmenu را غیرفعال میکند و خط سی و ششم هم باعث غیرفعال شدن shutdown موجود در startmenu میشود که این دو نیاز به log off یا restart ویندوز دارند.در این جا قسمت installation ویروس پایان میپذیرد و در پست بعدی قسمت infection ویروس یا همون آلوده کردن فایل ها توسط ویروس رو آموزش میدم.

دانلود ویروس Aphrodite.a.vbs رو که خودم نوشتمش رو تو وبلاگ گذاشتم.همون طور که در پست قبل گفتم این ویروس دارای دو قسمت است.در پست قبل قسمت installation این ویروس رو آموزش دادم و تو این پست قسمت infection ویروس رو آموزش میدم.در این قسمت،ویروس فایل های vbs و vbe موجود در تمام درایوهای کامپیوتر را آلوده می کند.کدهای قسمت دوم ویروس رو در زیر میبینید:

خط اول تا ششم: در خط اول ویروس با کمک شیئ fso ،تمام درایو های کامپیوتر را می گیرد و سپس در متغیر drives قرار می دهد.در خط دوم از حلقه for-next استفاده شده است.به این صورت که برای هر درایوی کد خط های بعدی را تا جایی که به next برسد اجرا می کند.در خط سوم اگر درایو آماده باشد کد خط های بعدی تا جایی که به end if برسد اجرا می شود.خط چهارم تابع dosearch را اجرا می کند و کنترل برنامه را به این تابع می دهد.همچنین مسیر درایوی که پیدا کرده هم به عنوان متغیر این function معرفی می کند.خط پنجم هم پایان شرطی بود که گذاشته بودیم و خط ششم هم باعث پیدا کردن درایو بعدی می شود. در خط هفتم،مسیر درایو در متغیر path قرار می گیرد.خط هشتم برای این است که اگر در هنگام عملیات ویروس خطایی رخ دهد،اجرای ویروس متوقف نگردد.در خط نهم،ویروس با کمک شیئ fso ،اطلاعاتی راجع به مسیر path می گیرد و در متغیر folder قرار می دهد.در خط دهم،مسیر فایل های موجود در متغیر folder ،گرفته می شوند اما اگر subfolder وجود داشته باشد،مسیر فایل هایش بعدا" گرفته می شوند.خط یازدهم برای هر فایل موجود در آن مسیر،کدهای خط های بعدی را اجرا می کند تا جایی که به عبارت next برسد.در خط دوازدهم،پسوند سه حرفی فایل دریافت می شود و سپس در خط سیزدهم،پسوند فایل به حروف کوچک تبدیل می شود.خط چهاردهم هم می گوید که اگر پسوند فایل vbs یا vbe بود کد خط های بعدی اجرا شوند تا جایی که به end if برسد.در خط پانزدهم مسیر فایل در متغیر fp قرار می گیرد.در خط شانزدهم فایل به صورت متنی برای خواندن باز می شود و در خط هفدهم تمام محتویات فایل در متغیر k1 قرار می گیرد.خط هجدهم هم چک می کند که آیا محتویات k1 دارای علامت .::aphrodite.vbs::. هست یا خیر.این یک رمز است که مشخص می کند آیا آن فایل قبلا" آلوده شده است یا نه.خط نوزدهم می گوید که اگر فایل آلوده نشده،کد خط های بعدی اجرا شود تا زمانی که به end if برسد.در خط بیستم،اطلاعاتی راجع به فایل را دریافت می کنیم و در خط بیست و یکم،attributes فایل را در متغیر v قرار می دهیم و سپس attributes فایل را در خط بیست و دوم برابر صفر قرار می دهیم و در خط بیست و سوم هم فایل به صورت متنی برای اضافه کردن به انتهای فایل باز می شود.در خط بیست و چهارم،یک عبارت خالی را در فایل قرار می دهیم که باعث می شود تا تمام اطلاعاتی که بعدا" می خواهیم در فایل بنویسیم،در خط بعدی از عبارت خالی قرار بگیرند و اطلاعات ویروس درست پشت سر اطلاعات فایل قرار نگیرند و مشکلی رخ ندهد.در خط بیست و پنجم هم کدهای ویروس در فایل قرار می گیرند و در خط بیست و ششم هم attributes فایل برابر با v می شود و خط بیست و هفتم و بیست و هشتم هم پایان شرط هایی بود که گذاشته بودیم.خط بیست و نهم هم باعث پیدا شدن فایل بعدی می شود.در خط سی، subfolder های موجود در مسیر path در متغیر subfolders قرار می گیرند و در خط سی و یکم حلقه for-next وجود دارد که برای هر subfolder موجود در متغیر subfolders ،کد خط بعدی را اجرا می کند.کد خط سی و دوم،تابع dosearch را دوباره اجرا می کند با این تفاوت که این بار مسیر subfolder در متغیر path قرار می گیرد.خط سی و سوم، subfolder بعدی را پیدا می کند و خط سی و چهارم پایان function و پایان قسمت دوم ویروس است

در قسمت اول و دوم ایم مقاله به ترتیب به توضیح روش کلی آلوده سازی و یافتن فایل های exe پرداختیم.یاد آوری می کنم که برای آلوده ساختن فایل به روش کنترلی به سه فایل نیاز داشتیم :

  1. یک فایل exe برای آلوده شدن 
  2. یک فایل ویروسی مثل ویروس خودمون 
  3. یک فایل کنترلی

در این قسمت کد نویسی فایل دوم برنامه را آغاز می کنیم.وظیفه ی این فایل آلوده کردن فایل  exe (شماره ی 1) می باشد.فایل جدید هر سه فایل را در بر خواهد داشت.

به خاطر دارید که یک فایل را نمی توان بیش از یک بار آلوده کرد.پس قبل از آلوده سازی هر فایل باید تشخیص دهیم که آیا آن فایل قبلا آلوده شده است یا نه.برای این کار نشانه ای در فایل قرار می دهیم و قبل از آلوده کردن وجود یا عدم وجود آن نشانه در فایل را بررسی می کنیم.

قرار دادن نشانه :

Open file_1 for random as #1

Put #1, 40, "1"

Close

این دستورات در بایت چهلم فایل نشانه ی 1 را قرار می دهد.نشانه را جایی قرار دهید که فایل خراب نشود.file_1 آدرس فایلی است که آلوده شده است.این عمل را باید بعد از آلوده کردن فایل انجام داد.

تشخیص نشانه :

Open file_1 for random as #1

Dim n as string

Get #1, 40, n

If n="1" then

Close #1

End if

اگر نشانه ی موجود در بایت چهلم برابر با نشانه ای بود که خودمان در فایل قرار داده بودیم، فایل را می بندیم و به دنبال فایل دیگری می گردیم.

قبل از نوشتن قسمت بعدی کدها، سورس زیر را در ماژول برنامه کپی کنید.

Public Type FileData

 File1 As String

 File2 As String

End Type

Public Type Name

 F1 As String

 F2 As String

End Type

Public Datas As FileData

Public Names As Name

Public DataBag As New PropertyBag

 

ویروس فایل کنترلی را به جای فایل exe قرار می دهد.سپس کدهای خود و فایل را به انتهای فایل کنترلی اضافه می کند.پس باید قبل از این کار اطلاعات فایل exe و خود را بخواند.خط اول تا چهارم سورس برای این کار آورده شده اند.خط پنجم تا هشتم برای نام های فایل exe و ویروس هستند.خط آخر هم یک بسته ی اطلاعاتی ایجاد می کند.ما می خواهیم این بسته را در انتهای فایل کنترلی قرار دهیم.این بسته شامل کدهای ویروس و کدهای فایل exe و نام ویروس و نام فایل exe خواهد بود.فایل کنترلی این بسته را از آخر خود می خواند و برای ساختن فایل exe و ویروس و اجرا کردن آن ها به این نام ها نیاز دارد.

قسمت بعدی مقاله :

1.پر کردن بسته ی اطلاعاتی

2.تزریق ماده ی وراثتی (فایل شماره ی 3)