Пивотинг в пентесте: проброс портов, SOCKS и туннели — эфир CyberED - CyberED
Повышение цен ▲
на все программы в 2026 году
Интенсивы Взлом Защита Безопасная разработка Основы
Мероприятия Календарь О нас Отзывы
+7 495 181-00-79
+7 495 181-00-79
заказать звонок

Обход сегментации сетей: пивотинг

Тема:Пентест
Когда прошло 21 апреля1 ч 57 мин196 участников
Ярослав Шмелев
Ярослав Шмелев
Старший вирусный аналитик

О чём эфир

Получил доступ к машине и упёрся в сегментацию сети? Разберёшься, как через эту машину работать с остальной сетью так, будто сидишь прямо на ней.

Внутри: проксирование, локальный и удалённый проброс портов, SOCKS через SSH, цепочки через ProxyJump и маскировка SSH-подключений. Из инструментов Chisel, Metasploit и Proxychains.

Напоследок способы обойти блокировки: виртуальный интерфейс через Ligolo, DNS-фронтинг и DNS-туннель.

Забери материалы эфира

Материалы одним файлом: вернись к ним, когда будешь повторять на практике.

Скачать материалы

Разбор эфира по темам

Пивотинг в пентесте: почему внутренняя сеть опаснее периметра

Пивотинг (перемещение по внутренней сети через захваченный хост), или трансляция трафика, тема небольшая, но от неё часто зависит исход всей работы. Владея ей, можно работать с внешним периметром и особенно со сложными, хорошо сегментированными внутренними сетями так, будто ты уже внутри.

Внутри защита обычно слабее, чем снаружи.

На внешнем периметре живёт постоянный фоновый шум: десятки тысяч заражённых или подконтрольных злоумышленникам хостов непрерывно сканируют интернет и ждут любую популярную уязвимость, чтобы тут же её проэксплуатировать. Масштаб видно на сервисе GreyNoise, где в трендах показано, сколько адресов участвует в попытках той или иной атаки. Поэтому на периметре взлом быстро замечают, и хост гасят.

Внутри всё наоборот. Пока не было аудита и пентеста, уязвимый хост может жить годами: администраторы о нём не вспоминают, а снаружи до него не дотянуться из-за отсутствия сегментации. Именно эту слепую зону и открывает пивотинг.

Как первичный доступ превращается в компрометацию сети

Крупный взлом нередко начинается с минорного инцидента. У T-Mobile точкой входа оказался обычный сетевой роутер, доступный по SSH с заводскими учётными данными. Их подобрали брутфорсом, а дальше из-за отсутствия сегментации нашли критические уязвимости уже во внутренней инфраструктуре и вынесли миллионы записей о клиентах.

Схема пивотинга через внешний сервер
Схема пивотинга через внешний сервер

Проблема атакующего после первого доступа в другом. На скомпрометированной машине почти нет возможности ставить софт. Притащить туда фреймворк или набор инструментов тяжело, а таких машин в сложной работе бывают десятки. Значит, задача не в установке ПО, а в том, чтобы пропускать свои операции сквозь захваченный хост.

Нам нужно не ставить своё ПО на каждую машину, а через скомпрометированный хост делать всё то же самое, как если бы мы сами стояли на его месте.

Ярослав Шмелев

Точкой встречи обычно служит VPS с белым IP, к которому можно подключиться с обеих сторон. На нём подключение из внутренней сети встречается с подключением атакующего, и поднимается туннель, через который можно работать от имени захваченной машины.

Проксирование трафика и проброс портов

Всё многообразие сценариев пивотинга удобно свести к двум направлениям: проксирование трафика и проброс портов.

Проксирование и проброс удалённых и локальных портов
Проксирование и проброс удалённых и локальных портов

При проксировании адреса живых машин и сервисов заранее неизвестны, поэтому работать приходится динамически: через SOCKS-прокси или через виртуальный сетевой интерфейс.

