Copie de fichiers en mode noyau et détection de scénarios de fichier de copie

La possibilité d’effectuer une copie de fichiers approuvés en mode noyau a été introduite dans Windows 11 version 22H2, y compris la possibilité pour les filtres de détecter facilement les scénarios de copie. Cette fonctionnalité est particulièrement utile pour les filtres antivirus (AV), ce qui leur permet de déterminer s’ils peuvent différer ou ignorer entièrement l’analyse des fichiers source et de destination pendant la copie.

Pour vous assurer que les opérations de lecture et d’écriture en mode noyau sont marquées en toute sécurité dans le cadre d’une opération de copie :

  • L’indicateur FILE_CONTAINS_EXTENDED_CREATE_INFORMATION et la structure EXTENDED_CREATE_INFORMATION ont été ajoutés pour signaler l’intention de copie au moment de la création via NtCreateFile. La structure EXTENDED_CREATE_INFORMATION agit comme un wrapper autour du paramètre EaBuffer existant de NtCreateFile.

    Lorsque l’indicateur FILE_CONTAINS_EXTENDED_CREATE_INFORMATION est spécifié, le gestionnaire d’E/S interprète les paramètres EaBuffer et EaLength comme une structure EXTENDED_CREATE_INFORMATION , et analyse les champs de cette structure comme s’ils étaient fournis directement à NtCreateFile. Les filtres sous-jacents ne subissent aucune modification du comportement des attributs étendus.

  • IoCheckFileObjectOpenedAsCopySource et IoCheckFileObjectOpenedAsCopyDestination ont été ajoutés pour permettre aux filtres de case activée si un fichier a été ouvert pour une intention de copie.

  • NtCopyFileChunk a été ajouté pour effectuer la copie en mode noyau.

Toutes les opérations de lecture et d’écriture de NtCopyFileChunk auront :

  • Mode demandeur de l’IRP défini sur KernelMode
  • Extension IRP de type IopCopyInformationType.

Les filtres n’ont pas accès directement aux extensions IRP, mais peuvent case activée la présence de cette extension et obtenir des informations de copie à partir des données de rappel en appelant FltGetCopyInformationFromCallbackData.