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

warning

Статья име­ет озна­коми­тель­ный харак­тер и пред­назна­чена для спе­циалис­тов по безопас­ности, про­водя­щих тес­тирова­ние в рам­ках кон­трак­та. Автор и редак­ция не несут ответс­твен­ности за любой вред, при­чинен­ный с при­мене­нием изло­жен­ной информа­ции. Рас­простра­нение вре­донос­ных прог­рамм, наруше­ние работы сис­тем и наруше­ние тай­ны перепис­ки прес­леду­ются по закону.

Аб­бре­виату­ра DTP рас­шифро­выва­ется как Dynamic Trunking Protocol. Этот про­токол раз­работан инже­нера­ми Cisco Systems для реали­зации авто­мати­чес­кой тран­кинго­вой сис­темы. Какой порт будет тран­ковым, а какой нет — c этим раз­бира­ется имен­но про­токол DTP, а не сетевой инже­нер. DTP очень час­то оста­ется без дол­жно­го вни­мания и в боль­шинс­тве слу­чаев исполь­зует кон­фигура­цию по умол­чанию. Этим мы с тобой и вос­поль­зуем­ся.

 

Как это работает

DTP поз­воля­ет двум сосед­ним пор­там ком­мутато­ра сог­ласовы­вать решения о том, будут ли они магис­траль­ными канала­ми a.k.a тран­ками. Такой метод при­меня­ется, что­бы сфор­мировать магис­траль­ный канал, а сетево­му адми­нис­тра­тору не при­ходи­лось нас­тра­ивать вруч­ную каж­дую сто­рону. Ком­мутаци­онный порт, который находит­ся на дру­гом кон­це канала, может при­нять кон­фигура­цию соседа и сфор­мировать транк авто­мати­чес­ки. Да, это поз­воля­ет сох­ранить вре­мя и силы, но не в таком уж и сущес­твен­ном количес­тве.

Пример типичной топологии DTP
При­мер типич­ной тополо­гии DTP

В про­токо­ле DTP пре­дус­мотре­но нес­коль­ко режимов работы пор­тов ком­мутато­ра для ини­циали­зации магис­траль­ного канала:

  • Access Mode — режим пос­тоян­ного бес­тран­кового сос­тояния. Порт всег­да будет оста­вать­ся в бес­тран­ковом сос­тоянии, нес­мотря на то что сосед­ний порт не сог­ласен с изме­нени­ем;
  • Trunk Mode — режим пос­тоян­ного тран­кового сос­тояния. Порт всег­да будет оста­вать­ся в тран­ковом сос­тоянии, нес­мотря на то что сосед­ний порт не сог­ласен с изме­нени­ем;
  • Dynamic Auto — в этом режиме порт готов перей­ти в тран­ковое сос­тояние, если сосед­ний порт будет в режиме Trunk или Dynamic Desirable. Важ­но упо­мянуть, что Dynamic Auto — это режим по умол­чанию для всех пор­тов ком­мутато­ра;
  • Dynamic Desirable — в этом режиме порт всег­да пыта­ется перей­ти в тран­ковое сос­тояние. Порт при­обре­тет режим Trunk, если сосед­ний порт нас­тро­ен в режимах Dynamic Auto, Dynamic Desirable или Trunk Mode;
  • Nonegotiate — в этом режиме порт не учас­тву­ет в про­цес­сах DTP. Он не будет ни отправ­лять кад­ры DTP, ни при­нимать их.
Таблица комбинаций режимов портов DTP
Таб­лица ком­бинаций режимов пор­тов DTP

Что­бы не запутать­ся в этих тер­минах, я сде­лал таб­лицу ком­бинаций режимов DTP двух сосед­них пор­тов. Пос­мотрев на дан­ные в этой таб­лице, ты навер­няка заметил, что если два сосед­них пор­та находят­ся в режиме Dynamic Auto, то они не смо­гут обра­зовать магис­траль­ный канал и оба пор­та оста­нут­ся в режиме Access. Дру­гой при­мер: если пер­вый порт будет в режиме Dynamic Auto, а вто­рой порт в режиме Dynamic Desirable, то в конеч­ном сче­те обра­зует­ся магис­траль­ный канал или же транк.

Кад­ры DTP рас­сыла­ются через пор­ты ком­мутато­ра каж­дые 30 секунд. И для их рас­сылки исполь­зует­ся спе­циаль­ный муль­тикас­товый адрес 01:00:0C:CC:CC:CC. Если порт был скон­фигури­рован динами­чес­ки, то вре­мя его жиз­ни — все­го 300 секунд.

Информация о DTP из консоли Cisco IOS
Ин­форма­ция о DTP из кон­соли Cisco IOS

info

Муль­тикас­товый адрес 01:00:0C:CC:CC:CC исполь­зует­ся не толь­ко про­токо­лом DTP, но и дру­гими, нап­ример CDP, VTP, PAgP, UDLD. Что­бы про­токо­лы мог­ли отли­чать­ся друг от дру­га при отправ­ке сво­их объ­явле­ний по оди­нако­вому муль­тикас­товому адре­су, для них реали­зова­но уни­каль­ное зна­чение в заголов­ке SNAP на уров­не LLC (Logical Link Control). Для DTP это зна­чение экви­вален­тно 0x2004.

 

Уязвимость

Суть уяз­вимос­ти зак­люча­ется в том, что про­токол DTP вклю­чен по умол­чанию на всех сов­ремен­ных ком­мутато­рах Cisco. При этом каж­дый порт ком­мутато­ра нас­тро­ен в режиме Dynamic Auto. То есть порт будет ожи­дать ини­циации тран­ка со сто­роны соседа. Для успешно­го про­веде­ния ата­ки нам нуж­но физичес­ки под­клю­чить­ся к ком­мутато­ру и отпра­вить спе­циаль­но под­готов­ленный кадр DTP Desirable. Порт перек­лючит­ся в режим магис­траль­ного канала, и мы смо­жем получить дос­туп ко всем сетям VLAN.

 

Виртуальная лаборатория

В сво­ей вир­туаль­ной лабора­тории я исполь­зовал плат­форму вир­туали­зации EVE-NG Community Edition. Целевы­ми устрой­ства­ми будут эму­лиро­ван­ный ком­мутатор и мар­шру­тиза­тор Cisco (Cisco IOL), вир­туаль­ные VPC из EVE-NG. А в качес­тве машины ата­кующе­го выс­тупит ОС Kali Linux 2021.4.

Сеть раз­бита на два сег­мента: это VLAN 10 и VLAN 30. За мар­шру­тиза­цию тра­фика меж­ду ними отве­чает мар­шру­тиза­тор R1. Так­же на мар­шру­тиза­торе R1 нас­тро­ен DHCP-сер­вер для авто­мати­чес­кой выдачи адре­сов устрой­ствам.

На пор­те ком­мутато­ра E1/0 SW1 до мар­шру­тиза­тора R1 скон­фигури­рован магис­траль­ный канал 802.1Q, который переда­ет весь тегиро­ван­ный тра­фик сетей VLAN 10 и 30. Пор­ты E0/1 и E0/2 нас­тро­ены в режиме Access и при­над­лежат сво­им сетям VLAN.

Ма­шина ата­кующе­го под­клю­чена к пор­ту ком­мутато­ра E1/1. Порт нас­тро­ен по умол­чанию в режиме Dynamic Auto для демонс­тра­ции экс­плу­ата­ции уяз­вимос­ти.

Топология виртуальной лаборатории
То­поло­гия вир­туаль­ной лабора­тории
IP-адресация виртуальной лаборатории
IP-адре­сация вир­туаль­ной лабора­тории
 

Кастомная эксплуатация уязвимости без использования Yersinia

В кон­тек­сте про­веде­ния ата­ки я решил обой­тись без популяр­ного фрей­мвор­ка Yersinia. Одно дело, ког­да ты прос­то нажима­ешь на нес­коль­ко кно­пок, руководс­тву­ясь сво­им бэк­гра­ундом зна­ний, и про­изво­дишь взлом, это что‑то из раз­ряда «Just push the button and hack it». Сов­сем дру­гое дело, ког­да ты сам собира­ешь свой инс­тру­мент по кусоч­кам. Я счи­таю, это даст более глу­бокое понима­ние про­цес­са экс­плу­ата­ции уяз­вимос­ти, что очень важ­но.

Для экс­плу­ата­ции этой уяз­вимос­ти DTP я исполь­зовал связ­ку Python и Scapy, написав свой собс­твен­ный скрипт — DTPAbuse.py. Ниже я раз­беру весь прог­рам­мный код скрип­та, что­бы ты понимал работу этой прог­раммы и про­цесс экс­плу­ата­ции.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    4 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии