3.2.Các kiểu tấn công:
3.2.1.Giả mạo root bridge:
Lợi dụng điểm yếu về chứng thực bản tin, một hacker có thể tiến hành tấn công theo kiểu gửi đi bản tin BPDU giả dạng để tuyên bố mình là root bridge. Thực hiện điều này không khó bởi chỉ cần gửi đi bản tin BPDU có priority cực thấp thì khả năng của host trở thành root bridge là rất cao.

Hậu quả của kiểu tấn công giả mạo:
 Cấu trúc cây STP bị thay đổi không theo ý muốn của người quản trị.Ví dụ khi kẻ tấn công chiếm được quyền làm root bridge; khi nhận được bản tin TCN báo có sự thay đổi cấu hình từ một switch; root vẫn gửi đi bản tin BPDU với TC =0 báo trạng thái STP bình thường. Kết quả là mọi switch khác đều không biết về sự thay đổi này dẫn đến việc trao đổi thông tin có thể bị gián đoạn.
 Dữ liệu truyền qua lại giữa các switch thuộc các nhánh khác nhau của cây STP sẽ được truyền qua host trước: tấn công MiTM.
Ví dụ 1: Thay đổi cấu trúc cây STP.

Hình 3.11: Mô hình tấn công giả mạo root bridge


Mô tả các bước tấn công:Trước khi bị tấn công; cây STP có root bridge là switch 1. Kẻ tấn công trên PC 4 gửi đi bản tin giả mạo có Priority thấp nhất đến switch 3. Quá trình hội tụ trong mạng diễn ra như sau: Khi switch 3 nhận được bản tin BPDU từ cổng 3 của nó, nó biết là có sự thay đổi topology của mạng. Lúc đó 3 cổng trên switch 3 sẽ chuyển từ trạng thái blocking sang trạng thái listening để switch tham gia vào quá trình bình bầu root bridge; root port và designated port.

Trong trạng thái này, switch 3 cũng gửi đi bản tin BPDU có priority 0 đến hai switch 1 và 2. Quá trình bình bầu diễn ra có kết quả như sau:
 Các switch sẽ coi PC 4 là root bridge.
 Trên switch 3: cổng 3 được chọn làm root port vì có chi phí đến root thấp nhất; cổng 1; 2 được chọn làm designated port vì nó gửi đi bản tin quảng cáo có chi phí thấp hơn so với chi phí của các bản tin gửi từ switch 1 và 2.
 Trên switch 1: cổng 1 được chọn làm root port; cổng 2 được chọn là designated port vì tuy cùng cost đến root nhưng switch 1 có priority thấp hơn switch 2.
 Trên switch 2: cổng 1 được chọn làm root port; cổng 2 là non-designated port.

Sau khi đã chọn được root port; switch 3 sẽ gửi đi bản tin TCN qua cổng 3 cho root bridge mới thông báo là đã có sự thay đổi trong mạng. Kẻ tấn công gửi lại bản tin TCA cho switch 3 và gửi đi bản tin BPDU có TC=1 đến tất cả các switch khác. Các switch khác khi nhận được bản tin này sẽ đặt thời gian tồn tại các ánh xạ trong bảng cache xuống còn 15 s để chuẩn bị học địa chỉ MAC mới.

Hình 3.12: Trạng thái listening.


Tất cả quá trình trên được diễn ra trong khoảng 15s (các cổng trên switch ở trạng thái listening). Các switch đợi thêm 15 s nữa để học lại địa chỉ MAC. Sau 30 s; các cổng là root port hoặc designated port sẽ được đặt vào trạng thái forwarding còn các cổng là non-designated port sẽ được đặt vào trạng thái blocking. Trạng thái hội tụ mới:

Hình 3.13: Trạng thái hội tụ mới.



Khi so sánh hình 3.11 và hình 3.13 ta có thể thấy rõ cấu trúc cây STP đã bị thay đổi hoàn toàn.

Ví dụ 2: tấn công MiTM:

Hình 3.14: Sơ đồ tấn công MiTM.



Trong sơ đồ tấn công trên, kẻ tấn công cần có hai card mạng gắn vào các cổng tương ứng trên các switch. Sau khi gửi đi bản tin giả mạo; cây STP mới sẽ là:

Hình 3.15: Cây STP sau khi bị tấn công.


Ta có thể thấy: dữ liệu từ PC 1 sang PC 2 phải đi qua máy của kẻ tấn công thay vì đi trực tiếp qua đường nối giữa switch 1 và switch 2 như trong sơ đồ mạng trước khi bị tấn công.

