Часто одного сектора недостаточно для тела вируса, и другую свою часть он прячет в свободных секторах, которые можно найти в начале, либо в секторах, которые затем он помечает как сбойные. Свободные секторы найти совсем несложно. Действительно, вся дорожка цилиндра 0 стороны 0 пустует, кроме первого сектора, где располагается Partition Table или ВООТ – сектор (для дискеты). На дискетах бутовые вирусы прячутся также в последних секторах корневого каталога. Наконец, вирусы могут содержать в себе свой загрузчик. Такие вирусы при записи в ВООТ – сектор затирают старый загрузчик. Некоторые вирусы (знаменитый вирус BRAIN) используют свободные кластеры на диске, которые ищут по FAT-таблице, помечая их как испорченные. Бутовых вирусов не так много, как файловых, и распространяются они не так быстро. Связано это с тем, что для заражения компьютера требуется попытка запуска с зараженной дискеты. Однако в последнее время начинают появляться вирусы, сочетающие в себе свойства как файловых, так и бутовых вирусов.
3. Другие вирусы
Существуют вирусы, встречающиеся гораздо реже, чем файловые или бутовые вирусы. К таким, в частности, относятся вирусы, которые можно назвать драйверными. Они работают на уровне загружаемых драйверов устройств, внедряясь в системную область после загрузки операционной системы либо используя для заражения файл CONFIG.SYS. Последнее довольно интересно, т. к. использование строки 'DEVICE' требует, чтобы загружаемый драйвер находился на диске в виде файла. Здесь возможны
различные уловки, например, вирус вначале активизируется через программу загрузчик, подставляет необходимую строку в CONFIG.SYS и образует соответствующий драйвер. Далее загрузка идет своим чередом, и вирус оказывается загруженным в область драйверов. После загрузки, естественно, строка в CONFIG.SYS и драйвер в конце уничтожаются. Другие вирусы внедряются непосредственно в драйвер устройства. Стандартный механизм заражения драйвера таков: вирус приписывает себя к концу драйвера и модифицирует адреса программы стратегии и программы прерываний так, чтобы при вызове драйвера обращение вначале происходило к вирусу. Определенную группу вирусов называют «червями». Эти вирусы орудуют в компьютерных сетях. Переходя от компьютера к компьютеру, они могут практически не использовать дисковое пространство и работать только на уровне оперативной памяти. Существование таких вирусов для локальных IBM-сетей пока неизвестно. До сих пор мы говорили о вирусах, «работающих» на уровне машинных команд. К таковым относятся и вирусы, написанные на языках высокого уровня (есть такие вирусы, работающие в среде MS DOS). В любом случае сам механизм встраивания в прикладную или системную программу происходит на уровне команд микропроцессора. Однако возможен совершенно иной тип вируса (автору неизвестно о существовании таких вирусов на персональных компьютерах). Такие вирусы можно назвать командными. Принципиально нет ничего, что могло бы помешать их появлению. Современные прикладные пакеты (редакторы, электронные таблицы, системы управления баз данных и т.п.) часто имеют свои языки управления заданиями. Эти языки могут быть весьма мощными и гибкими, в принципе позволяющими создавать саморазмножающиеся объекты. Похожая ситуация складывается и в среде операционных систем. В MS DOS существует возможность написания пакетных файлов – выполняемых программ, состоящих из команд операционной системы. Существенно то, что вместо команд операционной системы может стоять любая программа – обычный загрузочный модуль, выполняющийся в среде операционной системы. Таким образом, мы можем до бесконечности пополнять и совершенствовать набор стандартных команд. Не составит труда написать программу, которая бы разыскивала ВАТСН – файлы и дописывала бы к ним несколько строк.
Наконец, принципиально возможен еще один тип вирусов. Такие вирусы можно назвать транслируемыми. К тексту программы на языке высокого уровня дописывается некоторое количество строк. После трансляции вирус оказывается неотъемлемой частью программы. Процесс же дописывания строк к текстам программ будет продолжаться.
4. Вирусы в операционной системе Windows
С появлением операционной системы Windows 95 поле деятельности производителей компьютерных вирусов в значительной степени расширилось. Здесь бы я выделил три типа вирусов, которые так или иначе связаны с новой операционной системой:
1. Вирусы, написанные на Visual Basic и внедряющиеся в файлы, создаются для MSWORD и MSEXEL. Эпидемия этих вирусов прокатилась некоторое время назад, в настоящее же время они стали неотъемлемой частью нашей жизни. Принцип функционирования этих вирусов весьма прост. Многие программы создают файлы, которые могут содержать в себе макрокоманды. Причем можно сделать так, что эти макрокоманды будут выполняться каждый раз перед загрузкой этого файла (макрос AutoOpen).;
Макро – вирус вставляет свою процедуру так, что она выполняется перед загрузкой документа. Поэтому образом вирус будет каждый раз получать управление. Все остальное–дело техники.
2. Вирусы, в целом написанные для MS DOS, но использующие так или иначе наличие операционной системы Windows. Здесь речь может идти о самых разных проявлениях. Есть вирусы, поражающие ЕХЕ – файлы в формате NE. Причем DOS-часть этих файлов. Так что они активизируются только при запуске этих файлов в MS DOS. Есть вирусы, встраивающиеся в загрузочные файлы Windows и т.д.
3. Полноценные Windows-вирусы. Пока преобладает, скажем так, не резидентный подход. Заражается ЕХЕ – файл (формат NE или РЕ). При запуске такой программы вирус активизируется на время, необходимое для поиска программы-жертвы. Появились также вирусы с иным механизмом поражения. В частности, запись вируса в виде VXD-файла. Вирус также корректирует SYSTEM.INI, так чтобы данный «драйвер» загружался каждый раз при загрузке Windows.
SYSTEM.INI используется также для заражения программ, всегда загружаемых при запуске WINDOWS. Вообще понятие резидентной программы в Windows потеряло свой смысл. Любая программа может быть резидентной, т.е. находится в памяти при запуске и работе других программ. Следовательно, любой вирус, заразивший ту или иную программу и не удаляющий себя из памяти при запуске, может быть резидентным. Вопрос заключается лишь в том, может он активизироваться или нет при активизации зараженной программы.
5. Борьба с вирусами
Мы попробовали провести некоторую классификацию проявлений вирусов. По этим признакам можно судить о присутствии вирусов на диске или в памяти, не имея специальных средств:
а) Изменение длины программ. Не многим вирусам удается не менять длины программы. Некоторые вирусы пытаются так подкорректировать длину, чтобы ее изменение было незаметно. Например, не садятся на слишком короткие программы, корректируют длину так, чтобы она изменилась на 1000 байт (не так заметно) и т.д.
б) Нехватка памяти. Некоторые программы сообщают о нехватке памяти, некоторые выдают сообщения об ошибке или зависают. В любом случае это должно Вас насторожить. в) Когда вирус «садится» на программу, то происходит автоматическая корректировка времени и даты файла. Если вирус не восстанавливает старые значения, то это может служить хорошим признаком несанкционированного доступа к Вашей программе. Интересно, что установка во времени корректировки файла 62 секунды (проверьте, что установить 63 или 61 секунду невозможно, и объясните почему) является для многих вирусов признаком зараженности программы.
г) Проявления, связанные с развлекательными функциями вируса. Это могут быть необычные или шутливые сообщения, странные явления на экране (осыпание букв и т.д.), звуковые сигналы и музыка и т.д.
д) Проявления, связанные с разрушительными функциями вирусов. Это может быть неожиданно переставшая запускаться программа, испорченная база данных, не запускающаяся дискета, странные зависания системы и т.д.
е) Проявления, связанные с некорректной работой вируса или наличием ошибок в нем. Классическим примером может служить отсутствие обработки критических ошибок для MS DOS (см. Глава 9). Некоторые вирусы, заражая программу, безнадежно портят ее (иногда ошибка, а иногда и намеренные действия). Часто вирусы некорректно работают с операционной системой. Например, не работают на DOS 6.0. Портят содержимое регистров при входе в программу. Проявлений здесь огромное количество. Некорректная загрузка Windows также должна Вас насторожить.
ж) Иногда о наличии в программе вируса можно судить по присутствию в нем некоторых характерных строк, которые можно обнаружить даже при «текстовом» просмотре. Вот эти типичные строки: *.СОМ, *.ЕХЕ, РАТН=, COMMAND.
«Умные» вирусы, однако, шифруют строки, подобные этим.
з) Нерезидентные вирусы после запуска зараженной программы должны найти новую жертву, прежде чем передать управление программе. Поиск, вообще говоря, может потребовать времени. Поэтому отмечайте для себя те случаи, когда некоторые программы начнут запускаться медленнее обычного.
Появление новых операционных систем, таких, как Windows, вносит серьезные коррективы в дело обнаружения вирусов. Сразу скажу, что обнаружение вирусов способами, описанными выше, становится все менее и менее возможным. Из-за огромного количества файлов как в самой операционной системе, так и в используемых пакетах, никто уже не просматривает списки файлов. Да и сами программы запускаются или с рабочего стола, или из меню. Наличие же ошибок в операционных системах Windows 95 и Windows 98 приучает пользователей к не совсем корректной работе системы. Зависания, некорректные загрузки и неожиданные перезагрузки компьютера теперь списывают на систему, а о вирусах забывают. Все это достаточно печально и наводит на мысль о том, что компьютерным вирусам далее будет жить все вольготнее. Наше время ознаменовано также широким распространением локальных и глобальных компьютерных сетей, что еще в большей степени усложняет возможность обнаружения вируса. Сейчас наработан довольно большой арсенал программных средств защиты от вирусов. Ниже перечисляются эти средства защиты. Антивирусные ревизоры. Суть работы этих программ заключается в том, что состояние программ, системных файлов, boot-секторов и т.п. запоминается. При запуске ревизора происходит сравнение контрольных сумм. При обнаружении изменений выдается сообщение или производятся, какие-либо другие действия. Разумеется, ревизор не может точно сказать, обнаружен вирус или изменения вызваны другими причинами. Основным требованием, предъявляемым к таким программам, является умение обнаружить изменения, производимые вирусом, даже если вирус находится в памяти. Ревизия должна производиться по крайней мере каждый раз после запуска операционной системы. Существуют резидентные ревизоры, которые могут проверять контрольную сумму программы перед самым ее запуском.