Компьютерный вирус - что это?
Классификация
Стандартные COM-EXE-TSR-вирусы
"Стелс"-вирусы
Полиморфные вирусы
Macro-вирусы
И прочие "семейства"
Борьба с вирусами
Pro et contra

Результаты тестирования антивирусных программ (значения эффективности их работы приведены в %)


Вирусная инфекция знакома нам с детства. В последнее время с завидной регулярностью грипп появляется зимой и укладывает добрую половину сограждан в постель. Данное явление стало вполне закономерным и уже привычным. Люди привыкли к инфекции и приспособились. Сообщения об очередной эпидемии волнуют, пожалуй, только сердобольных домохозяек и дают пищу для разговоров старушкам на лавочках у подъездов.

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

Компьютерный вирус - что это?

"...Напудрив ноздри кокаином
Я выхожу на променад"
"Опиум для никого"
(группа "Агата Кристи")

Давайте все-таки попробуем разобраться, что такое компьютерные вирусы, действительно ли они так опасны и как, в конце концов, с ними бороться - не травить же дустом?

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

Наиболее подходящим описательным определением компьютерного вируса, по-видимому, является следующее: "Компьютерный вирус - программа (некоторая совокупность выполняемого кода/инструкций), способная создавать свои копии, не обязательно полностью совпадающие с оригиналом, и внедрять их в различные объекты/ресурсы компьютерных систем, сетей и т. д. без ведома пользователя".

Конечно же, и данное определение не раскрывает понятие во всей его полноте и не дает представления о разнообразии компьютерного "животного мира". Что ж, тогда надо "углубить" (как говорил один политический деятель) наше представление о компьютерной фауне.

Классификация

"Со всей земли
Из гнезд насиженных..."
"Шабаш" (группа "Алиса")

Чтобы как-то систематизировать наши представления о компьютерных вирусах, попробуем ввести некоторую классификацию данных существ по характерным признакам.

Как мы уже поняли, компьютерный вирус - не взявшаяся ниоткуда напасть, а самое натуральное человеческое творение ("совокупность выполняемого кода/инструкций"), говоря иными словами, обыкновенная программа, правда иногда ведущая себя весьма коварно.

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

Все вирусы делятся на несколько групп. Если за основу взять стиль написания, можно выделить три группы. "Студенческие" - робкие попытки написать хоть что-то пытающееся поразить доступные ресурсы компьютера (обычно отличаются изрядным вероломством). "Вирусописательские" - творения подросших студентов, променявших прогулки с девушками на копание в кодах; зачастую такие вирусы более "толковы" и избавлены от множества "детских" ошибок (здесь можно говорить о становлении пера). И наконец, "профессиональные" - результаты работы профессиональных программистов; они отличаются оригинальным и качественным кодом, подчас вызывающим восхищение, и зачастую используют нестандартные приемы и методы "работы". Остается загадкой, что может толкнуть профессионалов на написание именно вирусов, а не чего-нибудь более полезного. Хотя, конечно, проблема вирусов очень тесно связана с "человеческим фактором" (некоторая часть вирусов пишется, например, из желания отомстить).

Естественно, ограничиться единственным классификационным признаком - стилем написания вируса - было бы неправильно, поэтому мы продолжим построение нашей классификации.

Все вирусы можно разделить на группы по другим основаниям.

Стандартные COM-EXE-TSR-вирусы

Наиболее многочисленная группа вирусов - это стандартные COM-EXE-TSR-вирусы1. Воспользовавшись либо стандартными средствами операционной системы, либо средствами BIOS, либо и теми и другими одновременно, вирусы эти проникают в различные выполняемые файлы, сектора дисков и в оперативную память. Впоследствии среда обитания используется для создания новых копий вируса и поражения новых объектов. Обычно эти вирусы довольно примитивны, они различаются в основном результатами воздействия (видео/музыкальными/деструктивными) и являются вариациями на давно известные темы. Именно эти вирусы обычно принадлежат к числу "студенческих исканий". Подробно рассматривать данный тип вирусов вряд ли стоит, так как обнаружить их можно практически сразу по некорректной работе компьютерной системы, уменьшению количества доступных системных ресурсов (например, дисковой и оперативной памяти) либо по изменению длины выполняемых файлов.

"Стелс"-вирусы

Более "достойным" объектом изучения являются так называемые "стелс" (Stealth)-вирусы. Представители этого класса используют некоторую совокупность средств для маскировки своего присутствия в системе. Обычно это достигается путем перехвата ряда системных функций, ответственных за работу с файлами. Иногда в описаниях компьютерных вирусов можно встретить и такое понятие, как "полный стелс", - это означает, что вирус, о котором идет речь, перехватывает не одну-две функции INT 212, а все функции (или большую их часть) нескольких прерываний, связанных с работой файловой подсистемы компьютера.

Использование вирусами "стелс"-технологии приводит к тому, что определить наличие вируса в системе, не имея соответствующего инструментария, практически невозможно, так как вирус старается маскировать как приращение длины пораженного объекта, так и свое тело в объекте, "подставляя" вместо себя "здоровую" часть файла. Именно по этой причине рекомендуется использовать различные антивирусные средства только на загруженном с системной дискеты компьютере. Хотя большинство качественных антивирусных средств в состоянии обнаружить и блокировать действие активной резидентной части известного "стелс"-вируса, они оказываются практически беззащитными перед новыми вирусами (известны случаи, когда вирусы использовали некоторые популярные антивирусные программы для облегчения собственного распространения, т. е. поражали файлы в момент проверки антивирусом!). Загрузка с системной дискеты позволяет избежать инсталляции в память резидентной части "стелс"-вируса, что, в свою очередь, дает возможность корректнее работать антивирусным средствам.

Здесь, правда, следует сделать одно замечание: перед загрузкой с системной дискеты неплохо проверить состояние энергонезависимой памяти компьютера (CMOS) и параметры описанных в ней дисков, так как, например, вирусы семейства ExeBug изменяют данные о дисководах системы, что при загрузке с дискеты приводит сначала к загрузке (например, из MBR3) резидентной части вируса, которая при наличии загрузочной дискеты восстанавливает значение параметров дисководов в CMOS и затем передает управление загрузке с дискеты. Однако такая загрузка будет происходить уже под "присмотром" активного вируса, как говорится, "со всеми вытекающими..."

Конечно же, создатели вирусов не ограничились только "стелс"-технологией для сокрытия и затруднения поиска своих творений.

Полиморфные вирусы

Многие из вас наверняка слышали такой термин, как полиморфные (polymorphic) вирусы. Эти вирусы используют специальные механизмы, которые затрудняют их надежное обнаружение. Обычно такие вирусы содержат код генерации шифровщика и расшифровщика собственного тела. Создаваемые генератором шифровщики (и соответствующие расшифровщики) обычно изменяются во времени. Для зашифрованной части кода вируса обязательно должна существовать подпрограмма расшифрования - расшифровщик, или декриптор (decryptor). В полиморфных вирусах расшифровщик не является постоянным - для каждого инфицированного файла он свой. По этой причине зачастую нельзя установить инфицированный файл по характерной для данного вируса строке (сигнатуре). Вследствие этого некоторые антивирусные средства в принципе не ловят полиморфные вирусы (наглядный пример такого рода - весьма популярный антивирус Aidstest).

Наиболее прославленные из полиморфных вирусов - это Phantom1, OneHalf (локальные "эпидемии" этого вируса возникают с завидной регулярностью), Satanbug. В классификации CARO4 полиморфные вирусы в зависимости от их сложности разделяют на несколько уровней.

Рассмотрим кратко каждый из уровней. Вирусы первого уровня полиморфизма используют постоянные значения для разных расшифровщиков. Их можно обнаружить по некоторым постоянным участкам кода расшифровщика. Такие вирусы принято называть "не совсем полиморфными", или олигоморфными (oligomorphic).

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

Вирусы, использующие в расшифровщике команды, не участвующие в расшифровании вирусного кода, или "команды-мусора", относят к третьему уровню полиморфизма. Это такие команды ассемблера, как NOP, MOV AX, AX, STI, CLD, CLI и т.д. Данные вирусы также можно определить с помощью некоторой сигнатуры, если произвести отсеивание всех "мусорных" команд.

