Pivoting у пентесті: Повний практичний гайд (Частина 1)

23.06.2025 2 хвилин Автор: D2-R2

Pivoting — одна з ключових технік під час пентесту, яка дозволяє обійти сегментацію мережі та отримати доступ до внутрішніх ресурсів компанії. У статті автор ділиться власним досвідом налаштування Pivoting та Port Forwarding під час пентесту. На прикладі реальної лабораторії він крок за кроком показує, як отримати доступ до внутрішніх сегментів мережі, використовуючи компрометовані хости, інструменти типу Ligolo-ng, Cobalt Strike, Meterpreter, а також стандартні SSH-техніки. Гайд орієнтований на новачків, але містить і поглиблену практику, що буде корисною фахівцям Red Team.

Що це таке, для чого потрібно і які види бувають

Пивотинг – це техніка, для обходу сегментації мережі та прокидання нашого трафіку всередину. Тобто ми використовуємо цю техніку для того, щоб прокинути трафік з машини атакуючого, в локальну мережу компанії, в яку ми не маємо доступу (через сегментацію). Пивотинг буває різним, я розберу основні техніки та інструменти.

Далі про Port Forwarding

Port Forwarding (прокидання або перенаправлення портів) – це техніка, що дозволяє пересилати мережеві пакети з одного порту на інший між пристроями. Бувають кілька видів Port Forwarding – локальний, віддалений і динамічний.

Локальне прокидання портів

Прокидання порту з нашої машини на віддалену:

ssh -N -L local_addr:local_port:remote_addr:remote_port user@target
  • Тут – local_addr і local_port – це адреса і порт на вашому локальному комп’ютері

  • remote_addr і remote_port – це адреса і порт на віддаленому сервері, до якого ми хочемо дістатися

  • user@target – машина, через яку ми прокинемо трафік

Віддалений прокидання портів

ssh -N -R remote_address:remote_port:local_address:local_port user@target

Тут ми віддалено переадресовуємо порти з віддаленої машини, на локальну (нашу).

Динамічний прокидання портів

Це тунелювання всього мережевого трафіку атакуючого (а не тільки одного порту) через віддалену машину (схоже на проксі).

ssh -N -D port user@target

У цій команді:

  • port – порт, через який ми направимо трафік

  • target – це адреса віддаленого сервера, до якого ми підключаємося, там буде створено SOCKS-канал, через який перенаправлятимемо мережевий трафік.

Огляд лабораторії

У нас буде 2 кейси – з однією мережею та з двома. Виглядають вони так:

Кейс 1 (У цій частині)
Кейс 2 (У 2-й частині)

Стрілки, я відзначив наш шлях, до цільових хостів. Отже, почнемо.

Практика Pivoting

Я почав саме з півотингу, бо на мій погляд краще спочатку розповісти та показати його.

Кейс 1

Я вирішив переглянути хости, що в мене є і виявив, що:

  1. IP Windows машини – 10.0.2.6, IP Linux машини – 10.0.2.5

  2. Linux машина має веб-інтерфейс, через який ми можемо завантажувати файли

Власне кажучи для початку я покажу класичні методи Pivoting’а, для цього я скомпроментую Linux-хост і за допомогою декількох утиліт перенаправлю свій трафік, на хост, що цікавить мене. Для початку розглянемо веб-інтерфейс Linux-хоста і спробуємо завантажити наш шелл:

Веб-інтерфейс Linux-хоста

Далі, я трохи підредагував шелл і закинув його на хост:

І отримав коннект:

Добре, я переглянув мережні інтерфейси та побачив наступну картину:

(Нас цікавить підсіти 10.0.0.0/24, в якій у хоста адреса – 10.0.0.2, а у машини, що нас цікавить, – 10.0.0.1)

Тепер, я за допомогою різних утиліт прокину свій трафік в підсіти, що цікавить мене, і просканую її.

Go Simple Tunnel

Go Simple Tunnel працює в режимі проксі та має багато режимів, про які ви можете почитати в офіційному репозиторії.

Доставка утиліти:

Запуск:

Це лише просто приклад, насправді функцій більше

І пробуємо дістатися машини:

Все вийшло! Однак, не все може виходити, наприклад скан мережі, що робить цей інструмент не таким вже і хорошим.

Ligolo-ng

Особисто у мене це фаворит і найулюбленіший спосіб, при пивотингу (бо працює як VPN ), так що його я опишу другим. Нам потрібен проксі (позначений як проксі) і агент (позначений як агент), які ми візьмемо тут . Proxy, ми запускаємо на своїй машині, а агент на скомпроментованій.

Запуск проксі(на машині атакуючого)
Переносимо агент
Коннектимося до сервера

Тепер нам потрібно підняти новий мережевий інтерфейс і додати шлях до підмережі, до якої ми хочемо отримати доступ: Піднімаємо інтерфейс:

