
Локальное повышение привилегий PoC для получения shell с правами SYSTEM для CVE-2019-9702 в Symantec Encryption Desktop.
PGPwded.sys локальное повышение привилегий PoCЭтот репозиторий содержит proof-of-concept для пути локального повышения привилегий в драйвере фильтра хранения PGPwded.sys из Symantec Encryption Desktop, основанный на низкопривилегированном примитиве чтения/записи сырого диска.
PoC был разработан и протестирован против Symantec Encryption Desktop Pro 10.4.2 MP3. Другие версии не тестировались с этой реализацией.
Работа вдохновлена и основана на оригинальных открытых исследованиях Kyriakos Economou / Nettitude, теперь LRQA Nettitude:
В их статье описываются проверка доступа к устройству PGPwded.sys, идея внедрения доверенного PGP-процесса, IOCTL-ы сырого чтения/записи и подходы к эксплуатации на основе NTFS. Этот PoC фокусируется на варианте перезаписи бинарного файла службы, срабатывающем после перезагрузки, и включает утилиту предварительной проверки, работающую только на чтение.
src/
sym_portable_launcher.c # single-EXE launcher; embeds and drops the staging worker
portable_stage_worker.c # injected worker; maps C:, opens PGPwded, stages payload
spooler_payload.c # service payload run by Spooler as LocalSystem after reboot
sym_portable_precheck.c # single-EXE read-only precheck launcher
precheck_worker.c # injected read-only diagnostic worker
*_bytes.h # generated embedded payload/worker byte arrays
tools/
sym_target_diag_lite.cmd # wrapper script for collecting target diagnostics
Эксплойт стадии перезагрузки — это один 32-битный Windows-исполняемый файл. На высоком уровне:
C:\Users\Public.%TEMP%.\\.\PGPwdef из пути образа доверенного процесса PGP.C:\Windows\System32\spoolsv.exe с его экстентом NTFS и вычисляет соответствующий сектор диска.\Device\000000xx соответствует этому сектору C:, используя IOCTL сырого чтения.C:\Users\Public\spoolsv.exe.orig.portable.spoolsv.exe, встроенной полезной нагрузкой службы LocalSystem.Предварительная проверка, работающая только на чтение, следует тому же пути доверенного процесса, но использует только IOCTL сырого чтения. Она не перезаписывает файлы и не подготавливает эксплойт.
Сборка с Linux-хоста с установленным MinGW-w64:
make
Ожидаемые результаты:
bin/sym_portable_reboot_stage32.exe # exploit/stager
bin/sym_portable_precheck32.exe # read-only precheck
Сначала запустите предварительную проверку. Она предназначена для ответа на вопрос, присутствуют ли текущие условия эксплуатации, без изменения защищённых файлов.
C:\Users\Public\sym_portable_precheck32.exe
notepad C:\Users\Public\sym_portable_precheck.log
Жизнеспособная цель должна заканчиваться следующим:
[OK] current reboot exploit conditions
Если лог показывает отсутствие читаемых PGP PDO, или нет совпадения сектора C:, не запускайте эксплойт. Обычно это означает, что системный диск не управляется/не инструментирован Symantec WDE.
Для более полного отчёта о цели скопируйте оба файла ниже в один каталог и запустите CMD-обёртку:
sym_target_diag_lite.cmd
sym_portable_precheck32.exe
Затем выполните:
C:\Users\Public\sym_target_diag_lite.cmd
notepad C:\Users\Public\sym_target_diag_lite.log
Запускайте эксплойт только на системах, где вам разрешено изменять защищённые системные файлы и где предварительная проверка пройдена.
Скопируйте стейджер в доступный для записи путь и запустите его от имени низкопривилегированного пользователя:
C:\Users\Public\sym_portable_reboot_stage32.exe
Проверьте логи подготовки:
type C:\Users\Public\sym_portable_launcher.log
type C:\Users\Public\sym_portable_stage.log
Если подготовка прошла успешно, лог рабочего модуля содержит:
STAGED_OK_REBOOT_TO_TRIGGER
Перезагрузите машину. После перезагрузки служба Spooler должна запустить полезную нагрузку как LocalSystem и открыть командную строку с заголовком:
SYSTEM_CMD_FROM_PORTABLE_REBOOT_LPE
Стейджер создаёт резервную копию перед перезаписью цели:
C:\Users\Public\spoolsv.exe.orig.portable
Публичный режим восстановления в один клик не включён. В тестировании восстановление выполнялось сырой записью резервной копии поверх тех же сопоставленных секторов с последующей перезагрузкой. Безопасный процесс восстановления следует добавить и проверить перед публикацией бинарных файлов.
C:\Windows\System32\spoolsv.exe.PGPwded.sys; одной установки Symantec недостаточно.Это исследовательский код для авторизованного тестирования и защитной валидации. Не запускайте его на системах, которыми вы не владеете или на которые у вас нет явного разрешения на оценку.