Câu trả lời:
nmap
làm điều này dễ dàng:
sudo nmap --script broadcast-dhcp-discover -e eth0
sẽ hiển thị:
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
Nếu có sẵn trong kho lưu trữ thì có dhcpdump
từ trang người đàn ông:
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.
Nếu bạn có tcpdump
sẵn cho bạn, việc gọi chương trình là root với các tham số sau có thể hỗ trợ bạn trong việc tìm kiếm máy chủ:
tcpdump -i [id giao diện] -nev udp port 68
Thật không may, do cách bố trí mạng của tôi, tôi không thể bắt được một cái bắt tay DHCP đầy đủ ngay lập tức. Tuy nhiên, tôi thấy Yêu cầu DHCP từ iPad của mình:
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"
Sau khi để `tcpdump 'chạy qua đêm, cuối cùng tôi cũng thấy ACK này:
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
Nếu khi chạy tcpdump
lệnh đó và bạn thấy Ưu đãi BOOTP / DHCP hoặc Ack (Nack), thì đó sẽ là từ máy chủ DHCP và địa chỉ MAC của máy chủ sẽ ở ngay sau dấu thời gian trên dòng đầu tiên.
Vì vậy, máy chủ DHCP (hợp lệ) ở đây có địa chỉ MAC a8: 39: 44: 96: fa: b8`.
Sử dụng một trong nhiều công cụ tra cứu địa chỉ MAC trên web, tôi thấy MAC này thuộc về A8:39:44 Actiontec Electronics, Inc
bộ định tuyến của tôi.
Để bắt các gói máy chủ DHCP giả mạo khi chúng xảy ra, tôi sẽ phải để tcpdump
quá trình này chạy trong cửa sổ terminal:
tcpdump -i en0 -nev udp src port 67 and not ether host a8:39:44:96:fa:b8
Điều này sẽ chỉ hiển thị cho tôi các phản hồi của máy chủ DHCP từ các máy chủ khác ngoài máy chủ DHCP hợp lệ của tôi, miễn là quá trình này đang chạy trong cửa sổ riêng của nó.
Lệnh sau sẽ chạy trong nền cho đến khi bắt được 100 gói, nối thêm bất kỳ tin nhắn máy chủ DHCP giả mạo nào vào tệp /tmp/rogue
. Một lần nữa, địa chỉ MAC của máy chủ DHCP hợp lệ của bạn phải được sử dụng ở nơi thích hợp, cũng như mô tả giao diện trên hệ thống của bạn.
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
lệnh này chạy, nó sẽ hiển thị các gói máy chủ DHCP được gửi bởi một địa chỉ MAC khác với máy chủ DHCP của bạn. Tất nhiên, bạn sẽ cần cung cấp địa chỉ ở nơi được chỉ định ... Tôi sẽ đặt nó trong câu trả lời của tôi ngay bây giờ, để có được định dạng tốt hơn.
Có đủ thời gian, có thể thực hiện phát hiện một cách thụ động: Hãy nhớ lại rằng một máy khách khởi tạo sẽ phát đi một chương trình phát DHCPDISCOVER. Nếu một dhcpserver có sẵn, nó sẽ nhận được một lời đề nghị và sau đó phát ra (một lần nữa khi phát sóng!) Một DHCPREQUEST. Như vậy
Thành công của hai điểm đầu tiên mở rộng về số lượng máy chủ khác mới được đính kèm / khởi động vào mạng và cả thời gian thuê.
Bạn có thể thử tạo một thiết bị bí danh và sử dụng máy khách dhcp trong chế độ thử nghiệm, nơi nó in ra bất kỳ phản hồi nào, mà không thực sự cấu hình lại giao diện:
ifconfig eth0:1 up
dhclient -w -n eth0:1
Tôi chỉ có quyền truy cập vào một hộp debian, vì vậy nếu bạn có một triển khai dhcp khác, tùy chọn chạy khô có thể khác, như đối với dhcpcd:
dhcpcd -T eth0:1
Tôi đã từng có một kịch bản cron chạy với một cái gì đó như thế này, nó sẽ cảnh báo cho quản trị viên (tôi!) Về các máy chủ dhcp giả mạo.
ifconfig eth0:1 up
đầu raSIOCSIFFLAGS: Cannot assign requested address