Виктор Фигурнов
2-е Изд., перераб. и доп. - М.:Финансы и Статистика, 1991.-288 с.:ил.
ISBN 5-279-00900-8
1991
Компьютерный вирус - это специально написанная небольшая по размерам программа, которая может "приписывать" себя к другим программам (т.е. "заражать" их), а также выполнять различные нежелательные действия на компьютере. Программа, внутри которой находится вирус, называется "зараженной". Когда такая программа начинает работу, то сначала управление получает вирус. Вирус находит и "заражает" другие программы, а также выполняет какие-нибудь вредные действия (например, портит файлы или таблицу размещения файлов на диске, "засоряет" оперативную память и т.д.). Для маскировки вируса действия по заражению других программ и нанесению вреда могут выполняться не всегда, а, скажем, при выполнении определенных условий. После того, как вирус выполнит нужные ему действия, он передает управление той программе, в которой он находится, и она работает так же, как обычно. Тем самым внешне работа зараженной программы выглядит так же, как и незараженной.
Многие разновидности вирусов устроены так, что при запуске зараженной программы вирус остается постоянно (точнее, до перезагрузки DOS) в памяти компьютера и время от времени заражает программы и выполняет вредные действия на компьютере.
Все действия вируса могут выполняться достаточно быстро и без выдачи каких-либо сообщений, поэтому пользователю очень трудно заметить, что в компьютере происходит что-то необычное.
Пока на компьютере заражено относительно мало программ, наличие вируса может быть практически не заметно. Однако по прошествии некоторого времени на компьютере начинает твориться что-то странное, например:
К этому моменту, как правило, уже достаточно много (или даже большинство) тех программ, которыми Вы пользуетесь, являются зараженными вирусом, а некоторые файлы и диски - испорченными. Более того, зараженные программы с Вашего компьютера могли быть уже перенесены с помощью дискет или по локальной сети на компьютеры Ваших коллег и друзей.
Некоторые разновидности вирусов ведут себя еще более коварно. Они вначале незаметно заражают большое число программ или дисков, а потом причиняют очень серьезные повреждения, например форматируют весь жесткий диск на компьютере.
Таким образом, если не предпринимать мер по защите от вируса, то последствия заражения компьютера могут быть очень серьезными. Например, в начале 1989 г. вирусом, написанным американским студентом Моррисом, были заражены и выведены из строя тысячи компьютеров, в том числе принадлежащих министерству обороны США. Автор вируса был приговорен судом к трем месяцам тюрьмы и штрафу в 270 тыс. дол. Наказание могло быть и более строгим, но суд учел, что вирус не портил данные, а только размножался.
Для того чтобы программа-вирус была незаметной, она должна быть небольшой. Поэтому, как правило, вирусы пишутся на языке ассемблера достаточно высококвалифицированными программистами. Некоторые авторы таких программ создали их из озорства, не понимая всех последствий распространения вируса, некоторые - из стремления "насолить" кому-либо (например уволившей их фирме) или из ненависти ко всему роду человеческому. В любом случае созданная программа-вирус может (потенциально) распространиться на всех компьютерах, совместимых с тем, для которого она была написана, и причинить очень большие разрушения.
Компьютерный вирус может испортить, т.е. изменить ненадлежащим образом, любой файл на имеющихся в компьютере дисках. Но некоторые виды файлов вирус может "заразить". Это означает, что вирус может "внедриться" в эти файлы, т.е. изменить их так, что они будут содержать вирус, который при некоторых обстоятельствах может начать свою работу.
Следует заметить, что тексты программ и документов, информационные файлы баз данных, таблицы табличных процессоров и другие аналогичные файлы не могут быть заражены вирусом, он может их только испортить.
Виды файлов, которые могут следующие:
Как правило, каждая конкретная разновидность вируса может заражать только один или два типа файлов. Чаще всего встречаются вирусы, заражающие .СОМ-файлы, на втором месте по распространенности - вирусы, заражающие .ЕХЕ-файлы, и вирусы, заражающие и .СОМ-файлы, и .ЕХЕ-файлы. Иногда компьютеры заражаются вирусами, распространяющимися через загрузочные сектора дискет.
Для защиты от вирусов можно использовать:
Общие средства защиты информации полезны не только для защиты от вируса. Имеются две основные разновидности этих средств:
Несмотря на то, что общие средства защиты информации очень важны для защиты от вирусов, все же их одних недостаточно. Необходимо и применение специализированных программ для защиты от вирусов. Эти программы можно разделить на несколько видов: детекторы, вакцины (иммунизаторы), доктора (фаги), ревизоры (программы контроля изменений в файлах и системных областях дисков), доктора-ревизоры и фильтры (резидентные программы для защиты от вирусов). Сейчас мы приведем только краткие определения этих понятий, а затем рассмотрим их более подробно.
В большинстве случаев для обнаружения вируса, заразившего Ваш компьютер, можно найти уже разработанные программы-детекторы. Эти программы проверяют, имеется ли в файлах на указанном пользователем диске специфическая для данного вируса комбинация байтов. При ее обнаружении в каком-либо файле на экран выводится соответствующее сообщение. Многие детекторы имеют режим уничтожения зараженных файлов. Зная о том, какие виды файлов заражает данный вирус, можно ограничить проверку только файлами этих типов.
Следует подчеркнуть, что действия, которые надо предпринять для обнаружения вируса, индивидуальны для каждой версии вируса. Некоторые программы-детекторы позволяют обнаруживать только одну версию вируса, другие - несколько версий. Программа SCAN фирмы McAfee Associates обнаруживает около 70 вирусов, AIDSTEST М.Лозинского - около 50. Некоторые программы-детекторы могут настраиваться на новые типы вирусов, для этого им необходимо указать комбинации байтов, присущие этим вирусам. Тем не менее, невозможно разработать такую программу, которая могла бы обнаруживать любой заранее неизвестный вирус.
Главный недостаток программ-детекторов состоит в том, что они могут обнаруживать только несколько заранее известных версий вирусов. Поэтому из того, что программа не опознается всеми детекторами как зараженная, не следует, что она здорова - в ней может сидеть какой-нибудь новый вирус или слегка модифицированная версия старого вируса. Иначе говоря, возможно заражение Вашего компьютера и такой разновидностью вируса, которая не обнаруживается доступными программами-детекторами. К сожалению, создать новый вирус или слегка изменить старый вирус совсем несложно, поэтому в мире постоянно появляются все новые и новые вирусы.
Некоторые программы кроме функции "детектора", имеют также и функцию "доктора", т.е. они пытаются возвратить зараженные файлы и области диска в их исходное состояние. Те файлы, которые не удалось восстановить, как правило, делаются неработоспособными или удаляются.
Основной недостаток докторов - их узкая специализация. Доктор, ориентированный на одни типы вирусов, не будет в состоянии "вылечить" файлы, зараженные другим вирусом. Кроме того, "доктора" не всегда лечат файлы правильно.
Программы-вакцины, или иммунизаторы модифицируют программы и диски таким образом, что это не отражается на работе программ, но тот вирус, от которого производится вакцинация, считает эти программы или диски уже зараженными. Например, пусть некоторый вирус для выяснения того, заражена программа или нет, проверяет, содержат ли ее последние несколько байтов определенную комбинацию байтов. Тогда вакцина для защиты от этого вируса может приписывать в конец всех исполнимых файлов эту комбинацию байтов. Это, скорее всего, не окажет никакого воздействия на выполнение программ, а вирус тем самым будет обманут, так как будет считать программы уже зараженными. К сожалению, вероятность того, что компьютер будет в следующий раз заражен именно тем вирусом, от которого проводилась вакцинация, очень мала. Поэтому программы-вакцины в настоящее время применяются очень редко.
Программы-ревизоры (программы для ранней диагностики наличия вируса) имеют две стадии работы. Сначала они запоминают сведения о состоянии программ и системных областей дисков (загрузочного сектора и сектора с таблицей разбиения жесткого диска). Предполагается, что в этот момент программы и системные области дисков не заражены. После этого с помощью программы-ревизора можно в любой момент сравнить состояние программ и системных областей дисков с исходным. При выявлении несоответствий об этом сообщается пользователю.
Многие пользователи включают команду запуска программы-ревизора в командный файл AUTOEXEC.ВАТ, чтобы проверка состояния программ и дисков проходила при каждой загрузке операционной системы. Это позволяет обнаружить заражение компьютерным вирусом, когда он еще не успел нанести большого вреда. Более того, та же программа-ревизор сможет найти поврежденные вирусом файлы.
Для проверки того, не изменился ли файл, вычисляется его контрольная сумма - некоторая специальная функция всего содержимого файла. Если контрольная сумма файла. изменилась, то, разумеется, изменился и файл. С другой стороны, изменить файл так, чтобы его контрольная сумма осталась прежней, практически невозможно. Для вычисления контрольной суммы необходимо прочесть весь файл, а это относительно длительный процесс. Поскольку проверять компьютер на наличие вируса желательно часто (лучше - при каждой начальной загрузке операционной системы DOS), то большое время проверки крайне нежелательно. Поэтому, как правило, при обычно производимой проверке на наличие вируса вычисление контрольной суммы производится только для нескольких особо важных файлов, а у остальных файлов проверяется только их размер, указанный в каталоге. Разумеется, такую проверку наиболее целесообразно производить для файлов на жестком диске, если он имеется в компьютере.
Две программы для ранней диагностики компьютерного вируса программы CRCLIST и CRCTEST (с исходными текстами) приведены на дискете, входящей в комплект документации и программ "Работа пользователя с IВМ РС" (см. рекламу в конце книги).
Одной из причин, из-за которых стало возможным такое явление, как компьютерный вирус, является отсутствие в операционной системе MS DOS эффективных средств для защиты информации от несанкционированного доступа. Из-за отсутствия средств защиты компьютерные вирусы могут незаметно и безнаказанно изменять программы, портить таблицы размещения файлов и т.д.
В связи с этим различными фирмами и программистами разработаны программы-фильтры, или резидентные программы для защиты от вируса, которые в определенной степени восполняют указанный недостаток DOS. Эти программы располагаются резидентно в оперативной памяти компьютера и "перехватывают" те обращения к операционной системе, которые используются вирусами для размножения и нанесения вреда. Такими "подозрительными" действиями являются в частности:
При каждом запросе на "подозрительное" действие на экран компьютера выводится сообщение о том, какое действие затребовано и какая программа желает его выполнить. Можно либо разрешить выполнение этого действия, либо запретить его (рис. 26.3).
Рис. 26.3. Запрос на разрешение выполнить "подозрительное" действие
Если указанное в сообщении действие не нужно для выполнения данной программы (например, никакая программа не должна изменять командный процессор COMMAND.COM), то это действие следует запретить, так как оно скорее всего вызвано вирусом.
Описанный способ защиты от вируса не лишен недостатков. Прежде всего программа-фильтр постоянно занимает какую-то часть оперативной памяти компьютера и тем самым уменьшает размер оперативной памяти, доступной другим программам. Это может быть нежелательно или даже неприемлемо для некоторых приложений. Кроме того, пользователь должен отвечать на вопросы о том, разрешать или запрещать определенные действия на компьютере. При некоторых видах работ эти запросы могут выдаваться часто, что может надоесть пользователю.
Степень защиты, обеспечиваемую программами-фильтрами, не следует переоценивать, поскольку многие вирусы для своего размножения и нанесения вреда обращаются непосредственно к программам операционной системы, не используя стандартный способ вызова этих программ через прерывания, а резидентные программы для защиты от вируса перехватывают только эти прерывания. Кроме того, программы-фильтры не помогают от заражения винчестера вирусами, которые распространяются через загрузочный сектор, поскольку такое заражение может происходить при загрузке DOS, т.е. до запуска любых программ или установки драйверов.
Однако преимущества использования программ-фильтров весьма значительны, так как они позволяют обнаружить компьютерный вирус на самой ранней стадии, когда он, еще не успел размножиться и что-либо испортить. Тем самым можно свести убытки от вируса к минимуму.
Большинство программ-фильтров могут завершать свою работу по команде пользователя (это может быть необходимо для запуска программ, которые требуют для своей работы много оперативной памяти). Поэтому целесообразно использовать программы-фильтры для защиты от вируса либо постоянно, либо всегда, когда это возможно.
Команду запуска программы-фильтра удобно включить в файл AUTOEXEC.BAT (эта команда должна быть расположена там после всех команд для запуска других резидентных программ). При нехватке оперативной памяти для запуска какой-либо программы работу программы-фильтра можно завершить, а после окончания работы программы, требовавшей много оперативной памяти, - запустить снова. Если Вы не уверены, что в тех программах, которые выполнялись на компьютере в то время, в течение которого на нем не было защиты от вируса, не содержится компьютерного вируса, то целесообразно на всякий случай перезагрузить DOS и запустить программу-ревизор для ранней диагностики вируса.
Наиболее известны программы-фильтры FluShot Plus и Anti4Us. Рассмотрим более подробно программу Anti4us ((С) 1988, Exact Automatisering В.V.). Название этой программы объясняется, очевидно, тем, что цифра 4 читается по-немецки и в родственных языках как "фир", поэтому название программы читается как "антивирус".
Программа Anti4us перехватывает все указанные ранее "подозрительные" действия, а также действия по изменению .ВАТ-файлов. При каждом запросе на такое действие на экран компьютера выводится сообщение об имени программы и о том, какое действие эта программа желает выполнить.
При нажатии пользователем комбинации клавиш [Alt-4] на экран выводится меню, с помощью которого можно управлять тем, какие запросы на "подозрительные" действия требуют подтверждения пользователя, а какие - нет (по умолчанию все такие запросы требуют подтверждения). С помощью меню можно просматривать протокол работы и записывать его на диск. В протокол вносятся сведения о всех "подозрительных" действиях программ, о запуске программ и открытии файлов. В меню также имеется пункт для окончания работы программы Anti4us.
Очень многие пользователи считают, что для защиты от вирусов следует собрать как можно больше программ, обнаруживающих вирусы и уничтожающих их (т.е. программ-детекторов и докторов), а остальными мерами защиты можно пренебречь: когда появится вирус, тогда из этих программ наверняка можно будет выбрать подходящее "лекарство". Между тем для минимизации ущерба от вируса следует пользоваться правилом, которое давно исповедуют медики: болезнь легче предупредить, чем вылечить. В связи с этим в настоящем параграфе дается краткое сравнение различных средств защиты от вирусов по их вкладу в безопасность программ и данных. Предлагаемые сравнительные оценки являются, разумеется, личным мнением автора.
На первом месте по вкладу в безопасность компьютеров и данных от вирусов является, безусловно, копирование данных. Без периодического копирования данных не должен работать ни один серьезный пользователь. При заражении компьютера вирусом еще можно восстановить хотя бы часть данных, но что Вы будете делать, если на компьютере сломается жесткий диск? Кроме того, при любом повреждении программ и данных, копии которых имеются в архиве, чаще всего наиболее целесообразно не пытаться проводить их лечение различными "докторами", а скопировать правильные копии из архива.
На втором месте по вкладу в безопасность следует поставить разграничение доступа к данным. Если большинство используемых пакетов программ находится на логическом диске с защитой от записи, то при заражении вирусом эти пакеты не будут повреждены и Вам потребуется гораздо меньше усилий для устранения последствий заражения. Кроме того, все архивные дискеты следует снабжать наклейкой защиты от записи. Такой подход к обеспечению безопасности можно сравнить с правилом, давно применяемым в кораблестроении - даже если один отсек корабля дал течь, остальные должны держаться на плаву.
На третьем месте находятся программы-ревизоры (программы раннего обнаружения заражения вирусом), позволяющие определять целостность программ и данных. Такая проверка позволяет обнаружить наличие вируса на самом раннем этапе, когда он еще не успел много напортить. Проверку целостности целесообразно проводить каждый раз в начале работы с компьютером, т.е. включить ее в файл AUTOEXEC.ВАТ. Программа FluShot Plus позволяет проверять целостность программ также при их запуске на выполнение. Кроме того, с помощью программы-ревизора можно определить, какие файлы были заражены или испорчены вирусом. Очень удобно, когда программа-ревизор может лечить файлы при наиболее распространенных видах их заражения, а также загрузочный сектор и сектор с таблицей разбиения жесткого диска при порче вирусами, распространяющимися через загрузочный сектор.
На четвертом месте находятся программы-фильтры (резидентные программы для защиты от вируса) типа Anti4us и FluShot Plus. Эти программы позволяют обнаружить многие (хотя и не все) вирусы на самой ранней стадии, когда они не успели еще чего-либо заразить или испортить.
На пятом месте находятся программы-детекторы. Их очень часто применяют совершенно неправильно, вставляя в файл AUTOEXEC.BAT команды запуска таких программ для проверки всего жесткого диска на заражение программ вирусами. Не надо этого делать, такую проверку гораздо лучше выполнит программа-ревизор. На самом деле программы-детекторы нужны для других целей - проверки вновь полученного программного обеспечения на наличие вирусов.
На шестом месте (а вовсе не на первом) находятся программы-доктора (фаги). Их лучше применять только тогда, когда копии зараженной программы нет в архиве, и ее трудно получить иным образом. Кроме того, если уж применяется программа-фаг, то потом следует обязательно проверить восстановленный файл программой-ревизором (разумеется, если информация об этом файле была предварительно сохранена), - отнюдь не всегда программы-доктора лечат правильно.
И наконец, на последнем месте находятся программы-вакцины. В условиях, когда в мире имеется несколько сотен вирусов, вероятность защитить файл именно от того вируса, которым будет заражен компьютер, ничтожно мала. И кроме того, значительно более эффективно поместить программу на защищенную от записи дискету или на защищенный от записи логический диск.
Ни одно из описанных в настоящей главе средств не дает, к сожалению, полной защиты от вирусов. Поэтому наилучшей стратегией защиты от вирусов является многоуровневая, "эшелонированная" оборона. Опишем структуру этой обороны против вирусов.
Средствам разведки в "обороне" от вирусов соответствуют программы-детекторы, позволяющие проверять вновь полученное программное обеспечение на наличие вирусов.
На переднем краю обороны находятся программы-фильтры (резидентные программы для защиты от вируса). Эти программы могут первыми сообщить о работе вируса и предотвратить заражение программ и дисков.
Второй эшелон обороны составляют программы-ревизоры, программы-доктора и доктора-ревизоры. Ревизоры обнаруживают нападение вируса даже тогда, когда он сумел "просочиться" через передний край обороны. Программы-доктора применяются для восстановления зараженных программ, если ее копий нет в архиве, но они не всегда лечат правильно. Доктора-ревизоры обнаруживают нападение вируса и лечат зараженные программы, причем делают это правильно.
Самый глубокий эшелон обороны - это средства разграничения доступа. Они не позволяют вирусам и неверно работающим программам, даже если они проникли в компьютер, испортить важные данные.
И, наконец, в "стратегическом резерве" обороны находятся архивные копии информации и "эталонные" дискеты с программными продуктами. Они позволяют восстановить информацию при ее повреждении.
Будем надеяться, что это неформальное описание позволит лучше понять методику применения антивирусных средств.
При заражении компьютера вирусом (или подозрении о заражении) важно соблюдать четыре правила.
Если Вы используете резидентную программу-фильтр для защиты от вируса (типа программы Anti4us), то наличие вируса в какой-либо программе можно обнаружить на самом раннем этапе, когда вирус не успел еще заразить другие программы и испортить какие-либо файлы. В этом случае следует перезагрузить DOS с дискеты и удалить зараженную программу, а затем переписать эту программу с эталонной дискеты или восстановить ее из архива. Для того, чтобы выяснить, не испортил ли вирус каких-то других файлов, следует запустить программу-ревизор для проверки изменений в файлах, желательно с широким списком проверяемых файлов. Чтобы в процессе проверки не продолжать заражение компьютера, следует запускать исполнимый файл программы-ревизора, находящийся на дискете.
Далее будет рассматриваться более сложный случай, когда вирус уже успел заразить или испортить какие-то файлы на дисках компьютера. При этом надо выполнить следующие действия.
Если какая-либо из программ-детекторов сообщит о том, что она нашла вирус, то ее надо использовать в процессе устранения последствий заражения компьютера вирусом, как это описано далее. Следует заметить однако, что очень часто компьютеры заражаются сразу несколькими вирусами, поэтому, обнаружив один вирус, не следует успокаиваться - в компьютере может быть и второй, и третий вирус и т.д.
В том случае, когда Вы точно знаете, что некоторый файл заражен вирусом, то можно значительно ускорить проверку годности программ для обнаружения и уничтожения вирусов. Для этого следует скопировать зараженный файл на отдельную дискету и проверять программы для обнаружения и уничтожения вирусов на этой дискете. Найти файл, зараженный вирусом, можно с помощью программы-ревизора: те файлы, у которых увеличился размер, скорее всего, заражены вирусом. Следует заметить, что вирус, поражающий загрузочный сектор диска или таблицу разделения жесткого диска, как правило, не может заражать файлы - он может их только испортить.
Если на диске нет нужных файлов, копий которых нет в архиве, то проще всего заново отформатировать диск, а затем восстановить все файлы на этом диске с помощью архивных копий. Предположим теперь, что на диске имеются нужные файлы, копий которых нет в архиве. Для определенности мы будем считать, что этот диск находится на дисководе B:. Необходимо выполнить следующие действия.
chkdsk B: /f
Если повреждения файловой системы значительны, то целесообразно скопировать с диска все нужные файлы, копий которых нет в архиве, на дискеты и заново отформатировать диск. Если диск имеет сложную файловую структуру, то можно попробовать откорректировать ее с помощью программы NDD из комплекса Norton Utilities.
Ни в коем случае нельзя оставлять на диске .COM и .EXE-файлы, для которых программа-ревизор сообщает, что они были изменены. Те .COM и .EXE-файлы, о которых не известно, изменены они вирусом или нет, следует оставлять на диске только при самой крайней необходимости.
Такой обработке следует подвергнуть все диски, которые могли быть заражены или испорчены вирусом.
Рекомендуется после заражения компьютера вирусом некоторое время работать только при запущенной резидентной программе для защиты от вируса.
В настоящем разделе описываются меры, которые позволяют уменьшить вероятность заражения компьютера вирусом, а также свести к минимуму ущерб от заражения вирусом, если оно все-таки произойдет. Вы можете, конечно, использовать не все описываемые средства для профилактики против заражения вирусом, а только те, которые Вы считаете необходимыми.