Эвристический анализ (эвристическое сканирование) — совокупность методов обнаружения вредоносного программного обеспечения, при которых программный объект оценивается по характерным признакам или предполагаемому поведению без необходимости точного совпадения с известной сигнатурой. Благодаря этому эвристические методы позволяют обнаруживать ранее неизвестные вредоносные программы и новые варианты уже известных угроз.
В антивирусных программах эвристический анализ обычно применяется наряду с сигнатурным обнаружением и другими технологиями. В современных средствах защиты конечных устройств одновременно могут использоваться эвристические правила, наблюдение за поведением процессов, облачный анализ и методы машинного обучения. Граница между эвристическим и поведенческим обнаружением в используемой терминологии не всегда одинакова: некоторые классификации рассматривают анализ поведения как самостоятельный метод, дополняющий эвристику.
Принцип работы В отличие от сигнатурного анализа, при котором проверяется наличие известных последовательностей байтов или других признаков конкретной вредоносной программы, эвристический анализ пытается определить потенциально опасные свойства объекта. Такими признаками могут быть подозрительные последовательности инструкций, необычная структура исполняемого файла, попытки изменения системных файлов, признаки упаковки или обфускации кода и другие характеристики.
При статическом анализе программа исследуется без её выполнения. Анализатор может исследовать машинные инструкции, заголовки и структуру исполняемого файла, импортируемые функции и другие признаки. Для отдельных признаков могут задаваться различные веса; при превышении определённого порога объект считается подозрительным. Например, в одном из вариантов эвристического анализа решение принимается в зависимости от количества обнаруженных подозрительных инструкций.
Другой подход связан с эмуляцией или выполнением исследуемого объекта в контролируемой среде. При этом анализируется его предполагаемое или фактическое поведение: обращение к файлам и системным ресурсам, запуск процессов, изменение настроек системы, сетевые соединения и другие операции. Такое выполнение позволяет исследовать код, поведение которого трудно определить только статическими средствами, в частности из-за упаковки или обфускации.
В частности, эмуляция может применяться при исследовании полиморфного или зашифрованного вредоносного кода: выполнение программы в контролируемой среде позволяет наблюдать код после его распаковки или расшифрования. При этом эмуляция сама по себе не определяет способ последующего распознавания программы: полученные данные могут использоваться сигнатурными, эвристическими или другими механизмами обнаружения.
Достоинства и ограничения Основное преимущество эвристического анализа по сравнению с поиском точных сигнатур состоит в возможности обнаруживать вредоносные программы, для которых ещё отсутствует отдельная сигнатура, а также изменённые и обфусцированные варианты уже известных программ.
Вместе с тем эвристическое обнаружение имеет ряд ограничений:
Ложные срабатывания. Некоторые действия или элементы кода, характерные для вредоносных программ, встречаются и в легитимном программном обеспечении. Поэтому увеличение чувствительности эвристического анализатора обычно повышает вероятность ошибочного отнесения безопасных объектов к вредоносным.
Неполнота обнаружения. Наличие эвристического анализа не гарантирует выявления любой ранее неизвестной угрозы. Вредоносная программа может не содержать признаков, на которые настроен анализатор, либо проявлять вредоносное поведение только при определённых условиях.
Затраты вычислительных ресурсов. Анализ структуры и инструкций программы, а особенно её эмуляция или выполнение в изолированной среде, обычно требуют больше времени и ресурсов, чем простое сравнение объекта с известной сигнатурой.
Противодействие анализу. Разработчики вредоносного программного обеспечения применяют обфускацию, упаковку и другие методы, затрудняющие статический анализ. Некоторые программы также пытаются определить, выполняются ли они в виртуальной или изолированной среде, и в таком случае изменяют своё поведение.
Обнаружение объекта эвристическим анализатором не обязательно позволяет определить конкретное семейство вредоносной программы. Оно также не означает, что заражённый файл может быть автоматически восстановлен: антивирусная программа может вместо этого поместить объект в карантин или удалить его. NIST отмечает, что многие заражённые файлы невозможно очистить с сохранением исходного файла.
Поэтому эвристический анализ используется как один из нескольких взаимодополняющих механизмов обнаружения вредоносного программного обеспечения, а не как замена сигнатурному или поведенческому анализу.
См. также Эвристический алгоритм Обнаружение, основанное на сигнатурах Антивирус Песочница (безопасность) Статический анализ кода
Примечания
Категория:Антивирусы Категория:Информационная безопасность Категория:Методы обнаружения вредоносного кода