Написал: Эрмано
Специально для xss.pro
Недавно я заметил, как сложно новичкам освоить пивотинг(например моему другу), поэтому я решил написать полный и развёрнутый гайд на эту тему.
Я расскажу про пивотинг и Port forwarding на скомпроментированых хостах
Оглавление
Часть 1:
Что это такое, для чего нужно и какие виды бывают
Я начну с пивотинга:
Пивотинг бывает разный, я разберу основные техники и инструменты.
Далее про Port Forwarding
Локальный проброс портов
Проброс порта с нашей машины на удалённую:
Здесь -
Удалённый проброс портов
Тут мы удалённо переадресовываем порты с удалённой машины, на локальную(нашу).
Динамический проброс портов
Это туннелирование всего сетевого трафика атакующего (а не только одного порта) через удаленную машину(похоже на прокси).
В данной команде
Обзор лаборатории
У нас будет 2 кейса - с одной сетью и с двумя. Выглядят они так
Кейс 1 (В этой части)
Кейс 2 (Во 2-й части)
Стрелками, я отметил наш путь, до целевых хостов.
Итак, начнём.
Практика Pivoting
Я начал именно с пивотинга, потому что на мой взгляд лучше сначала рассказать и показать его.
Кейс 1
Я решил, просмотреть хосты, что у меня есть и обнаружил, что:
Для начала рассмотрим веб-интерфейс 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, мы запускаем на своей машине, а агент на скомпроментированой.
Запуск прокси(на машине атакующего)
Переносим агент
Коннектимся к серверу
Работаем с сессией
Теперь нам нужно поднять новый сетевой интерфейс и добавить путь к подсети, к которой мы хотим получить доступ:
Поднимаем интерфейс:
Добавляем интерфейс
Добавляем путь
Потом начинаем туннелирование командой
Теперь тестируем
Пингуем интересующий хост
Сканируем сеть
Тут были основные способы(то есть без экзотики) пивотинга, которые чаще всего используют, но всё это было на Linux.
Теперь я расскажу про Windows-хосты. Я знаю, что рассказывать тут особо нечего, потому что команды и принцип одинаковы, однако я расскажу про пивотинг, из популярных C2(В частности я расскажу про Havoc Framework и Cobalt Strike)
C2
В этом разделе я расскажу про то, как реализован пивотинг в разных C2 утилитах
Meterpreter
Здесь мы будем использовать 2 варианта -
Создаём payload
Загружаем на хост
Настраиваем и запускаем Handler
Получаем сессию
Autoroute
Мы добавляем путь в сеть, в которою хотим добраться:
Добавляем route
Теперь мы можем взаимодействовать с хостами в той сети, однако при таком пробросе, мы можем взаимодействовать с той сетью, только модулями Metasploit, а для того, чтобы работать с той сетью с помощью Proxychains, мы должны использовать модуль - auxiliary/server/socks_proxy
Ставим версию 4a -
Теперь этот модуль будет взаимодействовать с только что заданным маршрутом, тут мы выставлем локальный IP и PORT для прослушивания
Потом мы добавляем запись в
И пробуем досуп до хоста
Всё отлично!
Havoc Framework
После того, как я создал пейлоад(тут без картинок), я разведал Windows машину и узнал, что это Windows Server 2008 R2, а значит уязвим для MS17-010(eternalblue), которую мы проэксплуатируем через Metasploit.
Потом запустим экспойт:
Далее я запустил шелл(команда
Скачиваем агент
Запускаем и получаем доступ
Теперь мы можем в консоль системы вписать:
Запуск прокси
Смотрим доступ
Отлично!
Cobalt Strike
Наверно это один из самых популярных(на мой взгляд) C2 фреймворков, оно и понятно, ведь в нём множество модулей, под разные Red Team задачи.
Итак, мы уже получили доступ к оболочке в системы и теперь мы просто должны создать агент и загрузить его на подконтрольную систему:
Загружаем Агент
Получаем сессию
Далее ПКМ по агенту -> Pivoting -> SOCKS Server
Стартуем сервер:
(Также вы можете выставить socks5)
Добавляем socks4
Далее в
Отлично!
Думаю на этой ноте можно закончить нашу практику по Pivoting и перейти к теме проброса портов(Port Forwarding)
Практика Port Forwarding
Эта техника полезна, когда атакующий не может подгрузить утилиту и приходится работать с тем, что есть.
Начнём мы с Local Port Forwarding(можете почитать в начале)
Local Port Forwarding
Я буду использовать Linux-машину, потому что на ней предустановлен SSH, однако на Windows все команды те же:
Итак, для того, чтобы локально пробросить порт нам нужно знать креды от хоста(что проблематично), но мы представим, что мы их узнали
Итак, мы вписываем
Выполняем проброс
Редирект с
Хорошо, теперь приступим к следующей технике.
Dynamic Port Forwarding
С помощью динамического проброса портов, мы можем проксировать наш весь трафик через порт удалённой машины.
Чтобы выполнить динамический проброс мы должны вписать следующую команду:
Этой командой мы перенаправим наш трафик через порт 4444 на Linux-машине:
Потом добавляем запись -
У нас всё получилось! На этой ноте я закончу статью(я дошёл до максимума картинок =) )
Заключение
В этой статье мы разобрались что из себя представляет Pivoting и Port Forwarding, также разобрались как работать со специальными утилитами и C2 фреймворками.
Всем спасибо за прочтение, надеюсь статья была полезна.
P. S. Поправьте или дополните, если я что-то упустил
P. S..2 Я знаю, что есть эта статья, но в ней рассказывается про пивотинг с роутеров.
Специально для xss.pro
Недавно я заметил, как сложно новичкам освоить пивотинг(например моему другу), поэтому я решил написать полный и развёрнутый гайд на эту тему.
Я расскажу про пивотинг и Port forwarding на скомпроментированых хостах
Оглавление
Часть 1:
- Что это такое, какие виды бывают и для чего
- Обзор лаборатории
- Практика Pivoting
- Практика Port Forwarding
- Заключение
- Обзор лаборатории
- Remote Port Forwarding
- Практика Pivoting(Double Pivoting)
- SMB Named Pipes
- Заключение
Что это такое, для чего нужно и какие виды бывают
Я начну с пивотинга:
То есть, мы используем эту технику для того, чтобы пробросить траффик с машины атакующего, в локальную сеть компании, в которую мы не имеем доступа(из-за сегментации).Пивотинг - это техника, для обхода сегментации сети и проброса нашего трафика внутрь
Пивотинг бывает разный, я разберу основные техники и инструменты.
Далее про 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 кейса - с одной сетью и с двумя. Выглядят они так
Стрелками, я отметил наш путь, до целевых хостов.
Итак, начнём.
Практика Pivoting
Я начал именно с пивотинга, потому что на мой взгляд лучше сначала рассказать и показать его.
Кейс 1
Я решил, просмотреть хосты, что у меня есть и обнаружил, что:
- IP Windows машины - 10.0.2.6, IP Linux машины - 10.0.2.5
- Linux машина имеет веб-интерфейс, через который мы можем загружать файлы
Для начала рассмотрим веб-интерфейс Linux-хоста и попробуем загрузить наш шелл:
Далее, я немного подредактировал шелл, и закинул его на хост:
И получил коннект:
Хорошо, я просмотрел сетевые интерфейсы и увидел следующую картину:
Теперь, я с помощью разных утилит проброшу свой трафик в интересующую меня подсеть и просканирую её:
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
Здесь мы будем использовать 2 варианта -
autoroute и модуль auxiliary/server/socks_proxy
Autoroute
Мы добавляем путь в сеть, в которою хотим добраться:
run autoroute -s 10.0.0.0/24
Теперь мы можем взаимодействовать с хостами в той сети, однако при таком пробросе, мы можем взаимодействовать с той сетью, только модулями Metasploit, а для того, чтобы работать с той сетью с помощью Proxychains, мы должны использовать модуль - auxiliary/server/socks_proxy
Ставим версию 4a -
set VERSION 4a
Потом мы добавляем запись в
/etc/proxychains4.conf - socks4 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
Стартуем сервер:
Добавляем 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 ubuntu@10.0.2.5 и теперь, все если обратиться к localhost:9999, нас перекинет на внутренний вебсайт(10.0.0.1) через доступный нам хост 10.0.2.5
localhost:9999 на 10.0.0.1:80Хорошо, теперь приступим к следующей технике.
Dynamic Port Forwarding
С помощью динамического проброса портов, мы можем проксировать наш весь трафик через порт удалённой машины.
Чтобы выполнить динамический проброс мы должны вписать следующую команду:
ssh -N -D 4444 ubuntu@10.0.2.5Этой командой мы перенаправим наш трафик через порт 4444 на Linux-машине:
Потом добавляем запись -
socks4 127.0.0.1 4444 в /etc/proxychains4.conf и пробуем доступ к хосту:
У нас всё получилось! На этой ноте я закончу статью(я дошёл до максимума картинок =) )
Заключение
В этой статье мы разобрались что из себя представляет Pivoting и Port Forwarding, также разобрались как работать со специальными утилитами и C2 фреймворками.
Всем спасибо за прочтение, надеюсь статья была полезна.
P. S. Поправьте или дополните, если я что-то упустил
P. S..2 Я знаю, что есть эта статья, но в ней рассказывается про пивотинг с роутеров.
Вложения
Последнее редактирование: