ตรวจสอบว่าเซิร์ฟเวอร์ DHCP ที่มีอยู่ในเครือข่ายของฉันใช้ทุบตี


23

ใช้ CentOS กับ IP แบบคงที่มีวิธีการกำหนดถ้าเซิร์ฟเวอร์ DHCP ทำงานบนเครือข่ายโดยใช้ทุบตี?

คำตอบ:


44

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

1
แม้ว่าคำตอบที่มีอยู่ค่อนข้างดี แต่ฉันชอบทางออกของคุณมาก!
Julie Pelletier

1
คำสั่งที่ดี แต่มันก็คุ้มค่าที่จะสังเกตว่านี่เป็นเพียงแค่การส่งออกเซิร์ฟเวอร์ DHCP แรกที่ตอบสนอง หากเซิร์ฟเวอร์ DHCP หลายตัวมีอยู่คำสั่งนี้จะไม่พบพวกเขา
สะกิด

6

หากมีอยู่ในที่เก็บมี 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.

5

หากคุณtcpdumpพร้อมใช้งานการเรียกใช้โปรแกรมในฐานะรูทด้วยพารามิเตอร์ต่อไปนี้อาจช่วยคุณในการค้นหาเซิร์ฟเวอร์:

tcpdump -i [id ของอินเทอร์เฟซ] -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กระบวนการนี้ทำงานในหน้าต่าง terminal:

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 &

`


+1 เคยใช้สิ่งนี้ตลอดเวลาในเครือข่าย VoIP ของลูกค้าเพื่อช่วยให้พวกเขามองเห็นเซิร์ฟเวอร์ DHCP ที่หลอกลวงซึ่งทำให้บริการของพวกเขายุ่งเหยิง
MaQleod

ใช่ฉันต้องใช้มันเพื่อค้นหาเซิร์ฟเวอร์ DHCP อันธพาลในการปรับใช้เครือข่ายเคเบิลโมเด็มในช่วงต้นจนกว่าเราจะหาวิธีกรอง UDP พอร์ตขาออก 67 บนโมเด็มเคเบิล DOCSIS แต่ละสายในเครือข่ายของเรา แม้หลังจากที่เราระบุตัวโกงมันก็เป็นไปไม่ได้เสมอที่จะระบุว่าโมเด็มตัวใดอยู่ข้างหลัง ในกรณีที่รุนแรงเราต้องปิดแต่ละโหนดจนกว่าคนโกงจะหยุดแล้วแยกสิ่งที่แอมป์บนโหนดนั้นเพื่อ จำกัด จำนวนรถบรรทุกม้วนที่ MSO จะทำ ช่วงเวลาแห่งความสนุก. DOCSIS สด
Nevin Williams

วิธีแก้ปัญหาง่ายๆเพราะฉันต้องการตรวจสอบบ่อยๆด้วยการทุบตี
Steve

หากคุณปล่อยให้tcpdumpคำสั่งนี้ทำงานอยู่มันจะแสดงแพ็กเก็ตเซิร์ฟเวอร์ DHCP ที่ส่งโดยที่อยู่ MAC ที่แตกต่างจากเซิร์ฟเวอร์ DHCP ของคุณ แน่นอนคุณจะต้องให้ที่อยู่ในสถานที่ที่ระบุ ... ฉันจะใส่ไว้ในคำตอบของฉันในปัจจุบันเพื่อให้การจัดรูปแบบดีขึ้น
Nevin Williams

0

ให้เวลาเพียงพออาจเป็นไปได้ที่จะทำการตรวจสอบแบบพาสซีฟ: จำได้ว่าการเริ่มต้นไคลเอนต์ส่งออกอากาศ DHCPDISCOVER ออก หาก dhcpserver พร้อมใช้งานมันจะเลือกข้อเสนอแล้วปล่อย (อีกครั้งในรูปแบบการออกอากาศ!) DHCPREQUEST ดังนั้น

  • ถ้าคุณได้รับการถ่ายทอด DHCPREQUEST นั่นก็คือเซิร์ฟเวอร์ dhcp
  • หากคุณได้รับ DHCPDISCOVER แต่ไม่มี DHCPREQUEST ภายในหนึ่งหรือสองวินาที (สำหรับบัญชีสำหรับเซิร์ฟเวอร์ dhcp ระยะไกลผ่านรีเลย์ dhcp) จะไม่มีเซิร์ฟเวอร์ dhcp
  • หากคุณไม่ได้รับ DHCPDISCOVER คุณต้องรออีกต่อไปหรือลองหาเซิร์ฟเวอร์ dhcp (เช่นตามวิธีของ Kenned)

ความสำเร็จของสองจุดแรกนั้นขึ้นอยู่กับจำนวนของโฮสต์อื่น ๆ ที่เพิ่งเชื่อมต่อ / บูทเข้ากับเครือข่ายและเวลาการเช่า


0

คุณสามารถลองสร้างอุปกรณ์นามแฝงและใช้ไคลเอ็นต์ dhcp ในโหมดการทดสอบซึ่งจะพิมพ์การตอบสนองใด ๆ โดยไม่ต้องกำหนดค่าอินเทอร์เฟซใหม่:

ifconfig eth0:1 up
dhclient -w -n eth0:1

ฉันมีสิทธิ์เข้าถึงกล่อง debian เท่านั้นดังนั้นหากคุณมีการใช้งาน dhcp อื่นตัวเลือกการรันแบบแห้งอาจแตกต่างกันเช่น dhcpcd:

dhcpcd -T eth0:1

ฉันเคยมีสคริปต์ cron ทำงานกับสิ่งนี้ที่จะแจ้งเตือนผู้ดูแลระบบ (ฉัน!) เกี่ยวกับเซิร์ฟเวอร์ rogue dhcp


1
เมื่อเรียกifconfig eth0:1 upผลลัพธ์SIOCSIFFLAGS: Cannot assign requested address
Steve
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.