Статья написана с познавательной целью и не призывает к запрещенным законодательством действиям, а также не создает пропаганды. Любые действия, описанные ниже, вымышлены.
Антивирусная программа — специализированная программа для обнаружения компьютерных вирусов и нежелательных программ, а также восстановления заражённых файлов и предотвращения заражения файлов или операционной системы вредоносным кодом.
Как работают антивирусные программы?
Для защиты от вирусов используют три группы методов:
- Методы, основанные на анализе содержимого файлов. К этой группе относятся сканирование сигнатур вирусов, а также проверка целостности и сканирование подозрительных команд.
- Методы, основанные на отслеживании поведения программ при их выполнении. Эти методы заключаются в протоколировании всех событий, угрожающих безопасности системы и происходящих либо при реальном выполнении проверяемого кода, либо при его программной эмуляции.
- Методы регламентации порядка работы с файлами и программами. Эти методы относятся к административным мерам обеспечения безопасности.
Метод сканирования сигнатур основан на поиске в файлах уникальной последовательности байтов — сигнатуры, характерной для определенного вируса. Для каждого вновь обнаруженного вируса специалистами антивирусной лаборатории выполняется анализ кода, на основании которого определяется его сигнатура. Полученный кодовый фрагмент помещают в специальную базу данных вирусных сигнатур, с которой работает антивирусная программа. Достоинством данного метода является относительно низкая доля ложных срабатываний, а главным недостатком — принципиальная невозможность обнаружения в системе нового вируса, для которого отсутствует сигнатура в базе данных антивирусной программы.
Метод контроля целостности основывается на том, что любое неожиданное и беспричинное изменение данных на диске является подозрительным событием, требующим особого внимания антивирусной системы. Вирус обязательно оставляет свидетельства своего пребывания. Факт изменения данных — нарушение целостности — легко устанавливается путем сравнения контрольной суммы, заранее подсчитанной для исходного состояния тестируемого кода, и контрольной суммы текущего состояния тестируемого кода. Если они не совпадают, значит, целостность нарушена и имеются все основания провести для этого кода дополнительную проверку. Указанный метод работает быстрее метода сканирования сигнатур, поскольку подсчет контрольных сумм требует меньше вычислений, чем операции побайтового сравнения кодовых фрагментов, кроме того он позволяет обнаруживать следы деятельности любых, в том числе неизвестных, вирусов, для которых в базе данных еще нет сигнатур.
Метод сканирования подозрительных команд основан на выявлении в сканируемом файле некоторого числа подозрительных команд или признаков подозрительных кодовых последовательностей (например, команда для форматирования жесткого диска). После этого делается предположение о вредоносной сущности файла и предпринимаются дополнительные проверки. Этот метод обладает хорошим быстродействием, но довольно часто он не способен выявлять новые вирусы.
Метод отслеживания поведения программ принципиально отличается от методов сканирования содержимого файлов, упомянутых ранее. Этот метод основан на анализе поведения запущенных программ, сравнимый с поимкой преступника «за руку» на месте преступления. Антивирусные средства данного типа часто требуют активного участия пользователя, призванного принимать решения в ответ на многочисленные предупреждения системы, значительная часть которых может оказаться впоследствии ложными тревогами. Частота ложных срабатываний (подозрение на вирус для безвредного файла) при превышении определенного порога делает этот метод неэффективным, а пользователь может перестать реагировать на предупреждения или выбрать оптимистическую стратегию (разрешать все действия всем запускаемым программам или отключить данную функцию антивирусного средства). При использовании антивирусных систем, анализирующих поведение программ, всегда существует риск выполнения команд вирусного кода, способных нанести ущерб защищаемому компьютеру или сети. Для устранения подобного недостатка позднее был разработан метод эмуляции, позволяющий запускать тестируемую программу в виртуальной среде, которую часто называют sandbox. Использование методов анализа поведения программ показало их высокую эффективность при обнаружении как известных, так и неизвестных вредоносных программ.
Эффективность антивирусных программ
Аналитическая компания Imperva в рамках проекта Hacker Intelligence Initiative опубликовала интересное исследование, которое показывает малую эффективность большинства антивирусов в реальных условиях.
По итогам различных синтетических тестов антивирусы показывают среднюю эффективность в районе 97 %, но эти тесты проводятся на базах из сотен тысяч образцов, большинство из которых уже не используются для проведения атак.
Вопрос в том, насколько эффективными являются антивирусы против самых актуальных угроз. Чтобы ответить на этот вопрос, компания Imperva и студенты Тель-Авивского университета раздобыли на российских подпольных форумах 82 образца самого свежего вредоносного ПО — и проверили его по базе VirusTotal, то есть против 42 антивирусных движков.
Эффективность антивирусов против только что скомпилированных зловредов оказалась менее 5 %. Это вполне логичный результат, поскольку создатели вирусов обязательно тестируют их по базе VirusTotal.