Вирусы на командном языке DOS

ВАТ.Combat

Безобидный нерезидентный ВАТ-вирус. При запуске ищет.ВАТ-файлы в текущем и родительском каталогах, в каталогах С:\, C:\DOS, C:\WINDOWS и записывается в начало обнаруженных файлов.

Использует "бинарный" способ — код вируса исполняется и как batch-команды, и как СОМ-файл (см. вирус "Batman"). С помощью этого приема вирус получает доступ к DOS-функциям (INT 21h). Для того чтобы запустить себя как СОМ-файл, вирус копирует себя во временный файл С:\СОМВАТ.СОМ и вызывает его.

Содержит строки:

* ComBat * Rajaat / Genesis ComBat.TMP

BAT.HexVirus

Безобидный нерезидентный ВАТ-вирус. Ищет.ВАТ-файлы в текущем и родительском каталогах, затем записывается в их конец. Основной код вируса в зараженных файлах содержится в виде шестнадцатеричного дампа (результат работы какого-то паковщика HEX-to-ASCII). При запуске вирус создает на диске временный СОМ-файл, записывает туда распаковщик ASCII-to-BIN, распаковывает свой основной код и выполняет его.

Вирус содержит строку:

HexVirus! BAT.Highjaq

Неопасный вирус-червь. Записывает себя в.ВАТ-файлы в архивы формата ARJ и системные драйверы. Нерезидентен (т. е. не содержит резидентного кода, который заражает файлы), но если вирус загружен в память как системный драйвер, то перехватывает INT 8, 21h и остается резидентно в памяти.

Код вируса состоит из двух частей. Первая часть — текстовые строки, которые выполняются при запуске вируса как ВАТ-файла, вторая часть содержит двоичный код, выполняемый при запуске вируса как СОМ-файла или системного драйвера.

Текстовая часть вируса выглядит следующим образом (метки являются также командами передачи управления, если вирус запущен как двоичный выполняемый файл):

::pFqD

@cttynul

copy/b %0.bat+%0 c:\q.com

dir \*.arj/s/b¦c:\q.com/i

:qlp)

if errorievel 1 goto qWpU

ren c:\q.com UMKQYGWK.5KA

echolNSTAliHIGH=C:\UMKQYGWK.5KA»c:\config.sys

:qWpU

for %%a in (%0 %0.bat) do if exist %%a set q=%%a

del c:\q.com

cttycon

@del %q%

При запуске такого кода из ВАТ-файла вирус копирует себя в файл C:\Q.COM (третья строка). Этот файл является "дроппером" (dropper) вируса, используемым для заражения других файлов.

Затем вирус запускает команду DIR, которая ищет в каталогах текущего диска ARJ-архивы и передает их имена файлу Q.COM (4-я строка). Файл Q.COM заражает обнаруженные архивы, затем находит резидентную копию вируса и возвращает Errorievel 1, если таковой код обнаружен. Если память не заражена (т. е. вирус не был запущен как системный драйвер), то вирус переименовывает файл Q.COM в UMKQYGWK.5KA и добавляет к файлу CONFIG.SYS строку:

INSTAIimGH=C:\UMKQYGWK.5KA

В результате вирус добавляет себя к списку системных драйверов и код вируса будет получать управление при загрузке DOS. Затем вирус уничтожает файл Q.COM и свой файл-носитель (ВАТ-файл, из которого был запущен вирус).

При запуске в виде СОМ-файла (см. третью строку) вирус получает имя ARJ-ap-хива из STDIN, проверяет архив и дописывает к архиву блок данных в формате ARJ. Этот блок является неупакованным (метод "store") файлом /WINSTART.BAT, который содержит код вируса.

При запуске в виде двоичного исполняемого файла текстовые строки выполняются как обычные команды ассемблера и вирус передает управление на свой код несколькими командами JMP:

0100 ЗА ЗА СМР BH,[BP+SI]; text:::pFqD 0102 70 46 JO Jmp_a 0104 71 44 JNO Jmp_a

0149 ЗА DB 3Ah

014А Jmp_a:

014А 71 6С JNO JBlp_b

014C 70 6A JO Jl)lp_b

text::qlpj

0187 ЗА DB 3Ah

01B8 JmpJ):

01B8 71 57 JNO Maln_Code

01BA 70 55 JO Main.Code

0211 Main_Code:

text::qWpU

Получив управление, двоичный код вируса определяет, был ли запущен вирус как СОМ-файл (в командной строке есть аргумент /i) или как системный драйвер (аргументы отсутствуют). Если вирус запущен как системный драйвер, то он перехватывает INT 8, 21h и остается резидентно в памяти при помощи DOS-вызова Keep (INT 21h,AH°31h).

Если компьютер работает не под Windows З.х, то обработчик INT 8 через некоторое время перезагружает компьютер. Обработчик INT 21h перехватывает два вызова. Первый является командой "AreYouHere?" (AX-FEFEh), по которой вирус определяет свою резидентную копию. Второй вызов — команда GetFileAttribute. Вирус блокирует ее, если обращение идет к файлу с именем, начинающимся на /W. Не очень понятно, зачем это нужно, видимо, вирус таким образом блокирует какие-то действия ARJ.EXE при распаковке файлов /WINSTART.BAT (дроппера вируса).

