Cisco Nightmare. Большой гайд по пентесту сетей Cisco

Содержание статьи

  • Перехват и дешифровка ключа TACACS+
  • Шаг 1: MITM-атака
  • Шаг 2: Loki
  • Атаки на протокол CDP
  • Сбор информации
  • DoS-атака CDP Flooding
  • Злоупотребление динамическим транкингом
  • Сетевой паралич при атаке на VTP
  • Какие бывают роли в VTP-домене
  • Типы объявлений
  • Атаки на протокол EIGRP
  • Разведка в сети
  • Поддельные соседи EIGRP
  • Черная дыра
  • Злоупотребление K-значениями
  • Переполнение таблиц маршрутизации
  • MITM-атака через абьюз проприетарных FHRP-протоколов Cisco
  • Зачем нужен FHRP
  • Угон GLBP и перехват трафика
  • Угон HSRP и перехват трафика
  • Эксплуатация Cisco Smart Install
  • Эксфильтрация конфигурации и перечисление через SNMP
  • cisco_config_tftp
  • snmp_enum
  • Постэксплуатация взломанного устройства
  • Bruteforce hashes
  • Cisco EEM
  • Lateral VLAN Segmentation Bypass
  • Configuration Enumeration
  • Выводы

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

warning

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

 

Перехват и дешифровка ключа TACACS+

TACACS+ (Terminal Access Controller Access Control System) — про­токол, пред­назна­чен­ный для цен­тра­лизо­ван­ного опе­риро­вания учет­ными запися­ми, которые исполь­зуют­ся непос­редс­твен­но для адми­нис­три­рова­ния сетево­го обо­рудо­вания. Сер­вер TACACS+ реша­ет, поз­волить или зап­ретить дос­туп поль­зовате­лю, который пыта­ется вой­ти в панель управле­ния сетевым обо­рудо­вани­ем.

У это­го про­токо­ла есть две вер­сии: TACACS и TACACS+. Мы будем раз­бирать­ся имен­но с TACACS+.

«Плю­совая» вер­сия отли­чает­ся повышен­ным уров­нем безопас­ности и интегри­рован­ным шиф­ровани­ем. Так­же раз­делены фун­кции AAA (аутен­тифика­ция, авто­риза­ция и учет), и их мож­но исполь­зовать по отдель­нос­ти.

Ес­ли зло­умыш­ленник суме­ет встать посере­дине меж­ду кли­ентом и сер­вером TACACS, он смо­жет перех­ватить ключ для аутен­тифика­ции в зашиф­рован­ном виде, а потом про­вес­ти про­тив него локаль­ный брут­форс. То есть ты и брут­форсишь ключ, и в логах не палишь­ся. И если тебе удас­тся сбру­тить ключ, то ты смо­жешь получить дос­туп к сетево­му обо­рудо­ванию и рас­шифро­вать тра­фик в Wireshark. Да, Wireshark уме­ет работать с дву­мя вер­сиями про­токо­ла TACACS. Пре­дос­тавив «Аку­ле» ключ, ты смо­жешь дешиф­ровать осталь­ную часть дан­ных, в которой хра­нит­ся логин поль­зовате­ля.

 

Шаг 1: MITM-атака

Спер­ва нуж­но про­вес­ти MITM-ата­ку, тут все зависит от обсто­ятель­ств и тво­их пред­почте­ний. Для при­мера я реали­зую ARP-спу­финг в отно­шении TACACS-аген­та и TACACS-сер­вера.

  • В качес­тве аген­та TACACS выс­тупит ком­мутатор SW1 с IP-адре­сом 10.10.100.10.
  • В качес­тве сер­вера TACACS выс­тупит TACACSGUI с адре­сом 10.10.100.70.

ARP-спу­финг я реали­зую через ути­литу Ettercap. Для начала необ­ходимо перек­лючить интерфейс в нераз­борчи­вый режим и раз­решить мар­шру­тиза­цию:

necreas1ng@Inguz:~$ sudo ifconfig eth0 promisc
necreas1ng@Inguz:~$ sudo sysctl -w net.ipv4.ip_forward=1

За­пус­каем Ettercap:

necreas1ng@Inguz:~$ sudo ettercap -G

Ettercap

В качес­тве прос­лушива­юще­го интерфей­са выс­тупит eth0. Запус­тим ска­ниро­вание хос­тов.

Ска­ниро­вание хос­тов

Target 1 будет хост с IP-адре­сом 10.10.100.10, а Target 2 — 10.10.100.70.

Про­водим ARP-спу­финг про­тив двух целей.

На­чало ARP-спу­фин­га 

Шаг 2: Loki

Те­перь необ­ходимо запус­тить Loki. Это спе­циаль­ный инс­тру­мент, соз­данный для ана­лиза безопас­ности про­токо­лов L2/L3. По воз­можнос­тям он не хуже той же популяр­ной Yersinia и сос­тавля­ет ей серь­езную кон­курен­цию. Loki так­же уме­ет брут­форсить клю­чи TACACS. В слу­чае успе­ха брут­форса клю­ча в зашиф­рован­ном виде (обыч­но он зашиф­рован в фор­мате MD5) мы смо­жем получить дос­туп к обо­рудо­ванию и рас­шифро­вать зашиф­рован­ный TACACS-тра­фик.

За­пус­каем Loki:

necreas1ng@Inguz:~$ sudo loki_gtk.py

Вы­бира­ем интерфейс для ата­ки.

Loki. Выбор интерфей­са

Так­же нуж­но ука­зать путь до сло­варя, что­бы про­вес­ти брут­форс зашиф­рован­ного клю­ча. Обя­затель­но сни­май галоч­ку с опции Use Bruteforce, ина­че Loki будет ломать пароль пол­ным перебо­ром, не задей­ство­вав сам сло­варь.

Нас­трой­ка пути до сло­варя

Те­перь нуж­но ждать, пока легитим­ный адми­нис­тра­тор вой­дет на устрой­ство через сер­вер TACACS. Пред­полага­ется, что сетевой адми­нис­тра­тор уже зашел, а мы, встав посере­дине через ARP-спу­финг, перех­ватыва­ем тра­фик. И при этом легитим­ные хос­ты не понима­ют, что в их соеди­нение вме­шал­ся кто‑то пос­торон­ний.

Ло­ки обна­ружил соеди­нение TACACS

Те­перь нажима­ем на кноп­ку CRACK и ждем, пока Loki ломанет пароль.

Ло­ки взло­мал ключ TACACS. Пароль: secret1234

От­лично, нам уда­лось сбру­тить ключ, теперь нуж­но рас­шифро­вать TACACS-тра­фик. Как я и ска­зал, Wireshark уме­ет работать с зашиф­рован­ным тра­фиком TACACS при наличии клю­ча.

Скар­мли­ваем «Аку­ле» ключ

Ви­дим, какой бан­нер исполь­зовал­ся.

Ис­поль­зовав­ший­ся бан­нер

Об­наружи­ваем логин поль­зовате­ля admin.

В ито­ге у нас есть кре­ды admin:secret1234, с которы­ми мож­но зай­ти на само обо­рудо­вание. Пожалуй, про­верю их на валид­ность.

Ус­пешная аутен­тифика­ция на обо­рудо­вании SW1

Вот таким обра­зом мож­но ата­ковать TACACS+ и получать дос­туп к панели управле­ния сетевым обо­рудо­вани­ем.

 

Атаки на протокол CDP

CDP (Cisco Discovery Protocol) — раз­работ­ка инже­неров Cisco Systems, про­токол каналь­ного уров­ня, соз­данный для того, что­бы устрой­ства мог­ли обме­нивать­ся информа­цией. CDP может помочь сетево­му адми­нис­тра­тору и облегчить про­цесс траб­лшу­тин­га, но для зло­умыш­ленни­ка… Сей­час выяс­ним.

 

Сбор информации

По умол­чанию CDP выпол­няет рас­сылку объ­явле­ний на все свои пор­ты. Но что, если зло­умыш­ленник под­клю­чит­ся в порт того же ком­мутато­ра? Вос­поль­зовав­шись сетевым сниф­фером, будь то Wireshark или tcpdump, он смо­жет извлечь цен­ную информа­цию о самом устрой­стве — начиная его моделью и закан­чивая вер­сией Cisco IOS. Вос­поль­зовав­шись этой информа­цией, он смо­жет про­вес­ти перечис­ление той же вер­сии Cisco IOS и най­ти по ней уяз­вимость, а затем про­экс­плу­ати­ровать ее.

Дамп CDP-тра­фика 

DoS-атака CDP Flooding

Ес­ли зло­умыш­ленник спро­воци­рует рас­сылку огромно­го количес­тва CDP-объ­явле­ний, то сам флу­динг вызовет перег­рузку ком­мутато­ра и нарушит работу сети. Так­же будет перепол­нять­ся таб­лица соседей CDP. Про­водить эту ата­ку прос­то, поэто­му не буду вда­вать­ся в под­робнос­ти.

На этот раз мы вос­поль­зуем­ся Yersinia:

necreas1ng@Inguz:~$ sudo yersinia -G

Инс­тру­мент обна­ружил ком­мутатор SW1

Выс­тавля­ем опцию flooding CDP table и начина­ем ата­ку. Цен­траль­ный про­цес­сор ком­мутато­ра будет перег­ружен, как и таб­лица CDP-соседей, вследс­твие чего воз­ника­ет «сетевой паралич».

На­чало ата­ки

Пе­рег­ружен­ный цен­траль­ный про­цес­сор ком­мутато­ра

Пе­репол­няющаяся таб­лица CDP-соседей 

Злоупотребление динамическим транкингом

DTP (Dynamic Trunking Protocol) — про­токол каналь­ного уров­ня, приз­ванный орга­низо­вать авто­мати­чес­кую сис­тему тран­кинга. Бла­года­ря DTP ком­мутато­ры сами реша­ют, какой порт будет работать в режиме магис­траль­ного канала (Trunk), а какой нет. На мой взгляд, исполь­зование DTP говорит о некачес­твен­ном дизай­не сети. Тран­ки дол­жны быть стро­го там, где они нуж­ны, и это дол­жно быть задоку­мен­тирова­но. Осо­бен­но смеш­но, ког­да сетевой инже­нер сам не зна­ет, какой порт у него в тран­ке, а какой в режиме дос­тупа.

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

info

Под­робнее об ата­ке про­токо­ла DTP ты смо­жешь узнать из дру­гой моей статьи.

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

Инс­тру­мент DTPHijacking.pynecreas1ng@Inguz:~$ sudo python3 DTPHijacking.py --interface eth0

Стро­ение DTP-инъ­екции

Хо­чу отме­тить, что Access/Desirable (0x03) ука­зыва­ет на то, что DTP-кадр име­ет тип Desirable, который велит пор­ту перек­лючить­ся в режим Trunk. А 802.1Q/802.1Q (0xa5) ука­зыва­ет на тип инкапсу­ляции 802.1Q.

info

Ни в коем слу­чае не пре­рывай работу скрип­та. Он инжектит DTP Desirable каж­дые три секун­ды. Соз­данные динами­чес­ки магис­траль­ные каналы на ком­мутато­ре живут все­го пять минут. Через пять минут транк отва­лива­ется.

Про­ана­лизи­ровав STP-кад­ры, мы узна­ем о сущес­тво­вании сетей VLAN 30 и 60.

Ана­лиз STP-кад­ров

С дан­ной информа­цией и наличи­ем транк‑пор­та мы можем получить дос­туп к этим сетям VLAN, при этом обой­дя VLAN-сег­мента­цию. Необ­ходимо будет соз­дать вир­туаль­ные интерфей­сы и наз­начить на них IP-адрес.

necreas1ng@Inguz:~$ sudo vconfig add eth0 30
necreas1ng@Inguz:~$ sudo vconfig add eth0 60
necreas1ng@Inguz:~$ sudo ifconfig eth0.30 up
necreas1ng@Inguz:~$ sudo ifconfig eth0.60 up
necreas1ng@Inguz:~$ sudo dhclient -v eth0.30
necreas1ng@Inguz:~$ sudo dhclient -v eth0.60

По­лучен­ные адре­са по DHCP для вир­туаль­ных интерфей­сов

Ус­пешные ICMP-зап­росы в сто­рону шлю­зов сетей VLAN 30 и 60

Та­ким обра­зом, мож­но обой­ти VLAN-сег­мента­цию и получить дос­туп к VLAN-сетям.

 

Сетевой паралич при атаке на VTP

VTP (VLAN Trunking Protocol) — про­токол, соз­данный для цен­тра­лизо­ван­ного управле­ния сетями VLAN. Что­бы отсле­живать акту­аль­ную базу дан­ных VLAN, ком­мутато­ры про­веря­ют спе­циаль­ные номера ревизии. Ког­да про­исхо­дит любое обновле­ние таб­лицы, номер ревизии повыша­ется на еди­ницу. И если ком­мутатор обна­ружит кон­фигура­цию, у которой номер ревизии выше, он авто­мати­чес­ки обно­вит свою базу дан­ных VLAN.

 

Какие бывают роли в VTP-домене

  • VTP Server. Ком­мутатор в роли VTP Server может соз­давать новые VLAN, уда­лять ста­рые или менять информа­цию в самих VLAN. Так­же он занима­ется генери­рова­нием объ­явле­ний VTP для осталь­ных чле­нов домена.
  • VTP Client. Ком­мутатор в этой роли будет получать спе­циаль­ные анон­сы VTP от дру­гих ком­мутато­ров в домене, что­бы обновлять базы дан­ных VLAN у себя. Кли­енты огра­ниче­ны в воз­можнос­тях соз­давать VLAN и даже не име­ют пра­ва локаль­но изме­нять кон­фигура­цию VLAN. Ина­че говоря, дос­туп read only.
  • VTP Transparent. В этом режиме ком­мутатор не учас­тву­ет в про­цес­сах 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. Для ата­ки на домен VTP я буду исполь­зовать Yersinia. С ее помощью я про­веду VTP-инжект, который сти­рает всю базу дан­ных VLAN и тем самым парали­зует сеть.

info

У про­токо­ла VTP есть целых три вер­сии. В этой статье я про­веду ата­ку про­тив пер­вой вер­сии — VTPv1.

Для сти­рания всей базы дан­ных VLAN выбира­ем опцию deleting all VTP vlans.

На­чало ата­ки на домен VTP

Ба­за дан­ных VLAN перед ата­кой

Ба­за дан­ных VLAN пос­ле ата­ки

Се­тевой паралич

Хост из сети VLAN 60 утра­тил связ­ность до шлю­за.

 

Атаки на протокол EIGRP

EIGRP (Enhanced Interior Gateway Routing Protocol) — про­токол динами­чес­кой мар­шру­тиза­ции. Явля­ется дис­танци­онно‑век­торным про­токо­лом. При отсутс­твии аутен­тифика­ции и кон­фигура­ции пас­сивных интерфей­сов зло­умыш­ленник может вме­шать­ся в про­цесс EIGRP-мар­шру­тиза­ции и выз­вать отравле­ние таб­лиц мар­шру­тиза­ции. Более того, сеть EIGRP (ина­че говоря, авто­ном­ная сис­тема) «плос­кая», и у нее отсутс­тву­ет сег­мента­ция на какие‑либо зоны. Что это может зна­чить для ата­кующе­го? Ну, если он про­ведет инъ­екцию мар­шру­та, то, ско­рее все­го, этот мар­шрут рас­простра­нит­ся по всей авто­ном­ной сис­теме EIGRP.

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

Как уста­нав­лива­ется соседс­тво меж­ду EIGRP-мар­шру­тиза­тора­ми

info

Не забывай, что без пред­варитель­ной уста­нов­ки соседс­тва легитим­ные EIGRP-мар­шру­тиза­торы не будут реаги­ровать на рас­сыла­емые тобой сооб­щения EIGRP (будь то Hello, Update или дру­гие).

Для это­го я вос­поль­зуюсь FRRouting. Это опен­сор­сное ПО, которое пред­назна­чено для соз­дания мар­шру­тиза­тора в Unix и Linux. FRRouting поз­воля­ет реали­зовать вир­туаль­ный мар­шру­тиза­тор, под­держи­вающий про­токо­лы BGP, OSPF, EIGRP, RIP и дру­гие. Его дос­таточ­но раз­вернуть на сво­ей ата­кующей сис­теме, и фак­тичес­ки ты смо­жешь прит­ворить­ся легитим­ным роуте­ром в домене мар­шру­тиза­ции. Как раз­вернуть FRR на сво­ей сис­теме, я покажу в сле­дующем раз­деле.

info

Для про­веде­ния атак на домены мар­шру­тиза­ции EIGRP я раз­работал нес­коль­ко инс­тру­мен­тов и помес­тил их в свой репози­торий EIGRPWN на GitHub. Там ты най­дешь все инс­тру­мен­ты, которые я исполь­зовал для ата­ки на EIGRP в этой статье.

 

Разведка в сети

Под­клю­чение к домену мар­шру­тиза­ции поз­воля­ет нам про­вес­ти перечис­ление и раз­ведку сетей и не тра­тить мно­го вре­мени на ска­ниро­вание. Это спо­соб зна­читель­но эко­номит твое дра­гоцен­ное вре­мя. К тому же при ска­ниро­вании ты можешь спа­лить­ся перед сис­темами безопас­ности IPS/IDS. Как по мне, под­клю­чение к домену и перечис­ление — век­тор ата­ки на домены мар­шру­тиза­ции, который дарит тебе наиболь­ший импакт.

Но для это­го все­го нуж­но раз­вернуть FRRouting. Прис­тупим.

Источник: xakep.ru

Ответить

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