Se você tem tcpdump
disponível para você, invocar o programa como root com os seguintes parâmetros pode ajudá-lo a encontrar o servidor:
tcpdump -i [interface id] -nev udp port 68
Infelizmente, devido ao layout da minha rede, não consigo obter um handshake DHCP completo capturado imediatamente. No entanto, vejo uma solicitação DHCP do meu 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"
Depois de permitir que o 'tcpdump' seja executado durante a noite, acabei por ver este 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
Se ao executar esse comando tcpdump
e você vir uma Oferta BOOTP / DHCP ou um Ack (Nack), isso será feito em um servidor DHCP e o endereço MAC do servidor estará logo após o registro de data e hora na primeira linha.
Portanto, o servidor DHCP (válido) aqui tem o endereço MAC a8: 39: 44: 96: fa: b8 '.
Usando uma das muitas ferramentas de pesquisa de endereços MAC na Web , vejo que esse MAC pertence a A8:39:44 Actiontec Electronics, Inc
que é meu roteador.
Para pegar pacotes de servidores DHCP desonestos assim que acontecem, eu teria que deixar esse processo tcpdump
em execução na janela do terminal:
tcpdump -i en0 -nev udp src port 67 and not ether host a8:39:44:96:fa:b8
Isso só mostrará as respostas do servidor DHCP de hosts diferentes do meu servidor DHCP válido, desde que o processo esteja sendo executado em sua própria janela.
O comando a seguir será executado em segundo plano até que 100 pacotes sejam capturados, anexando quaisquer mensagens do servidor DHCP desonestos ao arquivo /tmp/rogue
. Novamente, o endereço MAC do seu servidor DHCP válido deve ser usado no local apropriado, bem como o descritor de interface em seu sistema.
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 &
'