1. MỤC ĐÍCH BÀI LAB (PNETLAB)
- Mô phỏng lại cuộc tấn công STP Spoofing trong mạng LAN (Chiếm quyền Root Bridge).
- Thực hiện tấn công Từ chối dịch vụ STP DoS (Denial of Service) làm cạn kiệt tài nguyên CPU của Switch.
- Hiểu rõ cơ chế bầu chọn Root Bridge của giao thức Spanning Tree Protocol (STP).
- Sử dụng công cụ Yersinia trên Kali Linux để giả mạo gói tin BPDU (Bridge Protocol Data Unit).
- Quan sát sự thay đổi của kiến trúc mạng và tài nguyên hệ thống trước các đòn tấn công.
- Triển khai giải pháp phòng chống Root Guard để bảo vệ sự ổn định của mạng.
2. CHUẨN BỊ VÀ DỰNG SƠ ĐỒ (TOPOLOGY)

Trên giao diện PNetLab, hãy kéo thả các Node và kết nối chúng như sau:
- Thiết bị Switch: Sử dụng 3 node Cisco IOL (L2) hoặc Cisco vIOS (L2). Đặt tên là
Switch1,Switch2,Switch3. - Thiết bị Tấn công (Attacker): Sử dụng 1 node Kali Linux (QEMU/Docker) hoặc bất kỳ máy Linux nào có cài công cụ Yersinia.
- Sơ đồ kết nối (dựa theo slide):
Switch1kết nối vớiSwitch2vàSwitch3.Switch2kết nối vớiSwitch3.- Máy
Attackerkết nối vào cổnge0/3 củaSwitch3.
3. PHẦN 1: TẤN CÔNG STP SPOOFING (CHIẾM QUYỀN ROOT BRIDGE)
BƯỚC 1: Bật cổng mạng và kiểm tra trạng thái STP ban đầu
Trong PNetLab, các cổng của node IOL có thể bị tắt mặc định. Trước khi kiểm tra STP, ta cần bật tất cả các cổng đang cắm dây.
1. Bật cổng trên TẤT CẢ các Switch (Switch1, Switch2, Switch3): Mở console của từng thiết bị và chạy cụm lệnh sau:
Switch# configure terminal
Switch(config)# interface range e0/0 - 3
Switch(config-if-range)# no shutdown
Switch(config-if-range)# end
Switch(config-if-range)# do wr


2. Đợi mạng hội tụ: Hãy chờ khoảng 30 – 50 giây để giao thức STP chuyển trạng thái các cổng mạng từ Listening/Learning sang Forwarding.
3. Mở Console của Switch 1: Chạy lệnh sau để kiểm tra:
Switch1# show spanning-tree vlan 1
Kết quả mong đợi: Lúc này bảng STP sẽ hiển thị đầy đủ danh sách cổng. Bạn sẽ thấy dòng chữ This bridge is the root. Điều này có nghĩa Switch1 đang đóng vai trò là Root Bridge của toàn mạng.
4. Mở Console của Switch 2 và Switch 3: Chạy lệnh tương tự:
Switch2# show spanning-tree vlan 1
Switch3# show spanning-tree vlan 1

Kết quả mong đợi:
- Các Switch này sẽ không có dòng “This bridge is the root”.
- Sẽ có một cổng (ví dụ cổng nối giữa Switch2 và Switch3) nằm ở trạng thái BLK (Blocked) để chống Loop mạng. Các cổng nối về Switch1 sẽ ở trạng thái FWD (Forwarding) và có vai trò là Root Port.
- Cổng nối với máy Attacker trên Switch3 sẽ ở trạng thái FWD.
BƯỚC 2: Bật tính năng gỡ lỗi (Debug) trên Switch 1
Để quan sát rõ quá trình bị tấn công và sự thay đổi của STP, chúng ta bật debug trên Switch 1 (Root Bridge hiện tại).
1. Tại Console của Switch1, gõ lệnh:
Switch1# debug spanning-tree event(Hệ thống sẽ báo: Spanning Tree event debugging is on)

BƯỚC 3: Thực hiện tấn công bằng Yersinia (Chiếm quyền)
1. Mở Console / Giao diện đồ họa của máy Kali Linux (Attacker).
2. Mở Terminal và chạy công cụ Yersinia với quyền root:
yersinia -G(Nếu sử dụng bản CLI thì dùng sudo yersinia -I)

3. Cấu hình cuộc tấn công trên giao diện Yersinia:
- Ở màn hình chính, nhấp vào nút Launch attack (hoặc nhấn phím
xnếu dùng bản CLI). - Chuyển sang tab (hoặc chọn giao thức) là STP.
- Trong danh sách các kiểu tấn công, đánh dấu chọn:
Claiming Root Role(Giành quyền Root). - Nhấn OK.
Yersinia hoạt động như thế nào? Yersinia sẽ liên tục bơm các gói tin BPDU giả mạo vào mạng thông qua Switch3. Các gói tin này được chế tạo với giá trị Bridge Priority cực thấp (bằng 0). Theo luật của STP, thiết bị nào có Priority thấp nhất sẽ chiến thắng và trở thành Root Bridge.

BƯỚC 4: Kiểm tra kết quả sau khi tấn công
Quay trở lại Console của các thiết bị Switch để xem sự thay đổi.
1. Tại Console của Switch 1: Bạn sẽ thấy các log debug liên tục hiện ra với nội dung cảnh báo có một Root Bridge mới:
*Feb 28 09:00:18.662: STP: VLAN0001 heard root 32769-aabb.cc00.0100 on Et0/1
*Feb 28 09:00:18.662: supersedes 32769-aabb.cc00.0200
*Feb 28 09:00:18.662: STP: VLAN0001 new root is 32769, aabb.cc00.0100 on port Et0/1, cost 300
Tiếp tục gõ lệnh kiểm tra STP:
Switch1# show spanning-tree vlan 1Kết quả:
- Dòng chữ
This bridge is the rootĐÃ BIẾN MẤT. Switch1 đã mất quyền điều khiển mạng. - Phần Root ID sẽ hiển thị MAC Address của máy Kali Linux (vd:
aabb.cc00.0100).

2. Tại Console của Switch 3 (Nơi gắn Attacker): Chạy lệnh
Switch3# show spanning-tree vlan 1Kết quả: Cổng nối trực tiếp với máy tính Attacker (VD: e0/3) nay đã chuyển vai trò thành Root Port. Toàn bộ lưu lượng mạng (traffic) đổ dồn về Switch 3 để đi đến “Root Bridge giả mạo” là máy Kali, gây nghẽn mạng và tạo cơ hội cho kẻ tấn công bắt gói tin (Sniffing).

4. PHẦN 2: TẤN CÔNG STP DoS (DENIAL OF SERVICE)
Mục tiêu: Kẻ tấn công sử dụng các gói tin BPDU giả mạo gửi liên tục vào mạng với số lượng lớn nhằm tiêu thụ tài nguyên CPU của thiết bị Switch, làm tê liệt hệ thống mạng mục tiêu.
BƯỚC 1: Kiểm tra trạng thái Switch 3 TRƯỚC khi tấn công
Chúng ta sẽ đo lường mức độ sử dụng CPU và số lượng gói BPDU để làm cơ sở so sánh.
1. Kiểm tra mức sử dụng CPU: Tại Console của Switch3, gõ lệnh:
Switch3# show processes cpu history
2. Kiểm tra số lượng gói BPDU trên cổng nối với Attacker (Vd: e0/3): (Cần thêm từ khóa detail để ép Switch IOL hiển thị thông số đếm gói tin)
Switch3# show spanning-tree interface e0/3 detailKết quả: Chú ý dòng cuối cùng của kết quả in ra (phần BPDU: sent …, received …). Số lượng gói received thường ở mức thấp hoặc bằng 0 do máy tính bình thường không gửi BPDU.

BƯỚC 2: Thực hiện tấn công bằng Yersinia
- Mở giao diện Yersinia trên máy Kali Linux (Attacker).
- Nhấp vào nút Launch attack.
- Chọn tab STP.
- Chọn hình thức tấn công là sending conf BPDUs. Lựa chọn này sẽ chỉ thị Yersinia liên tục bắn phá cổng mạng bằng hàng loạt các gói cấu hình BPDU.
- Nhấn OK để bắt đầu.

BƯỚC 3: Kiểm tra hậu quả (SAU khi tấn công)
Quay trở lại Console của Switch3 và kiểm tra lại các thông số. Do Switch đang phải chịu tải nặng, thao tác gõ lệnh của bạn có thể sẽ bị delay (chậm, lag).
1. Kiểm tra lại lượng BPDU nhận được:
Kết quả: Thông số received ở dòng hiển thị BPDU sẽ tăng đột biến (hàng ngàn, hàng chục ngàn gói tin) và tiếp tục tăng không ngừng.
Switch3# show spanning-tree interface e0/3 detail
⚠️ XỬ LÝ SỰ CỐ (Nếu thông số
receivedkhông tăng): Nếu sơ đồ cắm dây của bạn đã đúng mà số lượng góireceivedvẫn dậm chân tại chỗ (ví dụ:received 1), nguyên nhân là do bản đồ họa (GUI) của phần mềm Yersinia đang bị lỗi: nó tự động xả đạn nhầm vào card mạng ảo (loopbacklo) thay vì xả ra đường cáp mạng thực.Cách khắc phục: > * Cách 1 (Ép chọn card trên GUI): Trên giao diện Yersinia, bấm nút Edit interfaces, tick chọn card mạng đang cắm dây vào Switch (thường là
eth0hoặce0). Sau đó bấm Launch attack lại.
- Cách 2 (Dùng lệnh Pure CLI trực tiếp – Đảm bảo 100% thành công): > 1. Tắt giao diện Yersinia hiện tại đi. Mở lại terminal của Kali Linux. 2. Bỏ qua hoàn toàn giao diện, gõ trực tiếp lệnh ép tấn công 1 dòng duy nhất sau:
sudo yersinia stp -attack 2 -interface eth0(Trong đó:stplà giao thức,-attack 2là mã lệnh gửi liên tục các gói conf BPDUs gây DoS,-interface eth0là bắt buộc đẩy gói tin ra đường truyền vật lý). 3. Màn hình terminal sẽ đứng im. Ngay lúc này, quay lại kiểm tra Switch 3, lượng BPDU received sẽ tăng liên tục không ngừng! 4. Để dừng tấn công: Nhấn tổ hợp phímCtrl + Ctrên terminal của Kali.
5. PHẦN 3: BẢO MẬT CỔNG BIÊN (PORTFAST & BPDU GUARD)
- Mặc định, khi cắm một thiết bị (PC, Server) vào cổng Switch, cổng đó sẽ mất khoảng 30 giây (trạng thái Listening -> Learning) trước khi chuyển sang Forwarding và có mạng.
- PortFast: Giúp bỏ qua 30s chờ đợi này, cổng lập tức UP và chuyển sang Forwarding.
- Nguy cơ: Nếu kẻ tấn công cắm Switch/Yersinia vào cổng đã bật PortFast, Loop mạng sẽ lập tức xảy ra trước khi STP kịp phản ứng.
- Giải pháp – BPDU Guard: Tính năng này “canh gác” các cổng PortFast. Nếu phát hiện BẤT KỲ gói BPDU nào (kể cả BPDU tốt hay xấu), nó sẽ ngay lập tức ngắt cổng đó (Err-Disable) để bảo vệ hệ thống.
BƯỚC 1: Bật PortFast và BPDU Guard trên cổng Attacker
Switch3# configure terminal
Switch3(config)# interface e0/3
Switch3(config-if)# spanning-tree portfast(Hệ thống sẽ hiện ra một cảnh báo dài (Warning), nhắc nhở bạn chỉ bật PortFast cho các cổng nối với thiết bị đầu cuối như PC/Server, TUYỆT ĐỐI KHÔNG bật cho cổng nối với Switch khác).

Bật tiếp BPDU Guard để bảo vệ:
Switch3(config-if)# spanning-tree bpduguard enable
Switch3(config-if)# exit
BƯỚC 2: Thử nghiệm sức mạnh của BPDU Guard
- Quay trở lại máy Kali Linux, mở Yersinia.
- Thực hiện lại Đòn tấn công sending conf BPDUs hoặc Claiming Root Role một lần nữa.
- Kết quả bùng nổ: Ngay khi máy Kali vừa nhả gói BPDU giả mạo đầu tiên, hãy nhìn vào Console của Switch3, bạn sẽ thấy dòng cảnh báo đỏ rực:

Switch(config-if)#
*Feb 28 10:25:47.668: %SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port Et0/3 with BPDU Guard enabled. Disabling port.
Switch(config-if)#
*Feb 28 10:25:47.668: %PM-4-ERR_DISABLE: bpduguard error detected on Et0/3, putting Et0/3 in err-disable state
*Feb 28 10:25:48.693: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/3, changed state to down
Switch(config-if)#
*Feb 28 10:25:49.700: %LINK-3-UPDOWN: Interface Ethernet0/3, changed state to down
Switch(config-if)#Kết luận: Switch đã phát hiện có kẻ đang cố gắng can thiệp vào giao thức STP và lập tức shutdown (rút dây) cổng e0/3. Kẻ tấn công hoàn toàn bị cô lập khỏi mạng, bảo vệ hệ thống tuyệt đối an toàn 100%.
(Để mở lại cổng bị Err-Disable, quản trị viên phải vào cổng đó gõ shutdown rồi no shutdown).
