Как мне узнать, есть ли в моей сети мошеннический DHCP-сервер?

92

Как лучше всего определить, есть ли в моей сети мошеннический DHCP-сервер?

Мне интересно, как большинство администраторов подходят к таким проблемам. Я нашел DHCP Probe через поиск и подумал о том, чтобы попробовать. У кого-нибудь был опыт с этим? (Я хотел бы знать, прежде чем тратить время на его компиляцию и установку).

Знаете ли вы какие-либо полезные инструменты или лучшие практики для поиска мошеннических серверов DHCP?

l0c0b0x
источник
2
MS Tool и очень прост в использовании! Разбойное обнаружение DHCP-сервера - RogueChecker.zip blogs.technet.com/b/teamdhcp/archive/2009/07/03/…
aa.malta
Я нашел официальную ссылку на вашу ссылку aa.malta на сайте social.technet.microsoft.com/wiki/contents/articles/…, но ссылка больше не работает с 2016 года. На ней отображаются сообщения в блогах с 2009 года, но я только см. сообщения за 6 июля и 29 июня. Похоже, что не было сообщения от 3 июля, как указано в ссылке URL, который вы опубликовали. Похоже, MS удалила его, потому что знает, по какой причине.
Даниил
Похоже, эта прямая ссылка (которую я нашел на сайте WordPress) работает для загрузки файла с сервера Microsoft. Ссылка работает с января 2016 года. Поскольку URL-адрес принадлежит Microsoft, я чувствую, что ему можно доверять, но я не даю
Даниэль
У путевой машины есть копия web.archive.org/web/20100601022750/http://blogs.technet.com/b/…
antgiant

Ответы:

54

Один из простых способов - просто запустить сниффер, такой как tcpdump / wireshark, на компьютере и отправить запрос DHCP. Если вы видите предложения, отличные от вашего реального DHCP-сервера, то вы знаете, что у вас есть проблема.

Zoredache
источник
28
Помогает использовать следующий фильтр: «bootp.type == 2» (только для показа предложений DHCP и
проверки,
4
Используйте программу типа DHCP-Find ( softpedia.com/get/Network-Tools/Network-IP-Scanner/… ) в сочетании с TCPDump / Wireshark для запуска ответов DHCP.
приветствие
1
Можете ли вы предложить более конкретное решение?
Тарабайт
@tarabyte Я не уверен, какое решение я или улучшения я должен предложить. Я думаю, что этот вопрос имеет довольно хорошее освещение из десятка других хороших ответов? Мой вариант перехода в эти дни - просто настроить коммутаторы для блокировки DHCP, как предложил Джейсон Лютер. Было ли что-то конкретное, что нужно было покрыть лучше?
Зоредаче
2
Я ожидал большего из последовательности команд , которые используют tcpdump, arpи т.д. с явными параметрами и объяснения этих параметров.
тарабайта
22

Напомним и добавим к некоторым другим ответам:

Временно отключите производственный DHCP-сервер и посмотрите, отвечают ли другие серверы.

Вы можете получить IP-адрес сервера, запустив его ipconfig /allна компьютере с ОС Windows, а затем вы можете получить MAC-адрес, выполнив поиск по этому IP-адресу arp -a.

На Mac запустите ipconfig getpacket en0(или en1). См. Http://www.macosxhints.com/article.php?story=20060124152826491 .

Информация о DHCP-сервере обычно находится в / var / log / messages. sudo grep -i dhcp /var/log/messages*

Конечно, отключение вашего производственного DHCP-сервера не может быть хорошим вариантом.

Используйте инструмент, специально предназначенный для поиска мошеннических DHCP-серверов.

См. Http://en.wikipedia.org/wiki/Rogue_DHCP для списка инструментов (многие из которых были перечислены в других ответах).

Настройте коммутаторы для блокировки предложений DHCP

Большинство управляемых коммутаторов можно настроить для предотвращения мошеннических DHCP-серверов:

Джейсон Лютер
источник
17

dhcpdump , который принимает входную форму tcpdump и показывает только пакеты, связанные с DHCP. Помог мне найти руткит Windows, выдававший себя за поддельный DHCP в нашей локальной сети.

Vartec
источник
15

Подходы Wireshark / DHCP explorer / DHCP Probe подходят для одноразовой или периодической проверки. Тем не менее, я бы порекомендовал изучить поддержку DHCP Snooping в вашей сети. Эта функция обеспечивает постоянную защиту от мошеннических DHCP-серверов в сети и поддерживается многими поставщиками оборудования.

Вот набор функций, как указано в документах Cisco .

• Проверяет сообщения DHCP, полученные из ненадежных источников, и отфильтровывает недействительные сообщения.

• Ограничивает скорость трафика DHCP из доверенных и ненадежных источников.

• Создает и поддерживает базу данных привязки DHCP snooping, которая содержит информацию о ненадежных хостах с арендованными IP-адресами.

• Использует базу данных привязки DHCP snooping для проверки последующих запросов от ненадежных хостов.

Дейв К
источник
10

dhcploc.exe - самый быстрый и удобный способ в системах Windows. Он доступен в инструментах поддержки XP. Средства поддержки есть на каждом диске XP OEM / Retail, но могут быть или не быть на «дисках восстановления», предоставляемых некоторыми OEM. Вы также можете скачать их с MS.

Это простой инструмент командной строки. Вы запускаете dhcploc {yourIPaddress}, а затем нажимаете клавишу 'd', чтобы сделать поддельное обнаружение. Если вы оставите его работающим без нажатия клавиш, он будет отображать каждый запрос DHCP и отвечать на него. Нажмите «q», чтобы выйти.

quux
источник
Просто использовал это в сочетании с уничтожением отдельных портов коммутатора, чтобы отследить подлый сервер, с которым мы имели дело. Хорошая вещь!
DHayes
1
Вы все еще можете использовать DHCPloc.exe в Windows 7: 1. Загрузите «Средства поддержки Windows XP с пакетом обновления 2» из [здесь] [1]. 2. Щелкните правой кнопкой мыши исполняемый файл и выберите «Свойства» -> «Совместимость», затем включите режим совместимости и установите для него «Windows XP (Service Pack 3)». 3. Установите как обычно. DHCPLoc.exe отлично работает на моей установке Win7 x64. [1]: microsoft.com/en-us/download/details.aspx?id=18546
parsley72
1
Я только что заметил, что вы можете загрузить только исполняемый файл из следующего местоположения, и он отлично работает под Win 10 x64: gallery.technet.microsoft.com/DHCPLOC-Utility-34262d82
PeterJ
9

Scapy - это инструмент для создания пакетов на основе Python, который подходит для таких задач. Вот пример того, как сделать это здесь .

Кайл Брандт
источник
2
Ух ты, я считаю, что Скапи очень сильна после нескольких дней изучения. Он превосходит дрянные инструменты, такие как dhcpfind.exe и dhcploc.exe. Scapy 2.2 может работать на Linux и Windows - я пробовал оба. Единственным препятствием является то, что вы ДОЛЖНЫ знать язык программирования Python в некоторой степени, чтобы использовать его возможности.
Джимм Чен
Ссылка, которую вы разместили, не работает
Jason S
@JasonS Привет! Я обновил ссылку, но изменения ожидают экспертной оценки ... В ожидании вы можете найти ее здесь: bitbucket.org/secdev/scapy/wiki/doc/IdentifyingRogueDHCPServers
Huygens
7

Чтобы расширить комментарий l0c0b0x об использовании bootp.type == 2в качестве фильтра. Фильтр bootp.type доступен только в Wireshark / tshark. Он недоступен в tcpdump, в который мне поверило контекстное расположение его комментария.

Тшарк отлично работает для этого.

Наша сеть разделена на многочисленные широковещательные домены, каждый из которых имеет свой собственный зонд на основе Linux с точкой присутствия в «локальном» широковещательном домене и административной подсети тем или иным способом. Tshark в сочетании с ClusterSSH позволяет мне легко искать DHCP-трафик или (что-нибудь еще в этом отношении) в дальнейших углах сети.

Это найдет ответы DHCP, использующие Linux:

# ifconfig ethX promisc
# tshark -i ethX -n port 68 -R 'bootp.type == 2'
Сообщество
источник
Очень полезно, я потратил немало времени, пытаясь понять, почему я получаю tcpdump: syntax error. Даже разместил на нем вопрос, твой ответ разблокировал меня, спасибо! networkengineering.stackexchange.com/questions/39534/…
Элайджа Линн
1
Кроме того, я думаю, что что-то изменилось с -R <Read filter>. Я получаю tshark: -R without -2 is deprecated. For single-pass filtering use -Y.. -Yработает хорошо.
Элайджа Линн
6

как только вы установили, что в сети есть мошеннический dhcp-сервер, я нашел самый быстрый способ его решения ...

Отправьте электронное письмо всей компании:

«Кто из вас добавил беспроводной маршрутизатор в локальную сеть, вы убили интернет для всех остальных»

ожидать быстрого ответа или исчезновения конфликтующего устройства :)

Тсс сейчас
источник
3

Отключите основной DHCP-сервер и (заново) настройте соединение.

Если вы получаете IP-адрес, у вас есть мошенник.

Если у вас есть удобный Linux, стандартный dhcpclient сообщает вам IP-адрес DHCP-сервера (иначе вы можете прослушать трафик, чтобы увидеть, откуда пришел ответ DHCP).

Винко Врсалович
источник
2
Хотя это, конечно, сработает, остановка производственного DHCP-сервера, вероятно, не лучший подход, если вы действительно заинтересованы в предоставлении услуги ...
Massimo
2
Зависит от количества людей, которым вы служите. В большинстве случаев вы можете прервать обслуживание на пару минут, и никто этого не заметит, особенно в середине дня, когда большинство людей уже арендуют его.
Винко Врсалович
3

Есть несколько способов, если вы используете небольшую сеть, самый простой способ - это отключить / отключить / отключить ваш dhcp сервер, а затем запустить ipconfig / renew или аналогичный на клиенте, и если вы получаете и IP, у вас есть что-то плохое на вашем сервере. сеть.

Другой способ заключается в использовании Wireshark пакетов Capturer / анализатор взглянуть на сетевой трафик и найти соединения DHCP, есть лаборатория на рабочем листе как это сделать имеющийся от здесь .

Также имеется ряд доступных утилит, один из которых - это DHCP explorer, другой - это пробник DHCP, который вы упомянули в своем первоначальном посте.

Йона
источник
3

Вы можете использовать RogueChecker от Microsoft:

исходная ссылка: http://blogs.technet.com/b/teamdhcp/archive/2009/07/03/rogue-dhcp-server-detection.aspx

ссылка для скачивания: https://web.archive.org/web/20141022013752/http://blogs.technet.com/b/teamdhcp/archive/2009/07/03/rogue-dhcp-server-detection.aspx

также прочитайте эту информацию:

https://social.technet.microsoft.com/wiki/contents/articles/25660.how-to-prevent-rogue-dhcp-servers-on-your-network.aspx

ЮФО
источник
2

Вы можете выполнить пинг в ваших сетях, а затем сравнить его с количеством аренды DHCP, выданной вашим DHCP-сервером.

Вам необходимо иметь общее представление о количестве статических устройств (возможно, интерфейсов маршрутизаторов и принтеров), которые слегка искажают это число, но это должен быть быстрый и точный способ их идентификации в нескольких сетях.

Питер
источник
0

в Debian / Ubuntu также есть варианты использования dhcpdumpи / или tcpdumpс помощью, например,dhclient

Используйте dhcpdump:

  • 1.a) запустить dhcpdump -i eth0в одной оболочке / shell (eth0 или имя вашего интерфейса)
  • 1.b) запустить dhclientв другой оболочке (она не должна успешно выполняться)
  • 1.c) посмотрите на вывод dhcpdumpинформации (это должен быть хороший отформатированный, информативный список наиболее подробной информации)

Вариант 2, если вы не хотите использовать dhcpdump:

  • 2.a) запустить tcpdump -i eth0 -t -n > /tmp/my_file.txtв одной оболочке / окне
    (необязательно: -t= отключить отметку времени // -n= отключить разрешение имен, только IP-адрес, без имен серверов (для RHEL / centos используйте -nn))
  • 2.b) запустить dhclientв другой оболочке (она не должна успешно выполняться)
  • 2.c) остановить работающий tcpdump ()
  • 2.d) проверьте файл /tmp/my_file.txt в вашем любимом редакторе и найдите такие вещи, как: «.53» (порт DNS по умолчанию) / «NX» / «CNAME» / «A?» / "АААА" -

* sidenote: возможно, должны быть установлены tcpdump и dhcpdump (например:) sudo apt get install tcpdump dhcpdump; dhcpdump зависит от tcpdump

Eli
источник
0

Я предлагаю запустить два терминала, один для мониторинга, а другой для отправки запроса. Terminal1 покажет ответы от всех существующих серверов DHCP, включая MAC-адрес. Этот пример был запущен в Ubuntu:

Терминал1 (для мониторинга):

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

tcpdump: подробный вывод подавлен, используйте -v или -vv для прослушивания полного декодирования протокола на enp2s0, тип соединения EN10MB (Ethernet), размер захвата 262144 байта 20: a6: 80: f9: 12: 2f> ff: ff: ff: ff: ff: ff, ethervip IPv4 (0x0800), длина 332: 192.168.1.1.67> 255.255.255.255.68: BOOTP / DHCP, Ответ, длина 290 00: 23: cd: c3: 83: 8a> ff: ff : ff: ff: ff: ff, ethertype IPv4 (0x0800), длина 590: 192.168.1.253.67> 255.255.255.255.68: BOOTP / DHCP, Reply, длина 548

Терминал2 (для отправки запроса):

sudo nmap - скрипт широковещания-dhcp-Discover -e eth0

Запуск Nmap 7.01 ( https://nmap.org ) в 2019-10-13 21:21 EEST Результаты сценария предварительной проверки: | широковещательный-Dhcp-Discover: | Ответ 1 из 1: | Предложенный IP: 192.168.1.228 | Тип сообщения DHCP: DHCPOFFER | Время аренды IP-адреса: 2h00m00s | Идентификатор сервера: 192.168.1.1 | Маска подсети: 255.255.255.0 | Маршрутизатор: 192.168.1.1 | _ Сервер доменных имен: 8.8.8.8, 8.8.4.4 ВНИМАНИЕ: Цели не указаны, поэтому отсканировано 0 хостов. Nmap выполнено: 0 IP-адресов (0 хостов) просканировано за 0,94 секунды

Этот терминал мониторинга нужен только для просмотра всех ответов (nmap может отображать только первый ответ).

ajaaskel
источник