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 или аналогичные). Это предотвращает подмену или модификацию баз вредоносным ПО.
Защита баз от взлома и подмены
Для предотвращения компрометации антивирусные решения применяют несколько уровней защиты:
- Цифровая подпись баз — каждое обновление баз подписывается закрытым ключом разработчика. При загрузке антивирус проверяет подпись с помощью доверенного открытого ключа.
- Контроль целостности — хэширование файлов баз и регулярная проверка на соответствие эталонному значению.
- Защита от записи — файлы баз монтируются в режиме «только для чтения» или защищаются через ACL (Access Control List) или AppArmor/SELinux на Linux.
- Изоляция процесса обновления — механизм обновления запускается в отдельном процессе с минимальными привилегиями и под строгим контролем EDR-компонента.
Подмена баз — один из наиболее опасных векторов атаки (например, атака «антивирус как вектор»), поэтому ведущие вендоры используют защищённые каналы обновления (HTTPS с pinning сертификатов) и двухфакторную аутентификацию обновлений.
Обновление баз
Обновления баз происходят через регулярные запросы к облачным серверам вендора. Современные антивирусы применяют дельта-обновления — передаются только изменения, а не полная база. Это сокращает трафик и ускоряет применение новых сигнатур.
Механизм обновления включает:
- Проверку версии локальной базы.
- Запрос списка изменений с сервера.
- Загрузку и проверку цифровой подписи обновления.
- Применение обновления в фоновом режиме без перезапуска ядра защиты.
Некоторые системы используют превентивное обновление — серверы могут отправлять экстренные обновления при обнаружении активной кампании распространения нового вредоносного ПО (т.н. zero-hour response).
Сканирование и методы обнаружения угроз
Статический анализ
Статический анализ — проверка файла без его исполнения. Основные методы:
- Сравнение с сигнатурами: файл читается побайтово, и его фрагменты сопоставляются с известными сигнатурами. Применяются алгоритмы, устойчивые к незначительным изменениям (например, поиск по «плавающим» сигнатурам — с допуском на полиморфизм).
- Анализ структуры PE/ELF: проверка корректности заголовков исполняемых файлов, таблиц импорта/экспорта, секций кода/данных. Аномалии (например, секция
.textс флагом записи) могут указывать на вредоносность. - Поиск подозрительных строк: наличие строк вроде
cmd.exe /c,powershell -enc,CreateRemoteThread,RegSetValueможет быть признаком трояна.
Динамический и поведенческий анализ
Динамический анализ подразумевает исполнение файла в контролируемой среде:
- Песочница (sandbox): исполняемый файл запускается в изолированной виртуальной машине или контейнере. Всё поведение (создание процессов, сетевые запросы, изменения реестра) логируется и анализируется.
- Эмуляция: вместо реального запуска файл проходит через эмулятор CPU или ОС. Это позволяет избежать рисков, связанных с запуском вредоносного кода.
Эвристические движки применяют правила поведения: если программа пытается записать себя в автозагрузку, скрыть своё окно и отправить данные на внешний IP — это поведение классифицируется как подозрительное.
Эвристика и ревизор
Эвристика — это метод обнаружения угроз на основе логических выводов и паттернов, а не точного совпадения с сигнатурой. Существуют два основных типа:
- Файловая эвристика — анализ структуры, кода и метаданных файла.
- Системная эвристика — мониторинг состояния системы в реальном времени (например, неожиданное появление большого числа скрытых процессов).
Ревизор — это компонент, периодически проверяющий целостность критических системных файлов и объектов ОС. Он сравнивает текущее состояние с эталонным (заранее сохранённым) и выявляет несанкционированные изменения. Например, если системный файл 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), микропрограмма:
- Определяет оригинальную точку входа (часто сохраняется вирусом в заголовке).
- Удаляет внедрённый код (по известному смещению или сигнатуре).
- Восстанавливает корректные флаги секций и контрольные суммы.
- Обновляет хэш файла в системе целостности.
Такие микропрограммы хранятся в базе антивируса и ассоциированы с конкретными сигнатурами. Их создание — трудоёмкий процесс, требующий реверс-инжиниринга каждого нового вируса. В документации вендоров такие инструкции часто называют Инструкциями по нейтрализации угроз (ИПУ) — формализованными описаниями методов устранения последствий заражения.
Лечение и карантин: принципы нейтрализации угроз
Карантин как изоляционный механизм
Карантин — это защищённое хранилище, в которое перемещаются подозрительные файлы для предотвращения дальнейшего вреда. Это не просто папка, а изолированная среда со следующими свойствами:
- Файлы в карантине переименовываются и зашифровываются, чтобы их невозможно было случайно или намеренно запустить.
- Доступ к карантину ограничен привилегированным процессом антивируса.
- Метаданные файла (путь, хэш, время обнаружения, тип угрозы) сохраняются отдельно.
- Из карантина возможны только три действия: восстановить, удалить, отправить на анализ.
Карантин особенно важен при обнаружении файлов с недостоверной классификацией (например, эвристическое срабатывание на легитимный инструмент разработчика). Удаление в таких случаях может нарушить работоспособность системы, тогда как карантин даёт возможность ручной верификации.
Лечение заражённых файлов
Лечение возможно не для всех типов угроз. Оно применимо в основном к резидентным вирусам, файловым вирусам и макровирусам, которые внедряют свой код в существующие файлы, не заменяя их полностью.
Процесс лечения включает:
- Идентификацию типа заражения — по сигнатуре определяется, какой именно вирус поразил файл.
- Применение соответствующей микропрограммы — алгоритм извлекает или удаляет вредоносный код.
- Восстановление структуры файла — исправление заголовков, таблиц импорта/экспорта, контрольных сумм.
- Проверка целостности — сравнение с эталонным хэшем (если он известен) или проверка на соответствие формату.
В случае троянов, шпионских программ или рансомваров лечение, как правило, невозможно — такие файлы создаются как самостоятельные исполняемые модули, и их «лечение» сводится к полному удалению.
Лечение самой системы
Помимо файлов, антивирусы могут нейтрализовать угрозы на уровне системы:
- Очистка реестра 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), чтобы автоматически переразворачивать заражённые хосты.