Драйвер фильтра¶
Драйвер фильтра — это тип системного драйвера в операционных системах семейства 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 →


