Атака і захист протоколу STP
STP атака
Для атаки і захисту STP знадобиться на стенд.
Схема стендуУ цьому прикладі показана частина стандартної топології, яка найчастіше застосовується в корпоративному сегменті. SW1 виступає в якості root bridge, SW2 і SW3 — non-root bridge комутатори. Порти SW1 0/0, 0/1 SW2 0/1,0/3 SW3 0/0,0/2 використовуються для передачі трафіку, 0/0 і 0/1 на SW2 і SW3 заблоковані щоб уникнути петель.
Трафік проходить по шляху SW2 — SW1 — SW3. Після цього ми підключаємо нашу машину на Linux до двох access-комутаторам SW2 і SW3 і помічаємо, що нас приходять повідомлення STP.
Дамп трафіку в сниффере WiresharkДані повідомлення означають, що протокол STP на комутаторах запущений і не блокується на підключених до нас портах. Смакота наші інтерфейси в bridge для того, щоб трафік йшов через наш пристрій, запускаємо фреймворк Yersinia і бачимо, що нам доступний STP на обох інтерфейсах.
Інформація про отримані STP BPDUПочинаємо атаку і вибираємо тип атаки Claiming Root Role, який означає, що ми почнемо анонсувати себе в якості комутатора з меншим пріоритетом, що змусить перебудуватися дерево STP.
Вибір типу атаки Claiming Root RoleЯк і передбачалося, ми стали кореневим комутатором для нашого сегменту мережі і зараз зможемо побачити трафік, який раніше йшов через SW1:
SW2-LINUX-SW3
SW1#show spanning-tree VLAN0001 Spanning tree enabled protocol ieee Root ID Priority 8193 Address aabb.cc00.0f00 Cost 300 Port 2 (Ethernet0/1) Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 8193 (priority 8192 sys-id-ext 1) Address aabb.cc00.1000 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 15 sec Interface Role Sts Cost Пріоритет.Nbr Type ------------------- ---- --- --------- -------- -------------------------------- Et0/0 Altn BLK 100 128.1 Shr Et0/1 Root FWD 100 128.2 ShrSW2
SW2#show spanning-tree VLAN0001 Spanning tree enabled protocol ieee Root ID Priority 8193 Address aabb.cc00.0f00 Cost 200 Port 3 (Ethernet0/2) Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 32769 (priority 32768 sys-id-ext 1) Address aabb.cc00.2000 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 15 sec Interface Role Sts Cost Пріоритет.Nbr Type ------------------- ---- --- --------- -------- -------------------------------- Et0/0 Desg FWD 100 128.1 Shr Et0/1 Desg FWD 100 128.2 Shr Et0/2 Root FWD 100 128.3 Shr Et0/3 Desg FWD 100 128.4 Shr SW3#show spanning-tree VLAN0001 Spanning tree enabled protocol ieee Root ID Priority 8193 Address aabb.cc00.0f00 Cost 200 4 Port (Ethernet0/3) Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 32769 (priority 32768 sys-id-ext 1) Address aabb.cc00.3000 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 15 sec Interface Role Sts Cost Пріоритет.Nbr Type ------------------- ---- --- --------- -------- -------------------------------- Et0/0 Desg FWD 100 128.1 Shr Et0/1 Altn BLK 100 128.2 Shr Et0/2 Desg FWD 100 128.3 Shr Et0/3 Root FWD 100 128.4 ShrДля перевірки запустимо пінг:
R4#ping 192.168.0.5 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.0.5, timeout is 2 seconds: .!!!!Ми можемо бачити, що всі пакети ICMP пройшли через нашу машину.
Пакети ICMP йдуть через наш комп'ютер ICMP в даному випадку використовується виключно для наочності, даним чином можна перехопити будь-який трафік, змінюючи структуру, побудовану STP.Далі розглянемо інші типи атак на STP, які можна реалізувати з допомогою Yersinia.
Типи атак фреймворку YersiniaSending conf BPDU — ми один раз відправимо BPDU, який змусить комутатори в нашому L2-сегменті перебудувати дерево і повернутися до вихідної схемою, так як BPDU з нашої машини більше не відправляється.
Root-bridge з інтервалом у дві секунди відправляє configuration BDPU, в якому вказані основні параметри: наприклад, пріоритет поточного комутатора, його MAC, MAC інтерфейсу, з якого BPDU був відправлений, відомості про те, чи потрібно запустити механізм FLUSH для очищення CAM таблиць. Так як в даному сценарії ми намагалися видати себе за root bridge, ми відправляємо configuration BPDU з пріоритетом, рівним пріоритетом поточного RB, але з меншим MAC.
Sending TCN BPDU змусить root bridge запустити механізм очищення CAM-таблиць від MAC-адрес, трафік з яких не приходить більше 15 секунд.
За замовчуванням час, протягом якого MAC-адресу зберігається в таблиці, дорівнює 300 секунд. При зміні стану порту (наприклад, UP/DOWN) бере участь у STP комутатор повинен відправити службовий кадр TCN (topology change notification) у бік root bridge для повідомлення його про те, що відбулася зміна в мережі. Інші комутатори не знають, які саме MAC-адреси перебували за цим портом конкретного комутатора, в результаті чого запускається процес flush CAM-таблиці. Всі адреси, які не були вивчені протягом 15 секунд, будуть видалені. Такого роду атака дозволяє нам збільшити навантаження на мережу і CPU комутаторів. TCN вирушає один раз.
Приклад скидання таймера CAM-таблиці при отриманні TC BPDU
SW1#show spanning-tree VLAN0001 Spanning tree enabled protocol ieee Root ID Priority 8193 Address aabb.cc00.1000 This bridge is the root Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 8193 (priority 8192 sys-id-ext 1) Address aabb.cc00.1000 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 300 secПісля відправки TCN BPDU:
SW1#show spanning-tree VLAN0001 Spanning tree enabled protocol ieee Root ID Priority 8193 Address aabb.cc00.1000 This bridge is the root Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 8193 (priority 8192 sys-id-ext 1) Address aabb.cc00.1000 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 15 secSending conf BPDUs і Sending TCN BPDU's роблять все вищеописане, але у форматі DoS. Тобто при відправці configuration BPDU і topology change BPDU мережа починає «штормити», CPU комутатора сильно завантажується.
Лічильник отриманих BPDU
SW2#show spanning-tree ethernet interface 0/2 detail Port 3 (Ethernet0/2) of VLAN0001 is designated Port forwarding path cost 100, Port priority 128, Port Identifier 128.3. Designated root has priority 8193, address aabb.cc00.1000 Designated bridge has priority 32769, address aabb.cc00.2000 Designated port id is 128.3, designated path cost 100 Hello is pending, Topology change is set Timers: message age 0, forward delay 0, hold 0 Number of transitions to forwarding state: 1 Link type is shared by default BPDU: sent 2330, received 6650463Claiming root, other role і claiming root role with MITM— атаки, аналогічні нашому прикладу: змінюючи пріоритет або MAC, ми можемо розбудовувати поточне дерево STP.
Захист STP
У протоколі STP закладені механізми, які дозволяють попередити появу нових пристроїв в якості root bridge, блокувати порти, на які прийшов BPDU, або включати повну фільтрацію BPDU.
У даній статті ми розглядаємо принципи і команди, що застосовуються на обладнанні Cisco.Root guard
При отриманні кращого BPDU, ніж нинішній, отримує цей BPDU інтерфейс переведено в режим root-inconsistent.
SW2(config)#interface ethernet 0/2 SW2(config-if)#spanning-tree guard rootСтан порту при отриманні BPDU:
*Aug 1 13:58:03.304: %SPANTREE-2-ROOTGUARD_CONFIG_CHANGE: Root guard enabled on port Ethernet0/2. SW2#show spanning-tree ethernet interface 0/2 Vlan Role Sts Cost Пріоритет.Nbr Type ------------------- ---- --- --------- -------- -------------------------------- VLAN0001 Desg BKN*100 128.3 Shr *ROOT_IncНескладно здогадатися, що при використанні цієї функції атака з допомогою фреймворку буде недоступна.
BPDU guard
Дозволяє обмежувати домен L2. При отриманні будь-якого BPDU порт переводиться в стан err disable BPDU guard error.
SW2(config)#interface ethernet 0/2 SW2(config-if)#spanning-tree bpduguard enableПісля отримання BDPU на порте з функцією BPDU guard:
*Aug 1 15:12:50.120: %SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port Et0/2 with BPDU Guard enabled. Disabling port. SW2# *Aug 1 15:12:50.120: %PM-4-ERR_DISABLE: bpduguard error detected on Et0/2, putting Et0/2 in err-disable state *Aug 1 15:12:51.120: %LINEPROTO-5-UPDOWN: Line Interface protocol on Ethernet0/2, changed state to down *Aug 1 15:12:52.120: %LINK-3-UPDOWN: Interface Ethernet0/2, changed state to down SW2#show interfaces ethernet 0/2 Ethernet0/2 is down, line protocol is down (err-disabled)BPDU filter
BPDU filter не відправляє і не отримує BPDU на порте. Іншими словами, протокол STP на цьому інтерфейсі вимкнений.
SW2(config-if)#spanning-tree bpdufilter enableНескладно здогадатися, що при використанні цих функцій атаки із застосуванням фреймворку будуть недоступні.
Висновок
Ось так легко, не вдаючись до складних схем, можна перехоплювати трафік в мережі. STP — досить простий протокол з відсутньою за замовчуванням функцією захисту. Багато нехтують установкою захисних механізмів в L2-домені, що може призвести до тяжких наслідків. Так як STP позбавляє від петель і не змушує весь трафік йти обов'язково через RB, необхідно точно визначитися з напрямком трафіку і вектором атаки.
- Мережа FTTH: Застосування GEPON Outdoor Reserve POE ONUЩоб задовольнити потреби розвитку широкосмугового зв'язку, в даний час багато оператори воліють розгортання волоконно-оптичних мереж замість кабельних.Повна версія статті