Код:

ip tuntap add user root mode tun ligolo

ip link set ligolo up
Код:

ip route add 10.0.0.0/24 dev ligolo

ip route list
Додаємо інтерфейс
Додаємо шлях

Потім починаємо тунелювання командою start:

Тепер тестуємо:

Пінгуємо хост, що цікавить
Скануємо мережу

Тут були основні способи (тобто без екзотики) пивотингу, які найчастіше використовують, але це було на Linux. Тепер я розповім про Windows-хости. Я знаю, що розповідати тут особливо нічого, тому що команди і принцип однакові, проте я розповім про півотинг, з популярнихC2 (Зокрема я розповім про Havoc Framework і Cobalt Strike) C2

У цьому розділі я розповім про те, як реалізований півотинг у різних C2 утилітах.

Meterpreter:

autorouteauxiliary/server/socks_proxy
Створюємо payload
Завантажуємо на хост
Налаштовуємо та запускаємо Handler
Отримуємо сесію

Autoroute

Ми додаємо шлях до мережі, до якої хочемо дістатися:

run autoroute -s 10.0.0.0/24
Додаємо route

Тепер ми можемо взаємодіяти з хостами в тій мережі, проте при такому прокиданні ми можемо взаємодіяти з тією мережею, тільки модулями Metasploit, а для того, щоб працювати з тією мережею за допомогою Proxychains, ми повинні використовувати модуль – auxiliary/server/socks_proxy.

Ставимо версію 4set VERSION 4a

Тепер цей модуль буде взаємодіяти з щойно заданим маршрутом, тут ми виставимо локальний IP і PORT для прослуховування.

Потім ми додаємо запис в /etc/proxychains4.confsocks4 127.0.0.1 1080

І пробуємо до хоста

Все відмінно!

Havoc Framework

Після того, як я створив пейлоад (тут без картинок) , я розвідав Windows машину і дізнався, що це Windows Server 2008 R2, а значить уразливий для MS17-010(eternalblue), яку ми проексплуатуємо через Metasploit.

Потім запустимо експойт:

Далі я запустив шелл(команда shell) і скачав агент:

Завантажуємо агент

Запускаємо та отримуємо доступ

Тепер ми можемо в консоль системи вписати: socks add 6080і додати запис – socks5 127.0.0.1 6080до /etc/proxychains4.conf, для взаємодії з внутрішньою мережею за допомогою агента.

Запуск проксі
Дивимося доступ

Відмінно!

Cobalt Strike

Напевно це один із найпопулярніших (на мій погляд) C2 фреймворків, воно і зрозуміло, адже в ньому безліч модулів, під різні Red Team завдання. Отже, ми вже отримали доступ до оболонки в системи, і тепер ми просто повинні створити агент і завантажити його на підконтрольну систему:

Завантажуємо Агент
Отримуємо сесію

Далі ПКМ з агента -> Pivoting -> SOCKS Server

Стартуємо сервер:

Також ви можете виставити socks5

Додаємо socks4

Далі /etc/proxychains4.confми додаємо – socks4 127.0.0.1 9988і пробуємо доступ до хоста:

Чудово! Думаю на цій ноті можна закінчити нашу практику з Pivoting і перейти до теми прокидання портів (Port Forwarding).

Практика Port Forwarding

Ця техніка корисна, коли атакуючий не може підвантажити утиліту і доводиться працювати з тим, що є. Почнемо ми з Local Port Forwarding (можете почитати на початку)

Local Port Forwarding

Я буду використовувати Linux-машину, тому що на ній встановлений SSH, проте на Windows всі команди ті ж. Отже, для того, щоб локально прокинути порт нам потрібно знати креди від хоста (що проблематично), але ми уявимо, що ми ;) їх дізнаємося:

ssh -N -L 127.0.0.1:9999:10.0.0.1:80 [email protected].

localhost:9999перекине на внутрішній вебсайт( 10.0.0.1) через доступний нам хост10.0.2.5

Виконуємо прокид
Редирект localhost:9999на 10.0.0.1:80

Добре, тепер приступимо до наступної техніки.

Dynamic Port Forwarding

За допомогою динамічного прокидання портів, ми можемо проксирувати наш весь трафік через порт віддаленої машини. Щоб виконати динамічний прокид, ми повинні вписати наступну команду: ssh -N -D 4444 [email protected] Цією командою ми перенаправимо наш трафік через порт 4444 на Linux-машині:

Потім додаємо запис – socks4 127.0.0.1 4444і /etc/proxychains4.confпробуємо доступ до хоста:

У нас все вийшло!

Висновок

У цій статті ми розібралися що являє собою Pivoting і Port Forwarding, також розібралися як працювати зі спеціальними утилітами і C2 фреймворками.

Підписатися
Сповістити про
0 Коментарі
Найстаріші
Найновіше Найбільше голосів
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.