При запуске в виде двоичного файла без агрументов вирус также ставит у своего файла атрибуты Hidden и Readonly.

Вирус проверяет СОМ-порты и в некоторых случаях инициализирует порт модема и выводит туда строки:

АШ)МОА<сг> HIGHJAQ on COMx:38400,N,8,Kcr>

где СОМх — номер порта модема. Затем вирус перехватывает INT 8 и запускает файл C:\COMMAND.COM с параметрами:

C:\COM1/E:1024/P/F

Перехватчик INT 8 в данном случае перезагружает компьютер, если обнаруживает, что бит Carrier Detect в соответствующем порте равен единице.

BAT.Hot2Trot

Опасный нерезидентный ВАТ-вирус. При запуске ищет.ВАТ-файлы в текущем и родительском каталогах и записывается в их конец. Заражает файлы способом, напоминающим стандартный способ заражения СОМ-файлов: записывает себя в конец файла, а в его начало помещает команду перехода на код вируса. В результате зараженные файлы выглядят примерно так, как показано на рис. 4.4.


При заражении файлов вирус использует DOS-функции (INT 21h). Для этого вирус создает и запускает два временных СОМ-файла: записывает на диск шестнадцате-ричный код этих СОМ-файлов и конвертирует его в двоичный код утилитой DEBUG. Если DEBUG отсутствует в PATH, вирус портит файлы.

Bat.Naive.4894

Неопасный резидентный ВАТ-вирус. Перехватывает INT 21h и записывается в начало.ВАТ-файлов. Зараженные файлы выглядят следующим образом (строки, заключенные в квадратные скобки [ и ] являются комментариями):

@rem NAIVE

@if exist naive.* goto naive

@if •%range_check%=="yes goto naive

@ecno>naive.com [ HEX data1 ]

@naive.com

@if not errorievel 33 goto superwork

@del>nul naive.com

©goto naive

:superwork

@echo>naive.com [ HEX data2 ] @echo>naive.dat [ ASCII text ] @echo»naive.dat [ ASCII text ] @echo»naive.dat [ ASCII text ] [ повтор... ] @echo»naive.dat @naive.com<naive.dat >naive.exe @del>nul naive.com @del>nul naive.dat @naive.exe>nul @del>nul naive.exe @set range_check=yes: naive [ первоначальный.ВАТ-файл ]

HEX datal содержит код вызова проверки своей TSR-копии ("Ты здесь?"), HEX data2 — декодер ASCII->BIN, ASCII text содержит код вируса, преобразованный в ASCII-строки.

При запуске такого ВАТ-файла вирус проверяет ENVIRONMENT на наличие строки RANGE_CHECK и, если она равна YES, передает управление первоначальному файлу. В противном случае вирус создает файл NAIVE.COM, записывает туда код вызова "Ты здесь?", выполняет этот файл и проверяет код возврата (ERRORLEVEL).

Файл NAIVE.COM содержит только вызов INT 21h с AH-F6h. Если в памяти уже присутствует копия вируса, она возвращает 12345678 в регистрах CX:DX и NAIVE.COM отдает управление ВАТ-файлу с кодом ERRORLEVEL=33. Если TSR-копии нет, то NAIVE.COM возвращает ERRORLEVEL^.

Вирус (в ВАТ-файле) проверяет значение ERRORLEVEL и, если оно равно 32, удаляет файл NAIVE.COM и передает управление первоначальному ВАТ-коду. Иначе вирус создает два файла: NAIVE.DAT и NAIVE.COM (при этом уничтожается предыдущий файл NAIVE.COM). В файл NAIVE.COM вирус записывает декодер ASCII->BIN, в файл NAIVE.DAT — ASCII-строки. Затем вирус выполняет команду

@naive.com<naive.dat >naive.exe

которая создает файл NAIVE.EXE, считывает ASCII-данные из NAIVE.DAT, декодирует их в шестнадцатеричный код, записывает результат в NAIVE.EXE и затем запускает NAIVE.EXE на выполнение. NAIVE.EXE устанавливает резидентную копию вируса и возвращает управление ВАТ-файлу, который затем уничтожает NAIVE.EXE, определяет строку ENVIRONMENT "RANGE_CHECK-YES" и передает управление первоначальным командам ВАТ-файла.

При запуске код файла NAIVE.EXE вызывает ту же самую функцию "Ты здесь?", как описано выше. Если вируса нет в памяти, NAIVE.EXE проверяет номер своего "поколения" и в зависимости от его значения пытается вывести на экран текст, содержащий крик души индивидуума, наконец-то достигшего половой зрелости. Однако вирус содержит две ошибки, благодаря которым текст не выводится на экран: первая ошибка — вирус никогда не увеличивает свой счетчик, вторая — все сообщения перенаправлены в NUL командой

@naive.exe>nul

Затем вирус перехватывает INT 21h и остается резидентным при помощи INT 27h.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: