# Практика №4. Revers Shells & Reverse SSH connections
Импортировали топологию в pnet-lab

## Настройка vlan'ов на свиче
Закодим на свитч, переходим в конфигурационный режим и добавляем vlan 10 и vlan 20

Затем на интерфейсах проднимаем vlan'ы

Затем переводим интерфейс e0/0, который идет к Debian, в постоянный режим trunk, чтобы он переносил трафик для всех VLAN'ов, доступных на этом свиче

## Настройка vlan'ов на Debian
Затем на Debian'е получаем ip-адрес с помощью команды dhclient и смотрим айпишники.

Устанавливаем пакет bridge-utils, который понадобится для создания моста на Debian'е.
> Сетевой мост или бридж — это сетевое устройство уровня передачи данных. Бридж соединяет сегменты сети различных топологий и архитектур. Сетевые мосты снижают нагрузку на сети, они крайне полезны для фильтрации нагрузки трафика. Основная функция — разделение трафика на пакеты и сегменты.

Затем переходим в файл /etc/network/interfaces и редактируем его, настраиваем интерфейсы и мост, в котором они объединятся.

Смотрим, что мост поднялся и интерфейсы настроены.

Выполняем настройку vlan'ов теперь уже на дебиане, добавляем vlan 10 на сабинтерфейс на дебиане, прописываем айпишник, то же самое выполняем для vlan'а 20.

Создаём и прописываем конфигурационный файл для vlan 10 (прописываем подсеть с маской, диапазон раздаваемых адресов, option domain-name — суффикс доменного имени, option routers — шлюз по умолчанию)


Создаём и прописываем конфигурационный файл для vlan 20 (прописываем подсеть с маской, диапазон раздаваемых адресов, option domain-name — суффикс доменного имени, option routers — шлюз по умолчанию)


Установим ISC DHCP - один из самых популярных пакетов DHCP-сервера для Linux и Unix-like систем.

Запускаем DHCP-сервер для каждой сети vlan

Заходим в windows 7 и видим, что она получида ip

Чтобы перманентно включить форвардинг пакетов в системе, необходимо внести правки в конфигурационный файл /etc/sysctl.conf

Убираем решётку с net.ipv4.ip_forward = 1

Принимаем изменения

Затем включаем NAT
Наиболее простым способом будет использование частного случая SNAT - MASQUERADE, он позволяет работать с динамическими внешними адресами и для каждого пакета заново определяет исходящий адрес. В случае остановки интерфейса все установленные соединения разрываются, так как при его включении может быть получен новый IP-адрес

Видим, что windows 7 пингует восьмёрки, значит интернет у неё есть

Также видим, что window 10 получила айпишник и пингует восьмёрки, значит и у неё всё отработало, как надо

## SSH Tunneling
> SSH — это Secure Shell, защищённый сетевой протокол для удалённого управления. Он шифрует трафик и работает со всеми популярными операционными системами.
> Для установки безопасного подключения к удалённой машине используется SSH-туннелирование. Однако под туннелем здесь подразумевается не инкапсуляция одного протокола в другом. Речь идёт о том, что администратор выполняет через SSH проброс портов. Технология подразумевает передачу TCP-пакетов и трансляцию IP-заголовков при передаче информации, если соблюдаются правила.
## Reverse SSH
Реализуем первый сценарий, описанный в лекции 4.
На Kali Linux включим ssh

Также на windows 10 необходимо изменить настройки удалённого доступа

Настроим удаленное подключение с Kali Linux к Windows 10, Debian используем для создания тоннеля.
Пропишем
```
ssh -R 3395:172.16.20.12:3389 user@192.168.186.130
```
где -R - удаленное подключение, 3395 - выбранный нами порт, 172.16.20.12 - ip-адрес windows 10, 3389 - порт подключения, user@192.168.184.134 - Kali Linux, которому мы предоставляем подключение.

Убедимся, что соединение появилось, с помощью команды ss и флагов:
* t - выводит список портов TCP
* u - выводит список портов UDP
* l - выводит только слушающие (Listen) сокеты
* n - показывает номер порта
* p - показывает имя процесса или программы

С помощью утилиты freerdp удалённо подключаемся к windows 10
> Утилита freerdp - бесплатная реализация протокола удалённого рабочего стола (RDP)

Видим, что после выполнения команды было открыто окно с рабочим столом устройства Windows 10

### Уровень L3
> SSH-туннелирование уровня L3 позволяет создавать защищенные сетевые соединения между удаленным и локальным хостами через SSH-канал. TUN-интерфейс (TUN - network TUNnel) используется для маршрутизации IP-пакетов. Он передает только пакеты уровня сети (IP-пакеты) и не может обрабатывать кадры уровня канала (такие как Ethernet-кадры). TUN-устройство работает в режиме point-to-point, что означает, что оно может быть использовано только для соединения двух устройств. TUN-интерфейс обычно используется для создания VPN-соединений. Таким образом, весь трафик, который идет через TUN-интерфейс, защищен SSH-шифрованием.
Реализуем второй сценарий, описанный в лекции 4.
Сначала включаем и запускаем сервис ssh для проведения ssh-туннелирования

Затем переходим в конфигурационный файл, чтобы изменить в нём 2 параметра

1 - разрешаем параметр PermitRootLogin - разрешаем подключения под пользователем root

2 - PermitTunnel для разрешения проведения туннеля

Теперь необходимо перезапустить сервис ssh, чтобы изменения вступили в силу. Затем с помощью команды passwd устанавливаем пароль для пользователя root, у которого изначально не было пароля в системе

Далее на устройстве Debian необходимо выполнить команду ssh с указанием флага -w для поднятия туннеля, указать локальный и внешний tun-интерфейс

Проверяем, что интерфейс tun0 был создан на Kali Linux Однако он не активен

Повесим на него ip-адрес, а затем поднимем интерфейс командой
```
ip link set tun0 up
```
Проверяем, что всё работает

Соответственно, аналогичным образом нужно поднять туннель и на Debian машине
Видим, что всё работает, интерфейс поднят

Чтобы windows 10 видела Debian, нужно отключить брандмауэр

Чтобы обеспечить доступ к внутренней сети, через созданный туннель настроим маршрутизацию
Указываем все 3 подсетки

Видим, что всё успешно добавилось

Затем подключаемся к windows 10 с помощью утилиты удалённого подключения freerdp по протоколу RDP

Видим, что после выполнения команды было открыто окно с рабочим столом устройства windows 10

### Уровень L2
> SSH-туннелирование на уровне L2 осуществляется с помощью функциональности SSH-протокола, называемой "Tunneling Ethernet over SSH" или "Ethernet over SSH".Этот метод позволяет создать виртуальный сетевой интерфейс на локальном и удаленном хостах, который может использоваться для перенаправления трафика уровня L2 между ними через защищенный SSH-канал. Здесь используется TAP-интерфейс (TAP - network TAP), который нужен для эмуляции сетевой карты. Он передает как кадры уровня канала, так и пакеты уровня сети. TAP-устройство работает в режиме моста, что означает, что оно может быть использовано для соединения нескольких устройств. TAP-интерфейс обычно используется для тестирования сетевых приложений, эмуляции сетевых устройств и других задач, где требуется эмуляция сетевой карты.
Реализуем третий сценарий, описанный в лекции 4.
Скачиваем tcpdump, который нам пригодится
> tcpdump (от TCP и англ. dump — свалка, сбрасывать) — утилита UNIX (есть клон для Windows), позволяющая перехватывать и анализировать сетевой трафик, проходящий через компьютер, на котором запущена данная программа. Для выполнения программы требуется наличие прав суперпользователя и прямой доступ к устройству
>
> Основные назначения tcpdump:
> * Отладка сетевых приложений.
> * Отладка сети и сетевой конфигурации в целом.
>

После того, как ранее был создан bridge-интерфейс на Debian'е, запускаем tcpdump, который покажет сетевой трафик из локальной сети.

> С помощью утилиты grep, которая ищет по указанной строке, можно выделить подключения по сетевому протоколу ICMP, входящему в стек протоколов TCP/IP. В основном, ICMP используется для передачи сообщений об ошибках и других исключительных ситуациях, возникших при передаче данных.
На windows 10 пропингуем восьмёрки

Видим, что устройство с адресом 172.16.20.12 (windows 10) отправляет запросы, которые перехватывает устройство с адресом 192.168.1.101 (Debian)

Создадим туннель, запустив технологию ssh, указав имя root с Kali Linux'a, к которому прокладывается туннель, ip-адрес Kali Linux'a, флаг -w создаёт любой локальный и удалённый порт, флаг -o указывает на то, что будет использован канальный уровень L2

Видим, что интерфейс tap0 был создан, но пока что он не активен
На Debian'e:

На Kali Linux'e:

Утилита brctl показsdftn bridge-интерфейсы на устройстве
Видим, что необходимо добавить интерфейс

С помощью addif добавляем интерфейс к существующему мосту

Теперь поднимаем интерфейс

И убеждаемся, что он поднят

На Kali Linux'e также поднимаем интерфейс для проведения туннеля
И убеждаемся, что он поднят

Теперь получим адрес по протоколу dhcp на этом интерфейсе

Соответственно, теперь у устройства Kali Linux есть доступ до всей внутренней сети
Теперь запустим tcpdump, он опрделелит протокол DTP
> Проприетарный сетевой протокол канального уровня, разработанный компанией Cisco для реализации транкинговой системы для связи в сети VLAN между двумя сетевыми коммутаторами и для реализации инкапсуляции.

После этого tcpdump обнаружил устройство Switch с помощью сетевого протокола второго уровня CDP (протокола для обнаружения подключенных сетевых устройств компании Cisco)

Также tcpdump заметил активность на файерволе pfsense
