# Практика №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)