Вирусы четвертого уровня используют в расшифровщике взаимозаменяемые инструкции и "перемешанные" инструкции без изменения алгоритма расшифрования. Например, ассемблерная команда MOV AX,BX имеет взаимозаменяемые инструкции: PUSH BX - POP AX; XCHG AX,BX; MOV CX,BX - MOV AX,CX и т. д. Детектирование данных вирусов в принципе возможно с помощью некоторой перебираемой сигнатуры.

Пятый уровень полиморфизма включает свойства всех перечисленных уровней, а кроме того, расшифровщик может использовать различные алгоритмы расшифрования вирусного кода. Для расшифровки возможно использование основного вирусного кода, расшифровки части самого же декриптора или нескольких расшифровщиков, поочередно расшифровывающих друг друга либо непосредственно вирусный код. Как правило, обнаружение вирусов данного уровня полиморфизма с помощью сигнатуры невозможно. Процесс поиска и особенно лечения такого вируса - очень сложная задача, и она может занять весьма продолжительное время. Если для обнаружения такого вируса возможен серьезный анализ кода только самого расшифровщика, то для лечения необходимо произвести частичную или полную расшифровку тела вируса, чтобы извлечь информацию о зараженном файле. Из известных мне антивирусных программ лечение вирусов последнего уровня полиморфизма производят отечественные пакеты AVP и Dr. Web.

Наконец, выделяют шестой уровень полиморфизма. К нему относятся нешифрованные вирусы - т. е. вирусы, состоящие из программных единиц-частей, которые "перемешиваются" внутри тела вируса. Данные вирусы, как "кубики", тасуют свои подпрограммы (инсталляции, заражения, обработчика прерывания, анализа файла и т. д.). Такие вирусы еще называются пермутирующими (permutating).

Следует отметить, что помимо полиморфных вирусов, как таковых, существует и некоторый набор полиморфик - "генераторов", представляющих собой объектный код, который можно "подключить" к "своему" вирусу (сделав его полиморфным) и получить новый полиморфный вирус.

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

Macro-вирусы

В последнее время появились и практически молниеносно распространились так называемые macro-вирусы. Они используют возможности макроязыков, встроенных в различные системы обработки информации (текстовые редакторы, электронные таблицы и т. п.). Сегодня подобные вирусы широко распространены в системах MS Word и Excel. В этих пакетах вирусы захватывают управление при открытии или закрытии зараженного файла, перехватывают некоторые файловые функции и затем заражают файлы, к которым происходит обращение. В какой-то степени подобные вирусы можно назвать "резидентными", так как они активны только в своей среде - соответствующем приложении. Особенностью таких вирусов является то, что они способны "жить" не только на отдельных компьютерах, а быстро распространяться по сети на все машины, где возможна работа соответствующих приложений.

И прочие "семейства"

Помимо перечисленных выше широко распространенных разновидностей вирусов существуют, правда менее обширные, семейства вирусов. Они обычно довольно экзотичны и представляют, пожалуй, только чисто научный интерес. Среди таких вирусов можно назвать: вирусы-черви (поражающие архивы), вирусы, заражающие флэш-память компьютеров, вирусы, ориентированные на различные современные операционные системы - Windows 95, OS/2 (хотя, по всей видимости, именно эти вирусы получат вскоре достаточно широкое распространение).

Борьба с вирусами

"И пугаться нет причины,
Если вы еще мужчины..."
"Поворот", (группа "Машина времени")

Теперь, когда мы рассмотрели (пусть и довольно бегло) разновидности компьютерных тварей, естественно задаться вопросами: "Есть ли эффективные средства противодействия их нашествию? Насколько они удобны и качественны?"

Да, такие средства есть. Причем следует отметить, что отечественные антивирусные средства не уступают зарубежным.

Одно из таких средств - Antiviral Toolkit Pro (автор Евгений Касперский), сокращенно AVP. Сейчас это мощный антивирусный комплекс (именно комплекс, так как в современных условиях эффективная борьба с использованием только одного антивирусного средства практически невозможна), реализованный для платформ DOS, Windows 95, Windows NT, Novell NetWare.

Какими же функциями должен обладать современный антивирус, такой как AVP? Прежде всего, это умение распознавать и корректно лечить как можно большее число разнообразных вирусов. Здесь следует отметить, что число компьютерных вирусов на сегодняшний день достигает приблизительно 11 000, причем многие весьма сложно обнаружить и уничтожить.

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

