内核模式文件复制和检测复制文件方案

本文介绍 Windows 11 版本 22H2 中引入的可信内核模式文件复制功能。 此功能可使筛选器轻松检测复制方案。 这对防病毒筛选器 (AV) 非常有用,可以让它们确定在复制过程中是否可以推迟或完全跳过对源文件和目标文件的扫描。

为确保将内核模式读写操作安全地标记为复制操作的一部分,进行了以下更新:

  • 添加了 FILE_CONTAINS_EXTENDED_CREATE_INFORMATION 标志和 EXTENDED_CREATE_INFORMATION 结构。 此标志和结构用于在创建时通过 NtCreateFile 发出复制意图信号。 EXTENDED_CREATE_INFORMATION 结构是 NtCreateFile 现有 EaBuffer 参数的封装程序。

    在指定 FILE_CONTAINS_EXTENDED_CREATE_INFORMATION 标志时,I/O 管理器会将 EaBufferEaLength 参数解释为 EXTENDED_CREATE_INFORMATION 结构。 然后,I/O 管理器会解析该结构的字段,就像直接向 NtCreateFile 提供字段一样。 基础筛选器的扩展属性行为不会发生变化。

  • 为筛选器添加了 IoCheckFileObjectOpenedAsCopySourceIoCheckFileObjectOpenedAsCopyDestination,以检查文件是否已为复制意图打开。

  • 添加了 NtCopyFileChunk,用于执行内核模式复制。

来自 NtCopyFileChunk 的所有读写操作均具有:

  • 设置为 KernelMode 的 IRP 的请求者模式
  • IopCopyInformationType 类型的 IRP 扩展。

筛选器无法直接访问 IRP 扩展,但可以通过调用 FltGetCopyInformationFromCallbackData 来检查是否存在该扩展,并从回调数据中获取复制信息。