Comprendere la rete di Windows_WFP
Categories:
- Comprendere la rete di Windows_WFP
Comprendere la rete di Windows
- Comprendere la rete di Windows
WFP
Spiegazione dei termini
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.
Il callback attivato dalla coda del Dispatcher viene attivato il prima possibile, senza dover attendere che la coda sia piena, soddisfacendo così i requisiti di tempo reale. Quando il callback dell’utente è lento, i pacchetti bloccati vengono inseriti il più possibile nella coda successiva, con un limite massimo di 256 per la coda. Ulteriori pacchetti bloccati vengono memorizzati nella cache dal sistema; prove approssimative indicano una capacità di cache di 16500, sebbene la capacità di cache del sistema possa variare a seconda delle prestazioni e della configurazione della macchina. Quando il callback dell’utente elabora i pacchetti, esistono due entità di pacchetto: Il pacchetto del kernel, che viene rilasciato tutto insieme dopo che il callback ha elaborato la coda. Pertanto, quando il callback è lento, una singola esecuzione del callback può bloccare al massimo la capacità di cache di 256 pacchetti del sistema. La copia nel callback, che viene rilasciata immediatamente dopo l’elaborazione di un singolo pacchetto.
L’assemblaggio tramite copia dei pacchetti in FwppNetEvent1Callback non modifica il pacchetto originale e non ha alcun impatto sul business.
Le sottoscrizioni possono utilizzare filtri modello per ridurre il numero di pacchetti da elaborare:
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.
Non è possibile utilizzare lo stesso filtro. La relazione tra tutti i filtri è “AND”, quindi devono essere tutti soddisfatti. La documentazione Microsoft mostra che sono supportati otto tipi di filtri, ma in realtà ne sono supportati di più.
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’enumerazione delle sottoscrizioni già registrate nel sistema ha rivelato che esistono già due sottoscrizioni. Esaminando il GUID della loro sessionKey non è possibile confermare da chi siano state registrate, ma l’analisi rivela che le due sottoscrizioni implementano rispettivamente le seguenti funzionalità:
Sottoscritto tutti i pacchetti di tipo FWPM_NET_EVENT_TYPE_CLASSIFY_DROP, contando tutti i pacchetti eliminati. Sottoscritto tutti i pacchetti di tipo FWPM_NET_EVENT_TYPE_CLASSIFY_ALLOW, che possono essere utilizzati per le statistiche del traffico. Il filtro di condizione utilizzato da queste due sottoscrizioni è FWPM_CONDITION_NET_EVENT_TYPE(206e9996-490e-40cf-b831-b38641eb6fcb), il che dimostra che i filtri che possono essere implementati sono più degli otto menzionati nella documentazione Microsoft.
Ulteriori indagini hanno rivelato che l’interfaccia in modalità utente può catturare solo gli eventi di drop, mentre gli eventi non drop devono essere acquisiti utilizzando la modalità kernel. Pertanto, la micro-segmentazione non può utilizzare FWPM_CONDITION_NET_EVENT_TYPE per acquisire eventi.