Программы-ревизоры

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

Антивирусные программы-ревизоры позволяют обнаружить вирус. Чаще всего обнаружением вируса дело и заканчивается. Существует блок лечения для популярного антивируса-ревизора Adinf, так называемый Cure Module, но такой блок позволяет лечить лишь те файлы, которые не были заражены на момент создания базы данных программы. Однако обнаружить вирус на компьютере (или даже подозрение на него) антивирусы-ревизоры могут с большой степенью надежности. Обычно наиболее оптимальным является связка полифаг и ревизор. Ревизор служит для обнаружения факта заражения системы. Если система заражена, то в дело пускается полифаг. Если же ему не удалось уничтожить вирус, то можно обратиться к разработчику антивирусных средств — скорее всего, на компьютер попал новый, неизвестный разработчикам вирус.

Основу работы ревизоров составляет контроль за изменениями, характерными для работы вирусных программ. В них содержится информация: о контрольных суммах неизменяемых файлов, содержимом системных областей, адресах обработчиков прерываний, размере доступной оперативной памяти и т. п. Вся остальная работа ревизора состоит в сравнении текущего состояния диска с ранее сохраненными данными, поэтому крайне важно, чтобы все контрольные таблицы создавались не на зараженной машине. Только в этом случае работа ревизора будет достаточно эффективной. Итак, перейдем к стадиям работы программы-ревизора.

Контроль оперативной памяти.Эта стадия проверки включает в себя процедуры обнаружения следов активных загрузочных и stealth-вирусов в памяти компьютера. Если такие алгоритмы будут найдены, выдается соответствующее предупреждение. Обычно сначала программа ищет уже знакомые вирусы. Далее программа проверяет, изменился ли обработчик Intl3h. Если он изменился, то с вероятностью 90 % можно сказать, что компьютер инфицирован загрузочным вирусом (загрузочные вирусы вынуждены перехватывать это прерывание с тем, чтобы после своей активизации передать управление «нормальному» загрузочному сектору и система загрузилась без сбоев). Ревизор выдает предупреждение об этом и сообщает адрес в памяти, по которому находится новый обработчик Intl3h. В принципе информация о местонахождении обработчика необходима программистам и системным администраторам, а рядовому пользователю следует обратить внимание на предупреждение. Даже если ревизор устанавливается на уже зараженный вирусом компьютер и реальный адрес обработчика Int 13h маскируется вирусом, в 85 % случаев ревизору удается обнаружить истинный адрес обработчика Intl3h в BIOS и работать, используя его. Если по каким-либо причинам ревизору не удалось получить реальный адрес обработчика, то выдается предупреждение. Истинный адрес обработчика прерывания достигается путем пошагового просмотра тела вируса (по алгоритму своей работы загрузочный вирус вынужден, в конце концов, передавать управление оригинальному обработчику).

Некоторые вирусы блокируют трассировку прерываний: при попытке трассировать их коды они приводят систему к «зависанию», перезагружают компьютер и т. д. Поэтому, если при трассировке прерываний компьютер начинает вести себя «странно», то следует быть очень осторожным — не исключено, что оперативная память поражена вирусом.

Важным параметром является и размер свободной оперативной памяти. Обычно ревизор запускается самым первым, до загрузки каких-либо программ. Если же размер оперативной памяти уменьшился — это верный признак присутствия в ОЗУ еще какой-то программы. Скорее всего, программа эта — вирус.

Контроль системных областей.Контроль системных областей предназначен для обнаружения вирусов, которые используют для своей активации механизм загрузки. Первой с диска загружается загрузочная запись (boot record), которая содержит в себе мини-программу, управляющую дальнейшей загрузкой. Для жесткого диска первой производится загрузка главной загрузочной записи (Master-Boot Record или MBR).

Необходимо дать некоторые пояснения, связанные с обнаружением загрузочных вирусов. В случае если система поражена загрузочным вирусом, то именно ему передается управление при попытке загрузиться с пораженного диска. В этом опасность вируса — если поражен жесткий диск, то управление вирусу будет передаваться при каждом включении компьютера. Загрузочные вирусы в чистом виде передаются исключительно через дискеты, причем заражение осуществляется при попытке загрузиться с пораженной дискеты. Со временем использование дискет вообще и загрузочных дискет, в частности, сократилось до минимума. Однако способ захвата управления оказался столь удобен, что в настоящее время очень распространены вирусы, которые могут поражать как файлы, так и загрузочные сектора. Попав на «чистый» компьютер, такие вирусы первым делом поражают главную загрузочную запись. Однако методы обнаружения именно загрузочных вирусов в настоящее время крайне эффективны и приближаются к 100 % надежности.

