---
# System prepended metadata

title: Практика №4. Revers Shells & Reverse SSH connections

---

# Практика №4. Revers Shells & Reverse SSH connections

Импортировали топологию  в pnet-lab
![](https://i.imgur.com/FOiANvs.png)

## Настройка vlan'ов на свиче
Закодим на свитч, переходим в конфигурационный режим и добавляем vlan 10 и vlan 20
![](https://i.imgur.com/PAMHZl0.png)

Затем на интерфейсах проднимаем vlan'ы
![](https://i.imgur.com/IjmomVJ.png)

Затем переводим интерфейс e0/0, который идет к Debian, в постоянный режим trunk, чтобы он переносил трафик для всех VLAN'ов, доступных на этом свиче
![](https://i.imgur.com/IIff5Y7.png)

## Настройка vlan'ов на Debian
Затем на Debian'е получаем ip-адрес с помощью команды dhclient и смотрим айпишники.
![](https://i.imgur.com/v2fL94w.png)

Устанавливаем пакет bridge-utils, который понадобится для создания моста на Debian'е.

> Сетевой мост или бридж — это сетевое устройство уровня передачи данных. Бридж соединяет сегменты сети различных топологий и архитектур. Сетевые мосты снижают нагрузку на сети, они крайне полезны для фильтрации нагрузки трафика. Основная функция — разделение трафика на пакеты и сегменты. 

![](https://i.imgur.com/Nxq3GLD.png)

Затем переходим в файл /etc/network/interfaces и редактируем его, настраиваем интерфейсы и мост, в котором они объединятся.
![](https://i.imgur.com/FhuBuvX.png)

Смотрим, что мост поднялся и интерфейсы настроены.
![](https://i.imgur.com/i0x1HAc.png)

Выполняем настройку vlan'ов теперь уже на дебиане, добавляем vlan 10 на сабинтерфейс на дебиане, прописываем айпишник, то же самое выполняем для vlan'а 20.
![](https://i.imgur.com/HQTkOsH.png)

Создаём и прописываем конфигурационный файл для vlan 10 (прописываем подсеть с маской, диапазон раздаваемых адресов, option domain-name — суффикс доменного имени, option routers — шлюз по умолчанию)
![](https://i.imgur.com/wk6HEjX.png)

![](https://i.imgur.com/8CBmbsf.png)

Создаём и прописываем конфигурационный файл для vlan 20 (прописываем подсеть с маской, диапазон раздаваемых адресов, option domain-name — суффикс доменного имени, option routers — шлюз по умолчанию)
![](https://i.imgur.com/PuKrcns.png)

![](https://i.imgur.com/l5opCFN.png)

Установим ISC DHCP - один из самых популярных пакетов DHCP-сервера для Linux и Unix-like систем.
![](https://i.imgur.com/uKrcMaT.png)

Запускаем DHCP-сервер для каждой сети vlan
![](https://i.imgur.com/DJaifBP.png)

Заходим в windows 7 и видим, что она получида ip
![](https://i.imgur.com/TBKSkDS.png)

Чтобы перманентно включить форвардинг пакетов в системе, необходимо внести правки в конфигурационный файл /etc/sysctl.conf
![](https://i.imgur.com/NBtys4B.png)

Убираем решётку с net.ipv4.ip_forward = 1
![](https://i.imgur.com/8cgWRdr.png)

Принимаем изменения
![](https://i.imgur.com/4cYnql6.png)

Затем включаем NAT
Наиболее простым способом будет использование частного случая SNAT - MASQUERADE, он позволяет работать с динамическими внешними адресами и для каждого пакета заново определяет исходящий адрес. В случае остановки интерфейса все установленные соединения разрываются, так как при его включении может быть получен новый IP-адрес
![](https://i.imgur.com/UnqTmbk.png)

Видим, что windows 7 пингует восьмёрки, значит интернет у неё есть
![](https://i.imgur.com/atrGtha.png)

Также видим, что window 10 получила айпишник и пингует восьмёрки, значит и у неё всё отработало, как надо
![](https://i.imgur.com/6HVKWoH.png)

## SSH Tunneling
> SSH — это Secure Shell, защищённый сетевой протокол для удалённого управления. Он шифрует трафик и работает со всеми популярными операционными системами. 
 
> Для установки безопасного подключения к удалённой машине используется SSH-туннелирование. Однако под туннелем здесь подразумевается не инкапсуляция одного протокола в другом. Речь идёт о том, что администратор выполняет через SSH проброс портов. Технология подразумевает передачу TCP-пакетов и трансляцию IP-заголовков при передаче информации, если соблюдаются правила.

## Reverse SSH
Реализуем первый сценарий, описанный в лекции 4.

На Kali Linux включим ssh
![](https://i.imgur.com/pZtglaX.png)

Также на windows 10 необходимо изменить настройки удалённого доступа
![](https://i.imgur.com/Qtlz7SD.png)

Настроим удаленное подключение с Kali Linux к Windows 10, Debian используем для создания тоннеля.
Пропишем
```
ssh -R 3395:172.16.20.12:3389 user@192.168.186.130
```
где -R - удаленное подключение, 3395 - выбранный нами порт, 172.16.20.12 - ip-адрес windows 10, 3389 - порт подключения, user@192.168.184.134 - Kali Linux, которому мы предоставляем подключение. 
![](https://i.imgur.com/ombUOI0.png)

Убедимся, что соединение появилось, с помощью команды ss и флагов:
* t - выводит список портов TCP
* u - выводит список портов UDP
* l - выводит только слушающие (Listen) сокеты
* n - показывает номер порта
* p - показывает имя процесса или программы

![](https://i.imgur.com/PCcSYPM.png)

С помощью утилиты freerdp удалённо подключаемся к windows 10
> Утилита freerdp - бесплатная реализация протокола удалённого рабочего стола (RDP)

![](https://i.imgur.com/XPeyDA5.png)

Видим, что после выполнения команды было открыто окно с рабочим столом устройства Windows 10
![](https://i.imgur.com/9yhfLN7.png)


### Уровень L3

> SSH-туннелирование уровня L3 позволяет создавать защищенные сетевые соединения между удаленным и локальным хостами через SSH-канал. TUN-интерфейс (TUN - network TUNnel) используется для маршрутизации IP-пакетов. Он передает только пакеты уровня сети (IP-пакеты) и не может обрабатывать кадры уровня канала (такие как Ethernet-кадры). TUN-устройство работает в режиме point-to-point, что означает, что оно может быть использовано только для соединения двух устройств. TUN-интерфейс обычно используется для создания VPN-соединений. Таким образом, весь трафик, который идет через TUN-интерфейс, защищен SSH-шифрованием.


Реализуем второй сценарий, описанный в лекции 4. 

Сначала включаем и запускаем сервис ssh для проведения ssh-туннелирования
![](https://i.imgur.com/ip2TiD9.png)

Затем переходим в конфигурационный файл, чтобы изменить в нём 2 параметра
![](https://i.imgur.com/qAP9XxA.png)

1 - разрешаем параметр PermitRootLogin - разрешаем подключения под пользователем root
![](https://i.imgur.com/5ejeyeK.png)

2 - PermitTunnel для разрешения проведения туннеля
![](https://i.imgur.com/tn9LHw8.png)

Теперь необходимо перезапустить сервис ssh, чтобы изменения вступили в силу. Затем с помощью команды passwd устанавливаем пароль для пользователя root, у которого изначально не было пароля в системе
![](https://i.imgur.com/acNri4o.png)

Далее на устройстве Debian необходимо выполнить команду ssh с указанием флага -w для поднятия туннеля, указать локальный и внешний tun-интерфейс
![](https://i.imgur.com/VfFWzCJ.png)

Проверяем, что интерфейс tun0 был создан на Kali Linux Однако он не активен
![](https://i.imgur.com/jVsl35L.png)

Повесим на него ip-адрес, а затем поднимем интерфейс командой
```
ip link set tun0 up
```
Проверяем, что всё работает
![](https://i.imgur.com/UmW0l0q.png)

Соответственно, аналогичным образом нужно поднять туннель и на Debian машине
Видим, что всё работает, интерфейс поднят
![](https://i.imgur.com/AmRgBko.png)


Чтобы windows 10 видела Debian, нужно отключить брандмауэр 
![](https://i.imgur.com/wZCRiJT.png)

Чтобы обеспечить доступ к внутренней сети, через созданный туннель настроим маршрутизацию 
Указываем все 3 подсетки
![](https://i.imgur.com/mZrEvwW.png)

Видим, что всё успешно добавилось
![](https://i.imgur.com/1mL6dk1.png)

Затем подключаемся к windows 10 с помощью утилиты удалённого подключения freerdp по протоколу RDP
![](https://i.imgur.com/XjimLeB.png)

Видим, что после выполнения команды было открыто окно с рабочим столом устройства windows 10
![](https://i.imgur.com/1mB0KQJ.png)


### Уровень L2

> SSH-туннелирование на уровне L2 осуществляется с помощью функциональности SSH-протокола, называемой "Tunneling Ethernet over SSH" или "Ethernet over SSH".Этот метод позволяет создать виртуальный сетевой интерфейс на локальном и удаленном хостах, который может использоваться для перенаправления трафика уровня L2 между ними через защищенный SSH-канал. Здесь используется TAP-интерфейс (TAP - network TAP), который нужен для эмуляции сетевой карты. Он передает как кадры уровня канала, так и пакеты уровня сети. TAP-устройство работает в режиме моста, что означает, что оно может быть использовано для соединения нескольких устройств. TAP-интерфейс обычно используется для тестирования сетевых приложений, эмуляции сетевых устройств и других задач, где требуется эмуляция сетевой карты.


Реализуем третий сценарий, описанный в лекции 4.


Скачиваем tcpdump, который нам пригодится
> tcpdump (от TCP и англ. dump — свалка, сбрасывать) — утилита UNIX (есть клон для Windows), позволяющая перехватывать и анализировать сетевой трафик, проходящий через компьютер, на котором запущена данная программа. Для выполнения программы требуется наличие прав суперпользователя и прямой доступ к устройству 
> 
> Основные назначения tcpdump:
> * Отладка сетевых приложений.
> * Отладка сети и сетевой конфигурации в целом.
> 
![](https://i.imgur.com/FGDogMb.png)

После того, как ранее был создан bridge-интерфейс на Debian'е, запускаем tcpdump, который покажет сетевой трафик из локальной сети.
![](https://i.imgur.com/fnTeZuL.png)

> С помощью утилиты grep, которая ищет по указанной строке, можно выделить подключения по сетевому протоколу ICMP, входящему в стек протоколов TCP/IP. В основном, ICMP используется для передачи сообщений об ошибках и других исключительных ситуациях, возникших при передаче данных.

На windows 10 пропингуем восьмёрки
![](https://i.imgur.com/CbMUM6o.png)

Видим, что устройство с адресом 172.16.20.12 (windows 10) отправляет запросы, которые перехватывает устройство с адресом 192.168.1.101 (Debian)
![](https://i.imgur.com/6D6813G.png)

Создадим туннель, запустив технологию ssh, указав имя root с Kali Linux'a, к которому прокладывается туннель, ip-адрес Kali Linux'a, флаг -w создаёт любой локальный и удалённый порт, флаг -o указывает на то, что будет использован канальный уровень L2
![](https://i.imgur.com/ZAeo6u9.png)

Видим, что интерфейс tap0 был создан, но пока что он не активен
На Debian'e:
![](https://i.imgur.com/vrqP3wv.png)

На Kali Linux'e:
![](https://i.imgur.com/aMe4VVk.png)

Утилита brctl показsdftn bridge-интерфейсы на устройстве 
Видим, что необходимо добавить интерфейс 
![](https://i.imgur.com/yyDXJk2.png)

С помощью addif добавляем интерфейс к существующему мосту
![](https://i.imgur.com/2Bewz4c.png)

Теперь поднимаем интерфейс
![](https://i.imgur.com/HnQQmzY.png)

И убеждаемся, что он поднят
![](https://i.imgur.com/A5UYS2k.png)

На Kali Linux'e также поднимаем интерфейс для проведения туннеля
И убеждаемся, что он поднят
![](https://i.imgur.com/HvsGeL2.png)

Теперь получим адрес по протоколу dhcp на этом интерфейсе 
![](https://i.imgur.com/4U2aMd1.png)
Соответственно, теперь у устройства Kali Linux есть доступ до всей внутренней сети


Теперь запустим tcpdump, он опрделелит протокол DTP
> Проприетарный сетевой протокол канального уровня, разработанный компанией Cisco для реализации транкинговой системы для связи в сети VLAN между двумя сетевыми коммутаторами и для реализации инкапсуляции.

![](https://i.imgur.com/7x1wwXI.png)

После этого tcpdump обнаружил устройство Switch с помощью сетевого протокола второго уровня CDP (протокола для обнаружения подключенных сетевых устройств компании Cisco)
![](https://i.imgur.com/jvjMkEj.png)

Также tcpdump заметил активность на файерволе pfsense
![](https://i.imgur.com/YnM0Xqp.png)
