Энциклопедия компьютерных вирусов

         

BAT.Highjaq


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

::pFqD @ctty nul copy/b %0.bat+%0 c:\q.com dir \*.arj/s/b|c:\q.com/i :qlpj if errorlevel 1 goto qWpU ren c:\q.com UMKQYGWK.5KA echo INSTALLHIGH=C:\UMKQYGWK.5KA>>c:\config.sys :qWpU for %%a in (%0 %0.bat) do if exist %%a set q=%%a del c:\q.com ctty con @del %q%

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

INSTALLHIGH=C:\UMKQYGWK.5KA

В результате вирус добавляет себя к списку системных драйверов, и код вируса будет получать управление при загрузке DOS. Затем вирус уничтожает файл Q.COM и свой файл-носитель (BAT-файл, из которого был запущен вирус). При запуске в виде COM-файла (см. третью строку) вирус получает имя ARJ-архива из STDIN, проверяет архив и дописывает к архиву блок данных в формате ARJ. Этот блок является неупакованным (метод "store") файлом /WINSTART.BAT, который содержит код вируса.
При запуске в виде двоичного исполняемого файла текстовые строки выполняются как обычные команды ассемблера, и вирус передает управление на свой код несколькими командами JMP:

0100 3A 3A CMP BH,[BP+SI] ; text: ::pFqD 0102 70 46 JO Jmp_a 0104 71 44 JNO Jmp_a .... . . . . . 0149 3A DB 3Ah ; text: :qlpj 014A Jmp_a: 014A 71 6C JNO Jmp_b 014C 70 6A JO Jmp_b .... . . . . . 01B7 3A DB 3Ah ; text: :qWpU 01B8 Jmp_b: 01B8 71 57 JNO Main_Code 01BA 70 55 JO Main_Code .... . . . . . 0211 Main_Code: .... . . . . .

Получив управление, двоичный код вируса определяет, был ли запущен вирус как COM-файл (в командной строке есть аргумент "/i") или как системный драйвер (аргументы отсутствуют). Если вирус запущен как системный драйвер, то он перехватывает INT 8, 21h и остается резидентно в памяти при помощи DOS-вызова Keep (INT 21h, AH=31h). Если компьютер работает не под Windows 3.x, то обработчик INT 8 через некоторое время перезагружает компьютер. Обработчик INT 21h перехватывает два вызова. Первый является командой "AreYouHere?" (AX=FEFEh), по которой вирус определяет свою резидентную копию. Второй вызов является командой GetFileAttribute. Вирус блокирует этот вызов, если обращение идет к файлу с именем, начинающимся на "/W". Не очень понятно, зачем это нужно, видимо, вирус таким образом блокирует какие-то действия ARJ.EXE при распаковке файлов /WINSTART.BAT (дроппера вируса). При запуске в виде двоичного файла без агрументов вирус также ставит у своего файла атрибуты Hidden и ReadOnly. Вирус проверяет COM-порты и в некоторых случаях инициализирует порт модема и выводит туда строки:

ATL0M0A<cr> HIGHJAQ on COMx:38400,N,8,1<cr>

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

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

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


Содержание раздела