CCNA

Hướng dẫn LAB: STP SPOOFING (chiếm quyền ROOT BRIDGE) và DoS trên PNETLAB

phongdhphongdh
10 phút đọc
Chia sẻ:
Zalo
Hướng dẫn LAB: STP SPOOFING (chiếm quyền ROOT BRIDGE) và DoS trên

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)

Sơ đồ topology của lab STP Spoofing trên PnetLab gồm ba Switch nối với nhau và máy Kali Attacker

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):
    • Switch1 kết nối với Switch2 và Switch3.
    • Switch2 kết nối với Switch3.
    • Máy Attacker kết nối vào cổng e0/3 của Switch3.

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
Bật các cổng e0/0 đến e0/3 trên Switch bằng lệnh no shutdown và lưu cấu hình
Trạng thái các cổng mạng của Switch sau khi được bật lên trong bài lab STP
Giao diện console của Switch trong lúc chờ STP hội tụ sang trạng thái Forwarding

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ả show spanning-tree vlan 1 trên Switch 1, xác định Root Bridge ban đầu của mạng

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ả show spanning-tree vlan 1 trên Switch 2 và Switch 3 để đối chiếu vai trò STP
Bảng trạng thái cổng STP của các Switch trước khi bắt đầu tấn công Spoofing

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ật debug spanning-tree event trên Switch 1, hệ thống 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)

Chạy công cụ Yersinia với giao diện đồ họa bằng lệnh yersinia -G trên máy Kali Linux

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 x nế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.

Yersinia gửi gói BPDU giả mạo với Bridge Priority bằng 0 qua Switch 3 để chiếm quyền 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
Log debug trên Switch 1 thông báo Root Bridge mới là 32769, aabb.cc00.0100 trên cổng Et0/1

Tiếp tục gõ lệnh kiểm tra STP:

Switch1# show spanning-tree vlan 1

Kế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).
Kết quả show spanning-tree trên Switch 1 không còn dòng This bridge is the root sau khi bị chiếm quyền

2. Tại Console của Switch 3 (Nơi gắn Attacker): Chạy lệnh

Switch3# show spanning-tree vlan 1

Kế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).

Cổng nối tới Attacker trên Switch 3 đã chuyển vai trò thành Root Port sau tấn công STP Spoofing

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
Kiểm tra mức sử dụng CPU của Switch 3 bằng lệnh show processes cpu history trước khi tấn công DoS

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 detail

Kế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.

Chi tiết cổng e0/3 trên Switch 3 cho thấy số gói BPDU received đang ở mức thấp trước tấn công

Bước 2: Thực hiện tấn công bằng Yersinia

  1. Mở giao diện Yersinia trên máy Kali Linux (Attacker).
  2. Nhấp vào nút Launch attack.
  3. Chọn tab STP.
  4. 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.
  5. Nhấn OK để bắt đầu.
Chọn Launch attack trong Yersinia, tab STP với hình thức sending conf BPDUs để bắt đầu tấn công DoS

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
Số gói BPDU received trên cổng e0/3 của Switch 3 tăng đột biến sau khi bị bắn phá BPDU

⚠️ XỬ LÝ SỰ CỐ (Nếu thông số received không tăng): Nếu sơ đồ cắm dây của bạn đã đúng mà số lượng gói received vẫ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 (loopback lo) 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à eth0 hoặc e0). 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 đó: stp là giao thức, -attack 2 là mã lệnh gửi liên tục các gói conf BPDUs gây DoS, -interface eth0 là 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ím Ctrl + C trê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 spanning-tree portfast trên cổng nối Attacker, kèm cảnh báo chỉ dùng cho cổng thiết bị đầu cuối

Bật tiếp BPDU Guard để bảo vệ:

Switch3(config-if)# spanning-tree bpduguard enable
Switch3(config-if)# exit
Bật tiếp spanning-tree bpduguard enable trên cổng của Switch 3 để hoàn tất bảo vệ cổng biên

Bước 2: Thử nghiệm sức mạnh của BPDU Guard

  1. Quay trở lại máy Kali Linux, mở Yersinia.
  2. 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.
  3. 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:
Console Switch 3 hiện cảnh báo khi BPDU Guard chặn gói BPDU giả mạo đầu tiên từ máy Kali
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).

Tham khảo thêm về STP Spoofing

Bài viết liên quan: Mạng máy tính là gì? Kiến thức nền tảng CCNA | Tài liệu chính thức: Cisco Networking Academy (chủ đề STP Spoofing).

Chia sẻ bài viết này:
Zalo
phongdh

phongdh

Tác giả bài viết • Content Creator

Chào mọi người, mình là Phong - hiện đang công tác tại Phòng Kỹ thuật AZDIGI. Trong quá trình làm việc mình có cơ hội được tiếp xúc với khá nhiều các vấn đề liên quan đến Website/Email/Hosting/VPS/Server, do đó mình viết lại các hướng dẫn này nhằm chia sẻ kiến thức, cũng như tạo một môi trường để chúng ta giao lưu và học hỏi lẫn nhau.

Kết nối:

Bài viết liên quan

Những bài viết bạn có thể quan tâm

Thảo luận 0 bình luận Viết bình luận

Email được bảo mật và không hiển thị công khai.

Chưa có bình luận. Hãy là người mở đầu cuộc trò chuyện.

Zalo