CHƢƠNG III : CÁC LOẠI SNIFFER VÀ CÁCH PHÒNG CHỐNG
3.8 SPANNING TREE PROTOCOL ATTACK
3.8.1 Các kiểu tấn công
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ả là, 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 man in the middle).
Thay đổi cấu trúc cây STP:
Hình 3.48. Cấu trúc cây STP lúc đầu
Trƣớc khi bị tấn cơng, cây STP có root bridge là Switch 1. Attacker gửi đi bản tin giả mạo có Priority thấp nhất (Priority 0) đến Switch 3. 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 q trình bình bầu root bridge, root portvà
TÌM HIỂU VÀ MINH HỌA SNIFFER 72
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 Attacker 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, vậy cổng 1, 2 đƣợc chọn làm designated port vì nó gửi đi bản tin BPDU 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 .
- Trên Switch 2: cổng 2 đƣợc chọn làm root port; cổng 1 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. Attacker 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.
Tất cả quá trình trên đƣợc diễn ra trong khoảng 15s (trạng thái listening). Các Switch đợi thêm 15s nữa để học lại địa chỉ MAC (trạng thái learning). Sau 30s, 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.
Hình 3.49. Cấu trúc cây STP đã bị thay đổi
TÌM HIỂU VÀ MINH HỌA SNIFFER 73
Tấn công Man in the middle:
Hình 3.50. Sơ đồ tấn cơng Man in the middle
Trong sơ đồ tấn công trên, Attacker cần có hai card mạng gắn vào các cổng tƣơng ứng trên các Switch, sau đó gửi bản tin BPDU với Priority nhỏ hơn Priority của các Switch. Khi đó, Attacker sẽ trở thành root bridge.
Hình 3.51. Đường đi của dữ liệu
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.8.2 Cách phịng chống
Ngun lý phịng chống STP là khơng cho host gửi bản tin BPDU giả mạo.
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
TÌM HIỂU VÀ MINH HỌA SNIFFER 74
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.
SW(config-if)# spanning-tree portfast
SW(config-if)# spanning-tree portfast bpduguard default
Cấu hình root guard:
Bình thƣờng khi một Switch nhận đƣợc bản tin BPDU của một Switch có bridge ID 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.
SW(config-if)# spanning-tree guard root
3.8.3 Minh họa
Để thực hiện minh họa này, ta cần có:
- Máy Attacker chạy hệ điều hành Ubuntu, cài đặt sẵn 2 phần mềm Ettercap và Yersinia.
- Hai cisco Switch và 1 máy victim chạy hệ điều hành Windows XP (có thể dùng linux). Victim Attacker F1/15 SW1 F1/15 SW2 eth0 eth1 F1/0 F1/1 F1/2 Root bridge FWD FWD SW1 MAC: c200.0ab8.0000 SW2 MAC: c201.0ab8.0000
TÌM HIỂU VÀ MINH HỌA SNIFFER 75
Trƣớc khi minh họa cách tấn cơng ta cần phải cấu hình để Victim có thể telnet đến 2 Switch.
SW2(config)# int vlan 1
SW2(config-if)# ip address 10.0.0.2 255.255.255.0 SW2(config)# line vty 0 15
SW2(config-line)# password 654321 SW2(config-line)# login
SW2(config)# enable secret cisco
Cấu hình tƣơng tự với Switch 1.
Theo mơ hình trên, vì Switch 1 có địa chỉ MAC nhỏ hơn của Switch 2 (priority mặc định bằng nhau) nên Switch 1 sẽ đƣợc bình chọn là root bridge, các cổng của 2 Switch đang ở trạng thái forwarding.
Các bƣớc thực hiện:
Trên máy Attacker, khởi chạy phần mềm Ettercap.
Chọn tab Sniff Bridged sniffing, chọn First network interface là eth0,
second network interface là eth1.
Chọn Start Start sniffing, chọn đến tab View Connection. Trên Terminal, gõ yersinia –G để khởi động Yersinia.
Chọn tab Edit interfaces, tick chọn eth0, eth1
Chọn Launch Attack, chuyển sang tab STP, chọn Claiming Root Role để kích hoạt tính năng gởi BPDU giả mạo root bridge OK.
TÌM HIỂU VÀ MINH HỌA SNIFFER 76
Hình 3.53. Máy Attacker gởi tin BPDU
Ta thấy rằng, sau khi xác định đƣợc bridge ID của Switch (c200.0ab8.0000), phần mềm Yersinia sẽ tự động sinh ra một bridge ID thấp hơn (c200.0ab7.0000) để gởi đến Switch để bắt đầu lại quá trình bầu chọn root bridge.
Sang Switch 1 gõ lệnh: SW1# show spanning-tree vlan 1 brief.
TÌM HIỂU VÀ MINH HỌA SNIFFER 77
Khi đó, cổng f1/15 của Switch 2 sẽ ở trạng thái blocking. Cấu trúc cây STP bây giờ sẽ là: Victim Attacker F1/15 SW1 SW2 BPDU F1/15 eth0 eth1 BPDU F1/0 F1/1 F1/2 Root bridge FWD BLK SW1 MAC: c200.0ab8.0000 SW2 MAC: c201.0ab8.0000 Attacker MAC: c201.0ab7.0000
Hình 3.55. Cấu trúc cây STP bị thay đổi
Trên máy victim ta mở Command promt, gõ lệnh telnet 10.0.0.2. Login với mật khẩu đã cấu hình trƣớc đó.
Sang máy Attacker, trên giao diện Ettercap, ở tab Connection, double click vào gói tin có port là 23 chọn Join view, ta đƣợc kết quả:
Hình 3.56. Password bắt được trên Ettercap
Ta có nhận xét là khi cổng f1/15 của Switch 2 ở trạng thái blocking thì dữ liệu từ máy victim thay vì đi qua đƣờng nối giữa 2 Switch thì sẽ phải đi qua máy Attacker
TÌM HIỂU VÀ MINH HỌA SNIFFER 78