Эвристический анализ антивируса что это

Обновлено: 07.07.2024

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

Содержание

Технология эвристического анализа [ ]

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

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

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

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

Недостатки эвристического сканирования [ ]

  • Чрезмерная подозрительность эвристического анализатора может вызывать ложные срабатывания при наличии в программе фрагментов кода, выполняющего действия и/или последовательности, в том числе и свойственные некоторым вирусам. В частности, распаковщик в файлах, запакованных PE-упаковщиком (Win)Upack вызывает ложные срабатывания целого ряда антивирусных средств, де-факто не признающих такой проблемы. Другой проблемой анализаторов является ошибочное срабатывание при проверке совершенно безобидного кода.

К примеру, скомпилированный с помощью Delphi 7 или Delphi 2007 код:

  • Наличие простых методик обмана эвристического анализатора. Как правило, прежде чем распространять вредоносную программу (вирус), ее разработчики исследуют существующие распространенные антивирусные продукты, различными методами избегая ее детектирование при эвристическом сканировании. К примеру, видоизменяя код, используя элементы, выполнение которых не поддерживается эмулятором кода данных антивирусов, используя шифрование части кода и др.

Антивирусные программы - это программы, основной задачей которых является защита именно от вирусов, или точнее, от вредоносных программ.

Методы и принципы защиты теоретически не имеют особого значения, главное чтобы они были направлены на борьбу с вредоносными программами. Но на практике дело обстоит несколько иначе: практически любая антивирусная программа объединяет в разных пропорциях все технологии и методы защиты от вирусов, созданные к сегодняшнему дню.

Из всех методов антивирусной защиты можно выделить две основные группы:

  • Сигнатурные методы - точные методы обнаружения вирусов, основанные на сравнении файла с известными образцами вирусов
  • Эвристические методы - приблизительные методы обнаружения, которые позволяют с определенной вероятностью предположить, что файл заражен

Сигнатурный анализ

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

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

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

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

Одно из распространенных заблуждений насчет сигнатур заключается в том, каждая сигнатура соответствует ровно одному вирусу или вредоносной программе. И как следствие, антивирусная база с большим количеством сигнатур позволяет обнаруживать больше вирусов. На самом деле это не так. Очень часто для обнаружения семейства похожих вирусов используется одна сигнатура , и поэтому считать, что количество сигнатур равно количеству обнаруживаемых вирусов, уже нельзя.

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

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

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

Эвристический анализ

Слово " эвристика " происходит от греческого глагола "находить". Суть эвристических методов состоит в том, что решение проблемы основывается на некоторых правдоподобных предположениях, а не на строгих выводах из имеющихся фактов и предпосылок. Поскольку такое определение звучит достаточно сложно и непонятно, проще объяснить на примерах различных эвристических методов

Поиск вирусов, похожих на известные

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

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

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

Поиск вирусов, выполняющих подозрительные действия

Другой метод, основанный на эвристике, исходит из предположения, что вредоносные программы так или иначе стремятся нанести вред компьютеру. Метод основан на выделении основных вредоносных действий, таких как, например:

  • Удаление файла
  • Запись в файл
  • Запись в определенные области системного реестра
  • Открытие порта на прослушивание
  • Перехват данных вводимых с клавиатуры
  • Рассылка писем
  • И др.

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

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


Часто возникает путаница между эвристическим анализом и тем, что обычно называют «эвристическим вирусом». Эвристика более точно описывается как эвристический анализ – метод, в котором обнаруживается опасный код. Термин «эвристический вирус» часто вводит в заблуждение.

Хотя термин «эвристический вирус» можно связать с методом обнаружения вредоносного кода, он лучше подходит для описания конкретного вируса Heur.Invader – вредоносной программы, предназначенной для изменения системных настроек.

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

Эвристика: подход к обнаружению или вирус?

Обычно эвристика используется в антивирусном программном обеспечении наряду со сканирующими решениями для того, чтобы найти вредоносный код на вашем компьютере. То, что можно назвать “эвристическим вирусом”, - это обнаружение возможных вредоносных программ, троянов или других угроз. Это предварительное предупреждение может появиться в сканировании как “HEUR” и должно рассматриваться как подозрительный код для дальнейшей проверки.


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

Что такое эвристический анализ?

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

Эвристический анализ использует ряд методов для анализа поведения угроз и их уровня опасности, в том числе:

  • Динамическое сканирование: анализ поведения файла в моделируемой среде.
  • Файловый анализ: анализ цели файла, направлений его действия и предназначения.
  • Мультикритериальный анализ (MCA): анализ «веса» потенциальной угрозы.

Эвристические вирусные сканеры используют эти методы анализа для обнаружения вирусов внутри кода.

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

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


Эвристическое обнаружение может определить, что код представляет угрозу, если программа:

  • Остается после выполнения своих задач.
  • Пытается записать на диск.
  • Изменяет необходимые для операционной системы файлы.
  • Имитирует известное вредоносное ПО.

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

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

