Mam zamiar użyć Wireshark do monitorowania ruchu na moim komputerze z systemem Windows . Pracując nad tym, zastanawiałem się, jak Wireshark zdoła złapać pakiety sieciowe niskiego poziomu, zanim zrobi to Windows .
Przede wszystkim interfejs sieciowy mojej karty sieciowej odbiera pakiet. Następnie karta sieciowa wykonuje kilka wstępnych kontroli (CRC, prawy adres MAC, ... itd.). Zakładając, że weryfikacja się powiodła, karta sieciowa przekazuje pakiet. Ale jak i gdzie?
Rozumiem, że sterowniki to klej między kartą sieciową a systemem operacyjnym lub inną aplikacją. Sądzę też, że istnieje osobny sterownik dla Windows i Wireshark ( WinPcap ?). W przeciwnym razie Wireshark nie byłby w stanie odbierać ramek Ethernet . Czy istnieją jednocześnie dwa lub więcej sterowników karty sieciowej? Skąd NIC wie, którego użyć?
źródło
Odpowiedzi:
Model we / wy w systemie Windows opiera się na stosie składników. Dane muszą przepływać przez różne składniki tego stosu, który istnieje między fizyczną kartą sieciową a aplikacją, która je wykorzysta. Czasami te różne składniki sprawdzają dane (na przykład pakiet TCP), gdy przepływają one przez stos, i na podstawie zawartości tego pakietu dane mogą zostać zmienione lub pakiet może zostać całkowicie odrzucony.
Jest to uproszczony model „stosu sieciowego”, przez który przepływa pakiet, aby dostać się z aplikacji do drutu i odwrotnie.
Jednym z najciekawszych elementów pokazanych na powyższym zrzucie ekranu jest interfejs API objaśnienia WFP (Windows Filtering Platform). Jeśli to przybliżymy, może wyglądać mniej więcej tak:
Deweloperzy mogą swobodnie podłączać własne moduły do odpowiednich miejsc na tym stosie. Na przykład produkty antywirusowe zwykle używają „sterownika filtra”, który podłącza się do tego modelu i sprawdza ruch w sieci lub zapewnia funkcje zapory. Usługa Zapory systemu Windows oczywiście również pasuje do tego modelu.
Jeśli chcesz napisać aplikację, która rejestruje ruch sieciowy, taką jak Wireshark, odpowiednim sposobem na to byłoby użycie własnego sterownika i włożenie go do stosu tak nisko, jak to możliwe, aby mógł wykryć pakiety sieciowe zanim moduł zapory sieciowej będzie mógł je upuścić.
W proces ten zaangażowanych jest wielu „kierowców”. Wiele różnych typów sterowników. Również inne formy wejścia / wyjścia w systemie, takie jak odczyt i zapis na dysku twardym, są bardzo podobne.
Jeszcze jedna uwaga - objaśnienia WFP to nie jedyny sposób na wejście w stos sieciowy. Przykładowo WinPCap łączy się z NDIS bezpośrednio ze sterownikiem, co oznacza, że ma on możliwość przechwycenia ruchu, zanim w ogóle nastąpi filtrowanie.
Sterowniki NDIS
WinPCap
Bibliografia:
Stos TCP / IP nowej generacji w systemie Vista +
Architektura platformy filtrowania systemu Windows
źródło
Jak mówi odpowiedź Ryana Riesa:
i to jest opis, jak to działa w dokumentacji WinPcap .
źródło