
Ivanti Secure Access (ранее Pulse Secure) повышение привилегий Cobalt Strike BOF (CVE-2023-35080).
Повышение привилегий Ivanti Secure Access (ранее Pulse Secure) — Cobalt Strike BOF (CVE-2023-35080).
Эксплойт от Alex и BOF от Tijme. Создано при поддержке Northwave Cyber Security
Это файл Beacon Object File (BOF) для Cobalt Strike (CS) и исполняемый файл, эксплуатирующие VPN-клиент Ivanti Secure Access (ранее Pulse Secure) (CVE-2023-35080). Из режима пользователя с низкими привилегиями эксплойт использует уязвимость в драйвере ядра для замены привилегий токена процесса beacon на привилегии токена системного процесса. Символическая ссылка драйвера ядра имеет ACL, который разрешает группе Everyone открывать хэндл к нему. Исследование, приведшее к обнаружению этой уязвимости, было представлено на конференциях RedTreat 2023 и BSIDES London 2023 (презентация).
Эксплойт разработан на Windows 10 Pro 22H2 10.0.19045 (x64). Позже он был доработан и протестирован на Windows 11 Pro 23H2 22631 (x64). Другие версии Windows могут не поддерживаться «из коробки». Полный список протестированных поддерживаемых версий Windows:
Сначала клонируйте этот репозиторий. Затем просмотрите код, скомпилируйте из исходников (требуется MinGW) и используйте в Cobalt Strike или как отдельный PE-файл.
make
Важно! Выполните следующие шаги по порядку (из режима пользователя с низкими привилегиями):
Сначала убедитесь, что уязвимый драйвер запущен. Если он не запущен — не беспокойтесь! Вы можете запустить его из режима пользователя с низкими привилегиями. Имя драйвера начинается с jnprTdi_ и находится в HKLM\SYSTEM\CurrentControlSet\Services. Он всегда устанавливается вместе с VPN-клиентом, но по умолчанию не запущен.
Уязвимый драйвер запускается, когда (непривилегированный) пользователь на атакуемой машине подключается к (поддельному) VPN-серверу, у которого включена опция отказоустойчивости TDI. Мы можем достаточно легко запустить драйвер самостоятельно, воспроизведя это поведение, так как мы уже скомпрометировали систему и выполняем на ней вредоносное ПО. Следуйте этому руководству, чтобы настроить собственное поддельное устройство с включённой опцией отказоустойчивости TDI.
"%programfiles(x86)%\Common Files\Pulse Secure\Integration\pulselauncher.exe" -stop
Если драйвер запущен, а VPN-клиент остановлен, загрузите скрипт PulsePrivEsc.cna с помощью Менеджера скриптов Cobalt Strike. Затем используйте команду ниже для выполнения эксплойта.
$ pulse_priv_esc
В качестве альтернативы (и для целей тестирования) вы можете напрямую запустить скомпилированный исполняемый файл. Это запустит командную строку от имени SYSTEM.
$ .\PulsePrivEsc.x64.exe
Сообщения о проблемах или предложениях новых функций можно отправлять через трекер задач. Пожалуйста, перед отправкой новой заявки убедитесь, что ваша проблема или предложение ещё не были сообщены кем-то другим.
Copyright (c) 2023 Northwave Cyber Security. All rights reserved.