Cum pot afla dacă există un server DHCP necinstit în rețeaua mea? (Administrarea sistemului, Rețea, Dhcp)

l0c0b0x a intrebat.

Care este cea mai bună abordare pentru a determina dacă am un server DHCP necinstit în rețeaua mea?

Mă întreb cum abordează majoritatea administratorilor aceste tipuri de probleme. Am găsit Sonda DHCP prin căutare și m-am gândit să îl încerc. A avut cineva experiență cu el? (Aș vrea să știu înainte de a-mi lua timp să-l compilez și să-l instalez).

Cunoașteți vreun instrument util sau cele mai bune practici pentru a găsi servere DHCP necinstite?

Comentarii

  • MS Tool și foarte simplu de utilizat! Detectarea serverelor DHCP necinstite – RogueChecker.zip blogs.technet.com/b/teamdhcp/archive/2009/07/03/… –  > Por aa.malta.
  • Am găsit o referință oficială la link-ul dvs. aa.malta la adresa social.technet.microsoft.com/wiki/contents/articles/… dar linkul nu mai pare să funcționeze din 2016. Îmi arată postări de pe blog din 2009, dar nu văd decât postările din 6 iulie și 29 iunie. Nu pare să existe o postare din 3 iulie, așa cum indică URL-ul linkului pe care l-ați postat. Se pare că MS a eliminat-o din cine știe ce motiv. –  > Por Daniel.
  • Se pare că acest link direct (pe care l-am găsit pe un site wordpress) funcționează pentru a descărca fișierul de pe un server Microsoft. Linkul funcționează din ianuarie 2016. Din moment ce URL-ul este Microsoft, consider că poate fi de încredere, dar nu garantez nimic: blogs.technet.com/cfs-file.ashx/__key/… –  > Por Daniel.
  • Wayback machine are o copie web.archive.org/web/20100601022750/http://blogs.technet.com/b/… –  > Por antgiant.
15 răspunsuri
Zoredache

O metodă simplă este să rulezi pur și simplu un sniffer ca tcpdump/wireshark pe un calculator și să trimiți o cerere DHCP. Dacă vedeți alte oferte decât cele de la serverul DHCP real, atunci știți că aveți o problemă.

Comentarii

    30

  • Ajută folosind următorul filtru: „bootp.type == 2” (pentru a afișa doar ofertele DHCP și pentru a vedea dacă există un răspuns din surse diferite/necunoscute).  > Por l0c0b0x.
  • Utilizați un program precum DHCP-Find (softpedia.com/get/Network-Tools/Network-IP-Scanner/…) împreună cu TCPDump/Wireshark pentru a declanșa răspunsurile DHCP. –  > Por saluce.
  • Puteți oferi o soluție mai specifică? –  > Por tarabyte.
  • Mă așteptam mai mult la o secvență de comenzi care să folosească tcpdump, , arp, , etc., cu parametri expliciți și explicația acestor parametri. –  > Por tarabyte.
  • Pentru cei care se întreabă de ce bootp.type == 2 nu funcționează cu tcpdump (eroare de sintaxă) verificați acest răspuns serverfault.com/a/304715/101677. –  > Por Elijah Lynn.

Pentru a recapitula și a adăuga la unele dintre celelalte răspunsuri:

Dezactivați temporar serverul DHCP de producție și vedeți dacă alte servere răspund.

Puteți obține adresa IP a serverului rulând ipconfig /all pe o mașină Windows, iar apoi puteți obține adresa MAC căutând acea adresă IP utilizând arp -a.

Pe un Mac, rulați ipconfig getpacket en0 (sau en1). Consultați http://www.macosxhints.com/article.php?story=20060124152826491.

Informațiile despre serverul DHCP se găsesc de obicei în /var/log/messages. sudo grep -i dhcp /var/log/messages*

Dezactivarea serverului DHCP de producție ar putea să nu fie o opțiune bună, desigur.

Utilizați un instrument care caută în mod special servere DHCP necinstite

Consultați http://en.wikipedia.org/wiki/Rogue_DHCP pentru o listă de instrumente (multe dintre acestea au fost enumerate în alte răspunsuri).

Configurați comutatoarele pentru a bloca ofertele DHCP

