DHCP Spoofing: Hướng Dẫn Tấn Công & Phòng Chống Hiệu Quả
DHCP Spoofing là gì?
DHCP Spoofing là một dạng tấn công mạng trong đó kẻ tấn công giả mạo một DHCP Server hợp lệ nhằm cấp phát địa chỉ IP sai lệch cho các thiết bị trong mạng.
Thông thường, DHCP (Dynamic Host Configuration Protocol) giúp tự động cấp IP, Gateway và DNS cho thiết bị. Tuy nhiên, khi bị spoofing:
- Hacker sẽ dựng một DHCP Server giả
- Thiết bị người dùng nhận cấu hình từ server giả này
- Tất cả lưu lượng có thể bị chuyển hướng qua hacker
👉 Đây là một dạng Man-in-the-Middle (MITM) cực kỳ nguy hiểm.
Cách thức hoạt động của DHCP Spoofing
Quá trình tấn công diễn ra theo các bước:
1. Người dùng gửi yêu cầu DHCP
Thiết bị trong mạng gửi broadcast:
DHCP Discover
2. Server giả phản hồi nhanh hơn
Hacker gửi:
DHCP Offer (giả)
⚠️ Vì nhanh hơn DHCP Server thật nên client sẽ nhận cấu hình từ hacker.
3. Cấp phát IP độc hại
Hacker cung cấp:
- IP hợp lệ
- Gateway trỏ về máy hacker
- DNS giả mạo
4. Kiểm soát lưu lượng
Hacker có thể:
- Nghe lén dữ liệu
- Đánh cắp tài khoản
- Chuyển hướng website (phishing)
- Inject malware
Ví dụ thực tế về DHCP Spoofing
Trong một quán cafe WiFi:
- Người dùng kết nối vào mạng
- Hacker trong cùng mạng bật DHCP giả
- Toàn bộ traffic bị chuyển qua máy hacker
- Người dùng truy cập Facebook, ngân hàng → bị đánh cắp thông tin
Công cụ dùng để tấn công DHCP Spoofing
Một số tool phổ biến:
- Ettercap
- Bettercap
- Yersinia
- DHCPig
Các công cụ này thường chạy trên Linux (đặc biệt là Kali Linux).
Dấu hiệu nhận biết bị DHCP Spoofing
Bạn có thể nghi ngờ khi:
- Gateway IP bị thay đổi bất thường
- DNS lạ (không phải Google: 8.8.8.8 hoặc Cloudflare: 1.1.1.1)
- Internet chậm hoặc bị redirect website
- Xuất hiện cảnh báo SSL sai
Thực Hành
1. Sơ đồ mạng và Quy hoạch IP
Chuẩn bị các node trên EVE-NG theo cấu trúc sau:
-
R1 (DHCP Server Thật): Sử dụng Router Cisco (IOL L3). Cổng
e0/0nối với Switch. Đóng vai trò cấp phát IP hợp lệ. -
SW1 (Switch Trung tâm): Sử dụng Switch Cisco (IOL L2).
-
Kali Linux (Attacker): Nối vào cổng
e0/1của SW1. Đóng vai trò máy kẻ tấn công dùng công cụ Yersinia. -
VPC (Victim): Nối vào cổng
e0/2của SW1. Đóng vai trò máy trạm của nhân viên hợp lệ.
Quy hoạch IP (IP Pool):
-
Mạng LAN:
192.168.1.0/24 -
Default Gateway (R1):
192.168.1.254 -
IP kẻ tấn công (Kali): Tự nhận IP DHCP hoặc thiết lập tĩnh
192.168.1.1 -
Tên miền nội bộ (Domain):
com.quyenlt

2. Cấu hình Cơ sở (Baseline Configuration)
Trước khi tấn công, cần đảm bảo mạng lưới đang hoạt động bình thường và VPC nhận được IP xịn.
Trên DHCP Server (R1):
R1# configure terminal
R1(config)# interface e0/0
R1(config-if)# ip address 192.168.1.254 255.255.255.0
R1(config-if)# no shutdown
R1(config-if)# exit
! Cấu hình DHCP Pool
R1(config)# ip dhcp excluded-address 192.168.1.254
R1(config)# ip dhcp pool LAN_POOL
R1(config-dhcp)# network 192.168.1.0 255.255.255.0
R1(config-dhcp)# default-router 192.168.1.254
R1(config-dhcp)# dns-server 8.8.8.8
R1(config-dhcp)# domain-name com.quyenlt
Trên VPC (Kiểm tra nhận IP):
VPC> ip dhcp
VPC> show ip
! Đảm bảo VPC nhận được IP và Gateway là 192.168.1.254
3. Kịch bản Tấn công (Từ máy Kali Linux)
Kẻ tấn công sẽ sử dụng chiến thuật "Combo 1-2" để triệt hạ Server thật và dựng Server giả lên thay thế.
Kiểm tra trạng thái hòa bình Trên Router :
show ip dhcp binding

