Zrozumienie sieci Windows_WFP

  • Zrozumienie sieci Windows_WFP

Zrozumienie sieci Windows

  • Zrozumienie sieci Windows

WFP

Wyjaśnienie terminów

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: Callout zapewnia funkcjonalność, która rozszerza możliwości Windows Filtering Platform. Callout składa się z zestawu funkcji callout i klucza GUID, który jednoznacznie identyfikuje callout. callout driver: Sterownik callout to sterownik, który rejestruje callouty w Windows Filtering Platform. Sterownik callout to rodzaj sterownika filtrującego. callout function: Funkcja callout to funkcja wywoływana przez Windows Filtering Platform w celu wykonania określonego zadania. Funkcja callout jest skojarzona z callout. filter: Filtr to zestaw funkcji wywoływanych przez Windows Filtering Platform w celu wykonania operacji filtrowania. Filtr składa się z zestawu funkcji filtru i klucza GUID, który jednoznacznie identyfikuje filtr. filter engine: Silnik filtru to komponent Windows Filtering Platform, który wykonuje operacje filtrowania. Silnik filtru odpowiada za wywoływanie funkcji filtru zarejestrowanych w Windows Filtering Platform. filter layer: Warstwa filtru to zestaw funkcji wywoływanych przez Windows Filtering Platform w celu wykonania operacji filtrowania. Warstwa filtru składa się z zestawu funkcji warstwy filtru i klucza GUID, który jednoznacznie identyfikuje warstwę filtru.

Kolejka dyspozytora wyzwala wywołania zwrotne w trybie jak najszybszym, nie czekając na pełne wypełnienie kolejki, co pozwala spełnić wymagania dotyczące czasu rzeczywistego. Gdy wywołania zwrotne użytkownika są wolne, blokowane pakiety są jak najbardziej wstawiane do następnej kolejki, limit kolejki wynosi 256. Więcej blokowanych pakietów jest buforowanych przez system, szacunkowy test zdolności buforowania to 16500, zdolność buforowania systemu może się różnić w zależności od wydajności i konfiguracji maszyny. Podczas przetwarzania pakietów w wywołaniu zwrotnym istnieją dwie instancje pakietu: Pakiet jądra, który jest zwalniany po przetworzeniu całej kolejki. Dlatego też, gdy wywołania zwrotne są wolne, pojedyncze wywołanie zwrotne może zablokować systemowi do 256 pakietów. Kopia w wywołaniu zwrotnym, która jest natychmiast zwalniana po przetworzeniu pojedynczego pakietu.

W FwppNetEvent1Callback pakiet jest kopiowany i składany, nie operuje się na oryginalnym pakiecie, co nie ma wpływu na działalność.

Subskrypcje mogą korzystać z szablonów filtrów, aby zmniejszyć liczbę pakietów do przetworzenia:

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

filterCondition

Tablica struktur FWPM_FILTER_CONDITION0 zawierających odrębne warunki filtru (zduplikowane warunki filtru wygenerują błąd). Wszystkie warunki muszą być prawdziwe, aby wykonać akcję. Innymi słowy, warunki są połączone operatorem AND. Jeśli nie zostaną określone żadne warunki, akcja jest zawsze wykonywana.

Nie można używać identycznych filtrów Wszystkie filtry są ze sobą powiązane przez “i”, muszą być spełnione wszystkie Dokumentacja Microsoft wskazuje, że obsługuje 8 rodzajów filtrów, ale w rzeczywistości obsługiwanych jest więcej filtrów.

FWPM_CONDITION_IP_PROTOCOL

Numer protokołu IP, zgodnie z RFC 1700. FWPM_CONDITION_IP_LOCAL_ADDRESS

Lokalny adres IP. FWPM_CONDITION_IP_REMOTE_ADDRESS

Zdalny adres IP. FWPM_CONDITION_IP_LOCAL_PORT

Lokalny numer portu protokołu transportowego. Dla ICMP, typ komunikatu. FWPM_CONDITION_IP_REMOTE_PORT

Zdalny numer portu protokołu transportowego. Dla ICMP, kod komunikatu. FWPM_CONDITION_SCOPE_ID

Identyfikator zakresu interfejsu IPv6. Zarezerwowane do użytku wewnętrznego. FWPM_CONDITION_ALE_APP_ID

Pełna ścieżka aplikacji. FWPM_CONDITION_ALE_USER_ID

Identyfikacja lokalnego użytkownika. Wyliczenie subskrypcji zarejestrowanych w systemie wykazało już dwa subskrypcje, sprawdzanie ich klucza sesji GUID nie pozwoliło potwierdzić, kto je zarejestrował, analiza tych dwóch subskrypcji wykazała, że każda z nich zaimplementowała następujące funkcje:

Zasubskrybowano wszystkie pakiety FWPM_NET_EVENT_TYPE_CLASSIFY_DROP, zliczono wszystkie odrzucone pakiety. Zasubskrybowano wszystkie pakiety FWPM_NET_EVENT_TYPE_CLASSIFY_ALLOW, można wykorzystać do statystyk ruchu. Oba subskrypcje wykorzystują condition filter FWPM_CONDITION_NET_EVENT_TYPE(206e9996-490e-40cf-b831-b38641eb6fcb), co oznacza, że filtrów, które można zaimplementować, jest więcej niż tylko 8 wymienionych w dokumentacji Microsoft.

Więcej badań wykazało, że interfejs użytkownika może przechwytywać tylko zdarzenia drop, zdarzenia niedrop wymagają trybu jądra, dlatego mikroizolacja nie może używać FWPM_CONDITION_NET_EVENT_TYPE do uzyskania zdarzeń.