Jak przechwycić wszystkie przychodzące pakiety do NIC, nawet te pakiety nie należą do mnie

13

AFAIK, karta sieciowa odbiera wszystkie pakiety z drutu w sieci lokalnej, ale odrzuca te pakiety, których adres docelowy nie jest równy jego ip.

Chcę opracować aplikację, która monitoruje korzystanie z Internetu przez użytkowników. Każdy użytkownik ma stały adres IP.

Ja i kilka innych osób jesteśmy podłączeni do 8-portowego niezarządzanego przełącznika pulpitu DES-108 Fast Ethernet

Jak wspomniano wcześniej, chcę przechwytywać wszystkie ruchy od wszystkich użytkowników, a nie tylko te pakiety, które należą do mnie.

Jak powinienem zmusić moją kartę sieciową lub inne komponenty do odbierania wszystkich pakietów?

m.r226
źródło
1
Kup tani i zarządzany przełącznik za około 30 € i włącz dublowanie portów na łączu do bramy.
Max Ried

Odpowiedzi:

27

AFAIK, karta sieciowa odbiera wszystkie pakiety z drutu w sieci lokalnej, ale odrzuca te pakiety, których adres docelowy nie jest równy jego ip.

Korekta: odrzuca te pakiety, których docelowy adres MAC nie jest równy jego adresowi MAC (lub multiemisji lub jakimkolwiek dodatkowym adresom w filtrze.

Narzędzia do przechwytywania pakietów mogą w trywialny sposób wprowadzić urządzenie sieciowe w tryb promiscuous, co oznacza, że ​​powyższe sprawdzenie jest pomijane i urządzenie akceptuje wszystko, co otrzymuje. W rzeczywistości jest to zazwyczaj ustawienie domyślne: za pomocą tcpdumpnależy określić -popcję, aby tego nie robić.

Ważniejszą kwestią jest to, czy pakiety, które Cię interesują, są w ogóle przenoszone przewodem do portu wąchania. Ponieważ używasz niezarządzanego przełącznika Ethernet, prawie na pewno nie są. Przełącznik decyduje się na wycinanie pakietów, które nie należą do ciebie z twojego portu, zanim urządzenie sieciowe będzie mogło je zobaczyć.

Aby to zrobić, musisz podłączyć się do specjalnie skonfigurowanego portu kopii lustrzanej lub monitorowania na zarządzanym przełączniku Ethernet.

Celada
źródło
1
Lub koncentrator Ethernet ... jeśli możesz znaleźć jeden rdzewiejący na strychu :) Wątpię jednak, czy są jakieś dla 1000Base-T, Wikipedia twierdzi, że huby gigabitowe obsługują tylko łącza półdupleksowe i są już przestarzałe.
chx
1
@chx, wszystkie prawdziwe huby obsługiwały tylko półdupleks. Osobiście nigdy nie widziałem 1000Base-T.
Celada,
Uważam, że miało to związek z powolnym wprowadzaniem Gigabit Ethernet - chociaż standard 802.3ab został wprowadzony w 1999 r., Wdrażanie było bardzo powolne do 2003/2004, kiedy Intel po raz pierwszy wypuścił chipset 875P z dedykowaną magistralą CSA dla Gigabit Ethernet, a następnie w 2004 r. PCI Express przejęło wreszcie przepustowość wystarczającą do Gigabit Ethernet. Do tego czasu przełączniki były wystarczająco tanie.
chx
Przełącznik Ethernet nie zawsze emituje ramki. Ma własną tablicę przełączania (zawiera mapę portu przełącznika i adresu MAC) do emisji pojedynczej ramki. Jeśli tabela nie ma wpisu dla MAC w ramce, to rozgłasza / zalewa ramkę. Twój pulpit nigdy nie otrzyma innych ramek. Podobnie jak w odpowiedzi, musisz użyć specjalnego przełącznika do przechwytywania wszystkich ramek, które docierają do przełącznika.
Valarpirai
8

Na początku mówi się o koncentratorach ethernetowych (nie przełącznikach), wysłane pakiety są dostępne dla wszystkich hostów w podsieci, ale hosty, które nie są zamierzonymi adresatami, powinny ignorować.

Oczywiście nasycenie podsieci nie zajęło dużo czasu, więc narodziła się technologia przełączania, aby rozwiązać problemy, a jedną z rzeczy, które zrobili, było przełączenie sieci tylko trasujących pakiety przeznaczone dla tego hosta do tego portu (plus ruch transmisji rozgłoszeniowej ).

To komplikuje monitorowanie sieci / wąchanie, ponieważ możesz wąchać tylko pakiety przeznaczone dla twojego hosta. Z punktu widzenia bezpieczeństwa było to uważane za dobre, ale z punktu widzenia monitorowania sieci nie jest tak dobre. Aby monitorowanie sieci działało, dostawcy wdrażają funkcję o nazwie dublowanie portów. Należy to skonfigurować na przełączniku sieci, a poniższy link powinien wskazywać właściwy kierunek dla produktów D-link. Znajdziesz go gdzieś w oprogramowaniu do zarządzania przełącznikami lub w interfejsie administratora. Jeśli nie znajdziesz tych funkcji, funkcja może nie być zapewniona w tym konkretnym urządzeniu.

http://www.dlink.com/uk/en/support/faq/switches/layer-2-gigabit/dgs-series/es_dgs_1210_como_monitorear_trafico_de_un_puerto_port_mirroring

Thomas Carlisle
źródło
2

Najpierw musisz przełączyć NIC na tryb rozwiązły. Załóżmy, że twój interfejs NIC to eth0.

root@linux#ifconfig eth0 promesc

Jeśli jesteś w sieci przełączników, wąchanie zostanie zredukowane do domeny kolizji połączonej z portem przełącznika. Możesz uruchomić, macofaby pokonać tabelę przekazywania przełącznika.

root@linux#macof -i eth0

Następnie możesz użyć wiresharklub, tcpdumpaby przechwycić cały ruch.

root@linux#tcpdump -i eth0 -w outputfile

Jeśli nie jesteś w sieci komutowanej, po prostu włącz tryb rozwiązany i użyj go tcpdump.

Ahmed chiboub
źródło
1
tcpdumpwłączy tryb rozwiązany dla Ciebie. Nie musisz tego robić (i pamiętaj, aby go cofnąć po zakończeniu) ręcznie.
Celada,
0

Wymyślasz koło na nowo.

Zakładając, że masz prostą sieć z klientami łączącymi się z przełącznikami, z domyślną bramą do Internetu, wystarczy monitorować tylko na tej domyślnej bramie. Będzie to punkt dławikowy pokazujący cały ruch między klientem sieci LAN a Internetem.

Zakładam, że ruch LAN między klientem LAN nie jest interesujący, ponieważ przy wszystkich adresach IP w tej samej podsieci IP ruch lokalny nie dotyka bramy domyślnej.

Jeśli naprawdę chcesz zobaczyć cały ruch, każdy użytkownik musi znajdować się we własnej sieci IP, a ruch do innych sieci odbywa się za pośrednictwem domyślnej bramy. Możesz przydzielić / 28 każdej osobie, a ona może mieć 14 adresów IP dla siebie.

Twój przeciętny domowy router nie poradzi sobie z tym zbyt wiele, musisz zbadać dedykowaną dystrybucję zapory ogniowej. Osobiście pfsense będzie moim celem, ale istnieje wiele opcji.

Criggie
źródło