Атака и защита протокола STP

Атака и защита STP

Тема сегодняшней статьи «Атака и защита протокола STP». Протокол STP име­ет свои плюсы и минусы. Далее мы рассмотрим, как можно воспользоваться особенностями STP для атаки на STP. В конце поговорим о защите STP от атак.

Еще по теме: Уязвимости SSL и TLS-протокола в небраузерном софте

Не будем пересказывать интернет и разбираться в протоколе STP, и сразу перейдем к делу.

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
Дамп тра­фика в сниффере Wireshark

Данные сооб­щения озна­чают, что протокол STP на ком­мутато­рах запущен и не блокируется на под­клю­чен­ных к нам пор­тах. Объ­еденим наши интерфей­сы в bridge для того, что­бы тра­фик шел через наше устрой­ство, запус­каем фрей­мворк Yersinia и видим, что нам дос­тупен STP на обо­их интерфей­сах.

Вы­бор типа аИн­форма­ция о получен­ных STP BPDUа­ки Claiming Root Role
Ин­форма­ция о получен­ных STP BPDU

Начинаем ата­ку и выбира­ем тип ата­ки Claiming Root Role, который означает, что мы нач­нем анон­сировать себя в качес­тве ком­мутато­ра с мень­шим при­ори­тетом, что зас­тавит перес­тро­ить­ся дерево STP.

Вы­бор типа ата­ки Claiming Root Role
Вы­бор типа ата­ки Claiming Root Role

Как и предпологалось, мы ста­ли кор­невым ком­мутато­ром для нашего сег­мента сети и сейчас смо­жем уви­деть тра­фик, который ранее шел через SW1:

SW2-LINUX-SW3

SW2

Для про­вер­ки запус­тим пинг:

Мы можем видеть, что все пакеты ICMP прош­ли через нашу машину.

Па­кеты ICMP идут через наш компь­ютер
Па­кеты ICMP идут через наш компь­ютер
ICMP в данном случае исполь­зует­ся исключительно для наг­ляднос­ти, данным обра­зом мож­но перех­ватить любой тра­фик, изме­няя струк­туру, пос­тро­енную STP.

Далее рас­смот­рим дру­гие типы атак на STP, которые можно реализовать с помощью Yersinia.

Ти­пы атак фрей­мвор­ка Yersinia
Ти­пы атак фрей­мвор­ка Yersinia

Sending 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

Пос­ле отправ­ки TCN BPDU:

Sending conf BPDUs и Sending TCN BPDU’s дела­ют все выше­опи­сан­ное, но в фор­мате DoS. То есть при отправ­ке configuration BPDU и topology change BPDU сеть начина­ет «штор­мить», CPU ком­мутато­ра силь­но заг­ружа­ется.

Счет­чик получен­ных BPDU

Claiming root, other role и claiming root role with MITM— ата­ки, ана­логич­ные нашему при­меру: изме­няя при­ори­тет или MAC, мы можем перес­тра­ивать текущее дерево STP.

Защита STP

В про­токо­ле STP заложе­ны механиз­мы, которые поз­воля­ют пре­сечь появ­ление новых устрой­ств в качес­тве root bridge, бло­киро­вать пор­ты, на которые при­шел BPDU, либо вклю­чать пол­ную филь­тра­цию BPDU.

В дан­ной статье мы рас­смат­рива­ем прин­ципы и коман­ды, при­меня­емые на обо­рудо­вании Cisco.

Root guard

При получе­нии луч­шего BPDU, чем нынеш­ний, получа­ющий этот BPDU интерфейс будет переве­ден в режим root-inconsistent.

Сос­тояние пор­та при получе­нии BPDU:

Нес­ложно догадать­ся, что при исполь­зовании этой фун­кции ата­ка с помощью фрей­мвор­ка будет недос­тупна.

BPDU guard

Поз­воля­ет огра­ничи­вать домен L2. При получе­нии любого BPDU порт перево­дит­ся в сос­тояние err disable BPDU guard error.

Пос­ле получе­ния BDPU на пор­те с фун­кци­ей BPDU guard:

BPDU filter

BPDU filter не отправ­ляет и не получа­ет BPDU на пор­те. Ины­ми сло­вами, про­токол STP на этом интерфей­се вык­лючен.

Нес­ложно догадать­ся, что при исполь­зовании этих фун­кций ата­ки с при­мене­нием фрей­мвор­ка будут недос­тупны.

Заключение

Вот так лег­ко, не при­бегая к слож­ным схе­мам, мож­но перех­ватывать тра­фик в сети. STP — дос­таточ­но прос­той про­токол с отсутс­тву­ющей по умол­чанию фун­кци­ей защиты. Мно­гие пре­неб­рега­ют уста­нов­кой защит­ных механиз­мов в L2-домене, что может при­вес­ти к доволь­но тяж­ким пос­ледс­тви­ям. Так как STP избавля­ет от петель и не зас­тавля­ет весь тра­фик идти обя­затель­но через RB, необ­ходимо точ­но опре­делить­ся с нап­равле­нием тра­фика и век­тором ата­ки.

Еще по теме: Атака DNS rebinding

ВКонтакте
OK
Telegram
WhatsApp
Viber

Один комментарий

  1. stp

    «Пор­ты SW2 0/1 SW3 0/0 исполь­зуют­ся для переда­чи тра­фика»

    и тут же

    «0/0 и 0/1 на SW2 и SW3 заб­локиро­ваны во избе­жание петель»

    порты заблокированы или нет?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *