Атаки на сети VLAN

Атаки на VLAN

Продолжаем цикл статей посвященных пентесту на канальном уровне. При атаке на каналь­ном уров­не, можно переп­рыгнуть через все средс­тва защиты, нас­тро­енные на более высоких уров­нях. В данной статье мы с вами рассмотрим один из векторов атак самый низ­кий уро­вень сети —  атаки на сети VLAN.

Еще по теме: Техники туннелирования при пентесте

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

Атаки на сети VLAN

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

Устройства уровня L2 работают на канальном уровне и выполняют физическую адресацию. Работа на этом данном уровне выполняется с кадрами, или как некоторые еще называют «фреймами». На данном уровне нет никаких IP-адресов, устройство идентифицирует получателя и отправителя только по MAC-адресу и передает кадры между ними.

Динамический транк и побег в другие сегменты VLAN

Эта ата­ка при­мени­ма толь­ко к ком­мутато­рам Cisco. Суть ата­ки зак­люча­ется в том, что­бы при­нуди­тель­но перевес­ти порт в режим магис­траль­ного канала. За авто­мати­чес­кий тран­кинг на ком­мутато­рах Cisco отве­чает про­токол DTP.

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

Схе­ма ата­ки на про­токол DTP
Схе­ма ата­ки на про­токол DTP

Со­берем кадр DTP Desirable с помощью Scapy. Для начала необ­ходимо импорти­ровать модуль для работы с про­токо­лом DTP:

Со­бира­ем фрейм Ethernet 802.3, MAC-адрес источни­ка будет ран­домизи­рован­ным, а в качес­тве MAC-адре­са наз­начения будет адрес муль­тикас­товой L2-рас­сылки 01:00:0C:CC:CC:CC.

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

Не забыва­ем о сло­ях LLC и SNAP с ука­зани­ем зна­чения 0x2004, опре­деля­юще­го, что это имен­но про­токол DTP. Зна­чения заголов­ков в tlvlist оставля­ем по умол­чанию, кро­ме DTPNeighbor. И в кон­це зацик­лим отправ­ку соб­ранно­го кад­ра — пусть шлет­ся раз в три секун­ды. Потому что если порт был скон­фигури­рован динами­чес­ки, то вре­мя его жиз­ни все­го 300 секунд (5 минут).

По­чему‑то в Scapy в дефол­тном кад­ре DTP по умол­чанию хра­нят­ся все необ­ходимые зна­чения, что­бы соб­рать имен­но кадр DTP Desirable. Я пока не знаю, с чем это свя­зано, но нам это на руку: сэконо­мим вре­мя. Поэто­му мы оста­вили парамет­ры DTP по умол­чанию (за исклю­чени­ем DTPNeighbor).

Од­нако вкрат­це рас­ска­жу о самых важ­ных для нас заголов­ках и их зна­чени­ях:

  • DTPType = '\xa5' — зна­чение заголов­ка, ука­зыва­ющее на исполь­зование инкапсу­ляции 802.1Q;
  • DTPStatus = '\x03' — зна­чение заголов­ка, ука­зыва­ющее на ста­тус DTP-кад­ра. Это ста­тус Desirable, то, что нам нуж­но для ини­циации магис­траль­ного режима пор­та.
Струк­тура дефол­тно­го кад­ра DTP в Scapy
Струк­тура дефол­тно­го кад­ра DTP в Scapy

Пос­ле про­веде­ния ата­ки мы можем видеть тра­фик всех сетей VLAN. В резуль­тате сетевой раз­ведки обна­руже­ны сети VLAN 100, 200, 220 и 250. Эти зна­чения VLAN ID рас­положе­ны в одном из заголов­ков про­токо­ла STP — Root Identifier (Root Bridge System ID Extension).

Дамп тра­фика из Wireshark
Дамп тра­фика из Wireshark

Те­перь необ­ходимо соз­дать вир­туаль­ные интерфей­сы VLAN, под­нять их и зап­росить адрес по DHCP. В ито­ге мы смо­жем вза­имо­дей­ство­вать со все­ми хос­тами во всех сетях VLAN.

Ус­пешное получе­ние адре­сов по DHCP
Ус­пешное получе­ние адре­сов по DHCP
Дос­туп ко всем сетям VLAN
Дос­туп ко всем сетям VLAN

См. также Атака и защита протокола STP

VTP-инъекции и манипуляции базами данных VLAN

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

Роли коммутаторов в домене VTP

  • VTP Server. Ком­мутатор в роли VTP Server может соз­давать новые VLAN, уда­лять ста­рые или менять информа­цию в самих VLAN. Так­же он занима­ется генери­рова­нием объ­явле­ний VTP для осталь­ных чле­нов домена.
  • VTP Client. Ком­мутатор в этой роли будет получать спе­циаль­ные анон­сы VTP от дру­гих ком­мутато­ров в домене, что­бы обновлять базы дан­ных VLAN у себя. Кли­енты огра­ниче­ны в воз­можнос­тях соз­давать VLAN и даже не име­ют пра­ва локаль­но изме­нять кон­фигура­цию VLAN. Ина­че говоря, дос­туп read only.
  • VTP Transparent. В этом режиме ком­мутатор не учас­тву­ет в про­цес­сах VTP и может вес­ти у себя пол­ное и локаль­ное адми­нис­три­рова­ние всей кон­фигура­ции VLAN. Работая в проз­рачном режиме, ком­мутато­ры занима­ются толь­ко переда­чей объ­явле­ний VTP от дру­гих ком­мутато­ров, не зат­рагивая свою кон­фигура­цию сетей VLAN. У таких ком­мутато­ров номер ревизии всег­да будет равен нулю, и про­тив них ата­ки с инъ­екци­ей VTP не про­вес­ти.

Дос­туп ко всем сетям VLAN

  • Summary Advertisement — объ­явле­ние VTP, отправ­ляемое сер­вером VTP каж­дые 300 секунд (5 минут). В этом объ­явле­нии хра­нит­ся имя домена VTP, вер­сия про­токо­ла, отметка вре­мени и зна­чение MD5-хеша кон­фигура­ции;
  • Subset Advertisement — объ­явле­ние VTP, которое отправ­ляет­ся при каж­дом изме­нении кон­фигура­ции VLAN;
  • Advertisement Request — это зап­рос от кли­ента VTP к сер­веру VTP на сооб­щение Summary Advertisement. Обыч­но рас­сыла­ется в ответ на сооб­щение о том, что ком­мутатор обна­ружил Summary Advertisement с бóльшим номером ревизии кон­фигура­ции.

Что­бы ата­ковать домен VTP, необ­ходимо, что­бы порт, к которо­му вы под­клю­чены во вре­мя ата­ки, был в режиме магис­траль­ного канала. Кста­ти говоря, ата­ка на VTP может быть сле­дующим шагом пос­ле того, как вы ата­ковали про­токол DTP и стали тран­ковым каналом. Зло­умыш­ленник смо­жет про­водить VTP-инъ­екции и отправ­лять яко­бы «обновлен­ные» базы дан­ных VLAN с бóльшим номером ревизии. Легитим­ные ком­мутато­ры, в свою оче­редь, при­мут и обно­вят свои базы дан­ных VLAN.

Про­вес­ти такую ата­ку нам поможет Yersinia. Рас­смот­рим ата­ку на VTPv1 с пос­леду­ющим уда­лени­ем всех VLAN.

Дос­туп ко всем сетям VLAN
Дос­туп ко всем сетям VLAN
Таб­лица VLAN на ком­мутато­ре до ата­ки
Таб­лица VLAN на ком­мутато­ре до ата­ки

Инъ­екция VTP с уда­лени­ем всех VLAN на ком­мутато­ре

Yersinia сге­нери­рует спе­циаль­ные VTP-объ­явле­ния Summary Advertisement и Subset Advertisement.

Дамп трафика во время инъекции VTP
Дамп трафика во время инъекции VTP

Как видим, пос­ле про­веде­ния ата­ки все соз­данные VLAN были уда­лены. VLAN 1 и VLAN в диапа­зоне 1002–1005 никуда не денут­ся, пос­коль­ку соз­даны по умол­чанию.

