О
термине "компьютерный
вирус"
Считается,
что термин "компьютерный
вирус" впервые
употребил сотрудник
Лехайского университета (США)
Ф. Коэн на конференции по
безопасности информации в
1984 г. Однако еще в работах
Винера и фон Неймана
исследовались различные
виды конечных автоматов, в
том числе и
самовоспроизводящихся. В
любом случае, в настоящий
момент эти вопросы
представляют чисто
исторический интерес и
имеют мало отношения к
реальности. Итак, что
сегодня, летом 1997 года,
представляют собой
компьютерные вирусы?
Прежде всего,
компьютерные вирусы это
программы. Даже это
довольно простое
утверждение способно
развеять многочисленные
легенды о необыкновенных
возможностях
компьютерных вирусов.
Компьютерный вирус может
перевернуть изображение
на мониторе, но не может
перевернуть сам монитор. К
разговорам о вирусах "25
кадра", убивающих
операторов, также следует
относится адекватно.
Правда программы эти
бывают разные и далеко не
всегда хорошие...
Компьютерные
вирусы это программы,
обладающие способностью к
самовоспроизведению.
Указанное свойство
присуще всем типам
компьютерных вирусов, но
не только им. Кроме того,
способность к
самовоспроизведению надо
понимать весьма широко.
Различные экземпляры
одного вируса не только не
обязаны полностью
совпадать, но могут даже
не иметь ни одного общего
байта (речь идет о так
называемых
сложнополиморфных
вирусах). Сами механизмы
воспроизведения тоже
могут быть весьма
разнообразны. Не так давно
к специалистам
ДиалогНауки попал
многоплатформенный вирус
(Anarchy.6093), заражающий файлы
исполняемые файлы DOS, Windows,
а также DOC-файлы –
документы Word for Windows. При
этом DOC-файлы являются
лишь средством доставки
вирусного кода.
Основные
типы компьютерных вирусов
Существует
совершенно формальная
система, позволяющая
классифицировать
компьютерные вирусы и
называть их таким образом,
чтобы избежать ситуации,
когда один и тот же вирус
имеет неузнаваемо разные
имена в классификации
разных разработчиков
антивирусных программ.
Несмотря на это, все еще
нельзя сказать о полной
унификации имен и
характеристик вирусов. В
значительной степени это
определяется тем, что к
тому моменту, когда были
сформулированы некоторые
"правила игры", уже
существовали
антивирусные средства,
работающие в собственной
системе обозначений.
Всеобщая унификация
потребовала бы приложить
значительные усилия и
модифицировать программы
и документацию. В ряде
случаев это было сделано.
Мы станем исходить из того,
что обычному пользователю
нет необходимости вникать
во все тонкости
функционирования вируса:
объекты атаки, способы
заражения, особенности
проявления и пр. Но
желательно знать, какими
бывают вирусы, понимать
общую схему их работы.
Среди всего
разнообразия вирусов
можно выделить следующие
основные группы:
Загрузочные
(бутовые) вирусы
Так называют
вирусы, заражающие
загрузочные секторы
дискет и винчестеров.
Имеются бутовые вирусы,
заражающие только
загрузочные сектора
дискет, другие заражают –
еще и загрузочные сектора
винчестеров, некоторые –
заражают главный
загрузочный сектор
винчестера. Часто вирусы
"всеядны" и заражают
и то, и другое.
Файловые
вирусы
В простейшем
случае такие вирусы
заражают исполняемые
файлы. Если с загрузочными
вирусами все более или
менее ясно, то файловые
вирусы — это гораздо
менее определенное
понятие. Достаточно, к
примеру, сказать, что
файловый вирус может
вообще не модифицировать
файл (вирусы-спутники и
вирусы семейства Dir). Кроме
того, к файловым относятся
так называемые macro-вирусы.
О них мы еще поговорим
подробнее.
Загрузочно-файловые
вирусы
Такие вирусы
обладают способностью
заражать как код
загрузочных секторов, так
и код файлов. Вирусов
этого типа не очень много,
но среди них встречаются
чрезвычайно злобные
экземпляры (например,
известный вирус OneHalf).
Основные
свойства компьютерных
вирусов
Как правило
пользователи
сталкиваются с внешними
проявлениями
компьютерных вирусов и
классифицируют их на "вирусы,
осыпающие буковки" и
"вирусы, форматирующие
винчестер".
Специалистов же
интересуют совсем другие
свойства вирусов (хотя и
внешние проявления также
изучаются). Рассмотрим
некоторые качественно
важные свойства
компьютерных вирусов.
Стелс-вирусы.
Так называют
маскирующиеся вирусы.
Видов маскировки великое
множество, но все они
основаны на перехвате
вирусами прерываний BIOS и
операционной системы.
Перехватив прерывания,
вирусы контролируют
доступ к зараженным
объектам. Например, при
просмотре зараженного
объекта, они могут "подсунуть"
вместо него здоровый.
Кроме того, вирусы
искажают информацию DOS (например,
возвращают неверное
значения длины файла,
скрывая свое присутствие
в нем). Для большинства
антивирусных программ
вирусы, использующие
стелс-технологию,
являются серьезной
проблемой. Исключением
является ревизор дисков
ADinf – уникальная
российская программа,
одним из замечательных
свойств которой является
способность обнаруживать
маскирующиеся вирусы.
Полиморфные
вирусы. Вероятно,
большинство вопросов
связано прежде всего с
самим термином "полиморфный
вирус". Нам кажется, что
суть дела становится
яснее, если рассмотреть
один из типов полиморфных
вирусов, которые
известный специалист по
компьютерным вирусам д.т.н.
Н.Н. Безруков называет
вирусами с
самомодифицирующимися
расшифровщиками. Но
начнем с самого начала.
"Я помню
чудное мгновенье...".
Узнали? Разумеется, узнали.
Слишком характерная
строчка, со школьных лет
мы безошибочно узнаем
известное стихотворение
великого поэта. Если
взглянуть на вопрос с
точки зрения вирусолога,
то приведенная строчка
является так называемой
сигнатурой – характерной,
в идеале – уникальной,
последовательностью
символов, характеризующей
стихотворение. Открыв
томик стихов и увидев эту
строчку, мы совершенно
точно знаем, на какое
стихотворение мы попали.
Анализ вирусов также
заключается в выделении в
них сигнатур и
последующем их поиске в
потенциальных объектах
вирусной атаки. Таким
образом, еще несколько лет
назад достаточно было
поймать вирус, изучить его
код, (для профессионалов
это, как правило, было
делом нескольких минут) и
выделить сигнатуру. Но
вирусные технологии не
стояли на месте.
Вирусы,
шифрующие свой код,
известны довольно давно.
Цель такого шифрования
тоже достаточно очевидна:
имея зараженный и
оригинальный файлы, а,
следовательно, и
возможность выделить
вирус "в чистом виде",
вы все равно не сможете
проанализировать его код
с помощью обычного
дизассемблирования. Этот
код зашифрован и
представляет собой
бессмысленный набор
команд. Расшифровка
производится самим
вирусом уже
непосредственно во время
выполнения. При этом
возможны самые различные
варианты: вирус может
расшифровать себя всего
сразу, а может выполнять
такую расшифровку "по
ходу дела", может вновь
шифровать уже
отработавшие участки (причем
иногда не тем способом,
каким они были
зашифрованы раньше) — в
общем, имеется очень много
различных вариантов. Все
это делается только ради
того, чтобы затруднить
анализ кода вируса (кстати,
это не единственное, что
предпринимается ради этой
цели: хитро зашифрованный
вирус, эффективно
противодействующий
трассировке, может
заставить серьезно
поработать разработчиков
антивирусных средств).
Но до 1992 года
вирусописатели старались
на самом деле зря.
Совершенно ясно, что
квалификация
профессионалов в сфере
антивирусной
безопасности никак не
меньше их собственной и,
следовательно, все их
многомесячные усилия
стоили в крайнем случае
лишних часов работы
специалистов. Ведь все
зашифрованные вирусы
обязательно содержали
некий незашифрованный
фрагмент — расшифровщик (или
его часть). По нему можно
было построить сигнатуру
данного вируса и дальше
уже бороться с ним
обычными способами.
Ситуация изменилась,
когда были придуманы
алгоритмы, позволяющие не
только шифровать код
вируса, но и менять
расшифровщики. Сама
постановка такой задачи
вопросов не вызывает:
достаточно очевидно, что
можно построить различные
расшифровщики. Суть в том,
что этот процесс
автоматизирован — каждая
новая копия вируса
содержит новый
расшифровщик, который
может в каждом бите
отличаться от
расшифровщика породившей
ее копии. Даже из простых
комбинаторных
соображений ясно, что
расшифровщиков, длина
которых обычно
ограниченна, не может быть
бесконечно много. Но если
их всего лишь триллиона
так два-три, то ясно, что
задача перебора всех
возможных не стоит...
Вирусы, использующие
описанную технологию, и
получили название
полиморфных.
Кто-то
проспорил пиво или
победное шествие macro-вирусов
Ходит весьма
правдоподобный слух, что
между авторами
антивирусных программ
было заключено пари на
изрядное количество пива.
Предметом пари являлся
вопрос "дойдет ли к 1
июля этого года число macro-вирусов
до 1000". Шутки шутками, но
macro-вирусы действительно
стали настоящим бедствием
и их количество
продолжает
катастрофически
увеличиваться. Что же это
за вирусы, почему они
посыпались как из ведра?
Формально,
macro-вирусы являются
файловыми вирусами,
заражающими файлы
некоторых систем
документооборота.
Насколько известно автору,
в настоящее время имеются
вирусы для Word for Windows (в
огромном количестве!),
MS-Word, Excel for Windows и AmiPro. Все
указанные системы имеют
встроенные макро-языки (Word
Basic, Visual Basic). Эти языки
обладают достаточными
возможностями, чтобы
производить практически
все операции, необходимые
вирусу. Достаточно
сказать, что имеются даже
шифрованные и полиморфные
macro-вирусы. Кроме того, все
чаще стали встречать
вирусы, поражающие как
документы, так и
исполняемые файлы (иногда
обычные EXE-файлы, иногда
NewEXE, иногда и те, и другие).
Инфицирующая способность
таких вирусов крайне
велика.
В настоящий
момент более 90% macro-вирусов
– вирусы для Word for Windows. Это
без сомнения объясняется
тем, что файлы этого
текстового процессора
фактически стали
стандартом на текстовые
документы. Самый первый
macro-вирус (Word.Concept) также
заражал DOC-файлы.
Любопытно, что достоверно
известно о двух "проколах"
самой фирмы Microsoft. На ее
собственном сервере
дважды оказывались
документы, зараженные macro-вирусами.
Когда два
года назад появились
первые macro-вирусы для WinWord,
были выпущены специальные
антивирусные программы,
написанные на том же самом
Word Basic, что и сами вирусы и,
фактически,
представляющие собой
документы, устроенные
специальным образом.
Таким образом можно было
легко получить доступ к
макросам документа. Хотя
это и было самым простым
решением, время показало
его бесперспективность.
Тем не менее, те первые
антивирусы еще продолжают
использоваться, что,
безусловно, является
ошибкой. Сегодня все "приличные"
сканеры умеют
самостоятельно разбирать
структуру DOC-файлов. Одним
из первых это "научился"
делать Doctor Web, а недавно у
него был существенно
усилен эвристический
анализатор macro-вирусов, с
помощью которого можно
обнаруживать новые macro-вирусы,
еще не известные
антивирусу "в лицо".
В
нулевом кольце защиты
Много лет
уже прошло с момента
появления процессора i386, (не
будем даже вспоминать, что
до него был i286), а вирусы до
настоящего момента не
могли покорить его самый
мощный защищенный режим.
Загрузочный вирус PMBS,
первым пытавшийся освоить
защищенный режим (1994 г.), не
мог ужиться ни с одной
программой или драйвером
(EMM386, Windows, OS/2,...). Вирусы
Evolution.2761 и Evolution.2770 (тоже 1994
г.) использовали только
часть мощного защищенного
режима и то только тогда,
когда процессор находился
в реальном режиме работы.
Но вот все-таки
свершилось! В России, в "диком"
виде обнаружен файловый
вирус PM.Wanderer, использующий
защищенный режим. Этот
вирус исследовал ведущий
вирусолог ДиалогНауки И. А.
Данилов. Вот, что он
выяснил. Вирус более-менее
корректно
взаимодействует с другими
программами и драйверами,
также использующими
защищенный режим. PM.Wanderer
является резидентным
полиморфным вирусом,
использующим защищенный (виртуальный)
режим процессоров i386-Pentium.
Для установки своей
резидентной копии в
память и переключения в
защищенный режим
процессора (Protected Mode)
используется
документированный
интерфейс VCPI (Virtual Control Program
Interface) драйвера
расширенной памяти EMS
(EMM386).
Обнаружить
резидентную копию данного
вируса, находящегося в
нулевом кольце
защищенного режима
процессора, обычными
способами невозможно. Для
обнаружения вируса в
памяти необходимо
переключаться в
защищенный режим с
наивысшими привилегиями.
Но попытаться обнаружить
признаки вируса в системе
можно и обычными
способами. Вирус не
стелсируется и, даже при
наличии резидентной копии
в памяти, в файлах
прекрасно виден. После
обнаружения вируса
рекомендуется, как и
всегда в таких случаях,
перезагрузиться с
системной дискеты и
выполнять лечение в
заведомо стерильных
условиях.
Вирусы в
Internet. Сказки и реальность
Как мы уже
говорили, с компьютерными
вирусами вообще связано
много разнообразных
легенд. Впрочем, иногда
легенды эти, после
творческой переработки
вирусописаками,
превращаются в серьезную
опасность. История с
вирусами, заражающими
документы, – тому
подтверждение. Так
представляет ли сегодня
Internet реальную опасность?
Безусловно
– да. Миллионы людей
бродят по сети, "перехватывая"
то тут, то там
разнообразные программы.
После чего эти программы
немедленно "опробуются
в деле", ну а дальше...
как повезет. В сети лежат
гигабайты информации и
сколько в ней вирусов (случайно
попавших или намеренно
"подсаженных")
неизвестно. И при этом
приходится только
удивляться беспечности
тех, кто тщательно
проверяет все "внешние"
дискеты, но даже "и в
голову не берет", что
вирус может притаится в
программе, полученной из
сети. Или в документе,
полученном из сети.
Вместе с
этим, в различных
электронных конференциях
периодически появляются
"ужастики" о вирусах,
заражающих сообщения
электронной почты или "прыгающих"
на компьютер, при
просмотре WWW-страниц. На
сегодняшний день можно
уверенно утверждать, что
таких вирусов нет. Есть
вирус (кстати, macro-вирус),
который запускает
программу Microsoft Mail и
отправляет текстовые
сообщения с пометкой "Срочно!"
по нескольким случайным
адресам из адресной книги.
Обратим внимание, что это
– именно внешнее
проявление вируса, а не
средство его размножения.
Разумеется, ничто не
мешает вирусу вместо
текстовых сообщений
рассылать свою копию, но
данный конкретный этого
не делает. А если бы и
делал, то получателю
сообщения все равно
требуется запустить
полученную копию вируса.
Впрочем, учитывая
возможность
распространения вирусов в
документах и беспечность
некоторых пользователей,
это не представляется
столь уж невероятным.
Всегда ли вы проверяете
приаттаченные DOC-файлы
перед тем, как посмотреть,
что в них?
Отдельная
тема – вирусы, якобы
написанные на Java. На
сегодняшний день нет ни
одного вируса на Java и
считается, что текущая
версия языка
принципиально не
позволяет вирусам
размножатся. Другое дело,
что известны
многочисленные примеры
апплетов, которые можно
назвать деструктивными,
но их разрушительные
возможности невелики и
вирусами они не являются.
По всей видимости сейчас,
когда с появлением macro-вирусов
разработчики систем стали
несколько внимательнее
относится к вопросам
безопасности, можно быть
более или менее спокойным,
используя Java. Чего не
скажешь, об объектах ActivX,
но практически во всех
программах просмотра
имеются возможность
запретить работу этих
объектов.
Антивирусные
средства
Антивирусных
средств довольно много. В
каждом конкретном случае (об
этом говорилось в уже
упомянутой статье Е.
Судова) надо выбирать
антивирусный комплект,
исходя из общей концепции
информационной
безопасности организации
и нужд конкретного
пользователя. Ниже кратко
описаны основные типы
антивирусных средств.
Детекторы
(scanner). Назначение
детектора — обнаружить
вирус. Бороться с ним
предстоит либо другой
антивирусной программе,
либо системному
программисту. Несколько
лет назад детекторы
практически уступили
позиции полифагам (см.
ниже), но любопытно, что
они вновь возвращаются на
компьютерный рынок по
мере его развития. Если вы
используете лицензионное
программное обеспечение,
то для вас может быть даже
проще восстановить
зараженную программу с
дистрибутива (вот он, на
полке, руку протянул и все),
чем тратить время на
лечение файлов. У нас
другие традиции, и чистые
детекторы (сканеры) еще не
скоро будут в состоянии
конкурировать с фагами (см.
ниже).
Фаги (полифаги)
(scanner/cleaner, scaner/remover). Фаг —
программа, способная
уничтожить вирус (полифаг
способен уничтожить много
вирусов). Aidstest, к примеру,
сегодня обнаруживает и
обезвреживает около 2000
вирусов. Основной принцип
работы традиционного фага
описан выше. Он совсем
прост и секретом не
является. Кратко повторим
основные моменты. Для
каждого вируса путем
анализа его кода, способов
заражения файлов и т.д.
выделяется некоторая
характерная только для
него последовательность
байт. Эта
последовательность
называется сигнатурой
данного вируса. Поиск
вирусов в простейшем
случае сводится к поиску
их сигнатур. Современные
фаги используют другие
методы поиска вирусов.
После обнаружения вируса
в теле программы (или
загрузочного сектора,
который тоже, впрочем,
содержит программу
начальной загрузки) фаг
обезвреживает его. Для
этого разработчики
антивирусных средств
тщательно изучают работу
каждого конкретного
вируса: что он портит, как
он портит, где он прячет то,
что испортит (если прячет,
конечно). В большинстве
случаев фаг способен
благополучно удалить
вирус и восстановить
работоспособность
испорченных программ. Но
необходимо хорошо
понимать, что это возможно
далеко не всегда (о
причинах еще будет
сказано ниже).
Ревизоры.
Вирусы не всесильны. Мы
уже говорили о том, что
изобретательность
авторов этой мерзости
ограничена некоторыми
рамками того, что в
принципе возможно. Рамки
возможного известны, и
если взять под контроль
все мыслимые направления
вирусной атаки на ваш
компьютер, то вы будете
практически в полной
безопасности. Имеются
программы, в функции
которых входит контроль
возможных путей
распространения инфекции.
Из программ-ревизоров,
которые можно приобрести
в России, следует обратить
внимание на уже
упомянутую выше программу
ADinf.
Сторожа.
Сторож — небольшая
резидентная программа,
постоянно находящаяся в
памяти компьютера и
контролирующая операции,
которые она считает
подозрительными. В
качестве примера сторожа
можно привести VSAFE,
входивший в поставку
некоторых версий MS-DOS. На
наш взгляд, для обычного
пользователя программные
сторожа довольно
бесполезны. Одни и те же
операции выполняют и
вирусы, и обычные
программы. Невозможно
даже выделить класс
исключительно "вирусных"
операций. Вследствие
этого сторож либо
вынужден ничего не
контролировать и пассивно
наблюдать за происходящим,
либо "звенеть" при
каждой подозрительной
операции. При этом он так
вам надоест, что вы просто
отключите его, чтобы не
мешал работать. Если уж
использовать сторож, то на
самом минимальном уровне
контроля (например,
отслеживая изменение
загрузочных секторов).
Кстати, такие сторожевые
функции имеют некоторые
современные BIOS, хотя и с
этим все не так просто. Эта
функция BIOS может
конфликтовать с
некоторыми операционными
системами, а в некоторых
случаях может вообще не
работать.
Не так давно
был популярен еще один
класс антивирусных
средств — специальные
вакцины, которые
использовались для
обработки файлов и
загрузочных секторов.
Вакцины бывают пассивными
(пример такой вакцины
описан ниже) и активными.
Активная вакцина, "заражая"
файл, подобно вирусу,
предохраняет его от
любого изменения и в ряде
случаев способна не
только обнаружить сам
факт заражения, но и
вылечить файл. Пассивные
вакцины использовались (теперь
это уже большая редкость)
для предотвращения
заражения файлов
некоторыми вирусами,
использующими простые
признаки их зараженности
— "странные" время
или дата создания,
определенные символьные
строки и пр. В настоящее
время вакцинирование
широко не применяется.
Бездумное вакцинирование
всего и вся способно
вызвать целые эпидемии
несуществующих вирусных
болезней. Так, в течение
нескольких лет на
территории бывшего СССР
свирепствовала страшная
эпидемия ужасного вируса
TIME. Жертвой этого вируса
стали сотни абсолютно
здоровых программ, "зарезанных
на операционном столе"
хирургом ANTI-KOTом. История
эта вкратце такова.
Имеется довольно много
вирусов, предотвращающих
повторное заражение
файлов некоторой "черной
меткой", которую они "навешивают"
на программу. Имеются, к
примеру, вирусы,
выставляющие в поле
секунд времени создания
файла значение 62. Уже
довольно давно появился
вирус, который ко всем
зараженным файлам
дописывал в конец пять
байт — "MsDos".
Нормальных файлов,
содержащих в конце такую
символьную строку, не
бывает, поэтому вирус и
использовал этот признак
как индикатор заражения
файла. Вакцинирование
файлов против этого
вируса совсем не сложно.
Достаточно дописать в
конец вышеупомянутую
символьную строку — и
вирус вам не страшен.
Страшно другое — имеются (точнее,
имелись) антивирусные
программы (к примеру,
ANTI-KOT), которые
обманываются так же легко,
как и сам вирус. Видя в
конце файла злополучную
строчку, они немедленно
лечат его и умывают руки.
Шансов на то, что такой
инвалид будет нормально
работать, практически
никаких. С этим же вирусом
(и с этим же антивирусом)
связана еще одна история.
До сих пор не вышел из
употребления другой "мощный"
антивирус — ANTITIME. В
отличие от ANTI-KOTа, он не
калечит программ, но и не
лечит их тоже. Видя в конце
файла все ту же строчку, он
отрезает ее (сообщая при
этом, что в файле найден
"страшный TIME", —
утверждение само по себе
довольно корректно,
поскольку вирусом он его
явно не называет).
Программа эта, написанная,
по всей видимости, как
антивакцина, периодически
пытается участвовать в
конкурсе на лучший
антивирус, ибо она также
видит "страшный TIME"
там, где никакая из
нормальных антивирусных
программ его не видит.
Аппаратные
средства защиты. Имеются
специальные
дополнительные
устройства,
обеспечивающие
достаточно надежную (в
некотором смысле —
абсолютную) защиту. В
отличие от всех
рассмотренных выше
антивирусных средств, Sheriff
способен предотвратить
нападение вируса. К
сожалению, автору
известны случаи, когда
пользователи,
установившие на
компьютере плату Sheriff,
были настолько уверены в
своей полной неуязвимости,
что совершенно теряли
всякую осторожность. Так,
они не обращали внимания
на области жесткого диска,
не защищенные Sheriff (а такие
области есть практически
всегда — если вы защитите
винчестер целиком, то как
вы будете работать?).
Необходимо помнить, что
антивирусные средства
должны применяться
комплексно и только такая
комплексная защита с
использованием надежного
ревизора (ADinf), фагов Doctor Web
и Aidstest, а при
необходимости и платы Sheriff
способна обеспечить
максимальную
безопасность.
Автор:
Лев Сергеев
Источник: www.compulog.ru
|