Comprendre le réseau Windows_WFP

  • Comprendre le réseau Windows_WFP

Comprendre le réseau Windows

  • Comprendre le réseau Windows

WFP

Explication des termes

https://learn.microsoft.com/en-us/windows/win32/fwp/object-model https://learn.microsoft.com/en-us/windows/win32/fwp/basic-operation https://learn.microsoft.com/en-us/windows-hardware/drivers/network

callout: A callout provides functionality that extends the capabilities of the Windows Filtering Platform. A callout consists of a set of callout functions and a GUID key that uniquely identifies the callout. callout driver: A callout driver is a driver that registers callouts with the Windows Filtering Platform. A callout driver is a type of filter driver. callout function: A callout function is a function that is called by the Windows Filtering Platform to perform a specific task. A callout function is associated with a callout. filter: A filter is a set of functions that are called by the Windows Filtering Platform to perform filtering operations. A filter consists of a set of filter functions and a GUID key that uniquely identifies the filter. filter engine: The filter engine is the component of the Windows Filtering Platform that performs filtering operations. The filter engine is responsible for calling the filter functions that are registered with the Windows Filtering Platform. filter layer: A filter layer is a set of functions that are called by the Windows Filtering Platform to perform filtering operations. A filter layer consists of a set of filter layer functions and a GUID key that uniquely identifies the filter layer.

Le rappel déclenché par la file d’attente du Dispatcher est de forme immédiate ; il n’est pas nécessaire d’attendre que la file d’attente soit pleine, ce qui permet de satisfaire les exigences de temps réel. Lorsque le rappel utilisateur est lent, les paquets bloqués sont insérés dans la file d’attente suivante autant que possible, avec une limite supérieure de 256 pour la file. Les paquets bloqués supplémentaires sont mis en cache par le système ; un test approximatif indique une capacité de cache de 16 500, bien que la capacité de cache du système puisse varier en fonction des performances et de la configuration de la machine. Lorsque le rappel utilisateur traite les paquets, il existe deux entités de paquet : Le paquet noyau, qui est libéré en une seule fois après que le rappel a fini de traiter la file d’attente. Par conséquent, lorsque le rappel est lent, une seule exécution de rappel verrouille au plus la capacité de cache de 256 paquets du système. La copie dans le rappel, qui est libérée immédiatement après le traitement d’un paquet individuel.

La copie et l’assemblage des paquets dans FwppNetEvent1Callback n’opèrent pas sur le paquet original et n’ont donc aucun impact sur le service.

Les abonnements peuvent utiliser des filtres modèles pour réduire le nombre de paquets à traiter :

https://learn.microsoft.com/en-us/windows/win32/api/fwpmtypes/ns-fwpmtypes-fwpm_net_event_enum_template0

filterCondition

An array of FWPM_FILTER_CONDITION0 structures that contain distinct filter conditions (duplicated filter conditions will generate an error). All conditions must be true for the action to be performed. In other words, the conditions are AND’ed together. If no conditions are specified, the action is always performed.

Impossible d’utiliser le même filtre. La relation entre tous les filtres est “ET”, ils doivent tous être satisfaits. La documentation Microsoft indique qu’il existe huit types de filtres pris en charge, mais en réalité, les filtres pris en charge sont plus nombreux.

FWPM_CONDITION_IP_PROTOCOL

The IP protocol number, as specified in RFC 1700. FWPM_CONDITION_IP_LOCAL_ADDRESS

The local IP address. FWPM_CONDITION_IP_REMOTE_ADDRESS

The remote IP address. FWPM_CONDITION_IP_LOCAL_PORT

The local transport protocol port number. For ICMP, the message type. FWPM_CONDITION_IP_REMOTE_PORT

The remote transport protocol port number. For ICMP, the message code. FWPM_CONDITION_SCOPE_ID

The interface IPv6 scope identifier. Reserved for internal use. FWPM_CONDITION_ALE_APP_ID

The full path of the application. FWPM_CONDITION_ALE_USER_ID

The identification of the local user. L’énumération des abonnements enregistrés dans le système a révélé qu’il en existait déjà deux. L’examen de leur GUID sessionKey n’a pas permis de confirmer par qui ils ont été enregistrés. L’analyse a révélé que ces deux abonnements implémentaient chacun les fonctions suivantes :

S’est abonné à tous les paquets de type FWPM_NET_EVENT_TYPE_CLASSIFY_DROP, en comptabilisant tous les paquets supprimés. S’est abonné à tous les paquets de type FWPM_NET_EVENT_TYPE_CLASSIFY_ALLOW, ce qui peut être utilisé pour effectuer des statistiques de trafic. Le filtre de condition utilisé par ces deux abonnements est FWPM_CONDITION_NET_EVENT_TYPE (206e9996-490e-40cf-b831-b38641eb6fcb), ce qui indique que les filtres permettant de réaliser du filtrage ne se limitent pas aux 8 mentionnés dans la documentation Microsoft.

Des recherches supplémentaires ont révélé que l’interface d’appel en mode utilisateur ne peut capturer que les événements de suppression (drop) ; les événements autres que drop doivent être obtenus en mode noyau. Par conséquent, la micro-segmentation ne peut pas utiliser FWPM_CONDITION_NET_EVENT_TYPE pour récupérer les événements.