Компьютерные вирусы отличаются друг от друга по тому, в какие объекты они внедряются, то есть что они заражают. Некоторые вирусы могут заражать сразу несколько видов объектов.
Большинство вирусов распространяются, заражая исполнимые файлы, т.е. файлы с расширением имени .COM и .EXE, а также различные вспомогательные файлы, загружаемые при выполнении других программ. Такие вирусы называются файловыми. Вирус в зараженных исполнимых файлах начинает свою работу при запуске той программы, в которой он находится.
Еще один распространенный вид вирусов внедряется в начальный сектор дискет или логических дисков, где находится загрузчик операционной системы, или в начальный сектор жестких дисков, где находится таблица разбиения жесткого диска и небольшая программа, осуществляющая загрузку с одного из разделов, указанных в этой таблице. Такие вирусы называются загрузочными, или бутовыми (от слова boot – загрузчик). Эти вирусы начинают свою работу при загрузке компьютера с зараженного диска. Загрузочные вирусы являются резидентными и заражают вставляемые в компьютер дискеты. Встречаются загрузочные вирусы, заражающие также и файлы – файлово-загрузочные вирусы.
Некоторые вирусы умеют заражать драйверы, то есть файлы, указываемые в предложении DEVICE или DEVICEHIGH файла CONFIG.SYS. Вирус, находящийся в драйвере, начинает свою работу при загрузке данного драйвера из файла CONFIG.SYS при начальной загрузке компьютера. Обычно заражающие драйверы вирусы заражают также исполнимые файлы или сектора дискет, поскольку иначе им не удавалось бы распространяться – ведь драйверы очень редко переписывают с одного компьютера на другой.
Очень редко встречаются вирусы, заражающие системные файлы DOS (IO.SYS или MSDOS.SYS). Эти вирусы активизируются при загрузке компьютера. Обычно такие вирусы заражают также загрузочные сектора дискет, поскольку иначе им не удавалось бы распространяться.
Очень редкой разновидностью вирусов являются вирусы, заражающие командные файлы. Обычно эти вирусы формируют с помощью команд командного файла исполнимый файл на диске, запускают этот файл, он выполняет размножение вируса, после чего данный файл стирается. Вирус в зараженных командых файлах начинает свою работу при выполнении командного файла, в котором он находится. Иногда вызов зараженного командного файла вставляется в файл AUTOEXE.BAT.
Долгое время заражение вирусами файлов документов считалось невозможным, так как документы не содержали исполнимых программ. Однако программисты фирмы Microsoft встроили а документы Word для Windows мощный язык макрокоманд WordBasic. На этом WordBasic стало возможно писать вирусы. Запуск вируса происходит при открытии на редактирование зараженных документов. При этом макрокоманды вируса записываются в глобальный шаблон NORMAL.DOT, так что при новых сеансах работы с Word для Windows вирус будет автоматически активирован.
Возможно заражение и других объектов, содержащих программы в какой-либо форме – текстов программ, электронных таблиц и т.д. Например, вирус AsmVirus.238 заражает файлы программ на языке ассемблера (.ASM-файлы), вставляя туда ассемблерные команды, которые при трансляции порождают код вируса. Однако число пользователей, программирующих на языке ассемблера, невелико, поэтому широкое распространение такого вируса невозможно.
Электронные таблицы содержат макрокоманды, в том числе и макрокоманды, автоматически выполняющиеся при открытии таблицы. Поэтому для них могут быть созданы вирусы, аналогичные вирусам для документов Word для Windows. Пока что такие вирусы были созданы для таблиц табличного процессора Excel.
Вирус является программой, поэтому объекты, не содержащие программ и не подлежащие преобразованию в программы, заражены вирусом быть не могут. Не содержащие программ объекты вирус может только испортить, но не заразить. К числу таких объектов относятся текстовые файлы (кроме командных файлов и текстов программ), документы простых редакторов документов типа ЛЕКСИКОНа или Multi-Edit, информационные файлы баз данных и т.д.
Некоторые виды вирусов требуют особого отношения, поскольку стандартные методы лечения для них могут привести к потере информации (вирусы семейства DIR) или не излечивают от вируса (для вирусов семейства ЗАРАЗА).
Вирусы семейства DIR.
В 1991 г. появились вирусы нового типа – вирусы, меняющие файловую систему на диске. Эти вирусы обычно называются DIR. Такие вирусы прячут своё тело в некоторый участок диска (обычно – в последний кластер диска) и помечают его в таблице размещения файлов (FAT) как конец файла или как дефектный участок. Для всех .COM- и .EXE-файлов указатели на первый участок файла, содержащиеся в соответствующих элементах каталога, заменяются ссылкой на участок диска, содержащий вирус, а правильный указатель в закодированном виде прячется в неиспользуемой части элемента каталога. Поэтому при запуске любой программы в память загружается вирус, после чего он остается в памяти резидентно, подключается к программам DOS для обработки файлов на диске и при всех обращениях к элементам каталога выдает правильные ссылки.
Таким образом, при работающем вирусе файловая система на диске кажется совершенно нормальной. При поверхностном просмотре зараженного диска на «чистом» компьютере также ничего странного не наблюдается. Разве лишь при попытке прочесть или скопировать с зараженной дискеты программные файлы из них будут прочтены или скопированы только 512 или 1024 байта, даже если файл гораздо длиннее. А при запуске любой исполнимой программы с зараженного таким вирусом диска этот диск начинает казаться исправным (неудивительно, ведь компьютер при этом становится зараженным).
Особая опасность вирусов семейства DIR состоит в том, что повреждения файловой структуры, сделанные этими вирусами, не следует исправлять программами типа ScanDisk или NDD – при этом диск окажется безнадежно испорченным. Для исправления надо применять только антивирусные программы.
Вирусы семейства ЗАРАЗА.
Еще один необычный тип вирусов – это вирусы, заражающие системный файл IO.SYS. Семейство этих вирусов обычно называется ЗАРАЗА, потому что первый такой вирус выводил сообщение «В BOOT СЕКТОРЕ – ЗАРАЗА!».
Данные вирусы являются файлово-загрузочными и используют рассогласование между механизмом начальной загрузки DOS и обычным механизмом работы с файлами. При начальной загрузке MS DOS проверяется, что имена двух первых элементов в корневом каталоге загрузочного диска – IO.SYS и MSDOS.SYS, но атрибуты этих элементов не проверяются. Если имена совпадают, то программа начальной загрузки считывает в память первый кластер элемента с именем IO.SYS и передает ему управление. Пользуясь этим несовершенством программы начальной загрузки, вирус ЗАРАЗА при заражении жестких дисков делает следующее:
- копирует содержимое файла IO.SYS в конец логического диска;
- сдвигает элементы корневого каталога, начиная с третьего, на один элемент к концу каталога;
- копирует первый элемент корневого каталога (соответствующий файлу IO.SYS) в освободившийся третий элемент корневого каталога и устанавливает в нем номер начального кластера, указывающий на место, куда было скопировано содержимое файла IO.SYS;
- записывает свое тело в место, где находится файл IO.SYS (как правило, в начало области данных логического диска);
- у первого элемента корневого каталога диска устанавливает признак «метка тома».
В корневом каталоге появляются два элемента с именем IO.SYS, один из которых помечен атрибутом «метка тома». Но при начальной загрузке это не вызывает сбоев – программа начальной загрузки, проверив, что первые два элемента каталога имеют имена IO.SYS и MSDOS.SYS, загрузит кластер, указанный в первом элементе оглавления (на обычном диске – это начало файла IO.SYS, а на зараженном – код вируса), и передаст ему управление. Вирус загрузит себя в оперативную память, после чего загрузит начало исходного файла IO.SYS и передаст ему управление. Далее начальная загрузка идет, как обычно.
Опасность вирусов семейства ЗАРАЗА состоит в следующем: даже если загрузить компьютер с “чистой” системной дискеты и ввести команду SYS C:, вирус не будет удален с диска. Команда SYS, как и остальные программы DOS, проигнорирует указывающий на вирус первый элемент корневого каталога, посчитав его описанием метки. Перезаписан будет лишь «файл-дублер» IO.SYS, описанный в третьем элементе корневого каталога. Причем если программа SYS запишет файл IO.SYS в новое место на диске, то система перестанет загружаться с жесткого диска, т.к. вирус в своем теле хранит адрес начального сектора исходного файла IO.SYS. Поэтому обеззараживать диски, инфицированные вирусами семейства ЗАРАЗА, командой SYS не следует, это надо делать антивирусными программами.
Чтобы предотвратить свое обнаружение, многие вирусы применяют довольно хитрые приемы маскировки.
Многие резидентные вирусы предотвращают свое обнаружение тем, что перехватывают обращения операционной системы к зараженным файлам и областям диска и выдают их в исходном (незараженном) виде. Такие вирусы называются невидимыми, или stealth вирусами. Разумеется, эффект «невидимости» наблюдается только на зараженном компьютере – на «чистом» компьютере изменения в файлах и загрузочных областях диска можно легко обнаружить. Некоторые антивирусные программы могут обнаруживать «невидимые» вирусы даже на зараженном компьютере. Для этого они выполняют чтение диска, не пользуясь услугами DOS. Примером таких программ могут послужить Adinf фирмы «Диалог-Наука», Norton AntiVirus и др.