> 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

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

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

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

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

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

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

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

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

### Атака на STP

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

<figure><img src="https://676766212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR6dozMpxuaoEOVvH1vR%2Fuploads%2FIaOSIBJnITpiIFWo2EnV%2Fimage.png?alt=media&amp;token=aeea7e43-37bf-4df6-af6e-61b43edb9e6d" 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="https://676766212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR6dozMpxuaoEOVvH1vR%2Fuploads%2Fn5yCLWpMv03nbGzZ3Ymk%2Fimage.png?alt=media&amp;token=0b778494-3aa0-43fd-b747-c3d4558e1d51" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://676766212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR6dozMpxuaoEOVvH1vR%2Fuploads%2FxtgnHBLWqYWgIVn7JvFq%2Fimage.png?alt=media&amp;token=d47a3c2b-6f1d-48ed-9475-c5d34c5b7e39" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://676766212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR6dozMpxuaoEOVvH1vR%2Fuploads%2FyO1rST0NBIyyxt9P9Djc%2Fimage.png?alt=media&amp;token=655ae813-e55c-42ec-9b6b-5369dd86079a" alt=""><figcaption></figcaption></figure>

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

**SW2-LINUX-SW3**

<figure><img src="https://676766212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR6dozMpxuaoEOVvH1vR%2Fuploads%2FmgyyMQMDB9uhHcXaS0VO%2Fimage.png?alt=media&amp;token=8e15aea8-75ac-489d-8aa6-6863ec30c89d" alt=""><figcaption></figcaption></figure>

**SW2**

<figure><img src="https://676766212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR6dozMpxuaoEOVvH1vR%2Fuploads%2FwtZtD8wUhu5jmij0UpxI%2Fimage.png?alt=media&amp;token=7fb645e5-8582-4c14-bce1-1c7fd7773377" 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="https://676766212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR6dozMpxuaoEOVvH1vR%2Fuploads%2FXRLnYpuVuJ3pqJde1cZt%2Fimage.png?alt=media&amp;token=25a682f9-341b-4f5c-ae19-6820be515c7e" alt=""><figcaption></figcaption></figure>

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