Ба­за дан­ных VLAN на ком­мутато­ре пос­ле инъ­екции
Ба­за дан­ных VLAN на ком­мутато­ре пос­ле инъ­екции

Атака двойного тегирования

Ата­ка двой­ного тегиро­вания осно­вана на исполь­зовании осо­бен­ностей инкапсу­ляции 802.1Q в сетях Ethernet. В боль­шинс­тве слу­чаев ком­мутато­ры исполня­ют толь­ко один уро­вень про­цес­са, деин­капсу­ляции 802.1Q. Это откры­вает путь для экс­плу­ата­ции, пос­коль­ку такая осо­бен­ность поз­воля­ет пен­тесте­ру скрыть в кад­ре Ethernet вто­рую мет­ку 802.1Q.

Вот как в деталях про­исхо­дит ата­ка:

  • Зло­умыш­ленник собира­ет кадр Ethernet с дву­мя тегами и отправ­ляет его в сто­рону ком­мутато­ра. VLAN ID пер­вой мет­ки 802.1Q дол­жна сов­падать со зна­чени­ем Native VLAN пор­та, находя­щего­ся в магис­траль­ном режиме. Для удобс­тва вос­при­ятия пред­ста­вим, что пер­вая мет­ка 802.1Q будет VLAN 1, а вто­рая мет­ка 802.1Q — VLAN 100
  • Кадр попада­ет на ком­мутатор SW 1. Ком­мутатор про­веря­ет пер­вые четыре бай­та мет­ки 802.1Q. Ком­мутатор видит, что кадр пред­назна­чен для VLAN 1, которая в его кон­фигура­ции явля­ется сетью Native VLAN. Ком­мутатор SW1 унич­тожа­ет эту мет­ку. В это же вре­мя вто­рая мет­ка VLAN 100 оста­ется целой и никуда не про­пада­ет.
Native VLAN — это спе­циаль­ный VLAN, к которо­му ком­мутатор ассо­циирует все кад­ры без тега 802.1Q. По умол­чанию иден­тифика­тор Native VLAN равен еди­нице.
  • Да­лее ком­мутатор SW2 про­веря­ет толь­ко внут­реннюю мет­ку 802.1Q и видит, что дан­ный кадр пред­назна­чен для сети VLAN 100. Этот ком­мутатор отправ­ляет кадр на порт, который при­над­лежит сети VLAN 100, и кадр дос­тига­ет сво­его пун­кта наз­начения.
Схе­ма ата­ки Double Tagging
Схе­ма ата­ки Double Tagging
По­лигон для ата­ки Double Tagging
По­лигон для ата­ки Double Tagging
Ад­ресация для тес­тового полиго­на
Ад­ресация для тес­тового полиго­на

Вос­поль­зуем­ся Scapy, что­бы соб­рать широко­веща­тель­ный кадр Ethernet с дву­мя мет­ками 802.1Q. Так­же будет добав­лен слой ICMP, что­бы наг­лядно показать, как кадр доберет­ся до наз­начения и отве­тит на фаль­сифици­рован­ный зап­рос ICMP. Отпра­вим этот зап­рос яко­бы от машины Nefarian под IP-адре­сом 10.10.200.1.

Ус­пешные ICMP echo и reply в сто­рону машины Darker
Ус­пешные ICMP echo и reply в сто­рону машины Darker

Как видим, пакет при­бежал на хост наз­начения, но с одной мет­кой VLAN ID 100, пос­коль­ку пер­вый тег VLAN 1 был унич­тожен пер­вым ком­мутато­ром SW1. Имейте в виду, что это односто­рон­няя ата­ка. Воз­можно, она будет полез­на при нападе­нии на сег­мент DMZ во вре­мя пен­теста.

Заключение

Ата­ки L2 в пос­леднее вре­мя утра­тили акту­аль­ность и нем­ного выш­ли из моды: сей­час мало кто обра­щает на них вни­мание. Воз­можно, эта статья подарит пен­тесте­рам новые вари­анты атак, а сетевые инже­неры пос­ле проч­тения смо­гут повысить уро­вень защищен­ности сво­их сетей.

Другие статьи на тему пентеста:

ВКонтакте
OK
Telegram
WhatsApp
Viber

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *