Comment savoir s'il existe un serveur DHCP non autorisé sur mon réseau?

92

Quelle est la meilleure approche pour déterminer si mon réseau contient un serveur DHCP non autorisé?

Je me demande comment la plupart des administrateurs abordent ce genre de problèmes. J'ai trouvé DHCP Probe lors d'une recherche et j'ai pensé à l'essayer. Quelqu'un en at-il déjà fait l'expérience? (J'aimerais savoir avant de prendre le temps de le compiler et de l'installer).

Connaissez-vous des outils utiles ou des pratiques recommandées pour la recherche de serveurs DHCP non autorisés?

l0c0b0x
la source
2
MS Tool et très simple à utiliser! Détection de serveur DHCP non autorisé
RogueChecker.zip
J'ai trouvé une référence officielle à votre lien aa.malta à l' adresse social.technet.microsoft.com/wiki/contents/articles/…, mais le lien ne semble plus fonctionner à partir de 2016. Il me montre les billets de blog de 2009, mais je ne voir les articles du 6 juillet et du 29 juin. Il ne semble pas y avoir de message du 3 juillet, comme l'indique l'URL du lien que vous avez posté. On dirait que MS l'a enlevé pour qui sait quelle raison.
Daniel
On dirait que ce lien direct (que j'ai trouvé sur un site wordpress) fonctionne pour télécharger le fichier à partir d'un serveur Microsoft. Link fonctionne depuis janvier 2016. Comme l'URL est Microsoft, je pense qu'on peut y faire confiance, mais je ne donne aucune garantie: blogs.technet.com/cfs-file.ashx/__key/…
Daniel

Réponses:

54

Une méthode simple consiste simplement à exécuter un renifleur tel que tcpdump / wireshark sur un ordinateur et à envoyer une requête DHCP. Si vous voyez des offres autres que celles de votre vrai serveur DHCP, alors vous savez que vous avez un problème.

Zoredache
la source
28
Aide en utilisant le filtre suivant: "bootp.type == 2" (pour ne montrer que les offres DHCP et voir s'il y a une réponse de sources différentes / inconnues)
l0c0b0x Le
4
Utilisez un programme tel que DHCP-Find ( softpedia.com/get/Network-Tools/Network-IP-Scanner/… ) en conjonction avec TCPDump / Wireshark pour déclencher des réponses DHCP.
Saluce
1
Pouvez-vous offrir une solution plus spécifique?
tarabyte
@tarabyte Je ne suis pas sûr de la solution ou des améliorations à offrir. Je pense que cette question couvre assez bien la douzaine d'autres bonnes réponses? Mon option goto ces jours-ci est de simplement configurer vos commutateurs pour bloquer DHCP comme l'a suggéré Jason Luther. Y avait-il quelque chose de spécifique qui devait être mieux couvert?
Zoredache
2
Je me attendais à plus d'une séquence de commandes qui utilisent tcpdump, arpetc. avec des paramètres explicites et explication de ces paramètres.
tarabyte
22

Pour récapituler et ajouter à certaines des autres réponses:

Désactivez temporairement votre serveur DHCP de production et vérifiez si d'autres serveurs répondent.

Vous pouvez obtenir l'adresse IP du serveur en exécutant ipconfig /allsur une machine Windows, puis vous pouvez obtenir l'adresse MAC en recherchant cette adresse IP à l'aide de arp -a.

Sur un Mac, lancez ipconfig getpacket en0(ou en1). Voir http://www.macosxhints.com/article.php?story=20060124152826491 .

Les informations sur le serveur DHCP se trouvent généralement dans / var / log / messages. sudo grep -i dhcp /var/log/messages*

Désactiver votre serveur DHCP de production peut ne pas être une bonne option, bien sûr.

Utilisez un outil qui recherche spécifiquement les serveurs DHCP non autorisés

Voir http://en.wikipedia.org/wiki/Rogue_DHCP pour une liste d'outils (dont beaucoup ont été répertoriés dans d'autres réponses).

Configurer les commutateurs pour bloquer les offres DHCP

La plupart des commutateurs gérés peuvent être configurés pour empêcher les serveurs DHCP non autorisés:

Jason Luther
la source
17

dhcpdump , qui prend le formulaire en entrée tcpdump et affiche uniquement les paquets liés à DHCP. M'a aidé à trouver Windows rootkited, en se faisant passer pour un faux DHCP sur notre réseau local.

vartec
la source
15

Les approches Wireshark / DHCP explorer / DHCP Probe conviennent à un contrôle ponctuel ou périodique. Cependant, je vous conseillerais de vous renseigner sur la prise en charge de DHCP Snooping sur votre réseau. Cette fonctionnalité offre une protection constante contre les serveurs DHCP non autorisés du réseau et est prise en charge par de nombreux fournisseurs de matériel.

Voici la fonctionnalité définie comme indiqué dans les documents Cisco .

• Valide les messages DHCP reçus de sources non fiables et élimine les messages non valides.

• Le débit limite le trafic DHCP des sources fiables et non fiables.

• Crée et gère la base de données de liaison de surveillance DHCP, qui contient des informations sur les hôtes non approuvés avec des adresses IP louées.

• Utilise la base de données de liaison de surveillance DHCP pour valider les demandes ultérieures provenant d'hôtes non approuvés.

Dave K
la source
10

dhcploc.exe est le moyen le plus rapide et le plus pratique sur les systèmes Windows. Il est disponible dans les outils de support XP. Les outils de support se trouvent sur chaque disque OEM / XP XP, mais peuvent ou non se trouver sur des "disques de récupération" fournis par certains OEM. Vous pouvez également les télécharger à partir de MS.

C'est un simple outil en ligne de commande. Vous exécutez dhcploc {votre adresse IP} , puis appuyez sur la touche 'd' pour effectuer une fausse découverte. Si vous le laissez fonctionner sans appuyer sur aucune touche, il affichera chaque requête DHCP et répondra. Appuyez sur 'q' pour quitter.

quux
la source
Cela vient d’être utilisé en combinaison avec la suppression de ports de commutateur individuels pour dépister un serveur sournois malhonnête auquel nous faisions face. Bon produit!
DHayes
1
Vous pouvez toujours utiliser DHCPloc.exe sous Windows 7: 1. Téléchargez "Outils de support Windows XP Service Pack 2" à partir de [ici] [1]. 2. Cliquez avec le bouton droit sur l'exécutable et sélectionnez Propriétés-> Compatibilité, activez le mode de compatibilité et réglez-le sur "Windows XP (Service Pack 3)". 3. Installez normalement. DHCPLoc.exe fonctionne bien sur mon installation Win7 x64. [1]: microsoft.com/en-us/download/details.aspx?id=18546
parsley72
1
Je viens de remarquer que vous pouvez télécharger juste l'exécutable à partir de l'emplacement suivant et il fonctionne très bien sous Win 10 x64: gallery.technet.microsoft.com/DHCPLOC-Utility-34262d82
PeterJ
9

Scapy est un outil de création de paquets basé sur Python qui convient à ces tâches de tri. Il y a un exemple de comment faire exactement cela ici .

Kyle Brandt
la source
2
Wow, je trouve que Scapy est si puissant après plusieurs jours de plongée. Il surpasse les outils de merde comme dhcpfind.exe et dhcploc.exe. Scapy 2.2 peut fonctionner sous Linux et Windows - j'ai essayé les deux. La seule barrière est que vous DEVEZ connaître le langage de programmation Python dans une certaine mesure pour exploiter sa puissance.
Jimm Chen
Le lien que vous avez posté est cassé
Jason S
@JasonSi Bonjour, j'ai mis à jour le lien, mais la modification est en attente d'examen par les pairs ... En attendant, vous pouvez le trouver ici: bitbucket.org/secdev/scapy/wiki/doc/IdentifyingRogueDHCPServers
Huygens
7

Pour développer le commentaire de l0c0b0x sur l'utilisation en bootp.type == 2tant que filtre. Le filtre bootp.type est uniquement disponible dans Wireshark / tshark. Il n'est pas disponible dans tcpdump, ce que la position contextuelle de son commentaire m'a amené à croire.

Tshark fonctionne parfaitement pour cela.

Notre réseau est divisé en plusieurs domaines de diffusion, chacun disposant de sa propre sonde basée sur Linux avec un point de présence sur le domaine de diffusion "local" et sur un sous-réseau administratif d'une manière ou d'une autre. Tshark, associé à ClusterSSH, me permet de rechercher facilement le trafic DHCP ou (n'importe quoi d'autre) sur les coins les plus éloignés du réseau.

Cela trouvera les réponses DHCP sous Linux:

# ifconfig ethX promisc
# tshark -i ethX -n port 68 -R 'bootp.type == 2'
Communauté
la source
Très utile, j'ai passé pas mal de temps à essayer de comprendre pourquoi j'allais avoir tcpdump: syntax error. Même posté une question dessus, votre réponse m'a débloqué, merci! networkengineering.stackexchange.com/questions/39534/…
Elijah Lynn
1
En outre, je pense que quelque chose a changé avec le -R <Read filter>. Je reçois tshark: -R without -2 is deprecated. For single-pass filtering use -Y.. -Yfonctionne bien.
Elijah Lynn
6

une fois que vous avez établi qu’il existe un serveur dhcp non fiable sur le réseau, j’ai trouvé le moyen le plus rapide de le résoudre ...

Envoyez un courrier électronique à l’ensemble de la société en disant:

"lequel de vous deux a ajouté un routeur sans fil au réseau local, vous avez tué Internet pour tous les autres"

attendez-vous à une réponse penaud ou à la disparition rapide de l'appareil en conflit :)

Chut maintenant
la source
3

Désactivez le serveur DHCP principal et (re) configurez une connexion.

Si vous obtenez une adresse IP, vous avez un voyou.

Si vous avez un système Linux pratique, le standard dhcpclient vous indique l’adresse IP du serveur DHCP (sinon vous pouvez renifler le trafic pour voir d’où provient la réponse DHCP).

Vinko Vrsalovic
la source
2
Bien que cela fonctionnerait bien sûr, arrêter un serveur DHCP de production n'est probablement pas la meilleure approche si vous êtes réellement préoccupé par la fourniture du service ...
Massimo
2
Cela dépend du nombre de personnes que vous servez. Vous pouvez interrompre le service pendant quelques minutes dans la plupart des cas et personne ne le remarquera, surtout en milieu de journée lorsque la plupart des gens ont déjà leur bail.
Vinko Vrsalovic
3

Si vous utilisez un petit réseau, le moyen le plus simple consiste à désactiver / désactiver / débrancher votre serveur DHCP, puis à exécuter ipconfig / renew ou similaire sur un client. Si vous obtenez et que vous avez une adresse IP réseau.

Une autre façon serait d'utiliser Wireshark paquet Capturer / analyseur pour regarder votre trafic réseau et trouver des connexions DHCP, il y a une feuille de laboratoire sur la façon dont le font-avaliable d' ici .

Il existe également un certain nombre d’utilisations disponibles, dont l’ explorateur DHCP et la sonde DHCP dont vous avez parlé dans votre message original.

Jona
la source
2

Vous pouvez effectuer une analyse ping de vos réseaux, puis la comparer au nombre de baux DHCP attribués par votre serveur DHCP.

Vous devez avoir une idée générale du nombre de périphériques statiques (interfaces de routeur et imprimantes peut-être) qui biaiseront légèrement ce nombre, mais cela devrait constituer un moyen rapide et précis de les identifier sur plusieurs réseaux.

Peter
la source
0

sur debian / ubuntu, on a également la possibilité d’utiliser dhcpdumpet / ou tcpdumpd’aider, par exemple,dhclient

Utilisez dhcpdump:

  • 1.a) exécuté dhcpdump -i eth0dans un shell / shell (eth0 ou le nom de votre interface)
  • 1.b) démarrer dhclientdans un autre shell (il ne doit pas nécessairement s'exécuter correctement)
  • 1.c) examine le résultat de dhcpdumppour information (il devrait s'agir d'une liste informative contenant le plus de détails)

Option 2 si vous n'aimez pas utiliser dhcpdump:

  • 2.a) exécuté tcpdump -i eth0 -t -n > /tmp/my_file.txtdans un shell / une fenêtre
    (facultatif: -t= désactiver l'horodatage // -n= désactiver la résolution de nom, uniquement l'adresse IP, pas de noms de serveur (pour RHEL / centos, utilisez -nn))
  • 2.b) démarrer dhclientdans un autre shell (il ne doit pas nécessairement s'exécuter correctement)
  • 2.c) arrêtez le tcpdump en cours d'exécution ()
  • 2.d) examinez le fichier /tmp/my_file.txt avec votre éditeur préféré et recherchez des éléments tels que: ".53" (le port DNS par défaut) / "NX" / "CNAME" / "A?" / "AAAA" -

* Remarque: tcpdump et dhcpdump devront probablement être installés (par exemple:) sudo apt get install tcpdump dhcpdump; dhcpdump dépend de tcpdump

Eli
la source
0

Je suggère de démarrer deux terminaux, un pour la surveillance et un autre pour envoyer une demande. Terminal1 affichera les réponses de tous les serveurs DHCP existants, y compris l'adresse MAC. Cet exemple a été exécuté sur Ubuntu:

Terminal1 (pour la surveillance):

sudo tcpdump -nelt port udp 68 | grep -i "boot. * reply"

tcpdump: sortie verbeuse supprimée, utilisez -v ou -vv pour le décodage de protocole complet en écoute enp2s0, type de lien EN10MB (Ethernet), taille de capture 262144 octets 20: a6: 80: f9: 12: 2f> ff: ff: ff: ff: ff: ff, type IPv4 (0x0800), longueur 332: 192.168.1.1.67> 255.255.255.255.68: BOOTP / DHCP, réponse, longueur 290 00: 23: cd: c3: 83: 8a> ff: ff : ff: ff: ff: ff, type IPv4 (0x0800), longueur 590: 192.168.1.253.67> 255.255.255.255.68: BOOTP / DHCP, réponse, longueur 548

Terminal2 (pour l'envoi d'une requête):

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

Démarrage de Nmap 7.01 ( https://nmap.org ) au 2019-10-13 21:21 EEST Résultats du script de pré-analyse: | broadcast-dhcp-discover: | Réponse 1 sur 1: | IP offert: 192.168.1.228 | Type de message DHCP: DHCPOFFER | Adresse IP Durée du bail: 2h00m00s | Identificateur de serveur: 192.168.1.1 | Masque de sous-réseau: 255.255.255.0 | Routeur: 192.168.1.1 | _ Serveur de noms de domaine: 8.8.8.8, 8.8.4.4 AVERTISSEMENT: Aucune cible n'a été spécifiée, donc 0 hôte analysé. Nmap terminé: 0 adresses IP (0 hôte au maximum) analysées en 0.94 secondes

Ce terminal de surveillance est nécessaire uniquement pour voir toutes les réponses (nmap est capable d'afficher uniquement la première réponse).

ajaaskel
la source