Xác định máy chủ DHCP giả mạo trên mạng LAN của bạn
Vấn đề
Bạn nghi ngờ rằng một người nào đó đã được cài đặt thêm, máy chủ DHCP trái phép trên mạng LAN của bạn - hoặc unintentiously hoặc độc hại. Vì vậy, bạn muốn kiểm tra cho bất kỳ máy chủ DHCP hoạt động và xác định IP và địa chỉ MAC.
cách giải quyết
Sử dụng Scapy để gửi một DHCP khám phá yêu cầu và phân tích các bài trả lời:
Trong trường hợp này, chúng ta có 2 bài trả lời, do đó, có hai máy chủ DHCP đang hoạt động trên mạng thử nghiệm:
Thảo luận
Chúng tôi xác định đa = True để làm Scapy chờ đợi thêm các gói tin trả lời sau khi các phản ứng đầu tiên là nhận được. Đây cũng là lý do tại sao chúng ta không thể sử dụng thuận tiện hơn dhcp_request () chức năng và phải xây dựng các gói tin DHCP bằng tay: dhcp_request () sử dụng SRP1 () để gửi và nhận và do đó ngay lập tức sẽ trở lại sau khi các gói tin trả lời đầu tiên.
Hơn nữa, Scapy thường làm cho chắc chắn rằng trả lời đến từ các địa chỉ IP cùng kích thích đã được gửi đến. Nhưng gói DHCP của chúng tôi sẽ được gửi đến địa chỉ IP broadcast (255.255.255.255) và bất kỳ gói tin trả lời sẽ có địa chỉ IP của máy chủ DHCP trả lời như địa chỉ IP nguồn của nó (ví dụ 192.168.1.1). Bởi vì các địa chỉ IP không phù hợp, chúng ta phải vô hiệu hóa kiểm tra Scapy với conf.checkIPaddr = False trước khi gửi các kích thích.
Xem thêm
http://en.wikipedia.org/wiki/Rogue_DHCP
Bạn nghi ngờ rằng một người nào đó đã được cài đặt thêm, máy chủ DHCP trái phép trên mạng LAN của bạn - hoặc unintentiously hoặc độc hại. Vì vậy, bạn muốn kiểm tra cho bất kỳ máy chủ DHCP hoạt động và xác định IP và địa chỉ MAC.
cách giải quyết
Sử dụng Scapy để gửi một DHCP khám phá yêu cầu và phân tích các bài trả lời:
>>> conf.checkIPaddr = False >>> fam,hw = get_if_raw_hwaddr(conf.iface) >>> dhcp_discover = Ether(dst="ff:ff:ff:ff:ff:ff")/IP(src="0.0.0.0",dst="255.255.255.255")/UDP(sport=68,dport=67)/BOOTP(chaddr=hw)/DHCP(options=[("message-type","discover"),"end"]) >>> ans, unans = srp(dhcp_discover, multi=True) # Press CTRL-C after several seconds Begin emission: Finished to send 1 packets. .*...*.. Received 8 packets, got 2 answers, remaining 0 packets
Trong trường hợp này, chúng ta có 2 bài trả lời, do đó, có hai máy chủ DHCP đang hoạt động trên mạng thử nghiệm:
>>> ans.summarize() Ether / IP / UDP 0.0.0.0:bootpc > 255.255.255.255:bootps / BOOTP / DHCP ==> Ether / IP / UDP 192.168.1.1:bootps > 255.255.255.255:bootpc / BOOTP / DHCP Ether / IP / UDP 0.0.0.0:bootpc > 255.255.255.255:bootps / BOOTP / DHCP ==> Ether / IP / UDP 192.168.1.11:bootps > 255.255.255.255:bootpc / BOOTP / DHCP }}} We are only interested in the MAC and IP addresses of the replies: {{{ >>> for p in ans: print p[1][Ether].src, p[1][IP].src ... 00:de:ad:be:ef:00 192.168.1.1 00:11:11:22:22:33 192.168.1.11
Thảo luận
Chúng tôi xác định đa = True để làm Scapy chờ đợi thêm các gói tin trả lời sau khi các phản ứng đầu tiên là nhận được. Đây cũng là lý do tại sao chúng ta không thể sử dụng thuận tiện hơn dhcp_request () chức năng và phải xây dựng các gói tin DHCP bằng tay: dhcp_request () sử dụng SRP1 () để gửi và nhận và do đó ngay lập tức sẽ trở lại sau khi các gói tin trả lời đầu tiên.
Hơn nữa, Scapy thường làm cho chắc chắn rằng trả lời đến từ các địa chỉ IP cùng kích thích đã được gửi đến. Nhưng gói DHCP của chúng tôi sẽ được gửi đến địa chỉ IP broadcast (255.255.255.255) và bất kỳ gói tin trả lời sẽ có địa chỉ IP của máy chủ DHCP trả lời như địa chỉ IP nguồn của nó (ví dụ 192.168.1.1). Bởi vì các địa chỉ IP không phù hợp, chúng ta phải vô hiệu hóa kiểm tra Scapy với conf.checkIPaddr = False trước khi gửi các kích thích.
Xem thêm
http://en.wikipedia.org/wiki/Rogue_DHCP
Comments
Post a Comment