MAC Flooding Attack: Biến Switch thành Hub trong 5 phút

Tìm hiểu MAC Flooding attack - kỹ thuật tấn công Layer 2 khiến switch flood traffic như hub. Hướng dẫn demo với macof và cấu hình Port Security phòng chống.

MAC Flooding Attack: Biến Switch thành Hub trong 5 phút

Tóm tắt nhanh

  • MAC Flooding là gì: Kỹ thuật tấn công Layer 2 bằng cách flood switch với hàng nghìn MAC address giả, làm đầy CAM table
  • Hậu quả: Switch chuyển sang chế độ "fail-open", flood traffic đến tất cả các port như một hub - attacker có thể sniff toàn bộ traffic
  • Tốc độ tấn công: Tool macof có thể gửi 155,000 MAC entries mỗi phút, đầy CAM table trong vài giây
  • Phòng chống: Port Security là giải pháp chính, giới hạn số MAC address được phép trên mỗi port

1. Giới thiệu: Khi switch quên mất mình là switch

Hồi mới học mạng, điều đầu tiên ai cũng được dạy là switch "thông minh" hơn hub. Hub thì như cái loa phường, cứ nhận được gì là hét toáng lên cho cả xóm nghe. Còn switch biết ai ở đâu, chỉ gửi frame đến đúng người cần nhận. Nghe có vẻ an toàn, đúng không?

Nhưng nếu tôi bảo bạn rằng chỉ cần 5 phút và một công cụ đơn giản, một attacker có thể biến cái switch "thông minh" đó thành một con hub "ngốc nghếch", broadcast mọi thứ cho tất cả mọi người cùng nghe? Đó chính là MAC Flooding attack, một trong những kỹ thuật tấn công Layer 2 kinh điển mà bất kỳ network engineer nào cũng cần biết để phòng chống.

Trong bài viết này, chúng ta sẽ đi sâu vào cơ chế hoạt động của switch, tại sao nó lại "có thể bị lừa", và quan trọng nhất là cách bảo vệ mạng của bạn khỏi kiểu tấn công này.

2. Switch và CAM Table hoạt động như thế nào?

Hub vs Switch: Sự khác biệt cơ bản

Trước khi nói về tấn công, hãy hiểu rõ tại sao switch được coi là "thông minh" hơn hub. Hub hoạt động ở Layer 1 (Physical Layer), đơn giản chỉ là một bộ khuếch đại tín hiệu. Khi một frame đến port 1, hub copy và gửi ra tất cả các port khác. Không phân biệt, không chọn lọc, cứ thế mà phát tán. Đây là lý do hub còn được gọi là "multiport repeater".

hub-vs-switch

Switch hoạt động ở Layer 2 (Data Link Layer) và có "bộ não" để ghi nhớ ai đang ở đâu. Cái "bộ não" đó chính là CAM Table (Content Addressable Memory Table), hay còn gọi là MAC Address Table.

CAM Table: Bộ não của switch

CAM Table là một bảng lưu trữ mapping giữa MAC address và port vật lý trên switch. Mỗi entry trong bảng bao gồm:

Field Description Example
MAC Address Địa chỉ MAC của thiết bị 00:1A:2B:3C:4D:5E
Port Cổng vật lý kết nối Gi0/1
VLAN VLAN ID 10
Age Thời gian từ lần học cuối 120 seconds

Quá trình học MAC address diễn ra như sau:

  1. Frame đến switch port
  2. Switch đọc source MAC address từ frame
  3. Nếu MAC chưa có trong table → thêm entry mới (MAC + Port + VLAN + Timestamp)
  4. Nếu MAC đã có → cập nhật timestamp (refresh aging timer)
  5. Lookup destination MAC → forward đến port tương ứng HOẶC flood nếu không tìm thấy

Điểm quan trọng cần nhớ: khi switch không biết destination MAC ở đâu (unknown unicast), nó sẽ flood frame ra tất cả các port trong cùng VLAN, trừ port nhận vào. Đây chính là hành vi mà MAC Flooding attack lợi dụng.

cam-table-learning

Giới hạn của CAM Table

CAM Table không phải vô hạn. Tùy theo model và dòng switch, CAM table thường chứa được từ 8,000 đến 32,000 entries. Ví dụ:

  • Cisco Catalyst 2960: ~8,000 MAC addresses
  • Cisco Catalyst 3750: ~12,000 MAC addresses
  • Enterprise-grade switches: 32,000+ MAC addresses

Một thông số quan trọng khác là aging time, mặc định là 300 giây (5 phút). Nếu một MAC address không có traffic nào trong 5 phút, entry đó sẽ bị xóa khỏi table để giải phóng bộ nhớ. Tuy nhiên, nếu attacker liên tục flood MAC mới, aging time không kịp "dọn dẹp" những entry cũ.

3. MAC Flooding Attack và CAM Table Overflow

Concept

Ý tưởng của MAC Flooding cực kỳ đơn giản: nếu CAM table có giới hạn, tại sao không fill nó đầy bằng MAC address giả? Khi table đầy, switch không thể học thêm MAC mới, và do đó không biết destination MAC nằm ở đâu. Kết quả? Switch buộc phải flood tất cả traffic như một hub.

Đây là hiện tượng gọi là fail-open mode - khi gặp sự cố, switch chọn cách "mở cửa" cho tất cả thay vì chặn traffic. Từ góc độ availability, đây là quyết định hợp lý (mạng vẫn hoạt động). Nhưng từ góc độ security, đây là thảm họa.

Attack Flow

mac-flooding-attack-flow

Công cụ tấn công

Tool phổ biến nhất cho MAC Flooding là macof, thuộc bộ công cụ dsniff. Macof được thiết kế để flood network với random MAC addresses một cách nhanh chóng và hiệu quả.

Một số stats ấn tượng về macof:

  • Có thể gửi 155,000 MAC entries mỗi phút
  • Trong 7-8 giây, có thể inject hơn 50,000 MAC addresses
  • Đủ để fill đầy CAM table của hầu hết consumer-grade switches

Ngoài macof, còn có các công cụ khác như:

  • Yersinia: GUI-based tool cho nhiều loại Layer 2 attacks
  • Scapy: Python library cho phép craft custom packets

4. Demo MAC Flooding với macof trên Kali Linux

Lưu ý quan trọng: Chỉ thực hiện trên lab environment của bạn. Tấn công mạng không được phép là hành vi bất hợp pháp.

Lab Setup

Để demo, bạn cần:

  • 1 Switch (có thể dùng GNS3/EVE-NG với Cisco IOS image)
  • 1 Kali Linux VM (attacker)
  • 2-3 PCs khác (victims)
  • Wireshark để capture traffic

Cài đặt macof

sudo apt update
sudo apt install dsniff

Syntax và Options

macof [-s src] [-d dst] [-e tha] [-x sport] [-y dport] [-i interface] [-n times]

Các option quan trọng:

  • -i interface: Interface để gửi packets (eth0, eth1...)
  • -s src: Source IP address
  • -d dst: Destination IP address
  • -n times: Số lượng packets gửi (mặc định: infinite)

Thực hiện tấn công

# Flood vô hạn trên interface eth0
sudo macof -i
eth0

# Flood 100,000 packets
sudo macof -i eth0 -n 100000

# Flood với destination cụ thể
sudo macof -i eth0 -d 192
.168.1.1

Khi chạy macof, bạn sẽ thấy output như sau:

d2:4c:7a:8b:12:3f 56:ab:cd:ef:01:23 0.0.0.0.26218 > 0.0.0.0.36181: S 1584065123:1584065123(0) win 512
8e:31:9d:c7:45:67 a1:b2:c3:d4:e5:f6 0.0.0.0.18432 > 0.0.0.0.52891: S 892347561:892347561(0) win 512
...
(hàng nghìn dòng tương tự)

Mỗi dòng là một Ethernet frame với random source MAC address được gửi đi. Trong vài giây, CAM table sẽ bị overwhelm.

Kiểm tra kết quả

Trên switch (nếu bạn có quyền access):

Switch# show mac address-table count

Bạn sẽ thấy số lượng entries tăng vọt và có thể đạt maximum.

Trên Wireshark của attacker machine, bạn sẽ bắt đầu thấy traffic không phải dành cho mình - đây là dấu hiệu switch đã chuyển sang flooding mode.

5. Port Security Cisco: Giải pháp phòng chống MAC Flooding

Port Security là tính năng built-in trên Cisco switches cho phép giới hạn số lượng MAC address được học trên mỗi port. Đây là tuyến phòng thủ đầu tiên và hiệu quả nhất chống MAC Flooding.

Cấu hình cơ bản

Switch(config)# interface GigabitEthernet0/1
Switch(config-if)# switchport mode access
Switch(config-if)# switchport port-security
Switch(config-if)# switchport port-security maximum 2
Switch(config-if)# switchport port-security violation shutdown
Switch(config-if)# switchport port-security mac-address sticky

Giải thích từng command:

  1. switchport mode access: Port phải ở access mode (không phải trunk)
  2. switchport port-security: Enable port security
  3. switchport port-security maximum 2: Chỉ cho phép tối đa 2 MAC addresses
  4. switchport port-security violation shutdown: Shutdown port khi vi phạm
  5. switchport port-security mac-address sticky: Tự động "học" MAC và lưu vào config

Violation Modes

Khi số MAC addresses vượt quá giới hạn, switch sẽ phản ứng theo violation mode được cấu hình:

Mode Drop Traffic Increment Counter Generate Syslog Send SNMP Trap Port State
protect Yes No No No Up
restrict Yes Yes Yes No Up
shutdown (default) Yes Yes Yes Yes err-disabled

Khuyến nghị: Sử dụng shutdown mode cho môi trường production. Mặc dù có vẻ "cực đoan", nhưng việc tự động disable port khi phát hiện tấn công giúp ngăn chặn damage ngay lập tức và alert admin.

port-security-mechanism

Recovery từ err-disabled

Khi port bị shutdown do security violation, bạn cần recovery thủ công hoặc cấu hình auto-recovery:

! Manual recovery
Switch(config)# interface GigabitEthernet0/1
Switch(config-if)# shutdown
Switch(config-if)# no shutdown

! Auto recovery (tự động enable lại sau 300 giây)
Switch(config)# errdisable recovery cause psecure-violation
Switch(config)# errdisable recovery interval 300

Kiểm tra Port Security

Switch# show port-security interface GigabitEthernet0/1

Port Security : Enabled
Port Status : Secure-up
Violation Mode : Shutdown
Aging Time : 0 mins
Aging Type : Absolute
SecureStatic Address Aging : Disabled
Maximum MAC Addresses : 2
Total MAC Addresses : 1
Configured MAC Addresses : 0
Sticky MAC Addresses : 1
Last Source Address:Vlan : 00:1a:2b:3c:4d:5e:10
Security Violation Count : 0

6. Switch Security Best Practices và Defense in Depth

Port Security là tuyến phòng thủ đầu tiên, nhưng không nên là duy nhất. Dưới đây là các best practices để bảo vệ mạng Layer 2 toàn diện.

1. Port Security cho mọi access port

Đây là baseline. Mỗi port kết nối end-user nên có port security enabled với maximum 1-2 MAC addresses.

2. 802.1X Authentication

Thay vì chỉ dựa vào MAC address (có thể spoof), 802.1X yêu cầu authentication trước khi cho phép access network. Đây là giải pháp mạnh hơn cho môi trường enterprise.

Switch(config)# aaa new-model
Switch(config)# aaa authentication dot1x default group radius
Switch(config)# dot1x system-auth-control
Switch(config)# interface GigabitEthernet0/1
Switch(config-if)# dot1x port-control auto

3. VLAN Segmentation

Chia mạng thành nhiều VLANs giới hạn scope của attack. Nếu attacker compromise một VLAN, traffic của các VLANs khác vẫn được bảo vệ.

4. Disable unused ports

Ports không sử dụng nên được shutdown và assign vào một "blackhole" VLAN.

Switch(config)# interface range GigabitEthernet0/20-24
Switch(config-if-range)# shutdown
Switch(config-if-range)# switchport access vlan 999

5. Monitoring và Alerting

Theo dõi CAM table utilization và set up alerts khi usage tăng đột biến. Đây là dấu hiệu sớm của MAC Flooding attack.

Switch# show mac address-table count

6. CISA Recommendations (2024)

Theo khuyến nghị từ CISA vào tháng 8/2024, các tổ chức nên:

  • Disable Cisco Smart Install feature (legacy, thường bị lợi dụng)
  • Sử dụng Type 8 password protection (NIST approved)
  • Regular review và harden device configurations

7. Kết luận về MAC Flooding và Layer 2 Security

Key Takeaways

  1. CAM Table có giới hạn: Switch thông minh nhưng không hoàn hảo. CAM table chỉ chứa được 8K-32K entries, và khi đầy, switch sẽ flood traffic như hub.
  2. MAC Flooding cực kỳ dễ thực hiện: Chỉ cần một command macof -i eth0, attacker có thể fill đầy CAM table trong vài giây và sniff toàn bộ network traffic.
  3. Port Security là must-have: Mỗi access port trên switch production phải có port security enabled. Đây là baseline security không thể thiếu.
  4. Defense in Depth: Port Security kết hợp với 802.1X, VLAN segmentation, và monitoring tạo thành lớp bảo vệ đa tầng hiệu quả.

Connection to Layer 2 Security Trinity

MAC Flooding và Port Security là một phần của "Layer 2 Security Trinity" - ba trụ cột bảo mật switch cơ bản:

  • Port Security (bài này) - Chống MAC Flooding
  • DHCP Snooping - Chống DHCP spoofing/starvation
  • Dynamic ARP Inspection (DAI) - Chống ARP spoofing

Nếu bạn quan tâm đến việc xây dựng một network thực sự secure, hãy tìm hiểu thêm về hai kỹ thuật còn lại trong các bài viết tiếp theo.

Next Steps

  1. Lab thử MAC Flooding trên GNS3/EVE-NG để hiểu rõ cơ chế
  2. Review lại configuration switches trong mạng của bạn
  3. Enable Port Security trên tất cả access ports
  4. Set up monitoring cho CAM table utilization

Disclaimer: Nội dung bài viết chỉ dành cho mục đích học tập và phòng thủ. Thực hiện tấn công trên hệ thống không được phép là hành vi bất hợp pháp.


Sources: