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

Фильтр-драйвер

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

Принцип работы

Фильтр-драйверы функционируют на уровне ядра операционной системы. В современных ОС (Windows, Linux, macOS) драйверы устройств и файловых систем организованы в иерархические стеки. Каждый запрос от пользовательского приложения к устройству или файлу проходит через последовательность драйверов, расположенных друг над другом. Фильтр-драйвер устанавливается в определённую точку этого стека, обычно выше или ниже функционального драйвера устройства.

При перехвате запроса фильтр-драйвер может выполнять следующие действия:

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

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

Фильтр-драйверы классифицируются по типу перехватываемых операций и месту в стеке драйверов.

По типу перехватываемых операций

  • Фильтр-драйверы устройств (Device Filter Drivers) — перехватывают IRP (I/O Request Packets), направляемые к конкретному аппаратному устройству. Применяются для управления питанием, обработки ошибок, шифрования данных на диске.
  • Фильтр-драйверы файловых систем (File System Filter Drivers) — перехватывают запросы к файловой системе (открытие, чтение, запись, удаление файлов). Наиболее распространённый тип, используемый для антивирусной защиты, шифрования, контроля доступа, резервного копирования.
  • Фильтр-драйверы сетевых протоколов (Network Filter Drivers) — перехватывают сетевые пакеты на разных уровнях модели OSI (LSP, NDIS, WFP). Используются в брандмауэрах, VPN-клиентах, системах обнаружения вторжений.

По месту в стеке драйверов

  • Верхние фильтры (Upper Filters) — располагаются над функциональным драйвером устройства. Перехватывают запросы от приложений до того, как они достигнут основного драйвера. Часто используются для добавления дополнительных функций (например, поддержка сжатия).
  • Нижние фильтры (Lower Filters) — располагаются под функциональным драйвером, но над шинным драйвером. Перехватывают запросы уже после обработки основным драйвером, но до отправки на шину. Применяются для коррекции ошибок, управления питанием, мониторинга состояния оборудования.

История и развитие

Концепция фильтр-драйверов возникла вместе с развитием многоуровневых архитектур операционных систем. В ранних версиях Windows (Windows 95, Windows NT 3.1) драйверы устройств были монолитными, что усложняло добавление новых функций без изменения исходного кода.

В Windows NT 4.0 (1996 год) компания Microsoft представила модель WDM (Windows Driver Model), которая ввела понятие стека драйверов и фильтров. Это позволило сторонним разработчикам создавать драйверы, не изменяя системные компоненты. В Windows 2000 и XP модель WDM была расширена, появились фильтры файловых систем (File System Filter Drivers).

В Windows Vista (2006 год) была внедрена модель KMDF (Kernel-Mode Driver Framework) и UMDF (User-Mode Driver Framework), упростившая разработку фильтр-драйверов и повысившая их стабильность. В Windows 7 и 8 появился Filter Manager (FltMgr.sys) — специальный диспетчер, управляющий фильтрами файловых систем, что позволило создавать мини-фильтры (minifilter drivers) — более компактные и безопасные версии.

В Linux фильтр-драйверы реализуются через механизмы VFS (Virtual File System) и Netfilter. В macOS используется система I/O Kit и Kernel Extensions (kexts), которые позволяют создавать фильтры для устройств и файловых систем.

Применение

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

Антивирусная защита

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

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

Программы шифрования дисков (например, VeraCrypt, BitLocker) устанавливают фильтр-драйверы, которые перехватывают запросы к зашифрованному разделу. При записи данные шифруются, при чтении — расшифровываются, причём этот процесс прозрачен для пользовательских приложений.

Контроль доступа и аудит

Системы DLP (Data Loss Prevention) и SIEM (Security Information and Event Management) используют фильтр-драйверы для мониторинга действий пользователей. Фильтр-драйверы могут перехватывать попытки копирования файлов на USB-накопители, отправки данных по сети или печати документов, блокируя неавторизованные действия и записывая события в журнал.

Резервное копирование

Программы резервного копирования (например, Acronis True Image, Veeam) применяют фильтр-драйверы для создания «теневых копий» (Volume Shadow Copy Service в Windows). Фильтр-драйвер перехватывает запросы записи на диск и создаёт снимок состояния файловой системы, позволяя выполнять резервное копирование без остановки работы приложений.

Виртуализация

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

Примеры

  • Windows Filtering Platform (WFP) — набор API и фильтр-драйверов в Windows, используемый для создания брандмауэров, систем обнаружения вторжений и VPN-клиентов.
  • File System Minifilter Drivers — в Windows 7 и выше, компактные фильтры, управляемые Filter Manager. Примеры: антивирусные фильтры, фильтры шифрования, фильтры для контроля доступа.
  • Netfilter — фреймворк в ядре Linux, предоставляющий возможность создания фильтр-драйверов для сетевых пакетов. Используется в iptables, nftables, fail2ban.
  • I/O Kit (macOS) — система для разработки драйверов, включая фильтры, для устройств и файловых систем.

Критика и проблемы

Фильтр-драйверы, работая на уровне ядра, могут вызывать серьёзные проблемы с производительностью и стабильностью системы. Ошибка в фильтр-драйвере способна привести к «синему экрану смерти» (BSOD) в Windows или панике ядра в Linux. Из-за этого разработка фильтр-драйверов требует высокой квалификации и тщательного тестирования.

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

В связи с этим, в Windows начиная с Vista, для установки драйверов (включая фильтры) требуется цифровая подпись, а в Windows 10 и 11 — подпись от Microsoft (WHQL). В Linux и macOS также существуют механизмы проверки подлинности драйверов (например, модули ядра с подписью).

Источники

  • Microsoft Docs. «Windows Driver Kit (WDK)» — разделы по WDM, KMDF, UMDF, Filter Manager.
  • Microsoft Docs. «File System Minifilter Drivers» — описание архитектуры и разработки мини-фильтров.
  • Linux Kernel Documentation. «Netfilter» — документация по фреймворку.
  • Apple Developer Documentation. «I/O Kit Fundamentals» — описание архитектуры драйверов macOS.
  • «Windows Internals, Part 1» by Mark E. Russinovich, David A. Solomon, Alex Ionescu — описание стека драйверов и фильтров в Windows.
  • «Understanding the Linux Kernel» by Daniel P. Bovet, Marco Cesati — описание VFS и Netfilter в Linux.

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

На главную BFOmetr →