Проброс портов нужен там, где требуется входящее соединение. Локальный сервис вроде базы данных часто слушает только на localhost и чужих подключений не принимает. А многие атаки и полезные нагрузки сами требуют, чтобы кто-то подключился к тебе: классический NTLM-релей так и устроен. Если своя машина принять соединение не может, порт пробрасывают на хост, который виден захваченной машине. Дальше можно либо тащить всё обрабатывающее ПО на скомпрометированную машину, либо просто принять коннект на ней и одной утилитой перекинуть к себе. В ход шёл даже сетевой принтер, внутри которого крутится Linux, а защитные средства туда не поставить.

Сложные атаки работают даже на простейшем железе.

SSH-туннель: три приёма, которые закрывают почти всё

Проще всего освоить логику SSH-туннеля на обычном SSH, где есть и клиент, и сервер.

Плюсы, минусы и конфиг SSH-туннеля
Плюсы, минусы и конфиг SSH-туннеля
  • Динамический форвардинг (опция -D) поднимает на машине SOCKS5-прокси. Любая программа с поддержкой SOCKS, от curl до браузера через Burp, начинает ходить во внутреннюю сеть от имени захваченного хоста. SOCKS5 умеет TCP, UDP и резолв DNS на удалённой стороне.
  • Локальный проброс (опция -L) вытаскивает порт удалённой машины к себе. Так можно дотянуться до сервиса, который слушает только на localhost, или пробросить порт базы и работать с ней из привычного GUI-клиента, будто она рядом.
  • Удалённый проброс (опция -R) делает обратное: порт на промежуточной машине начинает вести к тебе. Это и даёт приём обратных соединений. Чтобы сервер разрешил проброс на все интерфейсы, в его конфигурации включают параметр GatewayPorts и перезапускают службу, причём текущее подключение при этом не рвётся.

Освоив три приёма (динамический форвардинг, локальный и удалённый проброс), вы сможете сделать почти всё. Вопрос только в их реализации в каждом конкретном случае.

Ярослав Шмелев

Отдельно выручает ProxyJump. Вместо того чтобы вручную настраивать проброс на каждом узле цепочки, вы одной настройкой проходите через бастион, промежуточную машину и дальше, вплоть до контейнера в глубине сети.

Когда SSH не подходит

У SSH есть жёсткие ограничения. Под техническим пользователем вроде www-data, от имени которого вы получили RCE в веб-приложении, по SSH не зайти: пароля нет, задать его нельзя, ключ записать обычно некуда. Вдобавок сервер логирует подключения.

SSH хорош в первую очередь на своей инфраструктуре.

Выход есть. Можно запустить SSH-клиент прямо на атакуемой машине и подключить его к своему серверу. На запуск клиента ограничений обычно нет, а стандартная утилита есть не только в Linux, но и в Windows 10 и новее. Опции при этом инвертируются, потому что стороны меняются местами, зато всё работает без прав root. Ключ стоит выдать с ограничениями, чтобы тот, кто его найдёт, не мог выполнять в вашей системе команды.

Такое подключение видно в списке процессов, и внимательный администратор его заметит. Чтобы команда не бросалась в глаза, её аргументы подменяют утилитой zapper, которая умеет менять командную строку процесса даже без root.

Процесс, который выглядит безобидно по названию, вовсе не обязан быть безобидным. Под знакомым именем может скрываться что угодно.

Ярослав Шмелев

Chisel и другие утилиты вместо SSH

Когда SSH-трафик блокируют, нужны права повыше или памяти на устройстве совсем мало, на помощь приходят специализированные утилиты. Они почти не зависят от прав пользователя и установленного софта, и под них всегда находится что-то подходящее: крошечный реверс-SOCKS весом порядка 20 КБ или сборка под экзотическую ОС.

Сравнение утилит для пивотинга
Сравнение утилит для пивотинга

