# Практика №4. Revers Shells & Reverse SSH connections
## Построить инфраструктуру в системе EVE-NG (есть возможность ее импортировать)
Для работы был скачан образ pnet-lab не требующий импорта. Образ был успешно разархивирован и запущен в vmware.

Далее в редакторе была построена инфраструктура организации.
- Kali Linux - Linux Kali 2022 (2CPU, 2GB RAM)
- pfSense - PfSense Firewall 2.6.0, default config (Qemu version 4.1.0, 2CPU, 2GB RAM, Primary Console VNC)
- Switch - Cisco IOL-L2-ADVIPSERVICESK9 (2 port-groups)
- Debian - 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-20 - 172.16.20.0/24, GW 172.16.20.254

:::spoiler Switch config
```
version 15.2
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
service compress-config
!
hostname Switch
!
boot-start-marker
boot-end-marker
!
!
!
no aaa new-model
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
spanning-tree mode pvst
spanning-tree extend system-id
!
vlan internal allocation policy ascending
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Ethernet0/0
description Debian
switchport trunk encapsulation dot1q
switchport mode trunk
!
interface Ethernet0/1
!
interface Ethernet0/2
description win-7
switchport access vlan 10
switchport mode access
!
interface Ethernet0/3
!
interface Ethernet1/0
description win-10
switchport access vlan 20
switchport mode access
!
interface Ethernet1/1
!
interface Ethernet1/2
!
interface Ethernet1/3
!
ip forward-protocol nd
!
!
no ip http server
no ip http secure-server
!
!
!
!
!
control-plane
!
!
line con 0
logging synchronous
line aux 0
line vty 0 4
!
!
end
```
:::
:::spoiler Настройка файервола
```
WAN (wan) -> vtnet0 -> v4/DHCP4: 192.168.19.163/24
LAN (lan) -> vtnet1 -> v4: 172.16.1.1/24
OPT1 (opt1) -> vtnet1.10 -> v4: 172.16.10.254/24
OPT2 (opt2) -> vtnet1.20 -> v4: 172.16.20.254/24
```
Настроенные VLAN

На дефолт vlan

На vlan10

На vlan20

Настройка правил фаерволла для созданных vlan


:::
## Настроить каждое устройство в соответсвии со следующими параметрами
### Kali-2021, Win-7, Win-10, Debian - получение адреса DHCP
pfSense выступает в роли DHCP сервера и выдает ip для машин.
### Настройка Kali
Получение ip по DHCP

Первоначально необходимо настроить kali, чтобы можно было подключиться к ней по ssh. Добавим службу ssh.socket в автозагрузку, чтобы она слушала любое подключение по ssh `sudo systemctl enable ssh.socket`.
Далее необходимо отредактировать файл `sudo nano /etc/ssh/sshd_config` и поставить следующие флаги:
```
PasswordAuthentication yes
PermitRootLogin yes
PermitTunnel yes
```
Затем нужно отредактировать пароль пользователя root, чтобы в последствии возможно было подключаться от root и корректно создавался `tap0` интерфейс.
`sudo passwd root`

*пароль был поставлен такой же, как и от юзер акка*
### Win-7

### Win-10

### Debian
*dhclient, чтобы он запросил IP у DHCP сервера*
`apt install bridge-utils`
`nano /etc/network/interfaces`

После - ребутнуть либо через `systemctl restart networiking`, либо всю машину целиком

## L2 Туннелирование
Первым делом подключаемся с Дебиана по ssh к Кали
`sudo ssh root@192.168.19.165 -o Tunnel=ethernet -w any:any`
:::spoiler Примечание
```
-w # Создание туннеля
any:any # Номера портов (в данном случае любые)
-o Tunnel=ethernet # Создание туннеля уровня L2
```
:::

Проверяем, что и на Кали, и на Дебиане создались `tap0` интерфейсы


Далее необходимо и на Кали, и на Дебиане активировать эти интерфейсы командой
`sudo ip link set dev tap0 up`
Потом объединяем `tap0` интерфейс в bridge
`brctl addif br0 tap0`

Теперь можно на Кали запросить ip по DHCP `dhclient tap0` и быть *легитимным* участником чужой сети.

Чтобы была возможность пинговать win-10, необходимо либо отключить брандмауэр, либо отметить сеть, к которой он подключен как частную:
1. Запуск `powershell` от имени администратора;
2. Узнать `Name`/`InterfaceIndex` интерфейса через `get-netconnectionprofile`;
3. Сделать сеть частной `set netconnectionprofile -InterfaceIndex *цифра* -NetworkCategory "Private"`.
## L3 Туннелирование
Первым делом создаем ssh туннель с Дебиана до Кали
`sudo ssh -fN -w any:any root@192.168.19.165`
:::spoiler Примечание
```
-f # переводит процесс ssh в фоновый режим;
-N # не выполнять удаленные команды. Полезно, если нужно только перенаправить порты;
```
:::
Проверяем, что и на Кали, и на Дебиане создался `tun0` туннель


Далее необходимо и на Кали, и на Дебиане активировать этот туннель командой
`sudo ip link set dev tun0 up`
Назначаем на концы туннеля ip:
`ip addr add 10.10.10.1/32 peer 10.10.10.2 dev tun0` *debian*
`sudo ip addr add 10.10.10.2/32 peer 10.10.10.1 dev tun0` *kali*
### Настройка Debian
Теперь пропишем правило, которое будет менять ip Kali на ip Debian'a. Чтобы при взаимодействии другие устройства понимали, куда отправлять пакеты.
`iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE`
Также необходимо отредактировать `nano /etc/sysctl.conf`, чтобы пакеты могли передаваться между интерфейсами Debian'a

`sysctl -p` чтобы сохранить
### Настройка Kali
Необходимо прописать маршруты в ip route, чтобы пакеты *уходили* в нужную сторону.
```
ip route add 172.16.1.0/24 dev tun0
ip route add 172.16.10.0/24 dev tun0
ip route add 172.16.20.0/24 dev tun0
```

### Проверка
Kali может пропинговать win-7 (`172.16.10.3`) и зайти в админ панель pfsense. Однако, в админ панели отображается, что вход был выполнен с устройства `172.16.1.9`, что является айпишником Debian'a.