Bạn sẽ thấy đang có 2 IP, 1 là của VPC, còn lại là của Kali, nếu không hiện IP của Kali cũng không sao cả, chỉ cần cắm dây thì mặc định Kali đã tự nhận IP DHCP rồi, nếu bạn vẫn muốn ép nó nhận IP và show ra như hình chỉ cần vào máy Kali chạy lệnh sau :
sudo dhclient -r eth0sudo dhclient eth0
Bước 1: Tấn công cạn kiệt IP (DHCP Starvation)
-
Mở máy Kali, chạy lệnh
yersinia -Gđể mở giao diện đồ họa. -
Chuyển sang tab DHCP, chọn Launch attack > sending DISCOVER packet > OK.

Hậu quả: Yersinia sẽ tạo ra hàng vạn địa chỉ MAC ảo để "vét sạch" IP trên R1. (Trên R1 gõ show ip dhcp binding sẽ thấy IP bị chiếm dụng toàn bộ).

Lúc này thử lại trên VPCS sẽ thấy không được cấp IP nữa.

Để tắt tiến trình vừa tấn công trên Yersinia bạn thao tác như hình:

Bước 2: Dựng Server giả mạo (Rogue DHCP - MITM)
-
Vẫn trên Yersinia, mở thêm một đợt tấn công: Launch attack > creating DHCP rogue server.

-
Điền các thông số để "lùa" nạn nhân:
-
Server ID, Router, DNS Server: Điền IP của máy Kali (ví dụ
192.168.1.1). Nhớ kiểm tra xem IP máy kali của mình được cấp là IP nào nhé lệnhip a -
Start IP - End IP: Điền dải IP trống (ví dụ
192.168.1.100-192.168.1.150). -
Lease Time:
3600. (Thời gian DHCP cho phía client mượn IP)
-

-
Kiểm tra nạn nhân sập bẫy: Mở VPC, gõ
ip dhcp -x(xóa IP cũ) rồi gõip dhcp(xin IP mới). VPC sẽ nhận IP từ Kali và Gateway bị trỏ về192.168.1.1. Toàn bộ dữ liệu của VPC giờ đã nằm trong tay hacker.

Như hình là đã tấn công thành công rồi, máy VPCS đã nhận GW của máy Kali rồi.
4. Giải pháp Phòng chống Toàn diện (Zero Trust)
Đây là phương án cấu hình tối ưu nhất cho thực tế doanh nghiệp. Thay vì đi tìm xem hacker cắm ở cổng nào, chúng ta sẽ giăng lưới bảo vệ lên toàn bộ các cổng dành cho người dùng bằng sự kết hợp giữa DHCP Snooping và Port-Security.
Lưu ý: Khắc phục lỗi trên EVE-NG bằng cách ép cứng Full-Duplex để Switch không bị đơ.
Trên Switch Trung tâm (SW1):
SW1# configure terminal
! --- BẬT DHCP SNOOPING TOÀN CỤC ---
SW1(config)# ip dhcp snooping
SW1(config)# ip dhcp snooping vlan 1
SW1(config)# no ip dhcp snooping information option
SW1(config)# ip dhcp snooping verify mac-address
! --- CHỈ ĐỊNH CỔNG TIN CẬY (Nối với R1) ---
SW1(config)# interface e0/0
SW1(config-if)# description Link_To_Real_DHCP
SW1(config-if)# ip dhcp snooping trust
SW1(config-if)# duplex full
SW1(config-if)# exit
! --- THIẾT LẬP LUẬT ZERO-TRUST CHO TẤT CẢ CỔNG NGƯỜI DÙNG ---
! Giả sử cổng từ e0/1 đến e0/3 là dành cho cắm máy tính
SW1(config)# interface range e0/1 - 3
SW1(config-if-range)# switchport mode access
SW1(config-if-range)# duplex full
! 1. Áp dụng Port-Security để chặn việc thay đổi MAC ảo (Ngắt tấn công Starvation ngay tại cửa)
SW1(config-if-range)# switchport port-security
SW1(config-if-range)# switchport port-security maximum 2
SW1(config-if-range)# switchport port-security violation shutdown
! 2. Giới hạn tốc độ gói tin DHCP (Chống DoS CPU Switch)
SW1(config-if-range)# ip dhcp snooping limit rate 10
SW1(config-if-range)# exit
5. Nghiệm thu và Kiểm tra (Troubleshooting)
Sau khi cấu hình phòng thủ xong, hãy thử đóng vai hacker đi phá lại hệ thống:
-
Trên R1: Dọn sạch rác cũ bằng lệnh
clear ip dhcp binding *.

