
Автоматизированный инструмент MITM для WSUS, который подменяет трафик Windows Update через ARP, раздаёт подписанный исполняемый файл с полезной нагрузкой PowerShell и повышает привилегии до локального администратора.
Автоматизация атаки на WSUS
Получение локального административного доступа к Windows-машине, входящей в домен, обычно является первым шагом во время теста на проникновение. Во многих случаях служба обновления Windows Server (WSUS) настроена на развёртывание обновлений для клиентов в локальной сети через HTTP. Без защиты HTTPS атакующий может выполнить атаку «человек посередине», чтобы доставить клиенту обновление, которое затем будет выполнено с привилегиями SYSTEM. Любой исполняемый файл, подписанный Microsoft, может быть доставлен в качестве обновления, включая пользовательскую команду, с помощью которой запускается этот исполняемый файл. Если атакующему удастся получить TLS-сертификат для WSUS-сервера, эту технику также можно применить через HTTPS (см. ESC17 и нашу запись в блоге).
Для автоматической эксплуатации атаки на WSUS этот инструмент подменяет IP-адрес WSUS-сервера в сети с помощью ARP, и когда целевой клиент запрашивает обновления Windows, он доставляет PsExec64.exe с предопределённым PowerShell-скриптом для получения локальных привилегий администратора. Как исполняемый файл, который доставляется (по умолчанию: PsExec64.exe), так и выполняемая команда могут быть изменены при необходимости.
По умолчанию Windows-клиент проверяет наличие обновлений примерно каждые 24 часа.
Предварительные требования:
Результат:
Реализованные возможности:
С помощью pipx (рекомендуется):
sudo apt install pipx python3-nftables
pipx ensurepath
pipx install wsuks --system-site-packages
sudo ln -s ~/.local/bin/wsuks /usr/sbin/wsuks
С помощью poetry:
sudo apt install pipx git python3-nftables # poetry should still be installed with pipx, but apt will work as well
sudo pipx install poetry
sudo ln -s /root/.local/bin/poetry /usr/sbin/poetry
git clone https://github.com/NeffIsBack/wsuks
cd wsuks
sudo poetry install
❗wsuks должен запускаться от имени root❗
С pipx вы можете просто запустить sudo wsuks ... в любом месте системы.
Если вы используете poetry, вы должны находиться в папке wsuks и запускать каждую команду с sudo poetry run wsuks ...
Для работы этого инструмента требуется установленный пакет nftables, который по умолчанию присутствует во всех системах на основе Debian.
Существует 3 различных режима/сценария атаки, в которых может запускаться wsuks:
Если у вас уже есть пользователь домена, wsuks проанализирует GPO на контроллере домена, чтобы найти WSUS-сервер.
Будет выполнен PowerShell-скрипт, который добавит указанного пользователя домена в локальную группу администраторов.
sudo wsuks -t 10.0.0.10 -u User -p Password -d domain.local --dc-ip 10.0.0.1
Совет: Если вы хотите только проверить наличие WSUS-сервера, вы можете использовать флаг --only-discover.
Предопределённый PowerShell-скрипт выполнит следующие действия:
⚠ Перед установкой LocalAccountTokenFilterPolicy в значение 1 исходное значение сохраняется в поле описания пользователя, чтобы его можно было восстановить позже.
sudo wsuks -t 10.0.0.10 --WSUS-Server 10.0.0.20
Если у вас уже есть пользователь домена и вы знаете IP-адрес WSUS-сервера, wsuks просто добавит пользователя в локальную группу «Администраторы».
sudo wsuks -t 10.0.0.10 --WSUS-Server 10.0.0.20 -u User -d domain.local
Если трафик уже перенаправляется на машину атакующего (например, при контроле над DNS), wsuks можно использовать только для доставки вредоносного исполняемого файла и команды, без выполнения самого ARP-спуфинга и маршрутизации. При этом будет просто запущен HTTP-сервер на указанном интерфейсе.
sudo wsuks --serve-only
В случае, если атакующий может получить TLS-сертификат (например, через ESC17) для WSUS-сервера, атака также может быть выполнена через HTTPS.
Это применимо ко всем сценариям выше: просто добавьте флаг --tls-cert с путём к сертификату.
sudo wsuks -t 10.0.0.10 --WSUS-Server secure.wsus.domain.local --tls-cert cert.pem
Вот короткая демонстрация атаки с известным WSUS-сервером:

В репозитории PyWSUS от GoSecure вы можете найти отличную документацию о том, как можно обнаружить эту атаку и защититься от неё. Они также написали отличное руководство, подробно демонстрирующее, как работает эта атака, здесь.
Что касается ESC17, пожалуйста, посмотрите certipy wiki для получения рекомендаций по защите.
Части этого инструмента основаны на следующих проектах: