В данном мануале вы узнаете несколько банальных атак которые можно провести на L2 уровне.
Все тут показанное будет происходить в рамках виртуальное лаборатории EVE-ng.
Cуть атаки DHCP Starvation: Истощение ресурсов DHCP обычно нацелено на сетевые DHCP-серверы с целью наполнить авторизованный DHCP-сервер сообщениями DHCP REQUEST с использованием поддельных MAC-адресов источника. Сервер DHCP будет отвечать на все запросы, не зная, что это атака с истощением DHCP, назначая доступные IP-адреса, что приводит к истощению пула DHCP. DHCP-пул, из которого клиенты получают IP-адреса, ограничен. Например, это может быть 253 адреса (при маске 255.255.255.0).
Действия, осуществляемые при атаке:
В качестве результата данной атаки можно выделить следующее:
Зачем могут производить такую атаку?
Для проведения уже следующей атаки а именно DHCP spoofing - это атака при которой злоумышленник отвечает на запросы DHCP и пытается указать себя как шлюз по умолчанию или DNS-сервер, следовательно, инициируя атаку через посредника. При этом возможно, что он может перехватывать трафик от пользователей перед пересылкой на реальный шлюз или выполнять DoS, заполняя реальный DHCP-сервер запросами на засорение ресурсов IP-адресов. Для защиты от подобных атак используется технология DHCP Snooping.
Что такое DHCP Snooping?
DHCP Snooping - это технология безопасности уровня 2, предназначенная для защиты от атак с использованием протокола DHCP. Например, атаки с подменой DHCP-сервера в сети или атаки DHCP starvation, которая заставляет DHCP сервер выдать все существующие на сервере адреса злоумышленнику. DHCP Snooping блокирует сообщения от несанкционированных (мошеннических) DHCP-серверов, предлагающих IP-адреса DHCP-клиентам.
Функция DHCP Snooping выполняет следующие действия:
Для правильной работы DHCP snooping, необходимо указать какие порты коммутатора будут доверенными (trusted), а какие — нет (untrusted, в дальнейшем — ненадёжными):
Как работает DHCP-Snooping?
По умолчанию коммутатор отбрасывает DHCP-пакет, который пришел на ненадёжный порт, если:
Чтобы выяснить, как работает DHCP Snooping, мы должны поймать рабочий механизм DHCP, который обозначает протокол динамической конфигурации хоста.
При включенном DHCP сетевое устройство без IP-адреса будет "взаимодействовать" с DHCP-сервером через 4 этапа следующим образом:
DHCP Snooping обычно классифицирует интерфейсы на коммутаторе по двум категориям: надежные и ненадежные порты. Надежный порт - это порт или источник, сообщения DHCP-сервера которого являются доверенными. Ненадежный порт - это порт, с которого сообщения DHCP-сервера не являются доверенными. Если инициируется отслеживание DHCP, сообщение предложения DHCP может быть отправлено только через доверенный порт. В противном случае оно будет отброшено.
На этапе подтверждения, будет создана таблица привязки DHCP в соответствии с сообщением DHCP ACK. Он записывает MAC-адрес хоста, арендованный IP-адрес, время аренды, тип привязки, а также номер VLAN и информацию об интерфейсе, связанную с хостом. Если последующий пакет DHCP, полученный от ненадежного хоста, не совпадает с информацией, он будет удален.
Порядок настройки DHCP snooping.
После того, как DHCP snooping включен на коммутаторе, по мере выдачи адресов клиентам, начинает заполняться база данных привязки DHCP.
В базе данных привязки DHCP хранятся информация только о ненадёжных портах:
▪ MAC-адрес клиента
▪ Арендованный IP-адрес клиента
▪ Время аренды в секундах
▪ Идентификатор VLAN
▪ Идентификатор порта к которому присоединен клиент
Собираю следующию топологию:
В качестве коммутатора и маршрутизатора используеться cisco устройства.
На R1 настроен nat для выхода в интернет и DCHP сервер для внутренней сети.
Проводить атаку будем с помощью специальной утилиты yersinia а также воспользуемся сетевым сканером nmap:
Проведем сканирование сети на наличие DHCP сервера:
Запустим yersinia:
команда:
Нажимаем клавишу G выбираем в списке протоколов DHCP. Начинается отлов dhcp пакетов.
Возможно вам понадобиться для ускорения процесса запросить IP адресс:
Выбираем любой пакет и жмем клавишу Х и видим все доступные атаки:
Жмем 1. И как можем увидить начилась атака отправка большого количества DISCOVER сообщений:
Если мы посмотрим выданные IP адреса на роутере то увидим что были заняты все IP Адреса. Теперь любой клиент который захочет получить IP адрес по dhcp не сможет это сделать. Теперь злоумышленник может настроить свой dhcp сервер в котором укажет свой шлюз для перехвата всего трафика в сети или свой адрес dns сервера чтобы перенаправлять клиентов на фейковые сайты.
Далее рекомендую рассмотреть как можно защитить сервер от подобной атаки.
Протокол CPD (Cisco Discovery Protocol) – проприетарный протокол компании Cisco, работающий на 2 уровне модели OSI, который позволяет сетевым устройствам (и не только сетевым) анонсировать в сеть информацию о себе и принимать такие анонсы от своих соседей.
Протокол достаточно полезный, так как он может показать, что за устройство (версия ПО, номера портов, платформа и ещё много другой информации) подключено в сеть. Это может быть удобно для составления карты сети, ведения документации и мониторинга сети. Однако также это облегчает атаку на сеть. В связи с этим протокол CDP в большинстве случаев отключают.
Reconnaissance
Дамп трафика CDP/LLDP дает большой импакт, поскольку нарушитель получает много информации о сетевом устройстве — начиная от модели устройства и заканчивая даже типом дуплекса. Информация, полученная из дампа трафика CDP/LLDP, будет полезной для злоумышленника. Он может ее использовать,чтобы определить версию прошивки коммутатора. Если в ней найдется известная уязвимость, то злоумышленник сможет провести атаку.
CDP Flooding
Злоумышленник может вызвать отказ в обслуживании коммутатора Cisco, если разошлет огромное количество сообщений CDP. Центральный процессор коммутатора будет полностью перегружен, а таблица соседей CDP начнет переполняться.
Воспользуемся той же топологией что и в прошлом пункте.
Для захвата трафика будем использовать утилиту tcpdump:
Очень полезная утилита с помощью которой можно также делать дамп в Wireshark. Если кто ей не пользовался рекомендую почитать про нее. Получаем пакеты следующего типа. Как можно увидеть мы получаем информацию о вендоре оборудования, версию ПО а также интерфейс подключения и тд.
Для проведения атаки CDP Flooding на коммутатор воспользуемся yersinia. Запустим программу в интерактивном режиме. Нажмем G и выберем cdp.
Нажмем Х и выберем 1 атаку.
Если у вас настроен portsec коммутаторе или storm control то отключите их иначе атаку провести не удасться.
А вот что пишет теперь коммутатор. Все коммутатор выведен из строя.
Ну как вы наверное уже поняли portsec защищает от этой атаки.
Аббревиатура DTP расшифровывается как Dynamic Trunking Protocol. Этот протокол разработан инженерами Cisco Systems для реализации автоматической транкинговой системы. Какой порт будет транковым, а какой нет — c этим разбирается именно протокол DTP, а не сетевой инженер. DTP очень часто остается без должного внимания и в большинстве случаев использует конфигурацию по умолчанию.
DTP позволяет двум соседним портам коммутатора согласовывать решения о том, будут ли они магистральными каналами a.k.a транками. Такой метод применяется, чтобы сформировать магистральный канал, а сетевому администратору не приходилось настраивать вручную каждую сторону. Коммутационный порт, который находится на другом конце канала, может принять конфигурацию соседа и сформировать транк автоматически. Да, это позволяет сохранить время и силы, но не в таком уж и существенном количестве.
В протоколе DTP предусмотрено несколько режимов работы портов коммутатора для инициализации магистрального канала:
Чтобы не запутаться в этих терминах, я сделал таблицу комбинаций режимов DTP двух соседних портов. Посмотрев на данные в этой таблице, ты наверняка заметил, что если два соседних порта находятся в режиме Dynamic Auto, то они не смогут образовать магистральный канал и оба порта останутся в режиме Access. Другой пример: если первый порт будет в режиме Dynamic Auto, а второй порт в режиме Dynamic Desirable, то в конечном счете образуется магистральный канал или же транк.
Кадры DTP рассылаются через порты коммутатора каждые 30 секунд. И для их рассылки используется специальный мультикастовый адрес 01:00:0C:CC:CC:CC. Если порт был сконфигурирован динамически, то время его жизни — всего 300 секунд.
Мультикастовый адрес 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.
Топология таже.
На R1 только создано два саб-интерфейса для сетей vlan 10,20.
Для это атаки можно воспользоваться все той же yersinia, но я покажу вам еще один инструемет а именно scapy - он позволяет создавать и отправлять пакеты вручную.
Запустите scapy:
Соберем кадр DTP Desirable с помощью Scapy. Для начала необходимо импортировать модуль для работы с протоколом DTP:
Можно написать инструкции ручками:
Не забываем о слоях LLC и SNAP с указанием значения 0x2004, определяющего, что это именно протокол DTP. Значения заголовков в tlvlist оставляем по умолчанию, кроме DTPNeighbor. И в конце зациклим отправку собранного кадра — пусть шлется раз в три секунды. Потому что если порт был сконфигурирован динамически, то время его жизни всего 300 секунд (5 минут).
Почему‑то в Scapy в дефолтном кадре DTP по умолчанию хранятся все необходимые значения, чтобы собрать именно кадр DTP Desirable. Я пока не знаю, с чем это связано, но нам это на руку: сэкономим время. Поэтому мы оставили параметры DTP по умолчанию (за исключением DTPNeighbor).
Однако вкратце расскажу о самых важных для нас заголовках и их значениях:
А можем воспользоваться готовой функцией для этого в терминале scapy выполните команду:
Порты коммутатора до атаки:
Порты коммутатора после атаки:
Теперь осталось создать саб интерфейсы на linux-се назначить на них vlan и получить адрес по dhcp и все сеть скомпроментирована теперь мы имеем с атакующей машины доступ в другой vlan. Возможно вам понадобиться установить пакет vlan.
Вообще перед тем как создавать саб интерфейс и задавать на него vlan необходимо провести разведку сети с помощью снифера к примеру Wireshark и узнать какие вообще в сети есть vlan. Это могло бы выглядеть как то так:
обнаружены сети VLAN 100, 200, 220 и 250. Эти значения VLAN ID расположены в одном из заголовков протокола STP — Root Identifier (Root Bridge System ID Extension).
Проверим доступ в сети:
Доступ в сеть с скомпроментированного vlan будет 5 минут так как транковый порт сконфигурирован динамически. (Чтобы доступ был постоянно надо открыть во 2 терминале зацикленную отправку DTP кадра. Вы можете также воспользоваться Yersinia для проведения этой атаки.
Протокол VTP был создан для того, чтобы автоматически и централизованно управлять базами данных VLAN на коммутаторах Cisco. Для этого используются номера ревизии конфигурации. С их помощью коммутатор определяет самую свежую базу данных VLAN, принимает объявления VTP и обновляет БД VLAN, увидев больший номер ревизии.
Роли коммутаторов в домене VTP
Типы объявлений в домене VTP:
Чтобы атаковать домен VTP, необходимо, чтобы порт, к которому ты подключен во время атаки, был в режиме магистрального канала. Кстати говоря, атака на VTP может быть следующим шагом после того, как ты атаковал протокол DTP и стал транковым каналом. Злоумышленник сможет проводить VTP-инъекции и отправлять якобы «обновленные» базы данных VLAN с бóльшим номером ревизии. Легитимные коммутаторы, в свою очередь, примут и обновят свои базы данных VLAN. Провести такую атаку нам поможет Yersinia. Рассмотрим атаку на VTPv1 с последующим удалением всех VLAN.
Топология следующия:
Есть 3 vlan сети (10,20,30) каждый пк в своем vlan.
S1 настроен в режиме VPT-server:
Настройте S2, S3 в режиме клиента VTP:
Проверьте что vlan появились на других коммутаторах:
Проведем атаку на DTP чтобы порт коммутатора S3 стал транковым.
В yersinia выберем протокол VTP:
Нажмем X и выполним к примеру атаку по удалению всех vlan.
Проверяем что все VLAN удалены:
Протокол ARP может быть очень полезен в рамках сетевой разведки. Сканирование ARP позволяет провести перечисление активных хостов и имеет небольшое преимущество перед ICMP-сканированием, поскольку трафик ICMP в корпоративной сети может быть ограничен, а то и вовсе выключен.
Проблема сканирования ARP в том, что это очень шумный способ сетевой
разведки. С этим способом нужно быть осторожным, чтобы не спровоцировать тревогу систем безопасности IPS/IDS. Да и на порте, к которому ты подключен, может быть сконфигурирован Storm Control, блокирующий порт при аномальном широковещательном трафике (трафик протокола ARP — широковещательный).
C помощью утилиты arp-scan можем обнаружить активные хосты в сети и их MAC-адреса. В моем случае тестовая сеть маленькая, но тем не менее.
Техника этой сетевой атаки заключается в использовании недостатков протокола ARP. Абсолютно любой хост в сети может вызывать ARP-запросы и принимать их, они это делают без механизма аутентификации (в протоколе ARP не предусмотрен механизм аутентификации), поэтому все хосты доверяют друг другу. Злоумышленнику достаточно отправить фальсифицированные ответы ARP в сторону цели A и цели B. С помощью подделывания ответов ARP компьютер атакующего позиционируется целью А для цели B и наоборот, тем самым встав посередине. Это создает условия для перехвата трафика.
Иногда такая атака называется переполнением таблицы MAC-адресов. Принцип этой атаки состоит в том, чтобы вызвать переполнение коммутационной матрицы. В случае чего коммутатор, грубо говоря, превращается в хаб и начинает рассылать поступающие кадры во все порты, что вызывает идеальные условия для перехвата трафика. Вызывать переполнение очень просто, ведь у коммутаторов ограничен размер таблиц MAC-адресов. При заполнении таблицы MAC-адресов злоумышленник сможет видеть все рассылаемые кадры из всех портов.
Во время атаки коммутатор будет лагать поэтому отключите атаку а после смотрите состояние таблицы. Как мы видим тут максимальное количество мак-адресов огромное и понадобиться продолжительное время что бы полностью забить память коммутатора и превратить его в хаб.