Как ведет себя коммутатор в результате успешной атаки на таблицу cam
Здравствуй, читатель, сегодня обсудим атаки на один из уровней модели OSI – канальный уровень. Надеюсь, ты знаешь хотя бы немного о том, что такое OSI? Если не врубаешься совсем, тогда почему ты всё ещё здесь? Не медли, мужик, узнай о этом всё. Ну ладно, от слов к делу приступаем, но только с ведающими.
Дисклеймер
Вся информация, описываемая далее, не побуждает к действию и несёт исключительно информативный характер! Используйте добытые знания с умом.
Наш план:
- О первых двух уровнях модели OSI
- Переполнение CAM таблицы: просто и со вкусом
- VLAN Hopping
- Вооружившись топором, рубим STP дерево
- Подделка MAC-адреса
- Нападаем на DHCP
- Проникаем в PVLAN
- Arp spoofing и с чем его едят
Про первые два уровня модели OSI
Почему нет статьи про физический уровень?
Как по мне не обязательно писать об этом. Или я не прав?
На физическом уровне у нас работает концентратор (hub). Эта вещь получает пакет на один порт и отправляет его на все остальные. Все в сети получат этот пакет - никакой приватности, банально включите wireshark и просматривайте трафик!
И зачем нам тогда этот концентратор? Выкинем его?
Не стоит, он не пригоден в локальных сетях, но для отказоустойчивых сетях это сетевое устройство как нельзя кстати. Узлам кластера нужно всегда общаются друг с другом, а именно говорить
(I'm alive). Концентратор не составляет CAM таблиц и шлёт пакеты напрямую. В тех случаях, если один из узлов сети "умер", другой узнает о "смерти" первого.
Коммутатор (Switch) трудится на канальном уровне. Эта вещь умнее концентратора, поэтому отсылает пакеты не на все порты, а только на тот к которому подключен получатель этого пакета. Также коммутатор составляет CAM таблицы, а у них уже есть срок жизни. Если один из узлов "умрёт", то об этом узнают позднее, в отличии от концентратора.
Переполнение CAM таблицы
В CAM таблицах храниться информация о том, какие MAC-адреса к каком портам привязаны. Таблицы имеют ограничения, если мы переполним таблицу - коммутатор станет концентратором.
Утилита macof в помощь нам, установим и рассмотрим простой пример использования:
Переполним CAM таблицу коммутатора случайными MAC-адресами, предназначенными для 192.168.0.1:
Это всё равно, если мы сменим mac-адресс утилитой macchanger, перезагрузим интерфейс, затем подключимся к коммутатору, который добавит новый mac в таблицу, затем всё по новой.
Один из способов - ограничить количество подключаемых mac-адресов к порту. Рассматривать дальше всё будем на примере коммутаторов cisco, у которого есть 24 порта. Задача такова: чтобы только два mac-адреса могли подключиться к одному порту.
Подключимя к коммутатору с помощью консоли или удалённо. Вводим:
Всезнающая википедия расскажет нам о VLAN и DTP
VLAN (Virtual Local Area Network, виртуальная локальная сеть) — это функция в роутерах и коммутаторах, позволяющая на одном физическом сетевом интерфейсе (Ethernet, Wi-Fi интерфейсе) создать несколько виртуальных локальных сетей.
DTP (англ. dynamic trunking protocol — динамический протокол транкинга) — проприетарный сетевой протокол канального уровня, разработанный компанией Cisco для реализации транкинговой системы для связи в сети VLAN между двумя сетевыми коммутаторами и для реализации инкапсуляции.
Рекомендую для лучшего пониманию ознакомиться со
В теории обеспечения информационной безопасности есть такое понятие, как глубоко эшелонированная оборона (Defense in depth). Этим мудреным термином называют концепцию, в которой весь корпоративный ИТ-ландшафт делится на несколько уровней контроля безопасности и защиты. Причем один уровень, или, как его еще называют, рубеж защиты, не зависит от остальных и является самостоятельной единицей.
К примеру, на границе внутренней локальной сети и интернета стоят периметровые средства защиты, такие как Firewall, IDS/IPS, NGFW (Next-Generation_Firewall) или UTM-шлюзы. Далее вся сеть мониторится на предмет выявления аномальной активности и инцидентов ИБ, к примеру с помощью SIEM-системы. Состояние ПО контролируется с помощью сканеров безопасности.
На следующем уровне задействованы средства защиты прикладного ПО, к примеру WAF для веб-сервера или DAM для СУБД. Ну а на конечных узлах применяются уже endpoint средства защиты — AV, SSO, DLP и другие страшные аббревиатуры, которыми обозначают штатные механизмы безопасности ОС, системы разделения прав доступа и полномочий пользователей, шифрование на лету и прочее.
Концепция глубоко эшелонированной обороны
В сегодняшней статье мы разберем только одну часть этой схемы, а именно защиту сетевого периметра корпоративного ИТ-ландшафта на примере коммутаторов и маршрутизаторов компании Cisco.
Чтобы провернуть все описанные в этой статье атаки на практике, не нужно много. Вполне хватит, к примеру, такой утилиты, как Yersinia. Она доступна для установки на любую Linux-систему и входит в сборку дистрибутива Kali Linux.
Типовые сетевые атаки
Перед тем как мы приступим к практической части, посвященной безопасной настройке сетевого оборудования, рассмотрим типовые атаки, которые с высокой вероятностью будут использоваться против твоей сети злоумышленниками. Ну или экспертами ИБ при проведении пентестов.
Rogue DHCP Server
Цель этой атаки — подмена легитимного сервера DHCP сервером злоумышленника. Суть угрозы заключается в том, что, когда в сети одновременно находятся два сервера DHCP, один из которых «вражеский» (Rogue DHCP Server), часть клиентов автоматически сконфигурирует у себя неправильные адреса и прочие сетевые настройки. Далее в результате подмены умолчательного шлюза неавторизованный сервер DHCP сможет прослушивать весь трафик клиентов, при этом еще имея возможность форвардить все пакеты по своему усмотрению.
Однако чаще всего атака с подменой сервера DHCP не является атакой как таковой, а скорее служит неким плацдармом для дальнейшего углубления злодеев в атакуемую сеть.
Иллюстрация атаки Rogue DHCP Server
DHCP starvation
Еще одна простая и популярная атака, выполняемая при помощи протокола DHCP. Суть ее заключается в том, что пул DHCP, из которого все корпоративные клиенты получают IP-адреса, изначально ограничен доступным диапазоном. Например, это может быть 253 адреса при использовании маски 255.255.255.0. Для нормальной работы сети этого должно хватить всем клиентам за глаза, однако «атака резервации» (DHCP starvation) стремится исчерпать этот пул и таким образом вывести легитимный сервер DHCP из игры.
Если воспроизвести действия злодеев по шагам, то вот как происходит такая атака:
- Атакующее устройство запрашивает себе IP-адрес, маску и шлюз по умолчанию у сервера DHCP и получает их.
- MAC-адрес атакующего устройства изменяется, и оно запрашивает следующий, уже другой IP-адрес, маскируясь под некоего нового клиента, который появился в корпоративной сети.
- Предыдущие два пункта циклически повторяются до тех пор, пока весь пул IP-адресов на сервере не будет исчерпан.
Возможны два следствия, в зависимости от того, чего добиваются атакующие:
- Отказ в обслуживании. Имеющиеся у сервера IP-адреса исчерпаны, и новые хосты не могут получить их. Таким образом, их взаимодействие с сетью на этом закончится.
- Подмена сервера DHCP. DHCP starvation отлично комбинируется с предыдущей атакой Rogue DHCP Server. Так как на основном сервере DHCP свободных адресов уже не осталось, он выключается, и все 100% корпоративных клиентов сети достаются вражескому атакующему DHCP-серверу.
У операционной системы IOS есть несколько режимов работы (конфигурирования):
Атака на переполнение таблицы, или СAM table overflow
Атака CAM table overflow, или переполнение локальной таблицы MAC-адресов, реализуется, когда таблица коммутации заполняется и после этого коммутатор работает в режиме хаба. Иными словами, подключившись к любому порту коммутатора после успешной атаки, можно перехватывать весь трафик в пределах широковещательного домена, которому принадлежит этот порт. Атаку можно выполнить, например, с помощью утилиты macof, которая входит в dsniff.
Чтобы понять, как работает эта атака, необходимо знать принципы работы современного коммутатора. Давай представим себе коммутатор с именем SW, к которому подключены два равнозначных хоста PC1 (MAC 0000.1111.1111) и PC2 (MAC 0000.2222.2222). На них уже настроены IP-адреса (10.0.0.1 и 10.0.0.2), и эти хосты хотят общаться друг с другом, как разнополые подростки в пубертатный период.
Так как хосты располагаются в одной подсети, маршрутизатор для этого не требуется и весь обмен пакетами будет происходить с помощью коммутатора в несколько этапов.
- PC1 хочет обратиться к PC2 по IP-адресу. Тем не менее MAC-адрес PC2 ему неизвестен, поэтому PC1 использует протокол ARP. Для этого отправляется широковещательный запрос всей сети.
- Получив широковещательный запрос, коммутатор пересылает его на все свои порты, но записывает соответствие MAC-адреса отправителя ( 0000.1111.1111 ) и порта. Теперь все пакеты, адресованные данному получателю, он будет пересылать адресату, а не во все доступные интерфейсы подряд.
- PC2 получает адресованный ему пакет, понимает, что должен ответить, и сообщает свой MAC-адрес PC1. Коммутатор при этом заносит в CAM-таблицу (таблицу MAC-адресов) запись вида интерфейс gig1/2 - MAC 0000.2222.2222) . Теперь, когда компьютеры начнут обмениваться информацией, будут использоваться только два порта, за которыми они расположены. На другие порты информация пересылаться не будет.
Основной смысл рассказанной выше романтической истории общения двух устройств заключается в том, что, если коммутатор видит адрес получателя в своей CAM-таблице, он пересылает этот пакет на конкретный порт. Если не видит — устраивает широковещательную рассылку в надежде, что пакет все-таки найдет своего адресата в подконтрольной сети. Дело в том, что размер таблицы MAC-адресов у любого коммутатора ограничен. И при переполнении этой таблицы новые адреса реальных клиентов уже не смогут быть записаны в нее.
Таким образом, хакеру необходимо всего лишь сгенерировать большое количество ложных адресов и заставить коммутатор записать их в свою таблицу, чтобы реальные адреса реальных устройств постепенно были оттуда вытеснены.
Коммутатор начнет рассылать кадры, адресованные конкретному получателю, на все порты, находящиеся в том же VLAN. Следовательно, у атакующего устройства появится возможность перехватить и прочитать их.
А еще все коммутаторы, подключенные к атакованному, тоже подхватят фейковые MAC-адреса и начнут вести широковещательную рассылку по всей корпоративной сети, умножая угрозу.
Атака на виртуальные сети, или VLAN hopping
Следующая атака базируется на возможности коммутаторов автоматически согласовывать тип своего порта — access или trunk . В двух словах расскажу о том, чем порт access отличается от trunk . Наберись терпения!
Как известно, протокол 802.1Q используется во всех современных сетях. Хитрая особенность этого протокола состоит в том, что он слегка расширяет ethernet-кадр, добавляя туда несколько полей (в частности, поле VLAN Identifier, VID). На основании этого поля коммутатор способен определить, какой группе портов адресован тот или иной кадр.
Благодаря полю VID к одному коммутатору можно подключить клиенты из нескольких подсетей, тем самым ограничив широковещательный домен. Также появляется возможность объединить подключенные к разным коммутаторам клиенты в одну логическую сеть.
Иллюстрация атаки VLAN hopping
Рассмотрим передачу кадра в сети с протоколом 802.1Q.
- PC1 подключен к access-порту fa0/1 коммутатора SW1 в VLAN c порядковым номером 10. Это означает, что при попадании кадра на порт коммутатора в него будет добавлен 802.1Q-header с информацией о принадлежности к VLAN10.
- SW1 пересылает тегированный кадр на SW2 через trunk-порт.
- SW2 получает кадр, смотрит в свою CAM-таблицу и отправляет кадр на соответствующий access-порт, заголовок 802.1Q снимается.
При этом можно выделить следующие особенности:
- клиенты ничего не знают о своей принадлежности к определенному VLAN и работают с нетегированными кадрами, заголовок 802.1Q появляется только при прохождении кадра через access-порт;
- порт может быть не тегирован (access) только в одном VLAN;
- через тегированный (trunk) порт можно передавать кадры, принадлежащие к разным VLAN;
- существует так называемый native VLAN — при попадании на trunk-порт кадра без тега он автоматически будет причислен к native VLAN. Как правило, native VLAN по умолчанию — это VLAN1 (но это можно изменить);
- при этом кадры, принадлежащие native VLAN и попавшие в access-порт, передаваться через trunk-порт будут без тега.
А теперь перейдем к самой атаке. Как уже было сказано, VLAN hopping основан на том, что коммутаторы имеют возможность автоматически согласовывать тип порта. Используется для этого проприетарный протокол компании Cisco под названием DTP. При его использовании (а он включен по умолчанию) возможны следующие состояния порта: dynamic auto , dynamic desirable , static access , static trunk .
Как мы видим, при определенных условиях, а именно в режимах dynamic auto и dynamic desirable , порт коммутатора может согласовать свою работу в режиме trunk . Это значит, что, если атакующее устройство будет вести себя как порт в режиме desirable , оно согласует на себя trunk-порт и получит доступ к трафику всех виртуальных сетей, которыми оперирует коммутатор.
Основная проблема заключается в том, что на коммутаторах Cisco все порты по умолчанию находятся в режиме auto . Поэтому, даже если порт настроен в режиме access/auto , при получении запроса на согласование его состояние может измениться на trunk/auto .
Готовимся к обороне
Что ж, а вот теперь пришло время засучить рукава и приступить к укреплению нашего корпоративного бастиона. Ниже мы рассмотрим настройку функций и режимов работы IOS для нейтрализации всех описанных выше атак, а также ряд дополнительных фич, которые помогут тебе сделать сеть еще чуть-чуть более безопасной.
WARNING
Перед любыми операциями конфигурирования сетевых устройств не забывай сделать бэкап конфига! Документируй все изменения, чтобы потом не потерять лог изменений и не вырвать себе с досады волосы на затылке.
Продолжение доступно только участникам
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Доброго времени суток. В данной статье рассказ пойдет о нескольких возможных атаках на сетевое оборудование, защититься от которых поможет правильная конфигурация коммутаторов.
Вся терминология и конфигурационные команды приведены в соответствии с документацией компании Cisco, как негласный отраслевой стандарт. В начале описания каждой атаки содержится краткий экскурс в механизм работы атакуемого протокола. Рассчитана статья скорее на новичков, чем на сетевиков-профессионалов.
• Rogue DHCP Server
• DHCP starvation
• CAM-table overflow
• VLAN hopping
• MAC-spoofing
За основу взят видеоурок CBT nuggets из цикла CCNA security.
Rogue DHCP Server
Описание
Приведем упрощенную схему работы протокола DHCP:
Discover: клиент, не имеющий IP-адреса, посылает широковещательный запрос на адрес 255.255.255.255, в котором просит откликнуться имеющиеся в сети DHCP-серверы.
Offer: DHCP-серверы присылают ответ, в котором предлагают параметры конфигурации (IP-адрес, DNS-серверы, default gateway). Ответ отсылается на MAC адрес клиента.
Request: Клиент выбирает, с каким сервером (при наличии нескольких) ему удобнее работать и отправляет запрос адреса. Данный запрос также отправляется широковещательно, но в качестве одной из опций уже указывается IP-адрес конкретного сервера.
Acknowledgment: На данном этапе запрос подтверждается сервером. После получения этого пакета клиент конфигурирует свои сетевые параметры и процесс получения адреса можно считать состоявшимся.
Цель данной атаки – подмена DHCP-сервера. При одновременном нахождении в сети двух DHCP-серверов, один из которых «вражеский», некоторая часть клиентов сконфигурирует у себя неправильные адреса и прочие сетевые реквизиты.
Вследствие подмены шлюза по умолчанию неавторизованный DHCP-сервер получит возможность прослушивать весь трафик клиентов, перенаправляя в дальнейшем пакеты по назначению. Таким образом мы имеем простейшую реализацию атаки типа MitM (Man in the Middle), которая может быть осуществлена в большинстве современных сетей.
Стоит отметить, что чаще всего атака с подменой DHCP-сервера не является атакой, как таковой. Распространены случаи, когда по незнанию в сеть подключается SOHO роутер с настроенным DHCP-сервером, причем подключается он LAN-портом. После этого у клиентов, успевших получить у него IP-адреса, наблюдаются как минимум существенные потери скорости, а чаще всего полная невозможность использования локальных и глобальных ресурсов.
Методы защиты
Простейший способ защиты от атак подобного рода – включение на всех коммутаторах функции DHCP snooping. Далее необходимо определить два типа портов:
• Доверенные – порты коммутатора, к которым подключается DHCP-сервер, либо другой коммутатор.
• Недоверенные – порты для клиентских подключений, за которыми DHCP-сервер находиться не может, зато вполне может находиться атакующее устройство.
В данном случае DHCP snooping необходим для того, чтобы указать коммутатору, что следует обращать внимание на пакеты DHCP offer и acknowledgment, проходящие сквозь него, и не допускать прохождения данных пакетов с недоверенных портов. Также широковещательные запросы от клиента (discover и request) теперь будут перенаправляться только на доверенные порты. Выглядеть топология должна примерно так:
Для конфигурирования функции DHCP snooping необходимо:
Спасти трафик от прослушки также может шифрование на стороне клиента, например туннелирование в транспортном режиме.
DHCP starvation
Описание
Еще одна атака, осуществляемая при помощи протокола DHCP. DHCP-пул, из которого клиенты получают IP-адреса, ограничен. Например, это может быть 253 адреса (при маске 255.255.255.0). Для нормальной работы сети этого должно хватить всем клиентам, но атака DHCP starvation стремится изменить данную ситуацию. Как происходит действие:
1) Атакующее устройство запрашивает себе IP-адрес у DHCP-сервера и получает его;
2) MAC-адрес атакующего устройства изменяется и оно запрашивает следующий, уже другой IP-адрес, маскируясь под нового клиента;
3) Такие действия повторяются до тех пор, пока весь пул IP-адресов на сервере не будет исчерпан.
Далее возможны два последствия, в зависимости от того, что является целью атаки:
• Отказ в обслуживании. IP-адреса исчерпаны, и новые хосты не могут получить их. Таким образом, их взаимодействие с сетью на этом закончится.
• Подмена DHCP-сервера. DHCP starvation отлично комбинируется с предыдущей атакой. Так как на основном DHCP-сервере свободных адресов не осталось, он выбывает из игры, и 100% клиентов достается вражескому атакующему DHCP-серверу.
Методы защиты
Самый простой способ защиты – ограничение числа MAC-адресов на порту коммутатора. Реализуется это с помощью функции port-security:
Таким образом атакующее устройство просто не сможет исчерпать лимит IP-адресов DHCP-пула, так как коммутатор не позволит ему безнаказанно изменять свой MAC-адрес.
Также здесь может помочь все тот же DHCP snooping, а именно команда
SW(config-if)ip dhcp snooping limit rate
Данная команда ограничивает количество DHCP пакетов в секунду на порт (рекомендуется не более 100 pps), а при превышении данного ограничения переводит порт в состояние err-disable, то есть временно выключает его. Обычный клиент не превысит данный лимит, а вот атакующее устройство, генерирующее сотни MAC-адресов в секунду, будет обнаружено.
СAM-table overflow
Описание
Для того, чтобы понять, как работает данная атака, необходимо понимать принцип работы коммутатора.
Представим новый коммутатор SW, к которому подключены два хоста PC1 (MAC 0000.1111.1111) и PC2 (MAC 0000.2222.2222). На них уже настроены IP-адреса (10.0.0.1 и 10.0.0.2) и они хотят общаться друг с другом. Так как они располагаются в одной подсети, наличие маршрутизатора не требуется и весь обмен пакетами будет происходить с помощью коммутатора. Итак, какова последовательность установления их общения:
1) PC1 хочет обратиться к PC2 по IP-адресу. Тем не менее MAC-адрес PC2 ему неизвестен, поэтому PC1 использует протокол ARP. Отправляется широковещательный запрос: «Компьютер с IP-адресом 10.0.0.2, сообщите пожалуйста свой MAC-адрес компьютеру с адресом 10.0.0.1, чтобы я мог общаться с вами».
2) Коммутатор пересылает запрос на все свои порты, но записывает соответствие MAC-адреса отправителя (0000.1111.1111) и порта, теперь все кадры, адресованные данному получателю он будет пересылать непосредственно, а не наугад во все доступные интерфейсы.
3) PC2 получает адресованный ему пакет, понимает что должен ответить, и сообщает свой MAC-адрес PC1. Коммутатор при этом заносит в CAM-таблицу (таблицу MAC-адресов) запись вида: (интерфейс gig1/2 – MAC 0000.2222.2222). Теперь, когда компьютеры будут обмениваться информацией, задействоваться будут только два порта, за которыми они расположены. На другие информация пересылаться не будет.
Основной смысл в том, что если коммутатор видит адрес получателя в своей CAM-таблице, он пересылает кадр в конкретный порт. Если не видит – устраивает широковещательную рассылку, в надежде, что кадр все-таки найдет адресата.
На основании этого правила и работает рассматриваемая атака. Дело в том, что размер таблицы MAC-адресов у любого коммутатора ограничен. При переполнении новые адреса реальных клиентов уже не смогут пробиться в таблицу.
Таким образом необходимо всего лишь сгенерировать большое количество адресов и заставить коммутатор записать их в свою таблицу, чтобы реальные адреса реальных устройств постепенно вышли из нее. В таком случае коммутатор начнет, рассылать кадры, адресованные конкретному получателю на все порты, находящиеся в том же VLAN, следовательно у атакующего устройства появится возможность перехватить и прочитать их.
Следует заметить, что все коммутаторы, подключенные к атакованному также подхватят фальшивые MAC-адреса и начнут вести широковещательную рассылку всех кадров.
Методы защиты
1) Port-security на всех access-портах с лимитированием максимального количество MAC-адресов.
2) Шифрование трафика – в таком случае хоть все кадры и будут рассылаться широковещательно, а производительность сети сильно ухудшится, информация, попавшая в чужие руки, не будет прочитана.
VLAN hopping
Описание
Следующая атака базируется на возможности коммутаторов автоматически согласовывать тип своего порта - access или trunk.
Немного теории о том, чем access порт отличается от trunk порта:
Как известно, протокол 802.1Q повсеместно используется во всех современных сетях. Суть его состоит в том, что он слегка расширяет ethernet кадр, добавляя туда несколько полей (в частности поле VLAN Identifier, VID). На основании данного поля коммутатор способен определить, какой группе портов адресован тот или иной кадр.
Благодаря полю VID, к одному коммутатору можно подключить клиентов из нескольких разных подсетей, тем самым ограничив широковещательный домен. Также появляется возможность объединить клиентов, подключенных к разным коммутаторам в одну логическую сеть.
По сути 802.1Q - очень гибкий механизм для создания необходимой логической топологии поверх уже существующей физической.
Рассмотрим процесс передачи кадра в сети с протоколом 802.1Q.
1) PC1 подключен к access-порту fa2/1 коммутатора SW1 в 10 VLAN’е. Это означает, что при попадании кадра на порт коммутатора, в него будет добавлен 802.1Q header с информацией о принадлежности к VLAN10.
2) SW1 пересылает тегированный кадр на SW2 через trunk-порт.
3) SW2 получает кадр, смотрит в свою CAM-таблицу и отправляет кадр в соответствующий access-порт, заголовок 802.1Q снимается.
При этом можно выделить следующие особенности:
• Клиенты ничего не знают о своей принадлежности к определенному VLAN и работают с нетегированными кадрами, заголовок 802.1Q появляется только при прохождении кадра через access-порт;
• Порт может быть нетегирован (access) только в одном VLAN (верно для коммутаторов Cisco);
• Через тегированный (trunk) порт можно передавать кадры, принадлежащие к разным VLAN.
• Существует так называемый native VLAN – при попадании на trunk-порт кадра без тега, он автоматически будет причислен к native VLAN. Как правило native VLAN’ом по умолчанию считается VLAN1 (изменяемо).
При этом кадры, принадлежащие native VLAN и попавшие в access-порт, передаваться через trunk-порт будут без тега.
Перейдем к самой атаке:
Как уже было сказано, VLAN hopping основан на том, что коммутаторы имеют возможность автоматически согласовывать тип порта. Используется для этого проприетарный протокол компании Cisco DTP (Dynamic Trunking Protocol). При его использовании (а он включен по умолчанию) возможны следующие состояния порта: dynamic auto, dynamic desirable, static access, static trunk. Предоставим сводную таблицу, как согласуются состояния двух портов, подключенных друг к другу:
Как мы видим, при определенных условиях, а именно в режимах dynamic auto и dynamic desirable порт коммутатора может согласовать свою работу в режиме trunk. Это значит, что если атакующее устройство будет вести себя как порт в режиме desirable оно согласует на себя trunk-порт и получит доступ к трафику всех VLAN’ов, которыми оперирует коммутатор.
Основная проблема заключается в том, что на коммутаторах Cisco все порты по умолчанию находятся в режиме auto. Поэтому даже если порт настроен в режиме access/auto при получении запроса на согласование его состояние может измениться на trunk/auto.
Методы защиты
Описание
Еще один возможный вектор атаки VLAN hopping – использование native VLAN и добавление второго тега. Работает он только в том случае, если атакующее устройство находится в том VLAN, который является native VLAN для trunk-порта.
Исходя из определения native VLAN, кадр, пришедший на порт fa2/1, находящийся в VLAN1, будет передаваться через trunk-порт нетегированным, но, так как злоумышленник PC1 присвоил ему два заголовка, на выходе он окажется с тегом VLAN2 и дойдет до атакуемого клиента, чего при нормальной ситуации быть не должно.
Следует заметить, что такая атака является однонаправленной, так как невозможно по такой же схеме передать кадр обратно.
Методы защиты
Защититься можно следующим образом:
Теперь атака неосуществима, так как VLAN 999 не относится ни к одному из access-портов.
MAC-Spoofing
Описание
Суть данной атаки заключается в подмене MAC-адреса на сетевой карте компьютера, что позволяет ему перехватывать пакеты, адресованные другому устройству, находящемуся в том же широковещательном домене.
В таблице MAC-адресов коммутатора запись с атакованным MAC-адресом будет соотнесена с интерфейсом, на котором в последний раз был идентифицирован кадр с данным source MAC. Таким образом, до поступления кадра с атакуемого устройства, все данные коммутатор, на основании своей CAM-таблицы, будет пересылать на атакующий компьютер.
Посмотрим атаку на практике. Использовать будем следующую топологию:
Добиться воспроизведения не удалось, т.к. коммутатор при включении порта на PC2 сразу перебивал MAC на интерфейс Eth0/1, и даже при пинге с PC1 на R в дебаге на SW наблюдалась такая картина:
Методы защиты
Официально рекомендуемый метод – включение port-security на интерфейсе коммутатора:
Смотрим на таблицу:
И видим, что теперь MAC-адрес статически закреплен за интерфейсом Eth0/0. Теперь PC2, находящийся за портом Eth0/1 недоступен, и атаку можно считать отбитой.
VLAN (virtual local area network; виртуальная локальная сеть) – технология, позволяющая сегментировать устройства по различным признакам. Например, по принадлежности определенному отделу, типу пользователей, основному назначению. VLAN Hopping (или VLAN-переходы) представляет собой атаку на сеть посредством отсылки пакетов на порт, который обычно не доступен из указанной конечной системы.
Атака VLAN hopping может осуществляться следующим образом: если сетевой свитч установлен в режим авто-транка, злоумышленник меняет настройки так, что возникает «нужда» в постоянном канале связи (транке). То есть, на данном транковом порту становится разрешен доступ ко всем VLAN’ам.
DTP (Dynamic Trunking Protocol; Динамический протокол транкинга) – фирменный протокол, используемый компанией Cisco, для автоматического согласования каналов связи между свитчами. Протокол DTP может использоваться для установления транкового соединения между свитчами динамически.
В протоколе DTP предусмотрены несколько режимов транкинга, описанных в таблице ниже.
Порт свича, сконфигурированный в режиме dynamic desirable, будет активно пытаться преобразовать соединение в транковое соединение средствами протокола DTP. Если этот порт, подключенный к другому порту, умеет формировать транк, будет установлено транковое соединение.
Порт свитча, сконфигурированный в режиме dynamic auto, может образовывать транковое соединение, если интерфейс другого свитча настроен на тот же режим и может взаимодействовать с каналом связи по протоколу DTP.
Интерфейс свитча, сконфигурированный в режиме trunk, работает исключительно в режиме транка. Интерфейс в этом режиме может взаимодействовать с интерфейсом другого свитча для формирования транковой связи.
В этом режиме отключена рассылка DTP-пакетов с интерфейса. Режим nonegotiate возможен только когда switchport интерфейса находится в режиме access или trunk. Протокол DTP отключен.
Интерфейс свитча, сконфигурированный в режиме access, не будет работать в режиме транкинга, и порт будет работать в режиме access. Во фреймах метки использоваться не будут. Порт в режиме access принадлежит VLAN’у.
Для успешной реализации атаки свитч должен находится в режиме dynamic desirable, dynamic auto или trunk, чтобы была возможность отсылки DTP-пакетов. По умолчанию свитчи Cisco работают в режиме dynamic desirable.
В этой статье мы пройдемся по всем шагам, которые необходимы для успешной реализации атаки VLAN Hopping.
Необходимые компоненты для проведения теста:
· GNS3 (эмулятор сети).
· Kali Linux (система злоумышленника).
· Виртуальный хост (система жертвы).
Этапы реализации атаки
У нас есть небольшая сеть из трех клиентов (злоумышленник и две жертвы), находящиеся в одной сети и соединенные при помощи свитча. Топология сети показана на рисунке ниже:
Рисунок 1: Тестовая топология сети для демонстрации атаки
У нас есть свитч, подключенный к PC-1 (IP: 172.16.0.3), PC-2 (IP: 10.0.0.4) и системе злоумышленника (IP: 172.16.0.5). В таблице ниже показано соответствие клиентов, IP-адресов и VLAN ID.
Сегодня мы рассмотрим наиболее популярные виды сетевых атак и разберем методы защиты от них на примере операционной системы Cisco IOS. В данной статье мы поговорим о сетевых атаках, относящиеся к DHCP, VLAN, STP и Switch table.
В теории обеспечения информационной безопасности есть такое понятие, как глубоко эшелонированная оборона (Defense in depth). Этим умным термином называют концепцию, в которой весь корпоративный ИТ-ландшафт делится на несколько уровней контроля безопасности и защиты от атак. В такой схеме один уровень защиты от атак, не зависит от остальных и является самостоятельной единицей.
К примеру, на границе внутренней локальной сети и интернета стоят периметровые средства защиты, такие как Firewall, IDS/IPS, NGFW (Next-Generation_Firewall) или UTM-шлюзы. После этого вся сеть мониторится на предмет выявления аномальной активности и инцидентов информационной безопасности, к примеру с помощью SIEM-системы. Состояние программного обесепечения контролируется с помощью сканеров безопасности.
На другом уровне безопасности задействованы средства защиты прикладного ПО, к примеру WAF для веб-сервера или DAM для СУБД. Ну а на конечных узлах применяются уже endpoint средства защиты — AV, SSO, DLP и другие страшные аббревиатуры, которыми обозначают штатные механизмы безопасности операционной системы, разделения прав доступа и полномочий пользователей, шифрование на лету и т.д.
Концепция глубоко эшелонированной обороны
В статье мы рассмотрим только одну часть этой схемы, а именно защиту сетевого периметра корпоративного ИТ-ландшафта на примере коммутаторов и маршрутизаторов компании Cisco.
Чтобы провернуть все описанные в этой статье атаки на практике, не нужно много софта. Вполне хватит утилиты Yersinia. Она доступна для установки на любую Linux-систему и входит в сборку популярного дистрибутива для пентестеров Kali Linux.
Типовые сетевые атаки
Перед тем как приступить к практической части, посвященной безопасной настройке сетевого оборудования, рассмотрим типовые атаки, которые с высокой вероятностью будут использоваться против вашей сети хакерами. Ну или пентестерами при проведении пентестов.
Rogue DHCP Server
Но чаще всего атака с подменой сервера DHCP не является атакой как таковой, а скорее служит неким плацдармом для дальнейшего углубления хакеров в атакуемую сеть.
Иллюстрация атаки Rogue DHCP Server
DHCP starvation
Еще одна простая и популярная атака, выполняемая при помощи протокола DHCP. Суть ее заключается в том, что пул DHCP, из которого все корпоративные клиенты получают IP-адреса, изначально ограничен доступным диапазоном. Например, это может быть 253 адреса при использовании маски 255.255.255.0. Для нормальной работы сети этого должно хватить всем клиентам за глаза, однако «атака резервации» (DHCP starvation) стремится исчерпать этот пул и таким образом вывести легитимный сервер DHCP из игры.
Если воспроизвести действия злодеев по шагам, то вот как происходит такая атака:
- Атакующее устройство запрашивает себе IP-адрес, маску и шлюз по умолчанию у сервера DHCP и получает их.
- MAC-адрес атакующего устройства изменяется, и оно запрашивает следующий, уже другой IP-адрес, маскируясь под некоего нового клиента, который появился в корпоративной сети.
- Предыдущие два пункта циклически повторяются до тех пор, пока весь пул IP-адресов на сервере не будет исчерпан.
Возможны два следствия, в зависимости от того, чего добиваются атакующие:
- Отказ в обслуживании. Имеющиеся у сервера IP-адреса исчерпаны, и новые хосты не могут получить их. Таким образом, их взаимодействие с сетью на этом закончится.
- Подмена сервера DHCP. DHCP starvation отлично комбинируется с предыдущей атакой Rogue DHCP Server. Так как на основном сервере DHCP свободных адресов уже не осталось, он выключается, и все 100% корпоративных клиентов сети достаются вражескому атакующему DHCP-серверу.
Атака на переполнение таблицы, или СAM table overflow
Атака CAM table overflow, или переполнение локальной таблицы MAC-адресов, реализуется, когда таблица коммутации заполняется и после этого коммутатор работает в режиме хаба. Иными словами, подключившись к любому порту коммутатора после успешной атаки, можно перехватывать весь трафик в пределах широковещательного домена, которому принадлежит этот порт. Атаку можно выполнить, например, с помощью утилиты macof, которая входит в dsniff.
Чтобы понять, как работает эта атака, необходимо знать принципы работы современного коммутатора. Давай представим себе коммутатор с именем SW, к которому подключены два равнозначных хоста PC1 (MAC 0000.1111.1111) и PC2 (MAC 0000.2222.2222). На них уже настроены IP-адреса (10.0.0.1 и 10.0.0.2), и эти хосты хотят общаться друг с другом, как разнополые подростки в пубертатный период.
Так как хосты располагаются в одной подсети, маршрутизатор для этого не требуется и весь обмен пакетами будет происходить с помощью коммутатора в несколько этапов.
- PC1 хочет обратиться к PC2 по IP-адресу. Тем не менее MAC-адрес PC2 ему неизвестен, поэтому PC1 использует протокол ARP. Для этого отправляется широковещательный запрос всей сети.
- Получив широковещательный запрос, коммутатор пересылает его на все свои порты, но записывает соответствие MAC-адреса отправителя ( 0000.1111.1111 ) и порта. Теперь все пакеты, адресованные данному получателю, он будет пересылать адресату, а не во все доступные интерфейсы подряд.
- PC2 получает адресованный ему пакет, понимает, что должен ответить, и сообщает свой MAC-адрес PC1. Коммутатор при этом заносит в CAM-таблицу (таблицу MAC-адресов) запись вида интерфейс gig1/2 - MAC 0000.2222.2222) . Теперь, когда компьютеры начнут обмениваться информацией, будут использоваться только два порта, за которыми они расположены. На другие порты информация пересылаться не будет.
Основной смысл рассказанной выше романтической истории общения двух устройств заключается в том, что, если коммутатор видит адрес получателя в своей CAM-таблице, он пересылает этот пакет на конкретный порт. Если не видит — устраивает широковещательную рассылку в надежде, что пакет все-таки найдет своего адресата в подконтрольной сети. Дело в том, что размер таблицы MAC-адресов у любого коммутатора ограничен. И при переполнении этой таблицы новые адреса реальных клиентов уже не смогут быть записаны в нее.
Таким образом, хакеру необходимо всего лишь сгенерировать большое количество ложных адресов и заставить коммутатор записать их в свою таблицу, чтобы реальные адреса реальных устройств постепенно были оттуда вытеснены.
Коммутатор начнет рассылать кадры, адресованные конкретному получателю, на все порты, находящиеся в том же VLAN. Следовательно, у атакующего устройства появится возможность перехватить и прочитать их.
А еще все коммутаторы, подключенные к атакованному, тоже подхватят фейковые MAC-адреса и начнут вести широковещательную рассылку по всей корпоративной сети, умножая угрозу.
Атака на виртуальные сети, или VLAN hopping
Следующая атака базируется на возможности коммутаторов автоматически согласовывать тип своего порта — access или trunk . В двух словах расскажу о том, чем порт access отличается от trunk . Наберись терпения!
Как известно, протокол 802.1Q используется во всех современных сетях. Хитрая особенность этого протокола состоит в том, что он слегка расширяет ethernet-кадр, добавляя туда несколько полей (в частности, поле VLAN Identifier, VID). На основании этого поля коммутатор способен определить, какой группе портов адресован тот или иной кадр.
Благодаря полю VID к одному коммутатору можно подключить клиенты из нескольких подсетей, тем самым ограничив широковещательный домен. Также появляется возможность объединить подключенные к разным коммутаторам клиенты в одну логическую сеть.
Иллюстрация сетевой атаки VLAN hopping
Рассмотрим передачу кадра в сети с протоколом 802.1Q.
- PC1 подключен к access-порту fa0/1 коммутатора SW1 в VLAN c порядковым номером 10. Это означает, что при попадании кадра на порт коммутатора в него будет добавлен 802.1Q-header с информацией о принадлежности к VLAN10.
- SW1 пересылает тегированный кадр на SW2 через trunk-порт.
- SW2 получает кадр, смотрит в свою CAM-таблицу и отправляет кадр на соответствующий access-порт, заголовок 802.1Q снимается.
При этом можно выделить следующие особенности:
- клиенты ничего не знают о своей принадлежности к определенному VLAN и работают с нетегированными кадрами, заголовок 802.1Q появляется только при прохождении кадра через access-порт;
- порт может быть не тегирован (access) только в одном VLAN;
- через тегированный (trunk) порт можно передавать кадры, принадлежащие к разным VLAN;
- существует так называемый native VLAN — при попадании на trunk-порт кадра без тега он автоматически будет причислен к native VLAN. Как правило, native VLAN по умолчанию — это VLAN1 (но это можно изменить);
- при этом кадры, принадлежащие native VLAN и попавшие в access-порт, передаваться через trunk-порт будут без тега.
А теперь перейдем к самой атаке. Как уже было сказано, VLAN hopping основан на том, что коммутаторы имеют возможность автоматически согласовывать тип порта. Используется для этого проприетарный протокол компании Cisco под названием DTP. При его использовании (а он включен по умолчанию) возможны следующие состояния порта: dynamic auto , dynamic desirable , static access , static trunk .
Как мы видим, при определенных условиях, а именно в режимах dynamic auto и dynamic desirable , порт коммутатора может согласовать свою работу в режиме trunk . Это значит, что, если атакующее устройство будет вести себя как порт в режиме desirable , оно согласует на себя trunk-порт и получит доступ к трафику всех виртуальных сетей, которыми оперирует коммутатор.
Основная проблема заключается в том, что на коммутаторах Cisco все порты по умолчанию находятся в режиме auto . Поэтому, даже если порт настроен в режиме access/auto , при получении запроса на согласование его состояние может измениться на trunk/auto .
Защита от сетевых атак
Что ж, а вот теперь пришло время засучить рукава и приступить к укреплению нашего корпоративного бастиона. Ниже мы рассмотрим настройку функций и режимов работы IOS для нейтрализации всех описанных выше атак, а также ряд дополнительных фич, которые помогут тебе сделать сеть еще чуть-чуть более безопасной.
Перед любыми операциями конфигурирования сетевых устройств не забывай сделать бэкап конфига! Документируй все изменения, чтобы потом не потерять лог изменений и не вырвать себе с досады волосы на затылке.
Защита от Rogue DHCP Server
Простейший способ защиты от атак класса Rogue DHCP Server — это включить на всех коммутаторах такую функцию, как DHCP snooping. Однако перед этим необходимо определить два типа портов:
- доверенные — порты коммутатора, к которым подключается DHCP-сервер либо другой легитимный коммутатор;
- недоверенные — порты для клиентских подключений, за которыми DHCP-сервер находиться не может.
В данном случае DHCP snooping необходим для того, чтобы указать коммутатору, что следует обращать внимание на проходящие сквозь него пакеты DHCP offer и acknowledgment, и не допускать прохождения таких пакетов с недоверенных портов. Также широковещательные запросы от клиента ( discover и request ) теперь будут перенаправляться только на доверенные порты.
Читайте также: