Практическая работа №5
==
# Атаки на DHCP
## Подготовка сети
Собираем нужную сеть:

После устанавливаем на kali-mitm и kali-linux нужный софт
Поместим kali-linux в 10 и 20 вланы, для этого на Switch настроим:

И:

На kali-linux получены адреса:

## DHCP starvation
Работаем в kali-mitm
В yersinia указываем mac-адрес pfsense:

Выбираем тип пакетов, которые будем посылать:

Видим Discover запросы в трафике:

Запускаем starvation с помощью pyDHCPStarvator:

Видим таблицу leases заполненой:

Трафик:

## Rogue DHCP server
Сначала настроим DHCP сервер на kali-linux
Качаем isc-dhcp-server, редактируем конфиг так:

А также изменим файл /etc/default/isc-dhcp-server

Таким образом на kali-linux работает dhcp сервер на интерфейсе eth1, который смотрит в debian и находится в 20 влане
Запустим атаку DHCP starvation:

Видно, что pfsense отвечает NAK на запросы адреса то есть все они заняты:

Debian уже получал адрес у оригинального DHCP сервера, на него эта атака не срабатывает (для него адрес зарезервирован довольно жестко в pfsense, как я понял), поэтому я добавил на Debian новый адаптер и подлкючился к Switch с него, вместо старого
Запрашиваем для нового адаптера адрес:

Трафик при запросе адреса, видно, что поддельный сервер (пакеты 43,47,48,52) опередил оригинальный (50, 51):

Это странно, поскольку только что оригинальный сервер отвечал, что адреса заняты, но по итогу атака удалась
Результат:

C kali-linux видим трафик debian, поскольку для него kali-linux является маршрутом по умолчанию:

## Защита
В качестве защиты от поддельного сервера настроим DHCP snooping
Активируем эту функцию:

Определим доверенный порт:

В качестве защиты от DHCP starvation настроим port-security, ограничив количество устройств на один порт коммутатора:

Это не даст атакующему исчерпать все адреса из пула
# VLAN-hopping
## Атака
Создадим на kali-linux еще один интрефейс и подключим его к switch, с этого интерфейса мы и будем проводить атаку:

Порт коммутатора находится в нужном состоянии:

На kali-linux добавим виртуальные интерфейсы для вланов:

В yersinia проведем атаку, делая вид, что являемся коммутатором:

Интерфейс переведен в нужный режим:

Можем пинговать в произвольный влан:

Успешно подменили влан:

## Защита
Вернем порт свича в начальное положение:

Одна из мер защиты - отключение режима автоматического перехода в trunk, для этого можно перевести порт в состояние access:

Режим trunk отключен:

Кроме этого можно совсем отключить DTP:

Атака не проходит:

# CAM-table overflow
## Атака
Перед этим нужно отключить ограничение максимального количества mac-адресов на один порт коммутатора
Запускаем macof на eth0:

Пошел трафик:

Видим заполненную таблицу на switch:

Если запустить атаку во время пинга, то время его работы сильно увеличивается:

## Защита
Настроим защиту от такой атаки
Укажем максимальное количество адресов для одного порта:

Таблица не переполняется, пинг идет без задержки:

# MAC-spoofing
## Атака
Атака заключается в смене mac-адреса, проделаем ее на Debian
Был адрес:

Меняем с помощью команд:

Адрес поменялся:

И сеть работает:

## Защита
Для защиты от смены mac-адреса можно использовать port security и указать лимит в один адрес на один порт
Для начала перезагрузим debian, чтобы отменить смену mac-адреса
Настройка Switch:

Пробуем сменить адрес:

Порт перешел в состояние error-disabled (поведение по умолчанию):

Помимо этого можно указать конкретно какой mac-адрес ожидается на порту коммутатора
# ACL
## Настройка сети
Собираем сеть:

Всем интерфейсам Router даем адреса 192.168.vlan_id.254
Машинам - 192.168.vlan_id.10
## Настройка ACL
### NAT
Включим nat:

Добавляем записи в ACL 1:

Заканчиваем настройку:

Указываем внутренние интерфейсы nat:

Пингуется как нужно:

### ACL для kali-linux
Развернули веб на дебиане:

Запрещаем доступ kali на дебиан по http:

Остальное разрешаем:

Применяем правило:

Проверяем, с кали нет доступа:

С Win7 есть:

### ACL для Win7
Запрещаем доступ во влан 10:

Остальное разрешаем:

Применяем его к интерфейсу e0/0.10:

Проверим, все так:

### ACL для Debian
Запрещаем доступ к 2 сетям, остальное разрешаем:

Вешаем на интерфейс:

Проверим:
