Перейти к основному содержимому

7.07. Антивирусы

Разработчику Инженеру

Антивирусы

Термин «антивирус» исторически возник из необходимости противодействовать программам, способным к саморазмножению и нанесению вреда цифровым системам. В узком смысле антивирус — это программное средство, предназначенное для обнаружения, блокировки, удаления или нейтрализации вредоносного программного обеспечения (malware). Однако в современном понимании антивирус — это не отдельная утилита, а компонент комплексной системы защиты, интегрированный в более широкую архитектуру информационной безопасности.

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

Эта глава посвящена устройству, принципам работы и компонентам антивирусных систем, с акцентом на технический и архитектурный аспекты.


Базы антивирусов: структура, хранение и обновление

Что такое база антивируса

База антивируса — это набор данных, содержащий информацию о вредоносных программах и методах их идентификации. В её состав входят:

  • Сигнатуры — уникальные последовательности байтов или логические правила, однозначно идентифицирующие конкретный образец вредоносного ПО.
  • Эвристические правила — алгоритмы и шаблоны поведения, позволяющие обнаруживать неизвестные или модифицированные угрозы.
  • Метаданные угроз — информация о происхождении, семействе, методах распространения, уязвимостях, используемых угрозой.
  • Микропрограммы восстановления — инструкции по нейтрализации или лечению заражённых файлов.
  • Цифровые отпечатки — хэши известных чистых и вредоносных файлов (например, по SHA-256).

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

Формат и организация баз

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

Размер баз может достигать сотен мегабайт и даже гигабайтов. Например, база Kaspersky или Bitdefender содержит миллионы записей, включая данные не только о вирусах, но и о потенциально нежелательных программах (PUP), рекламном ПО (adware) и троянах.

Где и как хранятся базы

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

  • Windows: %ProgramData%\KasperskyLab, %ProgramFiles%\DrWeb, %ProgramData%\Avast Software
  • Linux: /var/lib/clamav, /opt/kaspersky, /usr/share/avast

Современные антивирусы используют механизм sandbox-хранения — базы размещаются в изолированных контейнерах или защищённых разделах с контролем целостности (например, через технологию Microsoft WIM или аналогичные). Это предотвращает подмену или модификацию баз вредоносным ПО.

Защита баз от взлома и подмены

Для предотвращения компрометации антивирусные решения применяют несколько уровней защиты:

  1. Цифровая подпись баз — каждое обновление баз подписывается закрытым ключом разработчика. При загрузке антивирус проверяет подпись с помощью доверенного открытого ключа.
  2. Контроль целостности — хэширование файлов баз и регулярная проверка на соответствие эталонному значению.
  3. Защита от записи — файлы баз монтируются в режиме «только для чтения» или защищаются через ACL (Access Control List) или AppArmor/SELinux на Linux.
  4. Изоляция процесса обновления — механизм обновления запускается в отдельном процессе с минимальными привилегиями и под строгим контролем EDR-компонента.

Подмена баз — один из наиболее опасных векторов атаки (например, атака «антивирус как вектор»), поэтому ведущие вендоры используют защищённые каналы обновления (HTTPS с pinning сертификатов) и двухфакторную аутентификацию обновлений.

Обновление баз

Обновления баз происходят через регулярные запросы к облачным серверам вендора. Современные антивирусы применяют дельта-обновления — передаются только изменения, а не полная база. Это сокращает трафик и ускоряет применение новых сигнатур.

Механизм обновления включает:

  • Проверку версии локальной базы.
  • Запрос списка изменений с сервера.
  • Загрузку и проверку цифровой подписи обновления.
  • Применение обновления в фоновом режиме без перезапуска ядра защиты.

Некоторые системы используют превентивное обновление — серверы могут отправлять экстренные обновления при обнаружении активной кампании распространения нового вредоносного ПО (т.н. zero-hour response).


Сканирование и методы обнаружения угроз

Статический анализ

Статический анализ — проверка файла без его исполнения. Основные методы:

  • Сравнение с сигнатурами: файл читается побайтово, и его фрагменты сопоставляются с известными сигнатурами. Применяются алгоритмы, устойчивые к незначительным изменениям (например, поиск по «плавающим» сигнатурам — с допуском на полиморфизм).
  • Анализ структуры PE/ELF: проверка корректности заголовков исполняемых файлов, таблиц импорта/экспорта, секций кода/данных. Аномалии (например, секция .text с флагом записи) могут указывать на вредоносность.
  • Поиск подозрительных строк: наличие строк вроде cmd.exe /c, powershell -enc, CreateRemoteThread, RegSetValue может быть признаком трояна.

Динамический и поведенческий анализ

Динамический анализ подразумевает исполнение файла в контролируемой среде:

  • Песочница (sandbox): исполняемый файл запускается в изолированной виртуальной машине или контейнере. Всё поведение (создание процессов, сетевые запросы, изменения реестра) логируется и анализируется.
  • Эмуляция: вместо реального запуска файл проходит через эмулятор CPU или ОС. Это позволяет избежать рисков, связанных с запуском вредоносного кода.

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

Эвристика и ревизор

Эвристика — это метод обнаружения угроз на основе логических выводов и паттернов, а не точного совпадения с сигнатурой. Существуют два основных типа:

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

Ревизор — это компонент, периодически проверяющий целостность критических системных файлов и объектов ОС. Он сравнивает текущее состояние с эталонным (заранее сохранённым) и выявляет несанкционированные изменения. Например, если системный файл lsass.exe был заменён, ревизор зафиксирует расхождение хэшей и сгенерирует алерт.

Проверка запущенных процессов

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

  • Инжектов кода — когда в легитимный процесс (например, explorer.exe) внедряется вредоносный код.
  • Резидентных вирусов — программ, оставшихся в памяти после завершения основного процесса.
  • Rootkit’ов — скрытых компонентов, маскирующихся под системные функции.

Для этого применяются драйверы ядра (kernel-mode drivers), имеющие прямой доступ к памяти процессов и дескрипторам. На уровне ядра антивирус может читать таблицы виртуальной памяти, сравнивать образы в памяти с исходными файлами на диске и обнаруживать несоответствия.


Сигнатуры, нейропрофили и методы детектирования нового поколения

Сигнатуры: от байтовых последовательностей к логическим правилам

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

  • YARA-правила — декларативный язык описания паттернов в файлах, сочетающий байтовые шаблоны, регулярные выражения и логические условия. Пример:

    rule Suspicious_Powershell_Encoded
    {
    strings:
    $cmd = /powershell.*-enc/
    condition:
    $cmd
    }

    Такие правила позволяют описывать не один файл, а целое семейство вредоносов.

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

  • Обфускационно-устойчивые сигнатуры — ориентированы на выявление логики, а не конкретного представления. Такие сигнатуры могут анализировать граф потока управления (control flow graph) или данные о вызовах функций, что делает их устойчивыми к простым методам обфускации.

Нейропрофили и машинное обучение

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

  • Энтропия секций (высокая энтропия может указывать на упаковку или шифрование).
  • Наличие редко используемых API-вызовов.
  • Статистика имён секций, размеров, флагов.
  • Поведенческие метрики (если файл ранее анализировался в песочнице).

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

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

Микропрограммы лечения и Инструкции по нейтрализации угроз (ИПУ)

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

Например, если вирус добавил в конец исполняемого файла свой код и изменил точку входа (entry point), микропрограмма:

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

Такие микропрограммы хранятся в базе антивируса и ассоциированы с конкретными сигнатурами. Их создание — трудоёмкий процесс, требующий реверс-инжиниринга каждого нового вируса. В документации вендоров такие инструкции часто называют Инструкциями по нейтрализации угроз (ИПУ) — формализованными описаниями методов устранения последствий заражения.


Лечение и карантин: принципы нейтрализации угроз

Карантин как изоляционный механизм

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

  • Файлы в карантине переименовываются и зашифровываются, чтобы их невозможно было случайно или намеренно запустить.
  • Доступ к карантину ограничен привилегированным процессом антивируса.
  • Метаданные файла (путь, хэш, время обнаружения, тип угрозы) сохраняются отдельно.
  • Из карантина возможны только три действия: восстановить, удалить, отправить на анализ.

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

Лечение заражённых файлов

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

Процесс лечения включает:

  1. Идентификацию типа заражения — по сигнатуре определяется, какой именно вирус поразил файл.
  2. Применение соответствующей микропрограммы — алгоритм извлекает или удаляет вредоносный код.
  3. Восстановление структуры файла — исправление заголовков, таблиц импорта/экспорта, контрольных сумм.
  4. Проверка целостности — сравнение с эталонным хэшем (если он известен) или проверка на соответствие формату.

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

Лечение самой системы

Помимо файлов, антивирусы могут нейтрализовать угрозы на уровне системы:

  • Очистка реестра Windows: удаление автозагрузочных записей, вредоносных COM-объектов, перехватчиков DLL.
  • Восстановление хост-файла: если вирус модифицировал %SystemRoot%\System32\drivers\etc\hosts для перенаправления трафика.
  • Удаление планировщиков задач: отмена задач, созданных вредоносом.
  • Сброс параметров браузера: очистка перенаправлений, вредоносных расширений.

Некоторые решения включают системный ревизор, который после лечения сравнивает состояние системы с известным «чистым» снимком и предлагает дополнительные корректировки.


Цифровые подписи и доверенные файлы

Современные ОС (Windows, macOS, Linux с использованием IMA/EVM) активно применяют цифровые подписи для верификации подлинности системных компонентов.

Антивирусы интегрируются с этой инфраструктурой:

  • При сканировании файл проверяется на наличие валидной цифровой подписи от доверенного издателя (Microsoft, Apple, Mozilla и т.д.).
  • Отсутствие подписи или её недействительность (например, из-за модификации файла) является серьёзным индикатором компрометации.
  • Некоторые антивирусы поддерживают доверенные списки (whitelist): если файл подписан корпоративным сертификатом организации, он автоматически считается безопасным.

Однако злоумышленники всё чаще используют поддельные или украденные сертификаты, поэтому проверка подписи — лишь один из множества факторов в общей модели риска.


Восстановление системы

В случае масштабного заражения (например, активностью рансомвара или rootkit’а) антивирус может инициировать:

  • Откат системы — с использованием точек восстановления Windows (System Restore Points), если они не были уничтожены вредоносом.
  • Восстановление из резервной копии — через интеграцию с корпоративными системами резервного копирования.
  • Переустановку критических компонентов — например, перезапись системных файлов из кэша %WinDir%\System32\dllcache или через DISM (Deployment Image Servicing and Management).

В enterprise-средах антивирусы могут взаимодействовать с системами управления конфигурациями (например, SCCM, Ansible), чтобы автоматически переразворачивать заражённые хосты.