Открыть сервис

Драйвер фильтра

Драйвер фильтра — это тип системного драйвера в операционных системах семейства Windows, который перехватывает запросы ввода-вывода (I/O) к устройству или файловой системе, обрабатывает их или модифицирует до того, как они достигнут целевого драйвера или после его обработки. Драйверы фильтра образуют цепочки (стеки) в модели драйверов Windows (WDM, KMDF, UMDF) и позволяют реализовывать дополнительную функциональность без изменения исходного драйвера устройства или файловой системы.

История

Концепция драйверов-фильтров возникла в ранних версиях Windows NT (1990-е годы) как часть модели WDM (Windows Driver Model). Изначально они использовались в основном для антивирусного программного обеспечения и систем резервного копирования, которым требовался доступ к файловым операциям на низком уровне. В Windows 2000 и Windows XP механизм был расширен: появились классовые драйверы фильтра (class filter drivers) и драйверы верхнего/нижнего фильтра. С выходом Windows Vista и внедрением модели KMDF (Kernel-Mode Driver Framework) и UMDF (User-Mode Driver Framework) разработка драйверов фильтра стала более стандартизированной, что снизило риск системных сбоев. В Windows 10 и 11 технология остаётся ключевой для систем безопасности, шифрования и виртуализации.

Архитектура и принцип работы

Драйвер фильтра встраивается в стек драйверов — иерархическую структуру, где каждый драйвер обрабатывает запросы в определённом порядке. Стек строится на основе объекта устройства (Device Object) и может включать:

  • Функциональный драйвер (function driver) — основной драйвер, управляющий устройством или файловой системой.
  • Драйверы верхнего фильтра (upper filter driver) — располагаются над функциональным драйвером, перехватывают запросы до него.
  • Драйверы нижнего фильтра (lower filter driver) — располагаются под функциональным драйвером, перехватывают запросы после его обработки.
  • Драйверы фильтра класса (class filter driver) — работают на уровне класса устройств (например, все диски или все сетевые адаптеры).

Обработка запросов

При поступлении запроса ввода-вывода (IRP — I/O Request Packet) драйвер фильтра может выполнить одно из действий:

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

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

Классификация

По типу объекта фильтрации

  • Драйверы фильтра файловой системы — перехватывают операции с файлами и каталогами (чтение, запись, открытие, удаление). Используются в антивирусах, системах шифрования (например, BitLocker), программах резервного копирования.
  • Драйверы фильтра устройств — работают с конкретными классами устройств: диски, сетевые адаптеры, USB-контроллеры, видеокарты. Примеры: драйверы для RAID-массивов, виртуальных сетевых адаптеров.
  • Драйверы фильтра портов — перехватывают запросы к последовательным и параллельным портам (COM, LPT).

По режиму работы

  • Режим ядра (KMDF) — высокопроизводительные, но могут вызывать синий экран (BSOD) при ошибках. Требуют подписи драйвера.
  • Пользовательский режим (UMDF) — менее производительные, но более безопасные; работают в контексте процесса, не влияя на ядро. Подходят для простых фильтров (например, для принтеров).

По расположению в стеке

  • Верхний фильтр — перехватывает запросы до функционального драйвера.
  • Нижний фильтр — перехватывает запросы после функционального драйвера.
  • Смешанный — может быть установлен на нескольких уровнях.

Применение

Антивирусное и антишпионское ПО

Большинство современных антивирусов (например, «Лаборатория Касперского», Dr.Web, ESET NOD32) используют драйверы фильтра файловой системы для проверки файлов в реальном времени. Драйвер перехватывает операции открытия, чтения и записи, передаёт данные антивирусному движку и блокирует вредоносный код до его выполнения.

Шифрование данных

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

Виртуализация и контейнеризация

Гипервизоры и системы виртуализации (например, VirtualBox, VMware) используют драйверы фильтра для эмуляции устройств (сетевых карт, дисков) и управления доступом к физическим ресурсам. В Windows также применяется драйвер фильтра для технологии Hyper-V.

Резервное копирование и восстановление

Программы резервного копирования (Acronis True Image, Veeam) устанавливают драйверы фильтра для создания теневых копий томов (Volume Shadow Copy Service, VSS) и захвата изменений на диске в реальном времени.

Системы контроля доступа и DLP

Решения для предотвращения утечек данных (Data Loss Prevention) используют драйверы фильтра для мониторинга и блокировки операций копирования на USB-накопители, записи на CD/DVD или отправки файлов по сети.

Сетевые фильтры

Драйверы фильтра сетевых устройств (NDIS filter drivers) применяются в брандмауэрах, VPN-клиентах и системах родительского контроля для фильтрации трафика, перенаправления пакетов или установки шифрованных туннелей.

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

Разработка драйверов фильтра ведётся с использованием Windows Driver Kit (WDK) и Visual Studio. Драйверы на языке C (реже C++) компилируются в файлы .sys. Для установки требуется подпись драйвера (начиная с Windows Vista 64-разрядные версии требуют обязательной подписи). Установка производится через INF-файл, который описывает расположение драйвера в стеке (например, с помощью реестровых ключей UpperFilters или LowerFilters для конкретного устройства).

Риски

Некорректно написанный драйвер фильтра может привести к системным сбоям (BSOD), снижению производительности или нестабильной работе устройств. Вредоносные программы (руткиты) могут маскироваться под драйверы фильтра для скрытия своей активности. В связи с этим Microsoft ужесточила требования к подписи драйверов и внедрила механизм Driver Verifier для тестирования.

Ограничения и альтернативы

В современных версиях Windows (начиная с Windows 10) для некоторых задач Microsoft рекомендует использовать более высокоуровневые API, такие как:

  • File System Minifilter — упрощённая модель драйвера фильтра файловой системы, не требующая полного стека.
  • Windows Filtering Platform (WFP) — для сетевой фильтрации на уровне ядра.
  • User-Mode Driver Framework (UMDF) — для устройств, не требующих высокой производительности.

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

Примеры известных драйверов фильтра

  • klif.sys (Лаборатория Касперского) — драйвер фильтра файловой системы для антивирусного мониторинга.
  • fvevol.sys (BitLocker) — драйвер фильтра шифрования диска.
  • ndisflt.sys — сетевой фильтр, используемый для VPN-соединений.
  • snapman.sys (Acronis) — драйвер для создания теневых копий.

Правовые аспекты в РФ

В Российской Федерации разработка и использование драйверов фильтра регулируются общими нормами об авторском праве и лицензировании программного обеспечения. Применение драйверов фильтра в системах шифрования и контроля доступа может подпадать под требования Федерального закона № 152-ФЗ «О персональных данных» и законодательства о государственной тайне. Использование драйверов фильтра для обхода блокировок или нелегального доступа к информации может быть квалифицировано как нарушение Уголовного кодекса РФ (ст. 272–274).

Источники

  • Microsoft Docs: «Introduction to Filter Drivers» (Windows Driver Kit documentation).
  • Русскоязычная документация Microsoft: «Драйверы-фильтры» (MSDN).
  • Книга: «Windows Internals, Part 1» (Pavel Yosifovich, Mark Russinovich, David Solomon, Alex Ionescu) — 7-е издание, 2017.
  • Статья: «Архитектура драйверов фильтра в Windows» (журнал «Системный администратор», № 5, 2019).
  • Материалы конференции «OSDay» (2020) — доклад «Разработка драйверов фильтра для Windows».

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →