Відповіді:
nmap
це легко:
sudo nmap --script broadcast-dhcp-discover -e eth0
покаже:
Starting Nmap 6.40 ( http://nmap.org ) at 2016-08-16 09:25 UTC
Pre-scan script results:
| broadcast-dhcp-discover:
| IP Offered: 192.168.14.67
| DHCP Message Type: DHCPOFFER
| Server Identifier: 192.168.14.1
| IP Address Lease Time: 0 days, 0:05:00
| Subnet Mask: 255.255.255.0
| Router: 192.168.14.1
| Domain Name Server: 193.190.127.150
| Domain Name: maas
| Broadcast Address: 192.168.14.255
|_ NTP Servers: 91.189.91.157, 91.189.89.199, 91.189.94.4, 91.189.89.198
WARNING: No targets were specified, so 0 hosts scanned.
Nmap done: 0 IP addresses (0 hosts up) scanned in 0.27 seconds
Якщо є в сховищі, є dhcpdump
зі сторінки чоловіка:
SYNOPSIS
dhcpdump [-h regular-expression] -i interface
DESCRIPTION
This command parses the output of tcpdump to display the dhcp-packets for easier checking and debugging.
USAGE
dhcpdump -i /dev/fxp0
If you want to filter a specific Client Hardware Address (CHADDR), then you can specifiy it as a regular expressions:
dhcpdump -i /dev/fxp0 -h ^00:c0:4f
This will display only the packets with Client Hardware Addresses which start with 00:c0:4f.
Якщо у вас є tcpdump
доступність, виклик програми як кореня із наступними параметрами може допомогти вам у пошуку сервера:
tcpdump -i [ідентифікатор інтерфейсу] -nev udp порт 68
На жаль, через макет моєї мережі я не можу отримати повне захоплення DHCP відразу. Однак я бачу запит DHCP зі свого iPad:
22:16:44.767371 30:10:e4:8f:02:14 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: (tos 0x0, ttl 255, id 15652, offset 0, flags [none], proto UDP (17), length 328)
0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 30:10:e4:8f:02:14, length 300, xid 0x42448eb6, Flags [none]
Client-Ethernet-Address 30:10:e4:8f:02:14
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Request
Parameter-Request Option 55, length 6:
Subnet-Mask, Default-Gateway, Domain-Name-Server, Domain-Name
Option 119, Option 252
MSZ Option 57, length 2: 1500
Client-ID Option 61, length 7: ether 30:10:e4:8f:02:14
Requested-IP Option 50, length 4: 192.168.2.222
Lease-Time Option 51, length 4: 7776000
Hostname Option 12, length 15: "NevinWiamssiPad"
Після дозволу `tcpdump 'працювати протягом ночі, я зрештою побачив цей ACK:
07:46:40.049423 a8:39:44:96:fa:b8 > 68:a8:6d:58:5b:f3, ethertype IPv4 (0x0800), length 320: (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 306)
192.168.2.1.67 > 192.168.2.22.68: BOOTP/DHCP, Reply, length 278, xid 0x5e7944f, Flags [none]
Client-IP 192.168.2.22
Your-IP 192.168.2.22
Client-Ethernet-Address 68:a8:6d:58:5b:f3
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: ACK
Server-ID Option 54, length 4: 192.168.2.1
Lease-Time Option 51, length 4: 86400
Subnet-Mask Option 1, length 4: 255.255.255.0
Default-Gateway Option 3, length 4: 192.168.2.1
Domain-Name-Server Option 6, length 8: 192.168.2.1,142.166.166.166
Якщо під час виконання цієї tcpdump
команди ви побачите пропозицію BOOTP / DHCP або Ack (Nack), це буде з сервера DHCP, а MAC-адреса сервера буде одразу після позначки часу в першому рядку.
Отже, (дійсний) DHCP-сервер тут має MAC-адресу a8: 39: 44: 96: fa: b8`.
Використовуючи один із багатьох інструментів пошуку MAC-адрес в Інтернеті, я бачу, що цей MAC належить A8:39:44 Actiontec Electronics, Inc
моєму маршрутизатору.
Для того, щоб зловити несанкціоновані серверні пакети DHCP, як це відбувається, мені доведеться залишити цей tcpdump
процес у вікні терміналу:
tcpdump -i en0 -nev udp src port 67 and not ether host a8:39:44:96:fa:b8
Це покаже мені відповіді DHCP-сервера від хостів, крім мого дійсного сервера DHCP, доки процес запущений у власному вікні.
Наступна команда буде виконуватись у фоновому режимі, поки не буде захоплено 100 пакетів, додавши до файлу будь-які неправдиві повідомлення сервера DHCP /tmp/rogue
. Знову ж, MAC-адресу вашого дійсного сервера DHCP слід використовувати у відповідному місці, а також дескриптор інтерфейсу у вашій системі.
tcpdump -U -i en0 -c 100 -nev udp src port 67 and not ether host a8:39:44:96:fa:b8 >> /tmp/rogue 2>&1 &
`
tcpdump
команду запущеною, вона відобразить пакети серверів DHCP, що надсилаються за MAC-адресою, відмінною від сервера DHCP. Звичайно, вам потрібно буде вказати адресу у вказаному місці ... Я розміщую її у своїй відповіді зараз, щоб покращити форматування.
З огляду на достатньо часу, виявлення може бути пасивним: Нагадаємо, що ініціалізуючий клієнт надсилає трансляцію DHCPDISCOVER. Якщо dhcpserver доступний, він вибере пропозицію, а потім передасть (знову ж таки трансляцію!) DHCPREQUEST. Таким чином
Успіх перших двох пунктів залежить від кількості інших хостів, щойно приєднаних / завантажених до мережі, а також строків оренди.
Ви можете спробувати створити пристрій псевдоніму та використовувати клієнт dhcp у режимі тестування, де він виводить будь-яку відповідь, фактично не переналаштовуючи інтерфейс:
ifconfig eth0:1 up
dhclient -w -n eth0:1
У мене є лише доступ до вікна debian, тому якщо у вас є інша реалізація dhcp, параметр "сухого запуску" може бути іншим, як для dhcpcd:
dhcpcd -T eth0:1
У мене раніше був запущений сценарій cron із чимось подібним, що сповістило б адміністратора (мене!) Про шахрайські dhcp-сервери.
ifconfig eth0:1 up
на вихідSIOCSIFFLAGS: Cannot assign requested address