Cele mai multe switch-uri administrate pot fi configurate pentru a împiedica serverele DHCP necinstite:

vartec

dhcpdump, , care ia forma de intrare tcpdump și afișează numai pachetele legate de DHCP. M-a ajutat să găsesc Windows-uri rootkited, care se prefăceau în DHCP fals în LAN-ul nostru.

Dave K

Abordările Wireshark / DHCP explorer / DHCP Probe sunt bune pentru o verificare unică sau periodică. Cu toate acestea, v-aș recomanda să căutați DHCP Snooping în rețeaua dumneavoastră. Această caracteristică va oferi o protecție constantă împotriva serverelor DHCP necinstite din rețea și este susținută de mulți furnizori de hardware diferiți.

Iată setul de caracteristici, așa cum este indicat în documentul documentele Cisco.

– Validează mesajele DHCP primite de la surse nesigure și filtrează mesajele invalide.

– Limitează traficul DHCP de la surse sigure și nesigure.

– Creează și menține baza de date de legături DHCP snooping, care conține informații despre gazdele de neîncredere cu adrese IP închiriate.

– Utilizează baza de date de legături DHCP snooping pentru a valida cererile ulterioare de la gazde nesigure.

Comentarii

quux

dhcploc.exe este cea mai rapidă și mai la îndemână modalitate pe sistemele Windows. Este disponibil în XP Support Tools. Instrumentele de asistență se găsesc pe fiecare disc OEM/cu amănuntul XP, dar pot fi sau nu pe „discurile de recuperare” furnizate de unii OEM. De asemenea, puteți descărcați le puteți descărca de la MS.

Este un instrument simplu de linie de comandă. Se execută dhcploc {adresa ta IP}. și apoi apăsați tasta „d” pentru a face o descoperire falsă. Dacă îl lăsați să ruleze fără să apăsați nicio tastă, va afișa fiecare cerere DHCP și fiecare răspuns pe care îl aude. Apăsați ‘q’ pentru a ieși.

Comentarii

  • Tocmai am folosit acest lucru în combinație cu uciderea unor porturi de comutare individuale pentru a depista un server necinstit și viclean cu care aveam de-a face. Bună treabă! –  > Por DHayes.
  • Puteți utiliza în continuare DHCPloc.exe pe Windows 7: 1. Descărcați „Windows XP Service Pack 2 Support Tools” de la [aici][1]. 2. Faceți clic dreapta pe executabil și selectați Properties->Compatibility apoi activați Compatibility Mode și setați-l pe „Windows XP (Service Pack 3)”. 3. Instalați în mod normal. DHCPLoc.exe funcționează bine pe instalarea mea Win7 x64. [1]: microsoft.com/en-us/download/details.aspx?id=18546 –  > Por pătrunjel72.
  • Tocmai am observat că se poate descărca doar executabilul de la următoarea locație și funcționează bine pe Win 10 x64: gallery.technet.microsoft.com/DHCPLOC-Utility-34262d82 –  > Por PeterJ.
Kyle Brandt

Scapy este un instrument de creare de pachete bazat pe python care este bun pentru acest tip de sarcini. Există un exemplu despre cum se poate face exact acest lucru aici.

Comentarii

  • Wow, găsesc că Scapy este atât de puternic după ce am aprofundat în el timp de câteva zile. Depășește uneltele de rahat precum dhcpfind.exe și dhcploc.exe. Scapy 2.2 poate rula pe Linux și Windows – le-am încercat pe ambele. Singura barieră este că TREBUIE să cunoști într-o oarecare măsură limbajul de programare Python pentru a-i exploata puterea. –  > Por Jimm Chen.
  • Linkul pe care l-ați postat este stricat –  > Por Jason S.
  • @JasonS Salut Am actualizat link-ul, dar modificarea este în așteptarea revizuirii de către colegi… În timp ce așteptați, o puteți găsi aici: bitbucket.org/secdev/scapy/scapy/wiki/doc/IdentifyingRogueDHCPServers –  > Por Huygens.
  • Scapy este blocat. Există un GitHub fork care pretinde că are funcționalități extinse, dar nu are niciun README sau documentație reală. –  > Por kaiser.
user62491

