Jawaban:
nmap
melakukan ini dengan mudah:
sudo nmap --script broadcast-dhcp-discover -e eth0
akan menunjukkan:
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
Jika tersedia di repositori ada dhcpdump
dari halaman manual:
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.
Jika tcpdump
tersedia bagi Anda, menjalankan program sebagai root dengan parameter berikut mungkin membantu Anda dalam menemukan server:
tcpdump -i [interface id] -nev udp port 68
Sayangnya, karena tata letak jaringan saya, saya tidak bisa mendapatkan jabat tangan DHCP langsung. Namun, saya memang melihat Permintaan DHCP dari iPad saya:
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"
Setelah membiarkan `tcpdump 'berjalan semalaman, saya akhirnya melihat ACK ini:
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
Jika ketika menjalankan tcpdump
perintah itu, dan Anda melihat Tawaran BOOTP / DHCP atau Ack (Nack), itu akan berasal dari server DHCP, dan alamat MAC server akan tepat setelah stempel waktu di baris pertama.
Jadi server DHCP (valid) di sini memiliki alamat MAC a8: 39: 44: 96: fa: b8`.
Menggunakan salah satu dari banyak alat pencarian alamat MAC di web saya melihat MAC ini milik A8:39:44 Actiontec Electronics, Inc
router saya.
Untuk menangkap paket-paket server DHCP yang tidak benar ketika terjadi, saya harus membiarkan tcpdump
proses ini berjalan di jendela terminal:
tcpdump -i en0 -nev udp src port 67 and not ether host a8:39:44:96:fa:b8
Ini hanya akan menunjukkan kepada saya respons server DHCP dari host selain server DHCP saya yang valid, selama prosesnya berjalan di jendela sendiri.
Perintah berikut ini akan berjalan di latar belakang sampai 100 paket diambil, menambahkan pesan server DHCP jahat ke file /tmp/rogue
. Sekali lagi, alamat MAC dari server DHCP Anda yang valid harus digunakan di tempat yang sesuai, serta deskriptor antarmuka pada sistem Anda.
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
perintah ini berjalan, itu akan menampilkan paket server DHCP yang dikirim oleh alamat MAC yang berbeda dari server DHCP Anda. Tentu saja, Anda harus memberikan alamat di tempat yang ditunjukkan ... Saya akan menempatkannya di jawaban saya saat ini, untuk mendapatkan format yang lebih baik.
Dengan waktu yang cukup, mungkin untuk melakukan pendeteksian secara pasif: Ingatlah bahwa klien yang menginisialisasi mengirimkan siaran DHCPDISCOVER. Jika dhcpserver tersedia, ia akan memilih tawaran dan kemudian mengirimkan (lagi sebagai siaran!) DHCPREQUEST. Jadi
Keberhasilan dua poin pertama deopends pada jumlah host lain yang baru saja terpasang / di-boot ke jaringan dan juga waktu sewa.
Anda dapat mencoba membuat perangkat alias dan menggunakan klien dhcp dalam mode pengujian, di mana ia mencetak respons apa pun, tanpa benar-benar mengkonfigurasi ulang antarmuka:
ifconfig eth0:1 up
dhclient -w -n eth0:1
Saya hanya memiliki akses ke kotak debian, jadi jika Anda memiliki implementasi dhcp lain, opsi dry-run mungkin berbeda, seperti untuk dhcpcd:
dhcpcd -T eth0:1
Saya dulu menjalankan skrip cron dengan sesuatu seperti ini, yang akan memberi tahu admin (saya!) Tentang server dhcp jahat.
ifconfig eth0:1 up
outputSIOCSIFFLAGS: Cannot assign requested address