В последнее время стало модным включать в состав сканеров различные процедуры и механизмы так называемого "эвристического" сканирования. Они позволяют сделать предположение о наличии еще неизвестного вируса в файле (или ином компьютерном ресурсе). Современные наиболее развитые эвристические механизмы позволяют с вероятностью около 80% обнаружить еще неизвестный вирус.

В связи с появлением операционных систем нового поколения, таких как Windows 95, Windows NT, OS/2, задача обеспечения антивирусной безопасности усложняется. Прежде всего это связано с тем, что далеко не все антивирусные программы, рассчитанные на работу под управлением DOS, способны корректно обнаруживать, а тем более лечить компьютерную инфекцию. К тому же было бы просто неразумно не использовать преимущества работы в перечисленных выше системах (например, 32-разрядную обработку данных). Следует также заметить, что большинство современных антивирусных пакетов уже имеют версии, работающие по крайней мере в Windows 95 и Windows NT.

Хотелось бы подчеркнуть такое важное направление в обеспечении антивирусной безопасности, как "чистота" компьютерной сети. Не стоит, по-видимому, пугать читателей, рассказывая о том, с какой быстротой может распространиться вирус, попавший в сеть, состоящую даже из нескольких компьютеров, и какой урон он может нанести. Не стоит забывать, что борьба с компьютерными вирусами неразрывно связана с обеспечением безопасности и сохранности данных. Производители антивирусных средств выпускают сетевые версии своих продуктов. Основная задача таких версий - обеспечить антивирусной защитой прежде всего файл-серверы сети. Сетевой антивирусный пакет устанавливается на сервер, который начинает защищать сам себя и будет проверять "на лету" файлы, с которыми работают пользователи сети. При обнаружении вируса программа будет блокировать тем или иным способом дальнейшую работу с пораженными ресурсами. Это, пожалуй, одно из самых перспективных направлений развития антивирусных средств в наше время, когда системы различных типов начинают объединяться в сети и проблема безопасности выходит на первый план.

Pro et contra

Каким же антивирусным системам отдать предпочтение? Насколько разные системы отвечают перечисленным выше требованиям? В мире существует несколько тестовых лабораторий, изучающих качество антивирусных средств. Одной из авторитетных организаций в этой области является лаборатория журнала Virus Bulletin (специализированное издание по вопросам антивирусной безопасности, выходит в Англии). Ее тесты считаются одними из самых компетентных.

Чтобы ответить на вопросы, заданные в начале этого раздела, обратимся к результатам тестов.

На сегодняшний день в нашей стране широко распространены и могут быть легально приобретены следующие продукты: Norton Antivirus (фирмы Symantec), Microsoft Antivirus в составе DOS 6.xx (корпорации Microsoft), Dr.Web (фирмы "ДиалогНаука"), Antiviral Toolkit Pro (фирмы "Ками").

Итак, обратимся к сухим цифрам. Напомним, что для подобного рода исследований используются специальные наборы вирусов: Boot (набор загрузочных вирусов), File (файловые вирусы), общий (смешанный набор), стандартный и полиморфный наборы.

В таблице приведены результаты тестирования перечисленных продуктов. Результаты тестов однозначно свидетельствуют: отечественные продукты, в частности AVP, не ударили в грязь лицом.

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


Андрей Викторович Прудовский - консультант по антивирусным проектам. Контактный тел.: (095) 948-43-31.

Результаты тестирования антивирусных программ (значения эффективности их работы приведены в %)

Тестовые наборы вирусов
Продукты
Norton Antivirus
Microsoft Antivirus
Dr.Web
Antiviral Toolkit Pro
Boot
100,0
17,4
94,2
100,0
Стандартный
89,8
53,4
97,8
99,8
File
99,6
24,0
97,8
99,2
Полиморфный
95,5
7,8
100,0
100,0
Общий
99,8
21,3
96,3
99,5


1 Этот термин часто встречается в "вирусологии". Я буду придерживаться здесь общепринятой терминологии во избежание расхождения с другими источниками.

2 21-е прерывание операционной системы. Функции данного прерывания управляют большинством стандартных системных ресурсов.

3 Master Bott Record - первый физический сектор диска. Обычно содержит небольшую программу-загрузчик и таблицу разбиения диска.

4 Computer Antivirus Researcher`s Organization - Международная организация разработчиков антивирусов.