Принцип работы сигнатурного анализа

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

В простейшем исполнении антивирус вычисляет криптографический хеш сканируемого файла (MD5, SHA-1 или SHA-256) и сверяет полученную строку с локальной базой данных. Операция проходит практически мгновенно. Однако малейшее изменение хотя бы одного бита внутри исполняемого файла полностью меняет значение криптографического хеша. По этой причине разработчики защитного софта перешли от строгих хешей ко взвешенным байтовым маскам и контрольным суммам отдельных секций PE-заголовков.

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

Почему классические сигнатуры перестали справляться

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

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

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

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

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

Статический эвристический анализ изучает бинарный файл без его запуска. Движок распаковывает секции, считывает таблицу импорта функций Windows API и оценивает энтропию данных. Высокая степень энтропии указывает на плотно упакованный или зашифрованный массив байтов, что часто выдает спрятанную полезную нагрузку. Если антивирус видит сочетание функций CreateRemoteThread, WriteProcessMemory и VirtualAllocEx внутри неприметного текстового редактора, система начисляет файлу штрафные баллы опасности. При превышении заданного порога срабатывает детект вида Heur.Trojan.Generic.

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

Поведенческий мониторинг и HIPS

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

Система предотвращения вторжений уровня хоста (HIPS) перехватывает системные вызовы ядра операционной системы через фильтр-драйверы. Антивирус анализирует последовательности операций каждого активного процесса в реальном времени. Вредоносным считается паттерн, при котором процесс внедряет чужой шеллкод в системный процесс explorer.exe, пытается отключить службу теневого копирования томов VSS через vssadmin.exe или начинает массово перезаписывать пользовательские файлы с расширениями docx и jpg с высокой скоростью. Подобный цикл вызовов сразу идентифицирует работу программы-вымогателя.

Уязвимость перед атаками нулевого дня

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

Эвристический и поведенческий мониторинг дают шанс остановить zero-day атаку, перехватывая аномальные системные события. Например, если эксплойт через переполнение стека в Adobe Reader заставляет программу запускать командный интерпретатор cmd.exe или PowerShell, эвристика классифицирует запуск как аномальный дочерний процесс и заблокирует его. Сложные целевые атаки вроде червя Stuxnet в свое время использовали четыре разные уязвимости нулевого дня одновременно и маскировались под легитимные системные драйверы Realtek с украденными цифровыми сертификатами, что позволило им долгое время обходить защиту промышленных объектов.

Современный гибридный подход

В актуальных решениях классов Endpoint Protection Platform (EPP) и Endpoint Detection and Response (EDR) разработчики объединяют все доступные методы защиты в единый конвейер обработки данных.

  1. Фильтрация контрольных сумм в облачных репутационных базах данных KSN или VirusTotal Intelligence за доли миллисекунды.
  2. Проверка цифровой подписи разработчика и валидности сертификатов безопасности.
  3. Статический анализ PE-заголовков, импортов библиотек DLL и уровня энтропии упакованных секций.
  4. Глубокая эмуляция недоверенного бинарного кода в изолированной песочнице эмулятора.
  5. Непрерывный поведенческий мониторинг системных вызовов активных процессов с оценкой корреляции событий через обученные модели машинного обучения.

Частые вопросы

Что называют ложным срабатыванием антивируса?

Ложное срабатывание (false positive) происходит, когда защитная программа по ошибке принимает чистый доверенный файл за угрозу. Чаще всего это случается из-за эвристического анализа, когда разработчик легитимного софта упаковывает программу нестандартным протектором или использует системные вызовы, похожие на активность троянов.

Зачем антивирусу облачные базы, если есть локальные?

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

Может ли вирус самостоятельно стереть сигнатуру антивируса?

Современные антивирусы защищены от модификации собственными драйверами с правами уровня ядра Ring 0. Вредоносная программа в пользовательском пространстве Ring 3 не может остановить антивирусную службу, изменить файлы базы данных или выгрузить фильтр-драйвер из памяти без предварительного повышения привилегий.

Чем эвристический анализ отличается от машинного обучения в защите?

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