3.2.2.Tấn công DoS:
Kiểu tấn công DoS dựa vào điểm yếu thứ hai của STP: chỉ cần kẻ tấn công gửi đi bản tin BPDU giả mạo thông báo có sự thay đổi topology của mạng, sau đó thuật toán STP sẽ được các switch thực hiện và nếu bản tin này được gửi đi liên tục thì các switch chỉ làm được nhiệm vụ chạy STP mà không thực hiện được các chức năng khác. Hậu quả của kiểu tấn công này là các dịch vụ của mạng sẽ bị tê liệt.


Ví dụ. Kẻ tấn công có thể thực hiện kiểu tấn công DoS như sau:
 Bước 1:Bắt một gói tin BPDU để lấy ra priority của root bridge hiện thời.
 Bước 2 :Gửi đi bản tin quảng cáo với priority giảm dần.
 Bước 3 :Khi priority giảm về 0; kẻ tấn công không gửi đi bản tin quảng cáo nữa. Sau khoảng thời gian Maxage; các switch sẽ bình bầu lại và sau 50 s; mạng lại hội tụ và kẻ tấn công lại tiếp tục các bước như trên.

Hậu quả là các cổng trên switch luôn ở trong trạng thái listening. Khi đó bất kì một gói tin nào đi đến switch cũng đều bị hủy. Kết quả là việc trao đổi thông tin trong mạng có thể sẽ không được thực hiện suôn sẻ như bình thường.

3.3.Cách phòng chống:
Cách phòng chống giả mạo STP nói chung là không cho host gửi đi bản tin BPDU giả mạo: cấu hình portfast, BPDU guard và root guard [1].
 Cấu hình portfast: việc cấu hình portfast sẽ chuyển trạng thái của cổng switch từ trạng thái blocking sang trạng thái Forwarding ngay lập tức, làm giảm thời gian hội tụ STP về 0. Tuy việc cấu hình portfast làm giảm thời gian hội tụ STP về 0 nhưng thuật toán STP vẫn chạy và vẫn phát hiện loop. Tuy nhiên loop chỉ có thể được phát hiện sau một khoảng thời gian nhất định: khoảng thời gian để chuyển cổng thành các trạng thái STP bình thường. Câu lệnh cấu hình:
Switch(config-if)# spanning-tree portfast
 Cấu hình BPDU guard: cấu hình này thường đi kèm với cấu hình portfast trên cùng một cổng. Nếu cổng nhận được bất kì một bản tin BPDU nào đó thì ngay lập tức, cổng sẽ được chuyển vào trạng thái errdisable, trạng thái cần phải bị shut-down do lỗi. Cổng chỉ có thể được hoạt động trở lại khi có sự can thiệp của người quản trị hoặc được khôi phục lỗi tự động sau khoảng thời gian timeout của trạng thái errdisable.
Câu lệnh cấu hình:
Switch(config-if)# spanning-tree bpduguard enable
 Cấu hình root guard: việc cấu hình root guard được tiến hành trên giao diện của một switch. Bình thường khi một switch nhận được bản tin BPDU của một switch có bridgeID tốt hơn root bridge của nó, ngay lập tức nó sẽ công nhận switch mới chính là root bridge và như vậy làm mất đi tính ổn định của mạng. Với việc cấu hình root guard, khi một cổng của switch nhận được bản tin BPDU quảng cáo tốt hơn, port sẽ được chuyển sang một trạng thái được gọi là root-inconsistent. Trong trạng thái này, dữ liệu và BPDU không được gửi nhận qua cổng nhưng switch vẫn lắng nghe các bản tin BPDU trên đó. Chừng nào không nhận được bản tin BPDU tốt hơn nữa, port sẽ trở lại trạng thái bình thường.
Câu lệnh cấu hình: Switch(config-if)# spanning-tree guard root



4.Thí nghiệm thực tế:
Sơ đồ tấn công DoS:

Hình 3.16: Sơ đồ tấn công STP DoS.
Cây STP tương ứng :


Hình 3.17: Cây STP ban đầu.



Cấu hình thiết bị:
 6 switch HP procurve 2512.
 6 PC trong đó máy của kẻ tấn công: dual-processor 700 Mhz và 1 Ghz; 512 Mb RAM; chạy hệ điều hành Red Hat Linux version 9.0. Trên máy của kẻ tấn công có cài đặt phần mềm SToP; phần mềm này có khả năng gửi đi các bản tin BPDU giả mạo.

Cách sử dụng phần mềm SToP: Phần mềm này có khả năng lắng nghe các bản tin BPDU hợp lệ gửi đến máy của kẻ tấn công. Sau đó, nó sử dụng một số thông số mặc định của bản tin hợp lệ đó (hello time; forward time; message age…) đồng thời thay đổi các tham số còn lại phục vụ cho mục đích tấn công: sửa đổi bridgeID; priority…Các bản tin BPDU giả mạo sẽ liên tục được phát ra trong khoảng thời gian hello time.

Câu lệnh:
./SToP <optional parameters>
-a <time lapse> Message Age
-b <MAC addr> Bridge ID: XXXX.XX:XX:XX:XX:XX:XX
-B Broadcasts messages to FF:FF:FF:FF:FF:FF
-c <distance> Max Root Path Cost
-d <device> : giao diện gửi ra bản tin giả mạo
-e <time lapse> Hello Time
-f Topology Change Flag -bit 1-
-G : gửi bản tin ra cổng Gigabit
-m <time lapse> Maximun Age
-o <# octets> Octets of BridgeID to preserve [0-6] (default 0)
-p Random Port ID
-r : quảng cáo nguồn là một root mới.
-R :gửi đi bản tin giả mạo Root bridge trong khoảng thời gian hello
-t <type> kiểu BPDU:
0 -> Conf. mesg STP (default)
1 -> Conf. mesg RSTP
2 -> TCN mesg
3 -> Conf. mesg STP & RSTP (partial mix)
4 -> Conf (STP & RSTP) & TCN mesg (total mix)
-y <time lapse> Forward Delay

Các bước tiến hành:
Kẻ tấn công gửi đi bản tin giả mạo root-bridge không có thực và gửi đi bản tin thông báo có sự thay đổi cấu hình nhằm mục đích khiến các switch phải tiến hành chạy lại thuật toán STP. Kết quả là hiệu năng làm việc của các switch sẽ bị giảm dẫn đến hiệu quả truyền tin trong mạng giảm. Hiệu quả truyền tin đó được xác định bằng kết quả chuyển gói tin ICMP qua lại giữa các PC dựa vào hai thông số :
 Độ mất gói: tổng số gói tin bị mất / tổng số gói tin đã truyền
 Thời gian khôi phục lại trạng thái ban đầu của mạng (độ mất gói là 0%) sau khi không còn bị tấn công DoS .
Bước 1: Kẻ giả mạo trên PC 4 gửi đi bản tin giả mạo STP root bridge không có thực với priority nhỏ hơn priority của root bridge hiện tại . Câu lệnh:


Hình 3.18: Câu lệnh gửi đi bản tin STP giả mạo.


Khi đó trạng thái các cổng trên switch 4 sẽ luôn ở trong trạng thái listening:

Hình 3.19: Switch 4 sau khi bị tấn công.


Bước 2: Tiến hành ping giữa các PC:
Kết quả thu được sau 5 phút thống kê:


Nhận xét: Số gói tin không bị mất 100% là do một số cổng trên các switch không hoàn toàn ở trong trạng thái listening mà có một số cổng vẫn chuyển sang trạng thái forwarding dù chỉ trong một khoảng thời gian rất ngắn. Ta cũng nhận thấy rằng khi switch bị tấn công càng xa gốc STP thì tỉ lệ mất gói tin càng giảm. Sở dĩ có điều này là vì càng gần gốc, các switch sẽ là nơi trung chuyển của càng nhiều các nhánh cây STP. Do đó khi bị tấn công, các nhánh này sẽ khó có khả năng liên lạc với nhau.

Bên cạnh việc dùng StoP; có thể sử dụng một công cụ cực kì hiệu quả cho việc tấn công thiết bị mạng: GNS.
Các bạn có thể dễ dàng down chương trình này về cài đặt; thiết lập các switch/router giả trong mạng và dĩ nhiên hoàn toàn có thể tuỳ chỉnh các thông số STP trên switch làm cho switch giả mạo có được priority thích hợp để trở thành root bridge trong mạng.

Hình 3.21: phiên bản GNS 3-5.0:


Các bạn có thể lấy bất kì router nào; cấu hình cho router có module network switch module (NSM)
Hình 3.22: Network switch module


Thế là chúng ta đã có một switch giả mạo. Bây giờ chỉ việc kết nối switch vào mạng LAN (thông qua card mạng của mình bằng biểu tượng cloud)

Hình 3.23: Kết nối switch giả mạo vào mạng LAN


Các bạn cấu hình sao cho địa chỉ Interface vlan 1 của switch nằm trong dải mạng LAN cùng với địa chỉ card mạng trên PC của mình.

Bước tiếp theo: các bạn console vào switch; thay đổi priority cho spanning-tree root vlan 1 (hoặc vlan bất kì nào mà bạn muốn switch của mình thành root).




Hình 3.24: Cấu hình switch giả mạo


Sau khi cấu hình các bạn nhớ show spanning-tree để xem kết quả xem switch của mình đã là root bridge hay chưa.