Chisel из таких один из самых простых в настройке. Логика та же, что у SSH: он поднимает SOCKS-порт и пробрасывает локальные и удалённые порты, меняется только синтаксис. Собирается Chisel под Mac, Linux во множестве архитектур, Windows и несколько версий BSD, так что метод применим почти везде. Чтобы утилита не падала при закрытии терминала от сигнала SIGHUP, её запускают через nohup в фоне.

Metasploit и C2: единый контроль над сетью

Поштучная настройка перестаёт работать, когда захваченных машин десятки. Тогда выигрывают C2-фреймворки: они маршрутизируют трафик через сложную сегментированную сеть и дают единый контроль над всеми хостами сразу.

В Metasploit это видно нагляднее всего, потому что весь арсенал модулей уже интегрирован:

  1. 1

    После получения сессии Meterpreter команда route гонит трафик во внутреннюю сеть через эту сессию.

  2. 2

    Любой модуль, от сканера до эксплойта, достаёт до изолированных хостов.

  3. 3

    Для своих инструментов рядом поднимается SOCKS-прокси, который учитывает все маршруты.

  4. 4

    Когда атакуемая машина не может подключиться наружу, порт вроде 4444 пробрасывается на вашу сторону, там садится хендлер и ловит обратное соединение.

Цепочка доходит до вас, даже если напрямую коннект невозможен.

Proxychains и Ligolo: любую программу через туннель

Не все инструменты умеют ходить через прокси, но есть два способа их переубедить: Proxychains и Ligolo.

Proxychains подгружает библиотеку, которая перехватывает сетевые функции libc, и программа начинает ходить через прокси, будто поддерживает его сама. Так во внутреннюю сеть уезжают и curl, и netcat. Но есть тонкость. При массовом сканировании множество одновременных соединений упирается в лимит открытых файлов, и программы захлёбываются. Тут же таймауты и прочая настройка. Без тюнинга простое сканирование nmap по 250 хостам может тянуться минут двенадцать, и nmap для такой задачи, честно говоря, не лучший выбор.

Второй путь удобнее. Ligolo вместо SOCKS поднимает виртуальный TUN-интерфейс, как это делает OpenVPN. Клиент подключается к серверу без прав суперпользователя, вы прописываете маршрут до нужной сети, и прокси настраивать уже нигде не надо: во внутренние системы ходит даже браузер. Через такой интерфейс идут не только TCP, но и UDP с ICMP, поэтому проходит то, что proxychains не умеет, вплоть до обычного ping до внутренней машины. На больших диапазонах адресов это заметно быстрее.

Domain fronting и DNS-туннель против средств защиты

Мало дотянуться до цели: важно, чтобы канал управления не бросался в глаза и доходил даже из хорошо изолированной сети. Здесь выручают domain fronting и DNS-туннель.

Схема domain fronting через CDN
Схема domain fronting через CDN

Сеть доставки контента принимает подключение, отсеивает мусор, кеширует статику и уже потом отправляет запрос на нужный хост. Поэтому в трафике обращение выглядит как запрос к безобидному адресу, а настоящий получатель остаётся скрытым, пока не расшифрован весь HTTPS. Найти домены за одной CDN помогают VirusTotal, ViewDNS и обратный поиск по IP.

DNS-туннель работает там, где прямого выхода наружу нет вовсе. DNS резолвится рекурсивно, и если вы владеете зоной, запрос дойдёт до вашего сервера, даже стартовав с корневого. Данные кодируются в самих запросах и ответах. Утилита вроде iodine поднимает такой туннель, и внутри потока DNS-запросов идёт произвольный трафик: можно даже пинговать свой хост, хотя скорость будет невысокой.

С любой захваченной машины можно работать так, будто твоя собственная машина стоит на её месте.

Роутер, Windows-хост или Linux-сервер одинаково становятся плацдармом. Это резко ускоряет перемещение по сети и сложные сценарии вроде работы из контейнеров при компрометации облака.

Ещё эфиры по теме