> For the complete documentation index, see [llms.txt](https://notes.kraken-security.ru/kraken/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://notes.kraken-security.ru/kraken/krupicy-znanii/uyazvimosti/ataka-na-protokol-stp.md).

# Атака на протокол STP

### Что такое протокол STP

STP (Spanning Tree Protocol) — это сетевой протокол, который предотвращает возникновение «петель» в сетях Интернет, использующих коммутаторы и мосты.

Давайте метафору:\
\
Сеть → это система дорог. \
Данные, которые передаются по сети → это машины.&#x20;

Коммутаторы в сети работают как перекрёстки, которые направляют данные (машины) к месту назначения. Если у нас есть несколько путей для достижения одного и того же места назначения, данные могут зациклиться (произойдет так называемая «петля»), так же как машины могут войти в круговое движение и ехать по нему бесконечно.

Эти самые «петли» могут вызвать множество проблем: перегрузка сети из-за бесконечного дублирования данных и сбои в работе оборудования. \
\
Здесь и вступает протокол STP. Он решает проблему петель, автоматически определяя наиболее эффективный путь для передачи данных и блокируя все другие пути.&#x20;

Когда STP работает, он выбирает один основной маршрут для передачи данных и временно «отключает» другие альтернативны. Если основной маршрут выходит из строя, STP быстро определит новый эффективный путь и включит его, чтобы данные продолжили свой путь к месту назначения.

Таким образом, используя STP, мы можем гарантировать, что наша сеть останется стабильной и эффективной, без беспорядка и всевозможных «петель».

### Какие есть плюсы и минусы у протокола STP&#x20;

| +                                                                                                                                                           | -                                                                                                                                                        |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Устраняет петли, которые могут парализовать сеть                                                                                                            | Требуется время для сходимости и перестроения дерева в случае изменения топологии. Это может приводить к временным сбоям в работе.                       |
| Автоматически переключает трафик на запасной маршрут в случае сбоя или отказа активной связи. Это обеспечивает избыточность сети увеличивает её надежность. | В больших сетях очень сложная настройка.                                                                                                                 |
| Легко внедряется в существующую инфраструктуру                                                                                                              | Может быть уязвим для определенных видов атак (про это мы поговорим ниже)                                                                                |
| Легко интегрируется: STP поддерживает большинство производителей сетевого оборудования                                                                      | У STP есть ограничения по количеству поддерживаемых коммутаторов и уровням иерархии. Так что этот протокол не подходит для гигантских по масштабу сетей. |
|                                                                                                                                                             |                                                                                                                                                          |

### Атака на STP

Это сегмент типовой топологии, которую обычно используют в корпоративной сети.&#x20;

<figure><img src="/files/mAZrM3esGE6IM5B8Oxm4" alt=""><figcaption></figcaption></figure>

SW1 → корневой мост (root bridge). \
SW2 и SW3 → некорневые коммутаторы (non-root bridges). \
Порты SW1 (0/0 и 0/1), SW2 (0/1 и 0/3) и SW3 (0/0 и 0/2) → настроены на пропускание трафика. \
\
Порты 0/0 и 0/1 на SW2 и SW3 заблокированы для предотвращения образования сетевых петель.

Движение трафика идет по маршруту SW2 → SW1 → SW3. Мы подсоединяемся к этим двум коммутаторам доступа SW2 и SW3 с помощью нашего устройства на базе Linux и обнаруживаем получение сообщений протокола STP.

<figure><img src="/files/Ecfvr5pFTz0z36xWmnrY" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/7FHqFtvXmtq9ukCsdv78" alt=""><figcaption></figcaption></figure>

Выберем тип атаки Claiming Root Role. Так мы нач­нем анон­сировать себя в качес­тве ком­мутато­ра с мень­шим при­ори­тетом. Это заставит перес­тро­ить­ся дерево STP.<br>

<figure><img src="/files/BkukihmwJJtyJvtHwTUK" alt=""><figcaption></figcaption></figure>

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

**SW2-LINUX-SW3**

<figure><img src="/files/aHNtM4pI4fSmYMci2v01" alt=""><figcaption></figcaption></figure>

**SW2**

<figure><img src="/files/4eNU7z1cXTVjYSoFs9bZ" alt=""><figcaption></figcaption></figure>

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

`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: .!!!!`<br>

<figure><img src="/files/wjpyUWxeChOC3t7yIitj" alt=""><figcaption></figcaption></figure>

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