Копирование файлов в режиме ядра и обнаружение сценариев копирования файлов

В этой статье описываются функции копирования файлов в режиме доверенного ядра, представленные в Windows 11 версии 22H2. Эта функция позволяет фильтрам легко обнаруживать сценарии копирования. Это полезно для антивирусных фильтров (AVS), позволяя им определить, могут ли они отложить или полностью пропустить сканирование исходных и целевых файлов во время копирования.

Чтобы убедиться, что операции чтения и записи в режиме ядра безопасно помечены как часть операции копирования, были сделаны следующие обновления:

  • Добавлен флаг FILE_CONTAINS_EXTENDED_CREATE_INFORMATION и структура EXTENDED_CREATE_INFORMATION. Этот флаг и структура используются для сигнала о намерении копирования во время создания с помощью NtCreateFile. Структура EXTENDED_CREATE_INFORMATION выступает в качестве оболочки для существующего параметра EaBuffer NtCreateFile.

    При указании флага FILE_CONTAINS_EXTENDED_CREATE_INFORMATION диспетчер ввода-вывода интерпретирует параметры EaBuffer и EaLength как структуру EXTENDED_CREATE_INFORMATION . Затем диспетчер ввода-вывода анализирует поля этой структуры, как если бы они были предоставлены непосредственно в NtCreateFile. Базовые фильтры не изменяются в поведении расширенных атрибутов.

  • Добавлены фильтры для фильтров, чтобы проверить, был ли файл открыт для намерения копирования.

  • NtCopyFileChunk добавлен для копирования в режиме ядра.

Все операции чтения и записи из NtCopyFileChunk :

  • Режим запрашивателя IRP, заданный для KernelMode
  • Расширение IRP типа IopCopyInformationType.

Фильтры не имеют доступа к расширениям IRP напрямую, но могут проверять наличие этого расширения и получать сведения о копировании из данных обратного вызова путем вызова FltGetCopyInformationFromCallbackData.