Осторожно компьютерные вирусы

Вирусы в BAT-файлах


Среди огромного количества файловых вирусов, заражающих выполнимые файлы в формате COM и EXE, существует несколько вирусов, способных заражать пакетные файлы. Для этого используется весьма изощренный способ. Мы рассмотрим его на примере вируса BAT.Batman. При заражении пакетного файла в его начало вставляется текст следующего вида:

@ECHO OFF

REM [...]

copy %0 b.com>nul

b.com

del b.com

rem [...]

В квадратных скобках [...] схематично показано расположение байт, которые являются ассемблерными инструкциями или данными вируса. Команда @ECHO OFF отключает вывод на экран названий выполняемых команд. Строка, начинающаяся с команды REM, является комментарием и никак не интерпретируется.

Команда copy %0 b.com>nul копирует зараженный командный файл в файл B.COM. Затем этот файл запускается и удаляется с диска командой del b.com.

Самое интересное, что выполнимый файл B.COM, созданный вирусом, до единого байта совпадает с зараженным командным файлом. Но командный файл состоит из команд операционной системы, а выполнимый COM-файл - из команд центрального процессора. Как же работает такая программа? Если переименовать любой текстовый файл в выполнимый, просто заменив его расширение на COM, он, конечно же, не будет работать. В лучшем случае компьютер просто зависнет.

Оказывается, что если интерпретировать первые две строки зараженного BAT-файла как программу, она будет состоять из команд центрального процессора, которые фактически ничего не делают.



Текст BAT-файла

Команды ассемблера

Описание команд

@ECHO OFF

@

40h

INC AX

Увеличить на единицу значение регистра AX

E

45h

INC BP

Увеличить на единицу значение регистра BP

C

43h

INC BX

Увеличить на единицу значение регистра BX

H

48h

DEC AX

Уменьшить на единицу значение регистра AX

O

4Fh

DEC DI

Уменьшить на единицу значение регистра DI

 

20h

AND [BX+46],CL

Сравнить значение регистра CL со значением ячейки памяти

O

4Fh

F

46h

F

46h

INC SI

Увеличить на единицу значение регистра SI

 

0Dh

OR AX,520A

Записать в регистр AX результат логической операции ИЛИ между текущим значением AX и 520Ah

 

0Ah

REM

R

52h

E

45h

INC BP

Увеличить на единицу значение регистра BP

M

4Dh

DEC BP

Уменьшить на единицу значение регистра BP

 

20h

AND [SI],DH

Записать в регистр AX результат логической операции И между значением регистра DH и значением ячейки памяти

34h

Центральный процессор выполняет эти команды, а затем начинает выполнять настоящий код вируса, записанный после признака комментария REM. Получив управление, вирус перехватывает прерывания операционной системы и оставляет себя резидентным в оперативной памяти компьютера.

Резидентная часть вируса следит за записью данных в файлы. Если первая строка, записываемая в файл, содержит команду @echo, вирус считает, что записывается командный файл и заражает его.



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