Драйвер фильтра привязки Windows, что это такое
Обновлено: 21.11.2024
Драйвер фильтра файловой системы перехватывает запросы, направленные на файловую систему или другой драйвер фильтра файловой системы. Перехватывая запрос до того, как он достигнет намеченной цели, драйвер фильтра может расширить или заменить функциональные возможности, предоставляемые исходной целью запроса. Службы фильтрации файловой системы доступны через диспетчер фильтров в Windows. Диспетчер фильтров предоставляет основу для разработки файловых систем и драйверов фильтров файловых систем без необходимости управлять всеми сложностями файлового ввода-вывода. Диспетчер фильтров упрощает разработку сторонних драйверов фильтров и решает многие проблемы с существующей устаревшей моделью драйверов фильтров, такие как возможность управления порядком загрузки на заданной высоте. Драйвер фильтра, разработанный для модели диспетчера фильтров, называется минифильтром. Каждому драйверу минифильтра назначена высота, которая является уникальным идентификатором, определяющим, где загружается минифильтр по отношению к другим минифильтрам в стеке ввода-вывода. Высота над уровнем моря распределяется и управляется корпорацией Майкрософт.
Устаревший драйвер фильтра файловой системы
Устаревшие драйверы фильтров файловой системы — это драйверы, которые подключаются к стеку файловой системы напрямую и не используют диспетчер фильтров. Эта модель существовала до изобретения диспетчера фильтров. При реализации фильтра файловой системы с использованием этой устаревшей модели вам необходимо получить объект устройства фильтра, прикрепленный к стеку файловой системы. После подключения фильтра вы увидите все запросы ввода-вывода, поступающие от приложения до («до») файловой системы, фильтр файловой системы также может видеть операции после («после») обработки файловой системой. , если он прикреплен, он фильтрует объект устройства в другом месте. Для обеспечения оптимальной надежности и производительности рекомендуется использовать драйверы минифильтров файловой системы вместо устаревших драйверов фильтров файловой системы. Начиная с Windows 10 версии 1607, администраторы и разработчики драйверов могут использовать параметр реестра для блокировки устаревших драйверов фильтров файловой системы.
Концепции диспетчера фильтров
Диспетчер фильтров — это драйвер режима ядра, который соответствует устаревшей модели фильтрации файловой системы. Он реализует и предоставляет функции, которые обычно требуются в драйверах фильтров файловой системы. Воспользовавшись этой функциональностью, сторонние разработчики могут писать драйверы мини-фильтров, которые проще разрабатывать, чем устаревшие драйверы фильтров файловой системы, тем самым сокращая процесс разработки и создавая более качественные и надежные драйверы. Диспетчер фильтров устанавливается вместе с Windows, но становится активным только при загрузке драйвера минифильтра. Диспетчер фильтров подключается к стеку файловой системы для целевого тома. Драйвер минифильтра косвенно подключается к стеку файловой системы, регистрируясь в диспетчере фильтров для операций ввода-вывода, которые драйвер минифильтра выбирает для фильтрации. Драйверы минифильтров подключаются в определенном порядке. Порядок прикрепления определяется уникальным идентификатором, называемым высотой. Присоединение драйвера минифильтра на определенной высоте к определенному объему называется экземпляром драйвера минифильтра. Высота драйвера минифильтра гарантирует, что экземпляр драйвера минифильтра всегда загружается в соответствующем месте по отношению к другим экземплярам драйвера минифильтра, и определяет порядок, в котором диспетчер фильтров вызывает драйвер минифильтра для обработки ввода-вывода. Высота над уровнем моря распределяется и управляется корпорацией Майкрософт.
Драйвер минифильтра может фильтровать операции ввода-вывода на основе IRP, а также операции обратного вызова быстрого ввода-вывода и фильтрации файловой системы (FSFilter). Для каждой операции ввода/вывода, которую он выбирает для фильтрации, драйвер минифильтра может зарегистрировать процедуру обратного вызова перед операцией, процедуру обратного вызова после операции или и то, и другое. При обработке операции ввода/вывода диспетчер фильтров вызывает соответствующую процедуру обратного вызова для каждого драйвера минифильтра, зарегистрированного для этой операции. Когда эта процедура обратного вызова возвращает значение, диспетчер фильтров вызывает соответствующую процедуру обратного вызова для следующего драйвера минифильтра, зарегистрированного для операции.
Архитектура подсистемы ввода/вывода Windows
В Windows мы используем многоуровневую модель ввода-вывода на основе пакетов. Каждый запрос ввода-вывода представлен уникальным пакетом запроса ввода-вывода (IRP), которого достаточно для полного описания любого запроса ввода-вывода в системе. Запросы ввода-вывода первоначально представляются в верхнюю часть стека устройств, который представляет собой набор присоединенных объектов устройств. Затем запросы ввода-вывода передаются по стеку устройств от драйвера к драйверу до тех пор, пока запрос ввода-вывода не будет выполнен.
<р>1. Подсистема вызывает системную службу ввода-вывода, чтобы открыть именованный файл.
<р>2. Диспетчер ввода-вывода вызывает диспетчер объектов для поиска именованного файла и помощи в разрешении любых символических ссылок для файлового объекта.Он также вызывает контрольный монитор безопасности, чтобы проверить наличие у подсистемы правильных прав доступа для открытия этого файлового объекта. <р>3. Если том еще не смонтирован, диспетчер ввода-вывода временно приостанавливает запрос на открытие и вызывает одну или несколько файловых систем до тех пор, пока одна из них не распознает файловый объект как то, что он сохранил на одном из запоминающих устройств, используемых файловой системой. . Когда файловая система смонтирует том, диспетчер ввода-вывода возобновляет выполнение запроса. <р>4. Диспетчер ввода-вывода выделяет память и инициализирует IRP для запроса на открытие. Для водителей открытие эквивалентно запросу «создать». <р>5. Диспетчер ввода/вывода вызывает драйвер файловой системы, передавая ему IRP. Драйвер файловой системы получает доступ к расположению своего стека ввода-вывода в IRP, чтобы определить, какую операцию он должен выполнить, проверяет параметры, определяет, находится ли запрошенный файл в кеше, и, если нет, настраивает ввод-вывод следующего более низкого драйвера. местоположение стека в IRP. <р>6. Оба драйвера обрабатывают IRP и выполняют запрошенную операцию ввода-вывода, вызывая подпрограммы поддержки режима ядра, предоставляемые диспетчером ввода-вывода и другими системными компонентами (не показаны на предыдущем рисунке). <р>7. Драйверы возвращают IRP диспетчеру ввода-вывода с блоком состояния ввода-вывода, установленным в IRP, чтобы указать, была ли запрошенная операция успешной или почему она не удалась. <р>8. Диспетчер ввода-вывода получает статус ввода-вывода от IRP, поэтому он может возвращать информацию о статусе через защищенную подсистему исходному вызывающему объекту. <р>9. Диспетчер ввода-вывода освобождает завершенный пакет IRP. <р>10. Диспетчер ввода-вывода возвращает дескриптор файлового объекта подсистеме, если операция открытия прошла успешно. Если произошла ошибка, он возвращает подсистеме соответствующий статус.После того, как подсистема успешно открывает файловый объект, представляющий файл данных, устройство или том, подсистема использует возвращенный дескриптор для идентификации файлового объекта в последующих запросах операций ввода-вывода устройства (обычно чтение, запись, или запросы управления вводом-выводом устройства). Чтобы сделать такой запрос, подсистема вызывает системные службы ввода-вывода. Диспетчер ввода-вывода направляет эти запросы как пакеты IRP, отправляемые соответствующим драйверам.
Удивительной особенностью диспетчера ввода-вывода в Windows является то, что каждый отдельный стек устройств может содержать один или несколько объектов фильтров устройств. Прикрепив объект устройства фильтра к стеку устройств, создатель драйвера фильтра может перехватывать запросы ввода-вывода, когда они проходят через стек устройств. Фильтр в стеке файловой системы может перехватывать операции на файловом уровне до того, как («предварительно») драйвер файловой системы сможет их обработать. Точно так же фильтр в стеке томов будет перехватывать операции уровня тома до того, как драйвер тома сможет их обработать.
Драйверы фильтров также могут перехватывать запросы ввода-вывода после того, как («после») все нижестоящие драйверы, обрабатывающие запрос, завершили свою обработку. Например, используя «пост» обработку, драйвер фильтра файловой системы может перехватить фактические данные, которые были прочитаны из файла (а не только запрос на чтение этих данных, который он увидит как часть «предварительной» обработки). В случае «пост» обработки фильтр файловой системы будет вызываться только после того, как драйверы ниже него в стеке устройств файловой системы и драйверы в любых других стеках устройств, обрабатывающих запрос, завершат свою работу. обработка.
Просто подумал, что нужно написать блог об основах фильтрации привязки.
Что делает драйвер фильтра привязки Windows в Windows 10?
Привязывает пространства имен файловой системы к разным расположениям и скрывает это переназначение от пользователя. Драйвер фильтра привязки Windows — это драйвер файловой системы. Он запускается только в том случае, если пользователь, приложение или другая служба запускают его во всех выпусках Windows 10 1803, Windows 10 1809, Windows 10 1903.
Что это значит?
Фильтр связывания в основном «переназначает» запрос к файлу на другой файл в другом месте. Например, пользователь открывает файл A, и фильтр изменит ввод-вывод, чтобы перейти к файлу B.
Ну как это делается?
Это делается с помощью FLTMGR. Фильтр связывания — это МИНИ-фильтр, который перенаправляет ввод-вывод. Когда фильтр загружается с помощью FLTMGR, он регистрирует обратные вызовы для операций файловой системы. Например, создавать, читать и писать. Обратные вызовы — это PRE-вызов и POST-вызов. Таким образом, вызов PRE будет вызываться перед операцией файловой системы, а вызов POST — после. Эти функции являются необязательными в зависимости от того, что делает фильтр. Эти функции вызываются в каждом порядке высоты фильтра фильтра. Например, в каждом фильтре вызывается PRE – CREATE, затем вызывается файловая система, затем вызываются функции POST – CREATE, если они определены.
Что происходит с функцией PRE, такой как предварительное создание?
При вызове PRE-CREATE фильтр связывания может изменить имя целевого файла, вызвав функцию IoReplaceFileObjectName для перенаправления создания. Статус STATUS_REPARSE может быть возвращен, чтобы новое имя файла анализировалось FS. Диспетчер фильтров позволяет фильтру изменять параметры.Это позволяет фильтру перенаправлять открытия с одного пути на другой.
Можно ли изменить целевой файл в функциях чтения и записи фильтров?
Да, может. Фильтр может выполнять описанные ниже операции. Функция FltSetCallbackDataDirty уведомляет FLTMGR об изменении данных.
Это можно сделать в функции post или pre фильтров.
Это был обзор по теме. Дополнительные сведения по этому вопросу см. в MSDN.
Боб Голдинг
Я работаю в компьютерной индустрии более 40 лет. 21 год в Microsoft. Я работал над операционными системами, диагностикой, микрокодом и оборудованием. Большая часть моих знаний была получена от Data General. Без моего пребывания там я бы не получил знаний, необходимых для отладки сложных проблем Windows
CVSS – это стандартизированная система оценки для определения возможностей атак. Temp Score учитывает временные факторы, такие как раскрытие информации, использование и контрмеры. Уникальный Meta Score рассчитывает средний балл из разных источников, чтобы обеспечить нормализованную систему оценки.
Наши аналитики отслеживают рынки эксплойтов и контактируют с брокерами уязвимостей. Диапазон указывает наблюдаемую или рассчитанную цену эксплойта, которую можно увидеть на рынках эксплойтов. Хороший показатель для понимания денежных затрат, необходимых для атаки, и популярности атаки.
Наша группа по анализу киберугроз отслеживает различные веб-сайты, списки рассылки, рынки эксплойтов и социальные сети. CTI Interest Score определяет интерес злоумышленников и сообщества безопасности к этой конкретной уязвимости в режиме реального времени. Высокий балл указывает на повышенный риск использования этой уязвимости.
В Microsoft Windows (операционная система) обнаружена уязвимость. Это было оценено как очень критическое. Эта проблема затрагивает неизвестный код компонента Bind Filter Driver. Это влияет на конфиденциальность, целостность и доступность. Резюме CVE:
Применение исправления может устранить эту проблему. Возможное решение было опубликовано сразу после раскрытия уязвимости.
Редактирование информации о продукте
Изменение информации о CPE 2.3
Изменение информации о CPE 2.2
Редактирование информации CVSSv3
Базовая мета-оценка VulDB: 9,4
Временная мета-оценка VulDB: 8,2
Базовая оценка VulDB: 9,9
Временная оценка VulDB: 8,6
VulDB Vector: 🔒
Надежность VulDB: 🔍
Базовая оценка поставщика (Майкрософт): 8,8.
Вектор поставщика (Майкрософт): 🔒
Редактирование информации CVSSv2
AV | AC | Au | C | I | A |
---|---|---|---|---|---|
🔍 | 🔍 | 🔍 | 🔍 | 🔍 | 🔍 |
🔍 | 🔍 | 🔍 | 🔍 | 🔍 | 🔍 |
🔍 | 🔍 | 🔍 | 🔍< /td> | 🔍 | 🔍 |
Вектор | Сложность | < th>АутентификацияКонфиденциальность | Целостность | Доступность | |
---|---|---|---|---|---|
разблокировать | разблокировать | разблокировать | разблокировать | разблокировать | разблокировать |
разблокировать | разблокировать | разблокировать | разблокировать | разблокировать | разблокировать |
разблокировать | разблокировать | разблокировать | разблокировать | разблокировать | разблокировать |
0-Day | разблокировать | разблокировать | разблокировать | разблокировать td> |
---|---|---|---|---|
Сегодня | разблокировать | разблокировать | разблокировать | разблокировать | < /tr>таблица>