Компьютерные
вирусы
До недавнего времени проблема компьютерных вирусов
практически не стояла в странах СНГ. Когда газеты периодически сообщали о
вирусных актах в других странах, такие истории, как правило, появлялись на
последних страницах рядом с курьезами. Даже сообщения о вирусных атаках и
ущербе, причиненном западным компьютерным центрам, который оценивается в
миллионы долларов, не вызывали большой тревоги среди компьютерных специалистов
в России, ибо описываемое происходило там, на Западе. Однако первые нападения
вирусов на отечественные ПК заставили изменить точку зрения на эти проблемы.
Не успев появиться в нашей стране, компьютерные вирусы
с фантастической скоростью распространились повсюду. Сейчас, пожалуй, немного
осталось организаций, в которых пользователи не успели еще на практике
познакомиться с этим явлением. Возможно, некоторые из таких пользователей
работают на зараженных компьютерах, не подозревая об опасности. Не секрет, что
игровые программы – основные разносчики инфекции. По крайней мере, у нас в
стране, где еще не вошли в моду электронные бюллетени (да и вообще обмен
компьютерной информацией по каналам связи). Часто основной программой, с
которой пользователь «работает» на ПК, бывает какая-нибудь игрушка. Однако в
широком распространении вирусов повинны не только «геймстеры», а сама традиция обмена дискетами, содержащими
программное обеспечение. Мягко говоря, еще не у всех наших пользователей
выработалась привычка покупать только фирменные дистрибутивные диски.
В обширной информации по компьютерным вирусам, как
правило, всегда приводятся следующие три скептических утверждения: панацеи от
вирусов не существует, не обольщайтесь, что можете на сто процентов себя
защитить; следящие программы не могут быть абсолютно надежными, обязательно
найдется вирус, который обойдет поставленные капканы, поскольку фантазия и
изобретательность создателей вирусов неисчерпаемы; антивирусные программы
спасают только от тех вирусов, которые им известны.
Из истории
компьютерных вирусов
История возникновения компьютерных вирусов уходит в
прошлое. Еще в 1959 году американский журнал «Scientific American» опубликовал статью
Л.С. Пенроуза (L.S. Penrose) о самовоспроизводящихся механизмах. На ее основе F.G. Stahl создал
модель миниатюрной линейной Вселенной, в которой существа жили, двигались и
умирали от голода. Модель была
запрограммирована на машинном языке ЭВМ IBM 650. Пищей для этих существ служили ненулевые слова.
После съедания определенного количества слов существо порождало новое. При
размножении были предусмотрены возможности мутаций, в ходе которых существа
могли приобретать способность пожирать себе подобных и терять возможность к
размножению. Однако ограниченная память и быстродействие IBM 650 послужили препятствием для получения интересных результатов:
в ходе подобного прогона один бесплодный мутант убил и съел единственного,
способного к размножению.
В 1972 году М. Макилрой из AT&T Bell Laboratories изобрел игру
«Дарвин». По правилам этой игры, всякий игрок предоставлял известное количество
программ, написанных на ассемблере, которые загружались в память компьютера
вместе с программами других игроков. Эти программы были названы «организмами».
Организмы, созданные одним игроком (т.е. принадлежащие одному «виду»), должны
были «убивать» представителе другого вида и занимать «жизненное пространство».
Победителем считался тот игрок, чьи организмы захватывали всю память или
набирали наибольшее количество очков. Разумеется, такие программы нельзя
назвать вирусами, однако и здесь просматривается определенная аналогия с
простейшими биологическими существами. Кроме того, здесь демонстрируется идея
борьбы программ, которая в известной мере предвосхищает ситуацию «вирус -
средства защиты», имеющую место сегодня.
Другим ранним примером вирусоподобных программ была
игра «Animal». Суть этой игры состояла в том, что человек
задумывал некоторое животное, и программа, задавая вопросы, пыталась
определить, какое животное загадал человек. Программист, написавший игру,
предусмотрел в ней возможность саморазмножения. Когда программа угадывала
неправильно, она просила пользователя предложить вопрос, который позволил бы
улучшить ее способности к отгадыванию данного животного. Запомнив этот вопрос,
программа не только модифицировала себя, но и пыталась переписать свою обновленную
(улучшенную) копию в другой каталог. Если там уже была программа «Animal», то она стиралась. В противном случае создавалась
новая копия. Оказалось, что через некоторое время все каталоги файловой системы
содержали копию «Animal». Более того, если
пользователь переходил с машины на машину, то он переносил и свой каталог, и в
результате во всех каталогах этой ЭВМ также появлялась «Animal».
При этом совокупность копий «Animal»занимала значительное файловое пространство, что в те
времена воспринималось как проблема. Для решения проблемы была создана новая,
более «инфицирующая» копия «Animal», которая
копировала себя не один раз, а дважды. По истечении заданного срока она
предлагала пользователю сыграть последний раз, затем сама стирала себя с диска.
Общие
принципы функционирования компьютерных вирусов
Формально компьютерным вирусом называется программа,
которая может «заражать» другие программы путем включения в последние своей,
возможно, модифицированной копии. Упрощенно процесс заражения вирусом программных
файлов можно представить следующим образом.
В зараженной программе код ее изменен таким образом, чтобы вирус получил
управление первым, до начала работы программы – вирусоносителя. При передаче
управления вирусу, он каким-то способом находит новую программу и выполняет
вставку собственной копии в начало или добавление ее в конец этой, обычно еще
не зараженной, программы. Если вирус дописывается в конец программы, то он
корректирует код программы, чтобы получить управление первым. После этого управление
передается программе – вирусоносителю, и та нормально выполняет свои функции.
Возможны случаи, когда вирус включает себя куда-то в середину программы.
Программа, зараженная вирусом, может рассматриваться
как разновидность так называемых «троянских программ». Троянскими программами
обычно называют программы, содержащие скрытый модуль, осуществляющий,
несанкционированные действия. В данном случае скрытым модулем является тело
вируса, а одним из несанкционированных действий – заражение других программ.
Помимо заражения, вирус, подобно любой другой троянской программе, может
выполнять и другие несанкционированные действия: от вполне безобидных до крайне
разрушительных. Последние, в частности, могут включать уничтожение данных на
зараженном диске. Выполняемые вирусом несанкционированные действия могут быть
обусловлены наступлением определенной даты (такие троянские программы в
какой-то степени аналогичны минам с часовым механизмом), определенного
количества размножений или сочетанием определенных условий, например, записи
зараженной программы на винчестер (последние различного рода бесконтактным
минам). При этом комбинация этих условий может быть достаточно сложной, чтобы
затруднить ее определение (как, например, в вирусе «итальянский попрыгунчик»).
Операционная система MS-DOS,
отличающаяся практически полным отсутствием защиты от несанкционированных
действий, облегчает разработку компьютерных вирусов. Однако важно понимать, что
компьютерные вирусы не являются программами, использующими ошибки или недостатки
конкретной операционной системы. Для обеспечения своего функционирования вирусу
достаточно лишь несколько вполне обычных операций, используемых большинством
«нормальных» программ. Поэтому принципиально не может существовать
универсального метода, защищающего операционную систему от распространения
любого вируса. Тем не мение, можно существенно затруднить задачу создания
вируса, применяя специальные методы, как в самой операционной системе, так и
используя дополнительные резидентные средства защиты.
Многие из пользователей имеют ограниченный опыт работы
с MS-DOS. В то же
время для понимания функционирования файловых вирусов и средств защиты от них
важно понимать структуру файловой системы.
Жизненный
цикл компьютерных вирусов
Подобно биологическим вирусам, для большинства
компьютерных вирусов характерен определенный инкубационный период, в течение
которого выполняемые вирусом несанкционированные действия ограничиваются
заражением других программ. Следует различать два основных действия (фазы),
выполняемые компьютерные вирусом: размножение и проявление.
Фаза размножения обычно является первой и обязательной
фазой, на которой вирус заражает все новые и новые программы. При этом никаких
других действий вирус обычно не выполняет.
Фаза проявления обязательно связана с визуальным или
звуковым эффектами. Последние, в основном, характерны для так называемых
вирусов - иллюзионистов, которые обычно
внезапно демонстрируют свое присутствие с помощью изощренного визуального или
звукового эффекта. Фаза проявления может также включать или исключительно
заключаться в нанесение вирусом повреждений отдельным файлам или файловой
системе компьютера. Повреждения могут быть массированными, когда, например,
стирается FAT и другие системные блоки, или,
наоборот, распределенными, когда довольно часто выполняются небольшие, трудно
обнаруживаемые повреждения.
Наряду с указанными действиями, вирус может обладать
определенной латентной фазой, в течение которой никаких действий по своему
размножению не предпринимается. Латентная фаза может быть обусловлена
определенным временем периодом (например, определенным месяцем или годом),
конфигурацией (например, вирус может активизироваться только при попадании на
винчестер) или аппаратным особенностями (например, только на IBM PC).
Инфицируя программу, вирусы могут распространяться от
одной программы к другой (транзитивно), что делает их наиболее опасными по
сравнению с другими методами компьютерного вандализма. Зараженная программа или
ее копии могут передаваться через дискеты или по сети на другие ЭВМ. Учитывая
широко распространенную практику обмена и передачи программ на дискетах среди
пользователей персональных ЭВМ, количество зараженных программ может быть
значительным, приводя к своего рода «эпидемиям». Этому также способствует
распространенная в нашей стране практика использования одной ПЭВМ несколькими
пользователями. В этом случае один неквалифицированный или злонамерный
пользователь может нанести значительный ущерб другим пользователям. Особую
опасность, с точки зрения распространения компьютерных вирусов, представляют
любители компьютерных игр, обычно слабо знающие операционную систему и не
вполне понимающие смысл выполняемых ими действий. Такие пользователи подвергают
значительному риску своих коллег, работающих с ними на одной ПЭВМ. Компьютерные
вирусы «бессмертны» и могут неограниченное время хранится в различного рода
архивах. Даже «полностью уничтоженные» вирусы могут сохраниться в каком-нибудь
архивном файле и случайно или умышленно «реанимироваться» через много месяцев
или даже лет после первоначального обнаружения или уничтожения. Из этого
следует важный вывод, что после первого обнаружения и уничтожения вируса
следует ожидать повторных заражений. Таким образом, после появления
определенного вируса борьба с ним становиться постоянной проблемой.
Тот факт, что после первого заражения обычно следует
повторные, требует принятия специальных мер по предотвращению повторных
заражений. Здесь можно двигаться в двух направлениях: во-первых, постараться
найти первоисточник заражения и, во-вторых, разработать или установить готовые
средства, затрудняющие или делающие невозможным размножение вируса. При поиске
первоисточника заражения следует учитывать, что длина пути от первоначально
зараженной программы до программы, в которой этот вирус был впервые обнаружен,
может быть довольно большой. Практика показывает, что обычно в качестве
обычного носителя вируса выступает популярная игровая программа или новая
версия популярного программного продукта.
Среда обитания вирусов ограничена выполняемыми
программами, т.е. файлами типа EXE и COM, а также BOOT-секторами
системных дисков. Не следует бояться, что вирус может быть перенесен через файл
данных. В принципе возможно создание вируса, встраивающегося в загружаемые фазы
оверлейной программы, однако такие вирусы до настоящего времени распространения
не получили. Кроме того, возможен перенос вируса через BAT – файлы (например, путем вставки вызова вируса в
качестве дополнительного шага BAT – файла), но эта возможность представляется еще более
отдаленной.
В любом случае для получения управления вирус должен
модифицировать один из исполняемых файлов, поэтому контроль за их целостностью
является очень важным методом их обнаружения.
Что касается места, где вирус может спрятать свое
тело, то здесь многое зависит от изобретательности автора вируса. Для
рассматриваемых ниже вирусов характерны четыре таких места:
- Область стека некоторой системной программы;
- Начало, конец или середина исполняемого файла;
- BOOT – сектор;
- один или группа сбойных кластеров.
Некоторые типы «троянских программ», встраиваемые в
библиотеки компиляторов, близки к вирусам, однако в данном случае они могут
распространяться только на компилируемые (с помощью данного компилятора)
программы. Способности к саморазмножению у данного типа программ нет, а именно
она характерна для вирусов.
Типы
поражений, наносимых вирусами
Вызываемые вирусами последствия могут быть
классифицированы по следующим основным категориям:
1)
Отказ в
выполнении той или иной функции (например, блокирование вирусом C170R загрузки
программы с защищенной от записи дискеты);
2)
Выполнение
функции, не предусмотренной программой (например, форматирование диска,
удаление файла и т.д.);
3)
Выдача ложных,
раздражающих или отвлекающих сообщений (например, «падение букв» в вирусе C1701R, замедление
выполнения программ в вирусе CE1813R, проигрывание мелодии в CE1810R, движущийся на
экране ромбик в B1024R и т.д.).
Наиболее уязвимой частью файловой системы DOS является FAT (таблица размещения файлов).
Если FAT разрушен, то DOS не в состоянии определить местонахождение того или
иного файла, хотя сами файлы не повреждены. Вирус может также выполнять
форматизацию некоторых участков диска, содержащих системные данные.
Поэтому
необходимо достаточно часто дублировать управляющие данные файловой системы на
другой, заранее известный участок диска или дискету. Для этой цели, в
частности, можно использовать утилиту DBACK, а
также Mirror из пакета PC SHELL.
Наиболее опасны как раз не катастрофические
повреждения винчестера или дискет (при адекватном архивировании это означает
максимум потерю одного дня работы), а мелкие, незаметные изменения файлов
данных. В частности, известен вирус, который ищет файлы типа DBF, и, найдя внутри файла числовой поле, меняет местами
две рядом стоящие цифры. Хотя большинство повреждений, наносимых вирусом,
относятся к данным, возможны также повреждения оборудования. Например, можно
повредить участок люминофора («выжечь пятно») на монохроматическом мониторе,
используя особенности схемы управления.
Далеко не все повреждения файловой
системы, отказы винчестера или оборудования вызываются вирусами. Например,
некоторые типы винчестеров имеют довольно низкую надежность и «сыпятся» без
всякого вмешательства вирусов. Автору приходилось работать на изношенном
дисководе ПЭВМ ЕС 1840, который при записи иногда стирал FAT. Причем восстановить поврежденный
FAT при помощи известной утилиты Norton Doctor не
удавалось.
В то же время имеется тенденция
атрибутировать любое повреждение данных присутствием вируса. Это, по сути, один
из вариантов мании («вирусомания»), которая, подобно печальной известной
шпиономании («шпионы под каждой кроватью»), имеет социально-психологическую
этиологию.
Классификация компьютерных вирусов
Классификация вирусов должна позволять однозначно охарактеризовать не
только известные вирусы, но новые их разновидности по ограниченному числу
сравнительно простых и непротиворечивых признаков.
Классификация
не является схоластическим упражнением, поскольку при ее отсутствие существенно
затрудняется характеристика различных средств защиты, что способствует
дублированию разработок. В частности, приходилось неоднократно экспериментально
устанавливать назначение тех или иных средств защиты, относительно которых
разработчики не сообщали тип вируса, против которого применим данный
программный продукт, или сообщали свою собственную «кличку». Например, вирус
С648 авторами фага FAG_OM назван Omega, что
конечно, свидетельствует об изобретательности авторов, но ничего не говорит
потенциальным пользователям.
Кроме
того, стандартная классификация существенно облегчает систематизацию,
распространение и накопление знаний, а также обучение методам борьбы с тем или
иным вирусом. При отсутствии стандартной классификации имеется тенденция
аппроксимировать общее количество вирусов имеющимися количеством средств защиты
и, прежде всего программ – фагов. Такая аппроксимация приводит к существенной
переоценке общего количества имеющихся компьютерных вирусов, однако человек
быстро «рационализирует» этот факт путем разбиения одного реального вируса на
несколько «виртуальных», приписывая каждому свой набор признаков. Так,
пользователям приходилось сталкиваться с «самодельной» классификацией, в
которой вирусы С648 и СЕ1813R входили в двух
«ипостасях» каждый, причем второй ипостаси вируса С648 приписывались черты
вируса СE1813R (замедление
работы компьютера).
В то же
время, при наличии стандартной классификации набор признаков каждого типа
вируса определяется однозначно, что обеспечивает быструю идентификацию вируса,
а также возможность выделения новых видов и разновидностей.
Здесь
предлагается классификация, в которой имя вируса состоит из буквенного
префикса, цифрового корня и факультативного буквенного суффикса.
Буквенный
префикс характеризует среду размножения вируса. В зависимости от среды
размножения можно выделить четыре основных типа вирусов: располагающиеся в BOOT секторе и в сбойных секторах – бутовые вирусы (тип B), в COM и EXE – файлах –
файловые вирусы (типы C и E), а также
передающиеся по сети – сетевые вирусы (тип N). В некоторых случаях возможно сочетание префиксов,
например, C и E (тип CE).
Цифровой
корень характеризует длину вируса. Поскольку точное определение этой величины
затруднительно, используется ее приближенное значение, получаемое по следующим
правилам.
1.
Для вирусов типа C и CE он
принимается равным приращению длины файла COMMAND.COM при
заражении. Если длинный вирус не заражает командный процессор, то в качестве
аппроксимации длины используется минимальное приращение длин COM – файлов при заражении (для некоторых файловых
вирусов приращения не является стабильным и зависит от длины заражаемого файла
(например, при дописывании своего тела в конец заражаемого файла некоторые
вирусы выравнивают начало своего тела на начало параграфа, т.е. не смещение,
кратное 16). К сожалению, в MS-DOS 3.3 имеются две версии командного процессора с длиной
25307 и 25308 байтов. Приводимые здесь данные относятся к COMMAND.COM длиной 25307.
2. Для типа E в
качестве аппроксимации длины принимается минимальное приращение длины при
заражении файлов типа EXE.
3. Для вирусов типа B в качестве аппроксимации длины принимается
используемых секторов, умноженное на 512 (длину сектора).
Такой подход повышает прогностическую
ценность классификации, поскольку во многих случаях позволяет сразу по длине
зараженного COMMAND.COM (а файловые
вирусы поражают этот файл в числе первых) определить тип вируса. Для бутовых
вирусов было бы более наглядным указывать наглядное количество занимаемых
кластеров, однако нет никакой гарантии, что не появятся два или более вируса с
одним и тем же количеством занимаемых кластеров.
Вирусы делятся на резидентные и
нерезидентные. Нерезидентные вирусы, например, C648, получают управление после загрузки в память
зараженной программы, а затем ищут файл – жертву, используя PATH, COMSPEC
или другую информацию, и заражают этот
файл. После этого управление возвращается зараженной программе.
В отличие от них, резидентные вирусы
после загрузки в память и передачи управления зараженной программе
перехватывают ряд прерываний и остаются в памяти резидентными. Получив
управление после того или иного прерывания, они выполняют определенные
действия. Так, при запуске программ резидентные файловые вирусы могут
перехватывать вызов программы (прерывание 21-4B) и заражают запускаемую программу. Вирус CE1800K перехватывает
также и прерывания по чтению и заражает, в частности, оба файла, копируемых
командой COPY, если они имеют расширение EXE или COM. Аналогично
бутовые вирусы (B1024R, B3072R), которые, по видимому, могут быть только
резидентными, перехватывают прерывание по чтению, и если это прерывание идет от
дискеты, то выполняют заражение поставленной дискеты.
В отличие от нерезидентных вирусов, резидентные вирусы имеют фазу
инсталляции, в ходе которой они закрепляются в оперативной памяти и в то же
время маскируются, стараясь затруднить свое обнаружение среди резидентных
программ. Эта фаза инсталляции требует наличия особой части вируса – программы
инсталлятора, которая не требуется для нерезидентных вирусов.
Поскольку резидентность является очень
важной характеристикой вируса, для классификации резидентных вирусов
используется суффикс R, например C1701R.
В то же время некоторые резидентные вирусы
во время инсталляции используют COMSPEC для
поиска COMMAND.COM. Поэтому
сама по себе резидентность не определяет конкретных способов поиска «жертвы».
По степени разрушительности можно условно
различать два типа вирусов, которых можно назвать иллюзионистами (C1701R, CE1805R, B1024R) и убийцами (C648, CE800R, B3072R, C346R). Основным приоритетом при конструировании вирусов –
иллюзионистов является демонстрация какого–нибудь экзотического звукового (СE1805R) или
визуального эффекта типа бегающего шарика (B1024R), падающих
букв (C1701R). В качестве
основного приоритета вирусов – убийц является как можно более скрытое
размножение, с тем, чтобы в фазе разрушения (детонации), уничтожающей и данный
экземпляр вируса (при разрушении FAT,
форматизации и других подобных действиях), предшествовало определенное
количество незамеченных размножений.
При этом наблюдается интересная
взаимосвязь, на которую впервые обратил внимание автора Л. И Обухов: «если
вирус демонстрирует изощренный визуальный или звуковой эффект, то, скорее всего он не выполняет массированного
разрушения данных». Действительно, это правило подтверждается на примере
приведенных вирусов. Только CE1813R несколько
выпадает из этого ряда. Однако создаваемые им визуальные эффекты (черное окно в
левом нижнем углу и замедление работы ЭВМ)
довольно примитивны.
Классификация методов защиты
Среди важнейших мер по защите от вирусов
отметим следующие:
-
Резервирование (копирование FAT, ежедневное
ведение архивов измененных файлов). Это самый важный, основной метод защиты от
вирусов. Остальные методы не могут заменить ежедневное архивирование, хотя и
повышают общий уровень защиты;
-
Профилактику (систематическая выгрузка содержимого активной части винчестера на
дискеты или магнитную ленту, раздельное хранение вновь полученных программ и
эксплуатирующихся, хранение неиспользуемых программ в архивах, использование
специальной «инкубационной» зоны для записи новых программ с дискет);
- Ревизию (анализ вновь полученных программ специальными
средствами и их запуск в контролируемой среде, систематическое использование
контрольных сумм при хранении и передаче программ, систематическая проверка BOOT –
сектора используемых дискет и содержимого системных файлов (прежде всего COMMAND.COM) и др.
Имеется целый ряд программ – ревизоров, обеспечивающих подсчет контрольных
сумм, из которых наиболее известна программа DLI (Directory Life Information), разработанная Герасимовым. Каждая новая программа, полученная без контрольных
сумм, должна тщательно проверяться компетентными специалистами, по меньшей
мере, на известные виды компьютерных вирусов и в течение определенного времени
за ней должно быть организованно наблюдение);
-
фильтрацию (использование Advancer
Disk Manager для разбиения
диска на «непотопляемые» отсеки – зоны с установленным атрибутом READONLY, использование резидентных программ типа Flu Shot Plus, Mace Vaccine
для обнаружения попыток выполнить
несанкционированные действия);
-
вакцинирование (специальная обработка файлов, дисков, каталогов, запуск
специальных резидентных программ – вакцин, имитирующих сочетание условий,
которые используются данным типом вируса для определения, заражена уже
программа, диск, ЭВМ или нет, т.е. обманывающих вирус);
-
терапию (дезактивацию конкретного вируса в зараженных программах с помощью
специальной программы – антибиотика или восстановление первоначального
состояния программ путем «пожирания» всех экземпляров вируса в каждом из
зараженных файлов или дисков с помощью программы – фага).
С наилучшими пожеланиями, Создатель сайта Catch
8.08.2003