Trên Kali: Bật lại tấn công DHCP Starvation bằng Yersinia.

-
Kết quả trên SW1: Ngay khi Yersinia xả đạn, Switch sẽ lập tức phát hiện vi phạm bảo mật và khóa ngay cổng của kẻ tấn công. Màn hình console của SW1 sẽ in ra log:
%PM-4-ERR_DISABLE: psecure-violation error detected on Et0/1, putting Et0/1 in err-disable state %PORT_SECURITY-2-PSECURE_VIOLATION: Security violation occurred... %DHCP_SNOOPING_RATE_LIMIT_EXCEEDED: The interface Et0/1 is receiving more than the threshold set

Lúc này trên VPCS sẽ vẫn nhận IP DHCP mới bình thường :

Kết luận: Máy Kali hoàn toàn mất mạng (err-disable). Router R1 được bảo vệ an toàn 100%, không bị mất dải IP. Các máy tính hợp lệ ở cổng khác vẫn có thể xin IP và làm việc bình thường.
Thao Khiên
Để "tháo khiên", đưa hệ thống mạng về lại trạng thái "vườn không nhà trống" hớ hênh ban đầu cho việc demo, bạn chỉ cần dùng lệnh no đằng trước các lệnh cấu hình mà chúng ta đã gõ.
Bạn hãy vào Switch (SW1) và gõ tuần tự các lệnh sau để lột bỏ hoàn toàn lớp phòng thủ nhé:
Bước 1: Gỡ bỏ DHCP Snooping toàn cục và cổng Trusted
SW1# configure terminal
! Tắt tính năng DHCP Snooping trên toàn Switch
SW1(config)# no ip dhcp snooping
SW1(config)# no ip dhcp snooping vlan 1
SW1(config)# no ip dhcp snooping verify mac-address
! Hủy chế độ Trusted trên cổng nối với Router R1 (e0/0)
SW1(config)# interface e0/0
SW1(config-if)# no ip dhcp snooping trust
SW1(config-if)# exit
Bước 2: Gỡ Port-Security và Rate Limit trên các cổng người dùng
Giả sử lúc nãy bạn cấu hình bảo vệ trên dải cổng từ e0/1 đến e0/3:
SW1(config)# interface range e0/1 - 3
! Tắt giới hạn tốc độ gói tin (Rate limit)
SW1(config-if-range)# no ip dhcp snooping limit rate 10
! Tắt tính năng Port-Security
SW1(config-if-range)# no switchport port-security
! QUAN TRỌNG: Nếu cổng e0/1 của máy Kali đang bị khóa (tối thui) từ lần test trước,
! bạn BẮT BUỘC phải "tắt đi bật lại" để đánh thức nó dậy:
SW1(config-if-range)# shutdown
SW1(config-if-range)# no shutdown
SW1(config-if-range)# exit
SW1(config)# exit
Bước 3: Dọn dẹp tàn dư trên Router R1
Sau khi Switch đã "mở toang cửa", bạn đừng quên qua Router R1 để xóa sạch bộ nhớ IP cũ, giúp đợt tấn công demo tiếp theo diễn ra hoàn hảo:
R1# clear ip dhcp binding *
Xong rồi đó! Bây giờ hệ thống của bạn đã trở lại trạng thái dễ bị tổn thương nhất. Bạn có thể tự tin bật Yersinia lên để biểu diễn đòn tấn công hút cạn IP và giả mạo Server cho mọi người xem, sau đó lại ốp đoạn code "giăng lưới" kia vào để chứng minh giải pháp phòng thủ thành công rực rỡ! Chúc bạn có một buổi demo lab thật mượt mà nhé!