
Эксперты PT Expert Security Center отвечают на самые популярные вопросы об антивирусах: как они работают, из каких частей состоят, на чем фокусируются их разработчики и что надо учитывать при их интеграции, чтобы обеспечить надежную защиту от угроз. Первая статья цикла — об основных компонентах антивирусов.
- Введение
- Движки
- 2.1. Статический движок
- 2.2. Динамический движок
- 2.3. Комбинированный движок
- Сканер
- Обновления
- Контроль устройств
- Контроль приложений
- Центр управления
- SDK
- Выводы
Введение
По данным исследования Positive Technologies, основным инструментом злоумышленников остаются вредоносные программы. В IV квартале 2024 года они применялись в 66% успешных атак на организации и 51% успешных атак на частных лиц.
Соответственно, антивирусные технологии — необходимый минимум, обязательная мера защиты. Они лежат в основе многих средств борьбы с киберугрозами, доказавших свою эффективность. Без них не могут обойтись ни организации со зрелой системой ИБ, ни те, кто еще только внедряет либо налаживает процессы кибербезопасности.
Однако, несмотря на то что многие специалисты по ИБ хорошо знакомы с этими технологиями, их эффективное применение, настройка для синергии с другими средствами защиты, тонкости достижения баланса между безопасностью и удобством для бизнеса до сих пор вызывают вопросы.
Обо всем этом поговорим в цикле статей. Сначала давайте разберемся, из каких компонентов состоят антивирусы.
Движки
Движок — это программный модуль, созданный для поиска у объекта вредоносных признаков. Является ядром любого антивирусного продукта.
Компонент предоставляет системам безопасности вердикты о вредоносности различных объектов, например файлов, ключей реестра или трафика. На основе полученных вердиктов продукт с технологией антивирусной защиты реагирует на угрозы различными способами, например может отправить уведомление об опасности пользователю или администратору, обезвредить либо удалить зараженные файлы, заблокировать доступ вредоносных программ к критически важным частям атакованной системы.
По принципу работы выделяют три вида движков: статический (анализирует отдельные файлы), динамический (обрабатывает системные логи и события) и комбинированный. Для обеспечения комплексной защиты антивирусы, как правило, используют разные типы движков, а иногда и их сочетания. Рассмотрим ключевые элементы движков, специфику использования и задачи, с которыми каждый из них справляется лучше всего.
Статический движок
Движки этого вида преимущественно самодостаточны и включают в себя две составляющие:
- Детектирующее ядро, которое анализирует файлы в зависимости от их формата и выдает конечный вердикт.
- Сигнатурные базы — регулярно обновляемый компонент антивирусного решения, который содержит дополнительные данные и алгоритмы. Движок обращается к ним для вынесения вердиктов.
Набор из ядра и базы может использоваться как вместе с полноценным антивирусом, так и отдельно, к примеру, в составе консольного сканера. Кроме того, разработчики часто встраивают консольные сканеры в системы мультисканирования, например, такие как VirusTotal.
Консольный сканер — специальный инструмент, который сканирует объект на предмет его вредоносности. В отличие от полноценного антивируса этот сканер не имеет графического интерфейса и не способен обеспечить защиту в режиме реального времени.
Ядро статического движка может задействовать различные технологии:
- Статические алгоритмы разбора — они же парсеры, позволяют обнаруживать в файле фрагменты определенного формата, необходимые для дальнейшего анализа, например с их помощью можно проверить VBA-макросы в документах Microsoft Office.
- Распаковщики — позволяют вернуть файлам первоначальный вид, который больше подходит для дальнейшего изучения, если они были сжаты или изменены иными способами. Злоумышленники специально маскируют и модифицируют вредоносные программы, чтобы усложнить анализ и попытаться обойти статический детект. Распаковщики, например, могут восстановить оригинальный файл, упакованный с помощью утилиты UPX.
- Эмуляторы — дают возможность запустить исполняемый файл в изолированной среде, которая не позволит потенциальному вредоносу атаковать реальные системы и получить доступ к данным. Понаблюдав за поведением файла, статический движок соберет информацию, необходимую для вынесения вердикта. Эмуляторы позволяют безопасно узнать, какие функции вызывает файл, какие у него дочерние объекты, а также получить дамп («слепок») процесса в распакованном состоянии.
Динамический движок
Динамический движок состоит из нескольких подсистем:
- Сенсоры — компоненты, перехватывающие различные активности (чтение, запись, запуск) всевозможных объектов (файлов, реестров, процессов) в защищаемой системе.
- Ядра — компоненты, которые собирают события с сенсоров и принимают решения о том, как отреагировать на процесс или устранить его последствия: запретить выполнение процесса, отменить внесенные им изменения или ограничить дальнейший доступ к системе.
- Компоненты, которые выполняют команды ядра. Чаще всего это специальные драйверы, работающие на самом низком уровне операционной системы — в пространстве ядра (kernel mode). Эти драйверы могут завершать вредоносные процессы, гарантированно удалять их или перемещать в карантин, даже когда вредоносная программа пытается активно защищаться. Они также могут запрещать вредоносным программам отдельные действия, например не позволяют им перезаписывать файлы в системе.
Динамические движки в числе прочего могут работать в паре с регулярно обновляемыми базами сигнатур, разработанными специально для них. Такие базы содержат расширенные признаки для более точного выявления сигнатур. В зависимости от своей мощности движок динамического анализа может частично или полностью выполнять функции системы предотвращения вторжений.
Комбинированный движок
Как правило, разработчики стараются извлечь максимальную пользу из сильных сторон отдельных детектирующих механизмов, поэтому комбинируют движки внутри единой технологии антивирусной защиты. Разберем пример.
Неизвестная вредоносная программа класса «загрузчик» (downloader), проникая в систему жертвы, загружает из интернета другой файл, который детектируется уже существующими сигнатурами статического движка.
Поведенческий движок на этапе записи загрузчиком последнего участка файла на диск может передать содержимое на проверку статическому движку, получить от него вердикт о вредоносности и выполнить любое из действий:
- запретить дозагрузку файла (загрузчик вредоноса получит ошибку записи);
- удалить уже загруженные части с диска;
- завершить процесс загрузчика и удалить его из системы.
Сканер
Хотя вендоры непрерывно повышают точность сканирующих алгоритмов, чтобы они обнаруживали в режиме реального времени как можно больше разновидностей вредоносных программ при минимальных ресурсах конечных устройств, пользователям или администраторам в некоторых случаях все же требуется точечно проверять интересующие их объекты. Это могут быть файлы в системе, съемные носители, удаленные хранилища. Для проведения таких проверок можно воспользоваться сканером по требованию.
Сканер по требованию позволяет выполнить проверку однократно либо настроить ее регулярное выполнение по расписанию. В последнем случае действия с вредоносными объектами будут выполняться автоматически в соответствии с заданными настройками (например, такие файлы могут удаляться) либо по завершении сканирования специалисты по ИБ получат отчет, чтобы продолжить анализ вручную.
Любой тип сканирования требует настройки параметров, например, таких как:
- глубина сканирования архивов — чем она больше, тем тщательнее будут разбираться упакованные файлы;
- исключения — можно исключить объекты, которые не представляют интереса или априори считаются безопасными, чтобы сканер их игнорировал;
- тайм-аут — промежуток времени, по истечении которого сканер пропускает текущий объект анализа и переходит к следующему.
В зависимости от принципов, заложенных разработчиками, настройки для сканеров в режиме реального времени и по требованию могут быть как централизованными, так и индивидуальными.
Обновления
По мнению экспертов PT ESC, последствия атак на процесс обновления (updater) являются наиболее опасными: фактически в результате эксплуатации уязвимости в протоколе обновления злоумышленники могут выполнить произвольный код в контексте процесса антивируса и благодаря этому остаться необнаруженными.
Как правило, процесс обращается к заданному серверу обновлений по расписанию и получает так называемый файл каталога. Чтобы избежать атак типа Man-in-the-Middle (атака посредника), соединение с сервером должно происходить по защищенному протоколу.
В файле каталога перечислены все обновляемые компоненты, их хеш-суммы и иногда версии или временные метки последнего обновления. Если после обновления нужна перезагрузка, это тоже будет указано в каталоге. Важно, чтобы в этом модуле использовались именно криптографические хеш-суммы с низкой вероятностью коллизий, например SHA-256.
Если процесс находит файлы, хеш-сумма которых отличается от указанной в файле каталога, он загружает их с сервера обновлений. Этот механизм разработан, чтобы не перегружать сеть и выгружать только измененные файлы. После обновления файлов процесс должен проверить их целостность. Чтобы подтвердить, что они не повреждены, модуль считает хеш-суммы загруженных файлов и сравнивает их со значениями из каталога.
Хорошей практикой также считается проверка подписи обновлений и самого файла каталога: это позволяет убедиться в их авторстве и легитимности. Если все в порядке, процесс создает резервную копию обновлений (это поможет, если по какой-то причине обновления не установятся и придется вернуться к предыдущей версии), размещает файлы в правильных каталогах, а также при необходимости перезапускает службы или предлагает перезагрузить компьютер.
Контроль устройств
Во многих средствах с технологией антивирусной защиты есть компонент, отвечающий за контроль устройств. Он позволяет настраивать правила доступа к различным устройствам, подключенным к компьютеру, например к USB-флешкам, беспроводным и сетевым устройствам, картам памяти. Такой компонент особенно полезен для защиты рабочих станций, на которых хранятся важные или секретные сведения: он помогает предотвратить их утечку.
Контроль доступа осуществляется на уровне ядра операционной системы с помощью специального драйвера. Специалисты по кибербезопасности могут настроить правила так, чтобы полностью запретить подключение определенных видов устройств либо оставить пользователям возможность подключать только доверенные устройства с конкретными идентификаторами (ID).
Контроль приложений
Этот элемент помогает контролировать работу приложений на защищаемых устройствах. Модуль контроля позволяет администраторам настроить на компьютере правила запуска приложений. Если параметры контроля заданы правильно, этот модуль может запретить сотрудникам компании запускать на рабочих компьютерах неразрешенные программы, например утилиты для удаленного доступа и компьютерные игры, а также защитить инфраструктуру от проникновения другого недоверенного и потенциально опасного ПО, включая шифровальщики и майнеры.
Для большей гибкости запрет запуска приложений можно настроить по разным критериям: по пути к файлу, по его хеш-сумме или подписи. Контроль приложений может работать в двух режимах: «параноидальном» (запрещен запуск всех программ, кроме разрешенных) и обычном (можно запускать любое ПО, если его нет в списке ограничений). Правильный подход — запрет запуска приложений на уровне ядра операционной системы. Это позволяет остановить запуск программ на раннем этапе загрузки ОС. Кроме того, злоумышленникам сложнее обойти контроль в режиме ядра.
Центр управления
Центр управления (ЦУ) антивирусной защитой организации — это система, предназначенная для отслеживания уровня антивирусной безопасности всех устройств в сети и централизованного управления этим параметром. Обычно такой центр включает в себя несколько ключевых элементов и функций, чтобы эффективно защищать инфраструктуру от угроз.
Чаще всего под управлением и мониторингом подразумевается централизация следующих функций:
- установка антивирусов на всех конечных устройствах;
- обновление баз вирусных сигнатур;
- настройка политик безопасности: контроль устройств, блокировка определенных типов файлов, включение или отключение конкретных механизмов защиты;
- обнаружение угроз: получение информации о найденных экземплярах вредоносных и нежелательных программ, о предпринятых действиях по устранению угрозы (карантин, блокировка, удаление);
- автоматическое сканирование инфраструктуры при необходимости или по расписанию;
- инвентаризация активов: поиск как новых устройств, на которые еще не установлены антивирусы, так и тех, что давно не связывались с ЦУ (одна из причин — истечение срока действия учетной записи компьютера).
Центры управления дают комплексное видение состояния системы антивирусной защиты в организации, снижают влияние человеческого фактора (например, помогают исключить ситуации, когда специалисты по ИБ могут пропустить один из компьютеров при настройке, не обновить базы и пр.). Кроме того, за счет отслеживания угроз на конечных устройствах и возможности превентивно заблокировать распространение вредоносных программ они помогают минимизировать риск одновременной и полной компрометации инфраструктуры.
Центры также позволяют создавать общие отчеты о состоянии защищенности, обнаруженных угрозах и принятых против них мерах, что важно для соблюдения требований многих нормативных стандартов (ISO/IEC 27001, GDPR, PCI DSS и др.). Развертывание центра управления антивирусной защитой намного эффективнее, чем эксплуатация отдельных антивирусов на конечных устройствах.
SDK
Чтобы антивирусные технологии было легче интегрировать в другие продукты, их могут предоставлять вместе с комплектом для разработки ПО (Software Development Kit, SDK). В него чаще всего входят набор библиотек, реализующих антивирусный движок, и документация по их использованию. Разработчики применяют антивирусные SDK главным образом тогда, когда требуется обеспечить защиту от файловых угроз, но при этом использовать полноценный антивирус избыточно. Например, этот компонент добавляют различные файловые хостинги и магазины приложений.
Выводы
В этом материале мы подробно рассмотрели основные составляющие продуктов с антивирусными технологиями. В следующей статье разберем, как решения, в которые эти технологии встроены, выявляют вредоносные программы.
Статья подготовлена при участии специалистов антивирусной лаборатории PT Expert Security Center Евгения Бечкало, руководителя сетевой экспертизы, и Романа Дудина, ведущего специалиста отдела экспертизы обнаружения вредоносных программ в изолированных средах.