Verständnis von Windows-Netzwerken_WFP

  • Verständnis von Windows-Netzwerken_WFP

Verständnis von Windows-Netzwerken

  • Verständnis von Windows-Netzwerken

WFP

Begriffserklärungen

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: Eine Callout stellt Funktionalität bereit, die die Fähigkeiten der Windows Filtering Platform erweitert. Eine Callout besteht aus einem Satz von Callout-Funktionen und einem GUID-Schlüssel, der die Callout eindeutig identifiziert. Callout-Treiber: Ein Callout-Treiber ist ein Treiber, der Callouts bei der Windows Filtering Platform registriert. Ein Callout-Treiber ist eine Art Filtertreiber. Callout-Funktion: Eine Callout-Funktion ist eine Funktion, die von der Windows Filtering Platform aufgerufen wird, um eine bestimmte Aufgabe auszuführen. Eine Callout-Funktion ist einer Callout zugeordnet. Filter: Ein Filter ist ein Satz von Funktionen, die von der Windows Filtering Platform aufgerufen werden, um Filteroperationen durchzuführen. Ein Filter besteht aus einem Satz von Filterfunktionen und einem GUID-Schlüssel, der den Filter eindeutig identifiziert. Filter-Engine: Die Filter-Engine ist die Komponente der Windows Filtering Platform, die Filteroperationen durchführt. Die Filter-Engine ist dafür verantwortlich, die Filterfunktionen aufzurufen, die bei der Windows Filtering Platform registriert sind. Filterebene: Eine Filterebene ist ein Satz von Funktionen, die von der Windows Filtering Platform aufgerufen werden, um Filteroperationen durchzuführen. Eine Filterebene besteht aus einem Satz von Filterebenenfunktionen und einem GUID-Schlüssel, der die Filterebene eindeutig identifiziert.

Die Dispatcher-Warteschlange löst Callbacks so schnell wie möglich aus, ohne auf das Füllen der Warteschlange zu warten, wodurch Echtzeitanforderungen erfüllt werden können. Wenn die Benutzer-Callbacks langsam sind, werden blockierte Pakete so weit wie möglich in die nächste Warteschlange eingefügt. Die Warteschlangenkapazität beträgt 256. Weitere blockierte Pakete werden vom System zwischengespeichert. Eine grobe Testung ergab eine Pufferkapazität von 16500; die Systempufferkapazität kann je nach Maschinenleistung und Konfiguration variieren. Wenn Benutzer-Callbacks Pakete verarbeiten, existieren zwei Paketinstanzen: Kernelpaket, das nach Abschluss der Warteschlangenverarbeitung freigegeben wird. Daher blockiert ein langsamer Callback während einer einzelnen Callback-Ausführung maximal 256 Paketpuffer des Systems. Die Kopie im Callback wird sofort nach der Verarbeitung eines einzelnen Pakets freigegeben.

In FwppNetEvent1Callback werden Pakete kopiert und zusammengestellt, ohne das ursprüngliche Paket zu manipulieren, was keinen Einfluss auf den Betrieb hat.

Abonnements können Vorlagenfilter verwenden, um die Anzahl der zu verarbeitenden Pakete zu reduzieren:

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

filterCondition

Ein Array von FWPM_FILTER_CONDITION0-Strukturen, die unterschiedliche Filterbedingungen enthalten (doppelte Filterbedingungen erzeugen einen Fehler). Alle Bedingungen müssen wahr sein, damit die Aktion ausgeführt wird. Mit anderen Worten, die Bedingungen werden UND-verknüpft. Wenn keine Bedingungen angegeben sind, wird die Aktion immer ausgeführt.

Der gleiche Filter kann nicht verwendet werden. Die Beziehung zwischen allen Filtern ist ein logisches UND; alle Bedingungen müssen erfüllt sein. Die Microsoft-Dokumentation zeigt, dass acht Filter unterstützt werden, tatsächlich werden jedoch mehr Filter unterstützt.

FWPM_CONDITION_IP_PROTOCOL

Die IP-Protokollnummer, wie in RFC 1700 angegeben. FWPM_CONDITION_IP_LOCAL_ADDRESS

Die lokale IP-Adresse. FWPM_CONDITION_IP_REMOTE_ADDRESS

Die entfernte IP-Adresse. FWPM_CONDITION_IP_LOCAL_PORT

Die lokale Transportprotokoll-Portnummer. Für ICMP der Nachrichtentyp. FWPM_CONDITION_IP_REMOTE_PORT

Die entfernte Transportprotokoll-Portnummer. Für ICMP der Nachrichtencode. FWPM_CONDITION_SCOPE_ID

Die Schnittstellen-IPv6-Bereichskennung. Für internen Gebrauch reserviert. FWPM_CONDITION_ALE_APP_ID

Der vollständige Pfad der Anwendung. FWPM_CONDITION_ALE_USER_ID

Die Identifikation des lokalen Benutzers. Die Untersuchung der im System registrierten Abonnements zeigte, dass bereits zwei Abonnements existieren. Die Analyse ihrer sessionKey GUIDs konnte nicht bestätigen, von wem sie registriert wurden. Die Analyse ergab, dass die beiden Abonnements jeweils folgende Funktionen implementieren:

Alle FWPM_NET_EVENT_TYPE_CLASSIFY_DROP-Datenpakete werden abonniert und alle verworfenen Pakete werden gezählt. Alle FWPM_NET_EVENT_TYPE_CLASSIFY_ALLOW-Datenpakete werden abonniert, was zur Durchführung von Datenverkehrsstatistiken verwendet werden kann. Diese beiden Abonnements verwenden den Condition-Filter FWPM_CONDITION_NET_EVENT_TYPE (206e9996-490e-40cf-b831-b38641eb6fcb), was zeigt, dass mehr Filter zur Durchführung von Filterung zur Verfügung stehen als in der Microsoft-Dokumentation erwähnte 8.

Weitere Untersuchungen ergaben, dass Benutzeroberflächen-APIs nur Drop-Ereignisse erfassen können. Nicht-Drop-Ereignisse müssen im Kernel-Modus abgerufen werden. Daher kann Microsegmentierung nicht FWPM_CONDITION_NET_EVENT_TYPE zur Erfassung von Ereignissen verwenden.