Чтобы понять, как происходит обнаружение вируса, рассмотрим обнаружение такого вируса «вручную». Произведем загрузку с чистой дискеты (при этом прерывание 13h гарантировано не будет перехвачено загрузочным вирусом) и рассмотрим сектор 0/0/1 винчестера (это физический адрес сектора главной загрузочной записи). Если винчестер разделен (при помощи fdisk) на логические диски, то код занимает приблизительно половину сектора и начинается с байтов FAh33hCOh (вместо 33h иногда может быть 2Bh). Заканчиваться код должен текстовыми строками типа «Missing operating system». В конце сектора размещаются внешне разрозненные байты таблицы разделов. Нужно обратить внимание на размещение активного раздела в таблице разделов. Если операционная система расположена на диске С, а активны 2-й, 3-й или 4-й разделы, то вирус мог изменить точку старта, сам разместившись в начале другого логического диска (заодно нужно посмотреть и там). Но также это может говорить о наличии на машине нескольких операционных систем и какого-либо boot-менеджера, обеспечивающего выборочную загрузку. Проверяем всю нулевую дорожку. Если она чистая, то есть секторы содержат только байт-заполнитель, все в порядке. Наличие мусора, копий сектора 0/0/1 и прочего может говорить о присутствии загрузочного вируса. Впрочем, антивирусы при лечении загрузочных вирусов лишь «обезглавливают» противника (восстанавливают исходное значение сектора 0/0/1). Проверяем boot-сектор MS-DOS, он обычно расположен в секторе 0/1/1. Его внешний вид для сравнения можно найти на любой «чистой» машине. Примерно таким же способом действуют и программы-ревизоры. Их особенность в том, что они не могут судить об изначальной «чистоте» опе­ративной памяти, поэтому чтение Master Boot Record происходит тремя различными способами:

● (bios) — прямым обращением в BIOS;

● (il3h) — чтением через BIOS-прерывание Intl3h;

● (i25h) — чтением средствами операционной системы (прерывание Int25h).

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

Аналогичным образом проводится проверка и простого (не главного) загрузочного сектора.

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

Контроль неизменяемых файлов.Последняя стадия проверки, направленная на обнаружение деятельности файловых вирусов, — контроль изменения файлов. Для всех файлов, которые активно используются и в то же время не должны изменяться (обычно это программы типа win.com и т. п.), создаются контрольные таблицы. В них содержатся значения контрольных сумм и размеров файлов. Затем, в ходе дальнейшего использования ревизора, информация с Дисков сравнивается с эталонной, хранящейся в таблицах. Если информация не совпадает, то весьма вероятно нахождение в системе файлового вируса. Самый явный признак — изменение размера или содержимого файла без изменения даты создания файла.

Очень важно определить, какие именно файлы являются неизменяемыми. При настройке программы-ревизора данные об неизменяемых файлах заносятся в таблицы, содержащие список имен файлов и каталогов, подлежащих контролю ревизором. Каждая строка таблицы содержит одно имя или маску. В принципе, рекомендуется внести в разряд «неизменяемых» те исполняемые файлы, путь к которым указан в переменной PATH. Они чаще всего становятся жертвой файловых вирусов.

После того как все файлы проверены, ревизоры часто сохраняют копии дополнительных областей памяти, которые могут быть испорчены вирусами. Это FLASH- и CMOS-память. Эти области памяти также изменяются достаточно редко и поэтому их изменения могут быть подозрительны.

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

Программы-фильтры, или «сторожа», представляют собой небольшие резидентные программы, предназначенные для обнаружения подозрительных действий при работе компьютера, характерных для вирусов. Такими действиями могут являться:

● попытки коррекции файлов с расширениями СОМ, ЕХЕ;

● изменение атрибутов файла;

● прямая запись на диск по абсолютному адресу;

● запись в загрузочные сектора диска;

● загрузка резидентной программы.

При попытке какой-либо программы произвести указанные действия «сторож» посылает пользователю сообщение и предлагает запретить или разрешить соответствующее действие. Программы-фильтры весьма полезны, так как способны обнаружить вирус на самой ранней стадии его существования до размножения. Однако они не «лечат» файлы и диски. Для уничтожения вирусов требуется применить другие программы, например фаги. К недостаткам программ-сторожей можно отнести их «назойливость» (например, они постоянно выдают предупреждение о любой попытке копирования исполняемого файла), а также возможные конфликты с другим программным обеспечением. Примером программы-фильтра является программа Vsafe, входящая в состав пакета утилит MS DOS.

Вакцины, или иммунизаторы, — это резидентные программы, предотвращающие заражение файлов. Вакцины применяют, если отсутствуют программы-доктора, «лечащие» от вируса. Вакцинация возможна только от известных вирусов. Вакцина модифицирует программу, или диск таким образом, чтобы это не отражалось на их работе, а вирус будет воспринимать их зараженными и поэтому не внедрится. В настоящее время программы-вакцины имеют ограниченное применение.