Включите эвристическое сканирование и выберите уровни его чувствительности с помощью следующих шагов:

  1. Откройте настройки в главном окне программы.
  2. Настройте опции сканирования в разделе, связанном с проверками (сканированиями).
  3. Включите опцию эвристического сканирования.
  4. Чтобы изменить уровень чувствительности, выберите в настройках один из доступных уровней.

Как избавиться от эвристического вируса?

Удаленный сервер управляет вирусом Heur.Invader. При удалении вируса Heur.Invader используйте антивирусное программное обеспечение для запуска полного сканирования в безопасном режиме. Удалите угрозу с Вашего компьютера, как только она будет обнаружена.


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

  1. Загрузите компьютер в безопасном режиме.
  2. Запустите как обычно полную проверку в вашем антивирусе
  3. Как только сканирование найдет вредоносный код, проверьте этот элемент вручную (вдруг это известный вам файл и произошло ложное срабатывание).
  4. Удалите вредоносный код.

Таким образом, эвристический анализ обнаруживает несоответствия в приложении. Такой метод обнаружения может быть найден в большинстве антивирусных программ. Однако недостатком эвристического обнаружения является необходимость проверки вручную из-за частых ложных срабатываний. Комбинируйте этот метод обнаружения с автоматизацией и другими инструментами обнаружения для получения наиболее точных результатов.



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

Локации вирусного ПО

  • Сканирование произвольных файлов и папок, вплоть до целых дисков.
  • Сканирование памяти. Сканируются все загруженные в память процессы и их dll.
  • Сканирование загрузочных записей дисков (Master Boot Records — MBR).
  • Сканирование системы на предмет следов вредоносного ПО. Проверка системных папок вроде %APPDATA%, %WINDIR% на предмет определенных файлов и папок. Сканирование реестра, также на предмет следов в автозагрузке и настройках.

Виды сканирования.

Сканирование делится на два основных вида: сигнатурный и эвристический.

Сканирование на основе сигнатур.

Другое название — хэш-скан (hash scan). Сканер проверяет файлы путем сравнения сигнатур файлов со словарем.
Обычно сигнатурой антивируса является MD5-хэш (16 байт) сгенерированный на основе тела известного вируса.
Таким образом, файл считается зараженным, если его хэш найден в базе сигнатур. Для локализации выявления вредоноса, хэш может вычисляться только для exe-файлов на основе PE-заголовка.
Такой вид сканирования позволяет определить вид атаки с высокой долей вероятности, без ложных срабатываний (чем грешит эвристическое сканирование).
К недостаткам хэш-скана относят неспособность выявить новые вирусы, которые отсутствуют в базе. А также беззащитность перед полиморфными или шифрующимися вирусами, в связи с чем требуются регулярные обновления базы сигнатур.
Также слабым местом хэш-скана является скорость проверки. Если бы не закон Мура, ни один современный компьютер уже не смог бы закончить сканирование с такой массой сигнатур в разумное время.

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

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

Драйвер прямого доступа к диску

Необходим для обхода руткитов. В зараженной системе, руткиты используются
для заметания следов своего присутствия. Лучшим способом для этого является подмена вызовов API-функций.
В частности для работы с файлами: CreateFile, ReadFile итд. Когда антивирусная программа сканирует систему,
вызывая эти функции, то руткит может возвращать FALSE, когда такой вызов относится к нему. Чтобы обойти это,
сканер содержит в себе модуль непосредственного посекторного считывания с диска, без использования WinAPI.

Черно-Белые списки

Служат для фильтрации обнаружений, которые на самом деле не являются зловредами. Таким образом, антивирус не предупреждает об опасности, в случае ложного срабатывания.
Современные антивирусы, хранят базу в среднем от 5 млн. сигнатур. Причем довольно часто, для одного вируса, может существовать с десяток сигнатур. Возможная ситуация, что из нескольких тысяч системных файлов, найдется подходящий под сигнатуру файл. А это грозит тем, что антивирус удалит его, или переместит в карантин, что может привести к отказу системы вовсе.
Минимизировать ложные срабатывания — главный приоритет любой антивирусной компании.
Чтобы пройти самый престижный антивирусный тест — virus bulletin, антивирус должен показать 100% результат обнаружения, при этом не выдав единого ложного срабатывания.
Белый список — содержит список файлов, которые не вредят системе, но так или иначе обнаруживаются сканером.
Черный список — содержит список вирусов, которым мы доверяем (также не наносят вреда системе).

Распаковщики, дешифровшики

Чтобы достичь приемлемого уровня обнаружения вируса, сканер должен отрабатывать exe-шники, зашифрованные exe-пакером (Например UPX). Тогда перед вычислением хэша, сканер обнаруживает, что файл зашифрован и сначала обращается к дешифровщику, а затем уже на этой основе, вычисляется хэш и сравнивает с имеющимся в базе.
Второй вид архивов — это всем известные zip, rar, 7z итд. Антивирус также должен уметь распаковывать эти архивы, и сканировать содержимое.
Третий вид — это распаковка NTFS ADS (NTFS Alternative Data Streams). В файловой системе NTFS, исполняемый файл может быть замаскирован под обычный, например текстовый. Альтернативный поток этого файла, будет ссылаться непосредственно на вирус.

Читайте также: