Как эволюционируют антивирусные программы

Антивирусные программы развивались параллельно с вредоносными кодами.

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

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

Второй базовый механизм для борьбы с компьютерными паразитами также появился в середине 90-х годов. Это эвристический анализ. Данный метод представляет собой существенно усложненный эмулятор, только в результате анализируется не код подозрительного файла, а его действия. Для того чтобы размножаться, файловый вирус должен копировать свое тело в память, открывать другие исполняемые файлы и записывать туда свое тело, записывать данные в секторы жесткого диска и т.д. Есть характерные действия и у сетевого червя. Это прежде всего доступ к адресной книге и сканирование жесткого диска на предмет обнаружения любых адресов электронной почты. Благодаря этому эвристический анализатор способен обнаружить даже те вредоносные коды, сигнатуры которых еще неизвестны.

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