Думаю, никого не надо убеждать в необходимости использования антивирусных продуктов. Вирусы, черви, троянские программы сопровождают электронно-вычислительную технику повсюду - даже независимо от наличия или отсутствия подключения к сети. И люди уже привыкли более или менее часто пользоваться антивирусами. В конце концов, пользователь не может (да и не должен) знать особые приметы и тонкости работы десятков тысяч вредоносных программ, которые уже детектируются и нейтрализуются антивирусными продуктами. Не станем обсуждать сейчас, какие антивирусы хороши, а какие плохи,- не в этом цель данной статьи. Если человек пользуется любым более или менее качественным антивирусным продуктом, обладающим необходимым набором модулей, и регулярно его обновляет - это уже неплохо.
Существуют два принципиально разных метода детектирования вредоносных программ антивирусными продуктами:
поиск известных вирусов по присутствующим в антивирусных базах вирусным сигнатурам;
поиск неизвестных вирусов по характерным для вирусов участкам кода.
Суть первого метода (поиск по сигнатурам) - в том, что антивирусные компании анализируют каждый (!) поступивший к ним вирус и добавляют соответствующую сигнатуру, которая будет обнаруживать только этот вирус. Для похожих вирусов (их семейств) выделяются также универсальные сигнатуры, способные обнаружить также и новые модификации данных вирусов. Для каждой антивирусной записи делается свой модуль лечения, благодаря которому антивирус сможет исцелить зараженный файл.
Преимущества данного метода очевидны: он практически не дает ложных срабатываний антивируса (при условии качественного добавления антивирусной записи), определяет каждый конкретный вирус и может его обезвредить (насколько это возможно в принципе). Но отсюда же выплывают и недостатки: невозможность обнаружения новых вирусов, необходимость постоянного обновления антивирусных баз.
Кардинально отличается от сигнатурного метода метод эвристического поиска. Эвристические анализаторы различных продуктов могут работать по-разному.
Фактически каждый из них - это know- how той или иной компании. Но вся работа эвристических анализаторов сводится к одному: поиск последовательностей кода (исполняемых команд), характерных для того или иного типа вирусов.
Основной сложностью при реализации алгоритмов эвристического поиска является отсеивание ложных срабатываний. Вроде бы при детектировании вирусов все просто: если программа размножается - значит, это вирус. Остается только написать модуль, который сможет проанализировать предоставляемый код и с высокой долей вероятности определить, не обладает ли код "подозрительными" функциями.
С троянскими программами все намного сложнее. Зачастую даже специалисту по информационной безопасности, бывает тяжело сказать: является данная программа троянской или нет. По какому критерию программа относится к троянской: "если программа делает что-то, о чем пользователь не знает и чего не желает выполнять" или "если программа нарушает логику работы компьютера". Согласитесь - определения весьма расплывчатые. А как же с этой проблемой справиться модулю эвристического поиска, не имеющему человеческого опыта и интеллекта?
Именно из-за описанных выше проблем эвристические анализаторы способны обнаруживать далеко не все вредоносные программы. Для некоторых типов вирусов этот показатель близок к ста процентам - для других же может колебаться в пределах 30-60% (для троянских программ этот показатель всегда ниже, чем для вирусов). Кроме того, эвристические анализаторы могут иногда ошибаться и обзывать вирусами вполне мирные и привычные нам программы - это называется ложным срабатыванием.
Антивирусные продукты, как правило, используют оба метода поиска вирусов, что несколько замедляет их работу, зато увеличивает количество детектируемых вирусов.
Описанные достоинства и недостатки определяют возможности антивирусных продуктов: