Jak mogę sprawdzić, czy w mojej sieci jest nieuczciwy serwer DHCP?

92

Jakie jest najlepsze podejście do ustalenia, czy mam nieuczciwy serwer DHCP w mojej sieci?

Zastanawiam się, jak większość administratorów podchodzi do tego rodzaju problemów. Znalazłem sondę DHCP podczas wyszukiwania i pomyślałem o wypróbowaniu jej. Czy ktoś miał z tym doświadczenie? (Chciałbym wiedzieć przed poświęceniem czasu na skompilowanie go i instalację).

Czy znasz jakieś przydatne narzędzia lub sprawdzone metody wyszukiwania fałszywych serwerów DHCP?

l0c0b0x
źródło
2
Narzędzie MS i bardzo prosty w użyciu! Wykrywanie fałszywych serwerów DHCP - RogueChecker.zip blogs.technet.com/b/teamdhcp/archive/2009/07/03/…
aa.malta
Znalazłem oficjalne odniesienie do twojego linku aa.malta na social.technet.microsoft.com/wiki/contents/articles/…, ale link nie działa już od 2016 roku. Pokazuje mi posty na blogu z 2009 roku, ale tylko zobacz posty z 6 lipca i 29 czerwca. Wydaje się, że nie ma postu z 3 lipca, jak wskazano w opublikowanym adresie URL linku. Wygląda na to, że stwardnienie rozsiane usunęło to, kto wie z jakiego powodu.
Daniel
Wygląda na to, że ten bezpośredni link (który znalazłem na stronie wordpress) działa, aby pobrać plik z Microsoft Server. Link działa od stycznia 2016. Ponieważ URL to Microsoft, czuję, że można mu ufać, ale nie daje
Daniel

Odpowiedzi:

54

Jedną z prostych metod jest po prostu uruchomienie sniffera, takiego jak tcpdump / wireshark na komputerze i wysłanie żądania DHCP. Jeśli widzisz inne oferty niż z prawdziwego serwera DHCP, oznacza to, że masz problem.

Zoredache
źródło
28
Pomaga w użyciu następującego filtru: „bootp.type == 2” (tylko do wyświetlania ofert DHCP i sprawdzania, czy jest odpowiedź z różnych / nieznanych źródeł)
l0c0b0x
4
Użyj programu takiego jak DHCP-Find ( softpedia.com/get/Network-Tools/Network-IP-Scanner/... ) w połączeniu z TCPDump / Wireshark, aby uruchomić odpowiedzi DHCP.
saluce
1
Czy możesz zaoferować bardziej szczegółowe rozwiązanie?
tarabyte
@tarabyte Nie jestem pewien, jakie rozwiązanie lub ulepszenia powinienem zaoferować. Myślę, że to pytanie ma całkiem dobre pokrycie z kilkunastu innych dobrych odpowiedzi? Moja ostatnia opcja to konfiguracja przełączników tak, aby blokowały DHCP, jak sugerował Jason Luther. Czy było coś konkretnego, co wymagało lepszego pokrycia?
Zoredache
2
Spodziewałem się więcej z sekwencji poleceń, które wykorzystują tcpdump, arpitp wyraźnych parametrów oraz wyjaśnienie tych parametrów.
tarabyte
22

Aby podsumować i dodać do niektórych innych odpowiedzi:

Tymczasowo wyłącz produkcyjny serwer DHCP i sprawdź, czy inne serwery zareagują.

Możesz uzyskać adres IP serwera, uruchamiając go ipconfig /allna komputerze z systemem Windows, a następnie możesz uzyskać adres MAC, szukając tego adresu IP za pomocą arp -a.

Na komputerze Mac uruchom ipconfig getpacket en0(lub en1). Zobacz http://www.macosxhints.com/article.php?story=20060124152826491 .

Informacje o serwerze DHCP są zwykle w / var / log / messages. sudo grep -i dhcp /var/log/messages*

Oczywiście wyłączenie produkcyjnego serwera DHCP może nie być dobrym rozwiązaniem.

Użyj narzędzia, które specjalnie szuka nieuczciwych serwerów DHCP

Zobacz http://en.wikipedia.org/wiki/Rogue_DHCP, aby uzyskać listę narzędzi (wiele z nich wymieniono w innych odpowiedziach).

Skonfiguruj przełączniki, aby blokować oferty DHCP

Większość zarządzanych przełączników można skonfigurować w celu zapobiegania nieautoryzowanym serwerom DHCP:

Jason Luther
źródło
17

dhcpdump , który przyjmuje dane wejściowe z tcpdump i pokazuje tylko pakiety związane z DHCP. Pomógł mi znaleźć zrootowany Windows, udający fałszywego DHCP w naszej sieci LAN.

vartec
źródło
15

Podejścia Wireshark / DHCP explorer / DHCP Probe sprawdzają się w przypadku kontroli jednorazowej lub okresowej. Zalecam jednak zajrzenie do obsługi DHCP Snooping w twojej sieci. Ta funkcja zapewnia stałą ochronę przed nieuczciwymi serwerami DHCP w sieci i jest obsługiwana przez wielu różnych dostawców sprzętu.

Oto zestaw funkcji wskazany w dokumentach Cisco .

• Sprawdza poprawność komunikatów DHCP otrzymanych z niezaufanych źródeł i odfiltrowuje nieprawidłowe komunikaty.

• Ogranicza szybkość ruchu DHCP z zaufanych i niezaufanych źródeł.

• Tworzy i utrzymuje bazę danych powiązań szpiegujących DHCP, która zawiera informacje o niezaufanych hostach z dzierżawionymi adresami IP.

• Wykorzystuje bazę danych powiązań szpiegujących DHCP do sprawdzania poprawności kolejnych żądań od niezaufanych hostów.

Dave K.
źródło
10

dhcploc.exe to najszybszy i najwygodniejszy sposób w systemach Windows. Jest dostępny w Narzędziach wsparcia XP. Narzędzia pomocy technicznej znajdują się na każdym dysku XP / detalicznym XP, ale mogą, ale nie muszą, znajdować się na „dyskach odzyskiwania” dostarczanych przez niektórych producentów OEM. Możesz je również pobrać z MS.

To proste narzędzie wiersza poleceń. Uruchomieniu dhcploc {yourIPaddress} , a następnie naciśnij klawisz „d” do zrobienia fałszywego odkrycia. Jeśli pozostawisz go uruchomionym bez naciskania żadnych klawiszy, wyświetli każde żądanie DHCP i odpowie na nie. Naciśnij „q”, aby wyjść.

quux
źródło
Użyłem tego w połączeniu z zabijaniem poszczególnych portów przełączników, aby wyśledzić podstępny, nieuczciwy serwer, z którym mieliśmy do czynienia. Dobry towar!
DHayes,
1
Nadal możesz używać DHCPloc.exe w systemie Windows 7: 1. Pobierz „Narzędzia obsługi dodatku Service Pack 2 dla systemu Windows XP” z [tutaj] [1]. 2. Kliknij plik wykonywalny prawym przyciskiem myszy i wybierz Właściwości-> Zgodność, a następnie włącz Tryb zgodności i ustaw go na „Windows XP (Service Pack 3)”. 3. Zainstaluj jak zwykle. DHCPLoc.exe działa dobrze w mojej instalacji Win7 x64. [1]: microsoft.com/en-us/download/details.aspx?id=18546
pietruszka72
1
Właśnie zauważyłem, że możesz pobrać tylko plik wykonywalny z następującej lokalizacji i działa on dobrze pod Win 10 x64: gallery.technet.microsoft.com/DHCPLOC-Utility-34262d82
PeterJ
9

Scapy to oparte na Pythonie narzędzie do tworzenia pakietów, które jest dobre do takich zadań sortowania. Oto przykład, jak to zrobić dokładnie tutaj .

Kyle Brandt
źródło
2
Wow, uważam, że Scapy jest tak potężny po zagłębieniu się w niego przez kilka dni. To przewyższa kiepskie narzędzia, takie jak dhcpfind.exe i dhcploc.exe. Scapy 2.2 może działać w systemie Linux i Windows - próbowałem obu. Jedyną barierą jest to, że MUSISZ znać język programowania Python do pewnego stopnia, aby wykorzystać jego moc.
Jimm Chen
Link, który opublikowałeś jest uszkodzony
Jason S
@JasonS Cześć, zaktualizowałem link, ale zmiana oczekuje na recenzję ... Podczas oczekiwania można go znaleźć tutaj: bitbucket.org/secdev/scapy/wiki/doc/IdentifyingRogueDHCPServers
Huygens
7

Aby rozwinąć komentarz l0c0b0x o używaniu bootp.type == 2jako filtra. Filtr bootp.type jest dostępny tylko w Wireshark / tshark. Nie jest dostępny w tcpdump, w który kontekstowa lokalizacja jego komentarza skłoniła mnie do uwierzenia.

Tshark działa idealnie do tego.

Nasza sieć została podzielona na wiele domen rozgłoszeniowych, każda z własną sondą opartą na systemie Linux, z punktem obecności w „lokalnej” domenie rozgłoszeniowej i podsieci administracyjnej w taki czy inny sposób. Tshark w połączeniu z ClusterSSH pozwala mi łatwo wyszukiwać ruch DHCP lub (cokolwiek innego w tym zakresie) w dalszych rogach sieci.

Znajdziesz odpowiedzi DHCP za pomocą Linuxa:

# ifconfig ethX promisc
# tshark -i ethX -n port 68 -R 'bootp.type == 2'
Społeczność
źródło
Bardzo pomocny, spędziłem sporo czasu próbując dowiedzieć się, dlaczego tcpdump: syntax error. Nawet opublikowałem pytanie, twoja odpowiedź odblokowała mnie, dzięki! networkengineering.stackexchange.com/questions/39534/…
Elijah Lynn
1
Myślę też, że coś się zmieniło z -R <Read filter>. I dostać tshark: -R without -2 is deprecated. For single-pass filtering use -Y.. -Ydziała ładnie.
Elijah Lynn,
6

po ustaleniu, że w sieci istnieje nieuczciwy serwer dhcp, znalazłem najszybszy sposób, aby go rozwiązać ...

Wyślij wiadomość e-mail do całej firmy z informacją:

„który z was dodał router bezprzewodowy do sieci LAN, zabiłeś internet dla wszystkich innych”

spodziewaj się, że szybko pojawi się zakłopotana odpowiedź lub konfliktowe urządzenie :)

Ciii teraz
źródło
3

Wyłącz główny serwer DHCP i (ponownie) skonfiguruj połączenie.

Jeśli dostaniesz adres IP, masz nieuczciwego.

Jeśli masz pod ręką Linuksa, standardowy program dhcpclient podaje adres IP serwera DHCP (w przeciwnym razie możesz wąchać ruch, aby zobaczyć, skąd pochodzi odpowiedź DHCP).

Vinko Vrsalovic
źródło
2
Chociaż to oczywiście działałoby, zatrzymanie produkcyjnego serwera DHCP prawdopodobnie nie jest najlepszym podejściem, jeśli faktycznie martwisz się o świadczenie usługi ...
Massimo
2
Zależy od liczby obsługiwanych osób. W większości przypadków możesz zakłócić działanie usługi na kilka minut i nikt tego nie zauważy, szczególnie w środku dnia, kiedy większość osób ma już umowę najmu.
Vinko Vrsalovic
3

Istnieje kilka sposobów: jeśli prowadzisz małą sieć, najprostszym sposobem jest wyłączenie / wyłączenie / odinstalowanie serwera dhcp, a następnie uruchomienie ipconfig / odnowienia lub podobnego na kliencie, a jeśli uzyskasz i masz adres IP, masz coś rougue na swoim sieć.

Innym sposobem byłoby użyć Wireshark pakietów Capturer / analizator spojrzeć na ruch w sieci i znaleźć połączenia DHCP, istnieje arkusz laboratorium, w jaki robią to dostępna od tutaj .

Dostępnych jest również wiele zastosowań, w których proporcja do tego jest eksploratorem DHCP, a innym jest sonda DHCP, o której wspomniałeś w swoim pierwotnym poście.

Jona
źródło
2

Możesz wykonać komendę ping dla sieci, a następnie porównać ją z liczbą dzierżaw DHCP przydzielonych przez serwer DHCP.

Musisz mieć ogólne pojęcie o liczbie urządzeń statycznych (być może interfejsów routera i drukarek), które nieznacznie wypaczą tę liczbę, ale powinien to być szybki i dokładny sposób ich identyfikacji w wielu sieciach.

Piotr
źródło
0

na debian / ubuntu można również skorzystać z opcji dhcpdumpi / lub tcpdumpprzy pomocy npdhclient

Użyj dhcpdump:

  • 1.a) Uruchom dhcpdump -i eth0w jednej powłoce / powłoce (eth0 lub nazwa twojego interfejsu)
  • 1.b) uruchom dhclientw innej powłoce (nie musi działać poprawnie)
  • 1.c) zajrzyj do wyjścia dhcpdumpinformacji (powinna to być ładna, sformatowana, informacyjna lista najbardziej szczegółowych informacji)

Opcja 2, jeśli nie chcesz używać dhcpdump:

  • 2.a) uruchom tcpdump -i eth0 -t -n > /tmp/my_file.txtw jednej powłoce / oknie
    (opcjonalnie: -t= wyłącz znacznik czasu // -n= wyłącz rozpoznawanie nazw, tylko adres IP, bez nazw serwerów (dla RHEL / centos użyj -nn))
  • 2.b) uruchom dhclientw innej powłoce (nie musi działać poprawnie)
  • 2.c) zatrzymać działającą komendę tcpdump ()
  • 2.d) sprawdź plik /tmp/my_file.txt w swoim ulubionym edytorze i wyszukaj takie rzeczy jak: „.53” (domyślny port DNS) / „NX” / „CNAME” / „A?” / „AAAA” -

* sidenote: prawdopodobnie trzeba zainstalować tcpdump i dhcpdump (np .:) sudo apt get install tcpdump dhcpdump; dhcpdump zależy od tcpdump

eli
źródło
0

Sugeruję uruchomienie dwóch terminali, jednego do monitorowania, a drugiego do wysyłania zapytania. Terminal1 wyświetli odpowiedzi ze wszystkich istniejących serwerów DHCP, w tym adres MAC. Ten przykład został uruchomiony na Ubuntu:

Terminal 1 (do monitorowania):

sudo tcpdump -nelt udp port 68 | grep -i „boot. * odpowiedz”

tcpdump: tłumienie pełnego wyjścia, użyj -v lub -vv do pełnego dekodowania protokołu nasłuchiwania na enp2s0, typ łącza EN10MB (Ethernet), przechwytywanie rozmiaru 262144 bajtów 20: a6: 80: f9: 12: 2f> ff: ff: ff: ff: ff: ff, typ Ethernet IPv4 (0x0800), długość 332: 192.168.1.1.67> 255.255.255.255.68: BOOTP / DHCP, odpowiedź, długość 290 00: 23: cd: c3: 83: 8a> ff: ff : ff: ff: ff: ff, typ IPv4 (0x0800), długość 590: 192.168.1.253.67> 255.255.255.255.68: BOOTP / DHCP, odpowiedź, długość 548

Terminal2 (do wysyłania zapytania):

sudo nmap --script broadcast-dhcp-discover -e eth0

Począwszy od Nmap 7.01 ( https://nmap.org ) o 13.10.2019 21:21 EEST Wyniki skanu przed skanowaniem: | broadcast-dhcp-discover: | Odpowiedź 1 z 1: | Oferowane IP: 192.168.1.228 | Typ komunikatu DHCP: DHCPOFFER | Czas dzierżawy adresu IP: 2h00m00s | Identyfikator serwera: 192.168.1.1 | Maska podsieci: 255.255.255.0 | Router: 192.168.1.1 | _ Serwer nazw domen: 8.8.8.8, 8.8.4.4 OSTRZEŻENIE: Nie określono żadnych obiektów docelowych, dlatego skanowano 0 hostów. Nmap zrobione: 0 adresów IP (0 hostów w górę) skanowanych w 0,94 sekundy

Ten terminal monitorujący jest potrzebny, aby zobaczyć wszystkie odpowiedzi (nmap jest w stanie pokazać tylko pierwszą odpowiedź).

ajaaskel
źródło