Pentru a extinde comentariul lui l0c0b0x cu privire la utilizarea bootp.type == 2 ca filtru. Filtrul bootp.type este disponibil numai în Wireshark/tshark. Nu este disponibil în tcpdump, ceea ce locația contextuală a comentariului său m-a înclinat să cred.

Tshark funcționează perfect pentru acest lucru.

Rețeaua noastră este împărțită în numeroase domenii de difuzare, fiecare cu propria sondă bazată pe Linux, cu un punct de prezență pe domeniul de difuzare „local” și pe o subrețea administrativă într-un fel sau altul. Tshark combinat cu ClusterSSH îmi permite să caut cu ușurință traficul DHCP sau (orice altceva, de altfel) în colțurile mai îndepărtate ale rețelei.

Acesta va găsi răspunsurile DHCP folosind Linux:

# ifconfig ethX promisc
# tshark -i ethX -n port 68 -R 'bootp.type == 2'

Comentarii

  • Foarte util, am petrecut destul de mult timp încercând să-mi dau seama de ce am fost obtinerea de tcpdump: syntax error. Am postat chiar și o întrebare pe această temă, răspunsul dumneavoastră m-a deblocat, mulțumesc! networkengineering.stackexchange.com/questions/39534/… – –  > Por Elijah Lynn.
  • De asemenea, cred că s-a schimbat ceva și în ceea ce privește -R <Read filter>. I get tshark: -R without -2 is deprecated. For single-pass filtering use -Y.. -Y funcționează foarte bine. –  > Por Elijah Lynn.
Shh acum

odată ce ați stabilit că există un server dhcp necinstit în rețea, am descoperit că cea mai rapidă cale de a rezolva problema este…

Trimiteți un e-mail la toată compania spunând:

„care dintre voi a adăugat un router wireless în LAN, ați omorât internetul pentru toți ceilalți”.

Așteptați-vă la un răspuns de oaie, sau la dispariția rapidă a dispozitivului în conflict 🙂

ajaaskel

Propun să pornești două terminale, unul pentru monitorizare și altul pentru a trimite o cerere. Terminalul1 va afișa răspunsurile de la toate serverele DHCP existente, inclusiv adresa MAC. Acest exemplu a fost rulat pe Ubuntu:

Terminal1 (pentru monitorizare):

sudo tcpdump -nelt udp port 68 | grep -i "boot.*reply"
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp2s0, link-type EN10MB (Ethernet), capture size 262144 bytes
20:a6:80:f9:12:2f > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 332: 192.168.1.1.67 > 255.255.255.255.68: BOOTP/DHCP, Reply, length 290
00:23:cd:c3:83:8a > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 590: 192.168.1.253.67 > 255.255.255.255.68: BOOTP/DHCP, Reply, length 548

Terminal2 (pentru trimiterea unei cereri):

sudo nmap --script broadcast-dhcp-discover -e eth0
Starting Nmap 7.01 ( https://nmap.org ) at 2019-10-13 21:21 EEST
Pre-scan script results:
| broadcast-dhcp-discover:
|   Response 1 of 1:
|     IP Offered: 192.168.1.228
|     DHCP Message Type: DHCPOFFER
|     IP Address Lease Time: 2h00m00s
|     Server Identifier: 192.168.1.1
|     Subnet Mask: 255.255.255.0
|     Router: 192.168.1.1
|_    Domain Name Server: 8.8.8.8, 8.8.4.4
WARNING: No targets were specified, so 0 hosts scanned.
Nmap done: 0 IP addresses (0 hosts up) scanned in 0.94 seconds

Acel terminal de monitorizare este necesar doar pentru a vedea toate răspunsurile (nmap este capabil să arate doar primul răspuns).

Comentarii

  • Cel puțin pentru linux, spre deosebire de zgomotul răspunsului acceptat și altele, acest lucru funcționează, este simplu și atât tcpdump cât și nmap sunt deja instalate. M-a ajutat să depistez rapid un server dhcp roșu în rețeaua mea. –  > Por DKebler.
Vinko Vrsalovic

Dezactivați serverul DHCP principal și (re)configurați o conexiune.

Dacă primiți o adresă IP, înseamnă că aveți un rogue.

Dacă aveți un Linux la îndemână, clientul standard dhcpclient vă spune adresa IP a serverului DHCP (în caz contrar, puteți adulmeca traficul pentru a vedea de unde a venit răspunsul DHCP).

Comentarii

  • În timp ce acest lucru ar funcționa, desigur, oprirea unui server DHCP de producție nu este probabil cea mai bună abordare dacă sunteți de fapt preocupat de furnizarea serviciului… –  > Por Massimo.
  • Depinde de numărul de persoane pe care le deserviți. Puteți întrerupe serviciul pentru câteva minute în majoritatea cazurilor și nimeni nu va observa, mai ales în mijlocul zilei, când majoritatea oamenilor au deja contractul de închiriere. –  > Por Vinko Vrsalovic.
Jona

Există mai multe modalități, dacă aveți o rețea mică, cea mai simplă modalitate este să opriți / dezactivați / deconectați serverul dhcp și apoi să rulați ipconfig /renewor similar pe un client și dacă obțineți și IP-ul aveți ceva necurat în rețea.

O altă modalitate ar fi să folosiți Wireshark pentru a vă uita la traficul de rețea și a găsi conexiuni DHCP, există o foaie de lucru de laborator despre cum să faceți acest lucru, disponibilă la adresa aici.

Există, de asemenea, o serie de utilitare disponibile care pot fi folosite pentru a face acest lucru, una dintre ele este DHCP Explorer un altul este DHCP Probe, pe care l-ați menționat în mesajul inițial.

juFo
Peter

Ați putea face o scanare ping a rețelelor dvs. și apoi să comparați acest lucru cu numărul de contracte de închiriere DHCP distribuite de serverul DHCP.

Trebuie să aveți o idee generală despre numărul de dispozitive statice (interfețe de router și imprimante, probabil), care vor distorsiona ușor acest număr, dar aceasta ar trebui să fie o modalitate rapidă și precisă de a le identifica în mai multe rețele.

eli

pe debian/ubuntu există, de asemenea, opțiunile de a utiliza dhcpdump și/sau tcpdump cu ajutorul de ex. dhclient

Utilizați dhcpdump:

  • 1.a) executați dhcpdump -i eth0 într-un singur shell/shell (eth0 sau numele interfeței dvs.)
  • 1.b) porniți dhclient într-un alt shell (nu trebuie să ruleze cu succes)
  • 1.c) uitați-vă la ieșirea din dhcpdump pentru informații (ar trebui să fie o listă frumos formatată și informativă cu cele mai multe detalii)

Opțiunea 2, dacă nu vă place să folosiți dhcpdump:

  • 2.a) rulați tcpdump -i eth0 -t -n > /tmp/my_file.txt într-un singur shell/într-o singură fereastră
    (opțional: -t = dezactivați marcajul de timp // (dezactivați timestamp //) -n = dezactivează rezolvarea numelui, doar adresa IP, fără nume de servere (pentru RHEL/centos folosiți -nn) ) )
  • 2.b) start dhclient într-un alt shell (nu trebuie să funcționeze cu succes)
  • 2.c) opriți tcpdump care rulează ()
  • 2.d) examinați fișierul /tmp/my_file.txt cu editorul dvs. preferat și căutați lucruri de genul „.53 ” (portul DNS implicit) / „NX” / „CNAME” / „A?” / „AAAA” –

*sidenota: tcpdump și dhcpdump trebuie probabil să fie instalate (de ex: sudo apt get install tcpdump dhcpdump); dhcpdump depinde de tcpdump

Gray

Sub OSX (și bănuiesc că și sub Linux), iată ce am făcut:

tcpdump -i en0 -n port 67 or port 68

Va trebui să modificați en0 să fie numele interfeței dvs. După ce am făcut o cerere DHCP (făcând clic pe Renew DHCP Lease în secțiunea avansată din panoul Network System Preferences), am văzut ceva de genul următor:

15:59:17.843 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 6:b:5:9:f:3, 
        length 300
15:59:17.847 IP 10.1.2.1.67 > 10.1.2.155.68: BOOTP/DHCP, Reply, length 309

Portul 67 este listat în lista mea /etc/services ca „bootps” Bootstrap Protocol Server.

Este posibil să fie nevoie să dezactivați serverul DHCP principal pentru a vedea orice alte dispozitive de rețea care răspund în mod necorespunzător la cererile DHCP.

Tags:,