• 🚨 29 мая стартует курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    После старта курса запись открыта еще 10 дней Подробнее о курсе ...

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

Статья Обзор атак на канальный уровень и защита от них

Здравствуй, читатель, сегодня обсудим атаки на один из уровней модели 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 в помощь нам, установим и рассмотрим простой пример использования:
Код:
git clone https://github.com/WhiteWinterWolf/macof.py.git

cd macof.py

install -m 755 -D -t /usr/local/bin ./macof.py

mkdir -p /usr/local/share/man/man1

gzip -c ./macof.py.1 >/usr/local/share/man/man1/macof.py.1.gz
macof [-i interface] [-s src] [-d dst] [-e tha] [-x sport] [-y dport] [-n times]

-i Интерфейс для отправки.
-s IP-адрес источника.
-d IP-адрес назначения.
-e Целевой аппаратный адрес.
-x Порт источника TCP.
-y Порт назначения TCP.
-n Количество отправляемых пакетов.
Переполним CAM таблицу коммутатора случайными MAC-адресами, предназначенными для 192.168.0.1:
Код:
macof -i eth0 -d 192.168.0.1
Это всё равно, если мы сменим mac-адресс утилитой macchanger, перезагрузим интерфейс, затем подключимся к коммутатору, который добавит новый mac в таблицу, затем всё по новой.

Немного macchanger:
Код:
macchanger -r

macchanger --mac XX:XX:XX:XX:XX:XX
macchanger -r # сменить на рандомный mac-адрес
macchanger --mac XX:XX:XX:XX:XX:XX # меняем mac на указанный
Защита

Один из способов - ограничить количество подключаемых mac-адресов к порту. Рассматривать дальше всё будем на примере коммутаторов cisco, у которого есть 24 порта. Задача такова: чтобы только два mac-адреса могли подключиться к одному порту.

Подключимя к коммутатору с помощью консоли или удалённо. Вводим:

Код:
conf t
int range f0/1-24
switchport mode access
switchport port-security
switchport port-security violation shotdown
switchport port-security maximum 2
switchport port-security mac-address sticky
conf t # перевод в режим глобального конфигурирования

int range f0/1-24 # перевод в режим конфигурирования всех портов
switchport mode access # указываем, что все выбранные порты будут работать в режиме доступа
switchport port-security # включаем функицию port-security
switchport port-security violation shotdown # указываем коммутатору что нужно отключить порт (shutdown)
switchport port-security maximum 2 # указываем сколько mac-адресов можно подключиться к порту
switchport port-security mac-address sticky # Переводим в режим обучения. Будет сохранять в running-config первые подключившиеся mac-адреса (в нашем случае 2 mac'a)
VLAN Hopping
Теория

Всезнающая википедия расскажет нам о VLAN и DTP

VLAN (Virtual Local Area Network, виртуальная локальная сеть) — это функция в роутерах и коммутаторах, позволяющая на одном физическом сетевом интерфейсе (Ethernet, Wi-Fi интерфейсе) создать несколько виртуальных локальных сетей.

DTP (англ. dynamic trunking protocol — динамический протокол транкинга) — проприетарный сетевой протокол канального уровня, разработанный компанией Cisco для реализации транкинговой системы для связи в сети VLAN между двумя сетевыми коммутаторами и для реализации инкапсуляции.
Рекомендую для лучшего пониманию ознакомиться со статьёй на хабре.

Если режим коммутатора один из этих трёх: dynamic desirable, dynamic auto или trunk, коммутаторы могут отправлять DTP пакеты. Эти пакеты нужны для VLAN в режиме trunk, а по умолчанию коммутаторы Cisco в режиме dynamic desirable. Задачей нашей есть перевести этот коммутатор в режим TRUNK.

Создайте в вашей голове воображаемого друга воображаемую сеть с тремя компьютерами. Злоумышленник c IP-Адресом 192.168.0.100 и VLAN 100, жертва 1 192.168.0.102 с VLAN 100, жертва 2 10.0.0.1 c VLAN 200. VLAN 100 не может общаться с VLAN 200.

VLAN HOPPING.png


Внутри коммутатора:

vlan3.png


Интерфейсы (G0/0, G0/1) назначаются VLAN 100, которые являются (Kali и PC-1), а интерфейс (G0/2) назначается VLAN 200.

vlan.png


vlan2.png


Administative Mode: dynamic desirable.

Атака

Мы можем использовать Yersinia, PackETH или Scapy. Рассмотрим первую утилиту.

Утилита работает в консоли и с графическим интерфейсом (-G):
Код:
yersinia -G
Нажимаем «Launc Attack», выбираем протокол DTP, нажимаем «enabling trunking».

vlan_yers1.png


vlan_yers2.png


Что на данный момент в коммутаторе:

vlan6.png


Окей, коммутатор в режиме trunk, далее вводим:
Код:
modprobe 8021q
vconfig add eth0 200
ifconfig eth0.200 up
ifconfig eth0.200 10.0.0.6 up
modprobe 8021q # добавим модуль VLAN в ядро
vconfig add eth0 200 # добавим интерфейс VLAN с ID 200
ifconfig eth0.200 up # включаем новый интерфейс
ifconfig eth0.200 10.0.0.6 up # добавим новый IP и включим его
Сейчас мы можем отправлять пакеты в VLAN 200.

Защита

Давайте-ка настроим коммутатор, чтобы такие "кузнечики" не попрыгали в другие VLAN'ы:
Код:
conf t
int range f0/1
switchport mode access
vlan 880
vlan World
exit
int range f0/2-24
switchport access vlan 880
shut
conf t # перевод в режим глобального конфигурирования

int range f0/1 # перевод в режим конфигуратора
switchport mode access # указываем, что порт будет работать в режиме доступа
vlan 880 # даём ID новому VLAN
vlan World # имя нового VLAN
exit # выходим
int range f0/2-24 # выбираем все остальные порты
switchport access vlan 880 # переводим порты в vlan 800
shut # выключаем эти порты
Вооружившись топором, рубим STP дерево

Теория

Задача STP - предотвращение зацикливания пакетов в сети при наличии дублирующихся маршрутов.
  1. Производиться обнаружение коммутаторов связанных между собой
  2. Выбирается корневой, главный коммутатор (Root switch). Выборка идёт по наименьшему значению идентификатора или заданному администратором. (Это число из восьми байт, шесть младших - MAC адрес блока управления, а два старших - конфигурируются вручную.
  3. По специальному алгоритму блокируются порты которые создают петли.
По умолчанию протокол STP выбирает порты с наименьшим MAC. Нам необходимо отправить BDPU-пакет, в котором будет указан наш идентификатор, остальные коммутаторы тоже их отправят. Наш идентификатор должен быть наименьшим и мы станем корневым узлом .

Атака

Включаем Yersinia. Нажимаем «Launch Attack», затем выбираем «Sending conf BDPU».

STP_yers.png


STP_yers2.png


Мы видим, что появился коммутатор. Опять нажимаем «Launch Attack», но сейчас выбираем «Claiming Root Role».

STP_yers3.png


STP_yers4.png


Вы корень дерева STP. Этим можно гордиться!

Защита

Вначале запретим BPDU пакеты с портов, на которых нет никаких коммутаторов. Ну, если же пакетик пришёл, тогда переводим порт в shutdown режим. Переключим все порты в режим portfast, а после, клиент подключенный к порту, не будет принимать участия в разрешении маршрутов по STP:
Код:
conf t
int range f0/1-24
spanning-tree portfast
spanning-tree portfast bpguard default
int f0/1
spanning-tree guard root
conf t # перевод в режим глобального конфигурирования

int range f0/1-24 # перевод в режим конфигурирования всех портов
spanning-tree portfast # включаем portfast
spanning-tree portfast bpguard default # запрещаем "гуляние" bdpu пакетов
int f0/1 # выбираем 1 порт
spanning-tree guard root # указываем что порт - корневой
Подделка MAC-адреса

Атака

Тут всё просто. Меняем наш mac на другой с помощью macchanger, тем самым можем представиться другим хостом.

Напомню:
Код:
macchanger -r
macchanger --mac XX:XX:XX:XX:XX:XX
macchanger -r # сменить на рандомный mac-адрес
macchanger --mac XX:XX:XX:XX:XX:XX # меняем mac на указанный
Защита

Команды для защиты почти одинаковы как в ситуации с переполнением CAM таблицы:
Код:
conf t
int range f0/1-24
switchport mode access
switchport port-security
switchport port-security violation shotdown
switchport port-security maximum 2
arp timeout 60
conf t # перевод в режим глобального конфигурирования

int range f0/1-24 # перевод в режим конфигурирования всех портов
switchport port access # указываем, что все выбранные порты будут работать в режиме доступа
switchport port-security # включаем функицию port-security
switchport port-security violation shotdown # указываем коммутатору что нужно отключить порт (shutdown)
switchport port-security maximum 2 # указываем сколько mac-адресов можно подключиться к порту
arp timeout 60 # если в течении минуты подключиться больше максимума, тогда отключаем порт
Также можем указать статический mac-адрес. (указываем статический mac-адресс в формате XXXX.XXXX.XXXX)
Код:
switchport port-security mac-address XXXX.XXXX.XXXX
Нападаем на DHCP

Теория
  1. Dos атака. Пентестер посылает огромное количество DHCP пакетов с разными MAC-адресами. Сервер выделяет ip-адрес из нула, а нул имеет ограничения и может закончиться. После такого сервер не сможет обслуживать клиентов больше.
  2. Можно развернуть свой собственный сервер и выдавать наши настройки сети клиентам. Затем появляются возможности от прослушивания трафика до подделки DNS ответов и т.д. Для этого способа требуется вывести настоящий сервер, используя 1 способ.
Данная атака уже есть на форуме. И даже инструмент такой же. Клик

Защита

Нам поможет DHSP Snooping или ограничение запросов.

Коммутатор получает пакет, затем сравнивает MAC-адрес в запросе с MAC-адресом, который был прописан на порту. В этой технологии существуют доверительные порты (trasted) и недоверительные (untrasted).

Настроим DHSP Snooping:
Код:
conf t
ip dhcp snooping
ip dhcp snooping vlan 5
int f0/1
ip dhcp snooping trust
conf t # перевод в режим глобального конфигурирования

ip dhcp snooping # включаем dhcp snooping
ip dhcp snooping vlan 5 # # указывем vlan 5
int f0/1 # выбираем порт, подключенный напрямую к DHCP
ip dhcp snooping trust # включаем режим trust для этого порта
Или ограничение запросов:
Код:
conf t
int f0/24
ip dhcp snooping limit range 125
conf t # перевод в режим глобального конфигурирования

int f0/24 # выбираем все порты
ip dhcp snooping limit range 125 # устанавливаем ограничение в 125 запросов в секунду
Проникаем в PVLAN

Теория

Воспользуемся этой атакой для получения доступа к соседнему PVLAN через маршрутизатор. PVLAN использует три вида портов: isolated, promiscuus, community. Данные клиентов можно передать только с помощью двух последних.

Если у нас в сети есть маршрутизатор, он может установить связь с клиентами в одном PVLAN на isolated портах. Можно изменить IP-адрес назначения на цель находящуюся на другом порту isolated, а MAC-адрес назначения на адрес маршрутизатора.

Защита

Что-бы такого не случилось на маршрутизаторе создадим access list, где запрещается прямая передача данных между сегментом сети:
Код:
conf t
ip access list extended vlan
deny ip 192.168.0.0 0.0.0.255
permit any any
exit
int f0/1
ip access group pvlan in
conf t # перевод в режим глобального конфигурирования

ip access list extended vlan # создаём access list
deny ip 192.168.0.0 0.0.0.255 # указываем подсети для запрета (в нашем случае наши)
permit any any # указываем, что всё остальное передавать разрешено
exit # выходим
int f0/1 # выбираем 1 порт
ip access group pvlan in # привязываем к нашему списку с названием pvlan
Arp spoofing

Одна из самых популярных. Суть её в том, что мы посылаем apr-пакет жертве и заставляем её думать, что мы - это конечный адресат. Что-бы не делать копипаст, оставлю ссылку на уже готовую статью на форуме

На этом всё. Благодарю за прочтение всего написанного выше. Удачи.
 
С большим удовольствием прочитал вашу статью, спасибо. Человеку который не знаком с сетями вообще, будет тяжеловато разобраться.
Почему нет статьи про физический уровень?

Как по мне не обязательно писать об этом. Или я не прав?
А что о нём можно написать кроме того что это самый нижний уровень OSI который не вникает в смысл передаваемой информации? На нём идет просто передача битов, основная задача этого уровня представить биты информации в виде сигналов который передаются по среде передачи данных. Вся веселуха начинается именно с канального уровня, там у нас и исправление ошибок и два подуровня MAC, LLC и т.д и т.п. =)))
 
Последнее редактирование:
  • Нравится
Реакции: ROP
С большим удовольствием прочитал вашу статью, спасибо. Человеку который не знаком с сетями вообще, будет тяжеловато разобраться.

А что о нём можно написать кроме того что это самый нижний уровень OSI который не вникает в смысл передаваемой информации? На нём идет просто передача битов, основная задача этого уровня представить биты информации в виде сигналов который передаются по среде передачи данных. Вся веселуха начинается именно с канального уровня, там у нас и исправление ошибок и два подуровня MAC, LLC и т.д и т.п. =)))
Спасибо :)
Сегодня с утра на форуме появилась очень интересная статья по arp spoofing. Добавить бы эту ссылку в мою статью.
 
  • Нравится
Реакции: rainS
Автор пишет с куевойтучей ошибок...школота???
Здравствуй, Иса Абдурахманов.

Мне интересно где я ошибся. :)
На ошибках мы учимся. Мне хочется, чтобы статьи мои были без ошибок. Укажи мне на все мои ошибки, написав в личные сообщения, а лучше прямо здесь, это будет напоминанием. Мне не хочется, чтобы в следующих статьях были ошибки.
 
  • Нравится
Реакции: Qurbit и rainS
Данные методы, а так же атаки на всех остальных уровнях рассматриваются в книге: "Информационная безопасность. Защита и нападение", кому захочется купить или почитать просто в онлайн-формате.
Ссылка на книгу в Библиотеке Codeby => link
 
Данные методы, а так же атаки на всех остальных уровнях рассматриваются в книге: "Информационная безопасность. Защита и нападение", кому захочется купить или почитать просто в онлайн-формате.
Ссылка на книгу в Библиотеке Codeby => link
Хорошая книга, но скриншотов маловато :)
Решил сжать материал в статью и добавить пару моментов.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Курс AD