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

Вирус DIR


Летом 1991 года разразилась эпидемия нового вируса. Его проявления были весьма интересны. Во время копирования зараженных файлов в любом случае копировались только 1024 байта, несмотря на то, что фактические длины файлов были совершенно другие. Проверка целостности структуры файловой системы с помощью программы CHKDSK или Norton Disk Doctor выявляла наличие большого количества потерянных кластеров и пересечений файлов. Если, обнаружив нарушение в структуре файловой системы, пользователь пытался ее исправить, то все зараженные файлы оказывались испорченными.

Однако, несмотря на то что внешне зараженные программы кажутся совершенно неработоспособными, они работали как обычно. Так появился новый тип вируса, впоследствии названный DIR.

Способ размножения вируса DIR значительно отличается от используемых обычными файловыми вирусами и вирусами-спутниками. Тем не менее, мы отнесли его к группе файловых вирусов, так как объектом нападения становятся именно исполнимые файлы программ.

Чтобы лучше понять механизм распространения вируса DIR, мы проведем небольшой экскурс в структуру файловой системы MS-DOS. Более подробную информацию вы найдете в шестой главе этой книги.

При описании загрузочных вирусов мы уже рассказывали, что данные хранятся на жестких дисках и дискетах в отдельных секторах. Несколько секторов, расположенных рядом, называют кластером. Когда на диске создается новый файл, операционная система отводит для него несколько свободных кластеров. Кластеры файла не обязательно должны следовать друг за другом. Поэтому операционная система хранит список номеров всех кластеров, распределенных файлу, в специальной таблице. Эта таблица называется таблицей распределения файлов (FAT - File Allocation Table).

В таблице распределения файлов для каждого кластера есть один элемент. Его значение характеризует состояние кластера. Например, свободный кластер отмечается нулевым значением, а кластер, непригодный для использования, отмечается числом FF7h (FFF7h). Если кластер распределен файлу, то соответствующий элемент FAT содержит номер следующего кластера файла.
Последний кластер файла отмечается числом в диапазоне от FF8h до FFFh (от FFF8h до FFFFh).

Сама таблица FAT находится практически сразу после загрузочной записи логического диска. Точное ее расположение описано в специальной структуре данных, записанной в загрузочном секторе. Однако таблица FAT не содержит ни названий файлов, ни других их атрибутов. Для этого операционная система поддерживает другую служебную структуру, которая называется корневым каталогом. Каждый логический диск имеет собственный корневой каталог.

В корневом каталоге описаны файлы и другие каталоги, которые в нем содержатся. Описание каждого файла и каталога включает его имя с расширением, дату и время создания, длину (для каталога она равна нулю), атрибуты и зарезервированное поле, которое не используется. Еще в описании файла хранится номер первого кластера, отведенного файлу или каталогу. Получив этот номер, операционная система может узнать все остальные номера кластеров файла через таблицу FAT (рис. 1.8).

Другие каталоги имеют точно такую же структуру, что и корневой каталог. В них также находятся описания файлов и других подкаталогов.

Когда пользователь запускает файл на выполнение, операционная система просматривает описания файлов в текущем каталоге текущего логического диска. Если файл с нужным именем найден, операционная система узнает из описания файла номер первого кластера файла, а затем по таблице FAT определяет остальные номера кластеров. После этого данные из кластеров файла считываются в оперативную память. Здесь они объединяются в один непрерывный участок, даже если кластеры файла были разбросаны по всему логическому диску.

Затем операционная система выполняет подготовительную работу, зависящую от типа файла (COM- или EXE-файл) и передает ему управление. На этом загрузка программы завершается и программа начинает работать.

Заражение вирусом DIR происходит следующим образом. Вирус DIR копирует свой код в один из кластеров заражаемой дискеты или логического диска. Этот кластер помечается в таблице FAT как конец файла.


Затем вирус меняет описания файлов COM и EXE в структурах каталогов. Вирус записывает вместо номера первого кластера файла номер кластера, содержащего его код (рис. 1.9). Настоящий номер первого кластера зараженного файла шифруется и записывается в неиспользуемую область описания файла.



Рис. 1.8. Структура каталогов

Когда пользователь запускает один из зараженных файлов, с диска считывается только один кластер, содержащий код вируса. Таким образом, вирус сразу получает управление. Он устанавливает себя резидентным в оперативной памяти и перехватывает все обращения к диску. Затем вирус определяет настоящее расположение файла программы и загружает ее.



Рис. 1.9. Структура каталогов после заражения вирусом DIR

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

Впоследствии появилось несколько разновидностей вируса DIR, отличающихся друг от друга в основном только скрытыми функциями, выполняемыми вирусами. Для лечения вируса DIR и его разновидностей вы можете использовать антивирусную программу Aidstest, однако можно обойтись и без антивируса, достаточно скопировать выполнимые файлы, заменив их расширение, например, на CO_ и EX_ соотвественно.


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