Здравия всем, дамы и господа, раз тема протоколов вам так понравилась – продолжаем. Это будет настоящий спринт – 6 протоколов за 3 дня. В предыдущей статье мы рассматривали pptp только потому, что у меня, что называется “наболело”. Теперь же предлагаю за три дня рассмотреть 6 самых популярных протоколов, которые использовать не стоит.

Сегодня говорим о bgp.

what with you.jpg


Это что?

Это такое чудо! Он такой классный! Он такой уникальный! Примерно это я частенько вижу в обзорах других людей, но так ли всё хорошо? Да, он действительно уникален, ведь это EGP (External Gateway Protocol) – протокол, позволяющий общаться между автономными сегментами сети, причём он единственный представитель этого вида. То есть твоя родная 192.168.1.0 связывается с одной из подсетей в датацентре cloudflare в Торронто, в которой находится адрес codeby.net. И представь, всё это происходит через BGP, он сообщает о доступности того или иного сегмента, он сообщает о наиболее оптимальном маршруте и ещё многие многие хорошие вещи делает именно он. Кажется, что это безопасно и всё в порядке? Да, но это не совсем правда)

Почему так грустно?

Дело всё в том, что BGP работает на 173 TCP порту и слушает 179, что даёт возможность проводить в его сторону атаки соответствующего характера. Кроме того, у этого протокола есть ряд других проблем, одна из которых заключется в том, что BGP не содержит внутреннего механизма обеспечения защиты сохранности и актуальности данных, а еще аутентификации партнеров для извещений, передаваемых между узлами BGP.
У нашего сегоодняшнего пациента имеется всего 4 типа сообщений:
  • OPEN
  • KEEPALIVE
  • NOTIFICATION
  • UPDATE
и всех этих четверых можно подменить прямо на лету и ухудшить маршрутизацию или же вовсе поменять маршрут на тот, который нужен вам. Так, например, отправив сообщение UPDATE с специальным образом прописанными аттрибутами ATOMIC_AGGRAGATE, NEXT_HOP и AS_PATH вы можете дать “соседу” ложную информацию о маршруте. Здесь, конечно, стоило бы показать пример, дать демонстрационные команды, но, к сожалению (скорее, к счастью), возможность влиять на BGP трафик есть только у людей, администрирующих роутеры находящиеся в глобальной сети и пропускающие через себя трафик (чаще всего это провайдеры) и последствия у этого “влияния” могут быть фатальны, стоит лишь ошибиться в конфиге. Вот пара примеров:

Наверное, один из самых первых широко известных bgp-инцидентов, который очень чётко указал, что bgp – это боль (но всем до сих пор всё равно).

25 апреля 1997 года многие операторы обнаружили, что на их маршрутизаторах пропали маршруты, ведущие в сеть. Я уж не знаю, много паники было по этому поводу или нет (судя по тому, что это 1997, не очень-то и много), но виновником всего “торжества был” один единственный маршрутизатор провайдера AS7007, который из-за ошибки начал рассылать UPDATE-сообщения, которые, очень хорошо встраивались в маршрутные таблицы других роутеров, а благодаря тому, что маршруты не были одинаковыми, они просто заполняли всю таблицу.

Ещё один случай произошёл в 2008, когда Пакистан хотел запретить доступ к видохостингу Youtube на территории своей страны, но, благодаря bgp, “специфические” маршруты очень быстро сбежали за границу и начали пакостить там, тем самым чуть не лишив планету ютубчика.

Основная проблема этог протокола в том, что он базируется на правиле “одна бабка сказала”, то есть “Я понятия не имею, есть ли там то, что тебе нужно, но сосед сказал, что есть. Иди глянь”.

По итогу мы имеем протокол, с первой масштабной ошибки которого прошло уже 25 лет, но он до сих пор остаётся единственным представителем EGP. Странно? Да не то слово. Хотя, если так подумать, уязвимость, которая может эксплуатироваться только провайдерами – это и не уязвимость-то толком. Всех благодарю за внимание и за сим откланяюсь.
 

Polyglot

Green Team
25.02.2020
45
57
BIT
239
Позволю добавить пару моментов для уточнения (статья хорошая но с неточностями):

- "BGP работает на 173 TCP порту и слушает 179" - очепятка, только порт 179.
- Насчет механизмов защиты, они есть, к сожалению не все их применяют, но с каждым годом все больше "прозревших". Защиты могут быть на 2-х уровнях - локальный, между 2-мя непосредственными пирами/соседями, и независимые применимые к любым топологиям.
Локально:
- MD5 аутентикация всех обмениваемых с соседом BGP ссобщений с шифрованием общим ключeм. Это защитит и от МиТМ атаки, и попытки ДДОС пeребором ТСП сессии id для посылки TCP RESETи обрыва легитимной сессии.
- ACL: ISP принимающий маршруты, по всем практикам может и должен ограничить список разрешенных маршрутов. Так клиент по ошибке/намеренно не сможет анонсировать не свои сети.
- Control Plane защиты: защита управляющего процесса. Тут все зависит от конкретного вендора, но все имеют способ предотвратить атаки ДОС, socket exhaustion итд

НЕ3ависимые:
- RPKI: все больше и больше компанй публикующих свои сети в БГП подписывают криптографически такие публикации - это полностью блокирует подмену маршрутов и воровсвство чужих сетей. К сожалению это будет защитой когда ВСЕ провайдеры на планете будут проверять эти самые подписи, пока статистика не очень - меньше 30% подписывают/проверяют.
- Создание Route Origin Authorisation (ROA) записей на уровне агенств раздающих сетевые префиксы (APNIC, RIPE,etc.) - с этим лучше, практически все Tier 1 (Amazon, Microsoft, Google...) проверяют наличие этой записи. Она позволяет указать какие AS могут/авторизованы публиковать данную сеть, и если "чужак" публикует ее, принимающая сторона проигнорирует такую публикацию.

- типов сообщения 5, не 4, 5-й Route-Refresh
 
Последнее редактирование:
  • Нравится
Реакции: Westus и dieZel

DragonSov

Codeby Team
Gold Team
03.12.2019
123
148
BIT
351
Соглашусь с комментарием выше. Я думаю, что стоит отредактировать статью с указанными правками, т.к. пользователи могут не проверить комментарии и поверить в ложную информацию.
 
  • Нравится
Реакции: dieZel
09.11.2017
258
262
BIT
5
Морти перешёл на такую тематику лаба лаба дуууу 🍺🍺🍺🍺но 🔥 огонь тема после приключений почитаю
 
  • Нравится
Реакции: dieZel
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!