Эвристическое сканирование


Эвристический анализ (эвристическое сканирование) — представляет собой совокупность функций антивирусного программного обеспечения, направленных на обнаружение вредоносных программ, которые не зафиксированы в вирусных базах данных. Кроме того, данный термин обозначает конкретные методы, используемые для этой цели.

Современные антивирусные средства обычно применяют технологию эвристического анализа программного кода. Чаще всего эвристическое сканирование используется в сочетании с сигнатурным анализом для выявления сложных шифрующихся и полиморфных вирусов. Методика эвристического анализа позволяет обнаруживать ранее неизвестные компьютерные инфекции; однако в таких случаях лечение зачастую оказывается невозможным.

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

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

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

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