
PoC d'élévation de privilèges locale pour ouvrir un shell SYSTEM pour CVE-2019-9702 dans Symantec Encryption Desktop.
PGPwded.sysCe dépôt contient une preuve de concept pour une voie d'escalade de privilèges locaux dans le filtre de stockage PGPwded.sys de Symantec Encryption Desktop, basée sur une primitive de lecture/écriture brute de disque à faible privilège.
La PoC a été développée et testée contre Symantec Encryption Desktop Pro 10.4.2 MP3. Les autres versions n'ont pas été testées avec cette implémentation.
Ce travail a été inspiré par et s'appuie sur la recherche publique originale de Kyriakos Economou / Nettitude, désormais LRQA Nettitude :
Leur article décrit la vérification d'accès au périphérique PGPwded.sys, l'idée d'injection dans un processus PGP de confiance, les IOCTL de lecture/écriture brute et les approches d'exploitation basées sur NTFS. Cette PoC se concentre sur une variante de remplacement de binaire de service déclenchée au redémarrage et inclut un utilitaire de pré-vérification en lecture seule.
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
L'exploit par redémarrage est un exécutable 32 bits unique déposé pour Windows. À haut niveau :
C:\Users\Public.%TEMP%.\\.\PGPwdef depuis l'intérieur du chemin d'image du processus PGP de confiance.C:\Windows\System32\spoolsv.exe sur son étendue NTFS et calcule le secteur disque correspondant.\Device\000000xx correspond à ce secteur C: à l'aide de l'IOCTL de lecture brute.C:\Users\Public\spoolsv.exe.orig.portable.spoolsv.exe avec une charge utile de service LocalSystem embarquée.La pré-vérification en lecture seule suit le même chemin de processus de confiance, mais utilise uniquement l'IOCTL de lecture brute. Elle n'écrase pas de fichiers et ne prépare pas l'exploit.
Construire depuis un hôte Linux avec MinGW-w64 installé :
make
Sorties attendues :
bin/sym_portable_reboot_stage32.exe # exploit/stager
bin/sym_portable_precheck32.exe # read-only precheck
Exécutez d'abord la pré-vérification. Elle permet de déterminer si les conditions actuelles d'exploitation sont présentes sans modifier les fichiers protégés.
C:\Users\Public\sym_portable_precheck32.exe
notepad C:\Users\Public\sym_portable_precheck.log
Une cible viable doit se terminer par :
[OK] current reboot exploit conditions
Si le journal n'affiche aucun PDO PGP lisible, ou aucune correspondance de secteur C:, n'exécutez pas l'exploit. Cela signifie généralement que le disque du système d'exploitation n'est pas géré/instrumenté par Symantec WDE.
Pour un rapport de cible plus complet, copiez les deux fichiers ci-dessous dans le même répertoire et exécutez le script CMD :
sym_target_diag_lite.cmd
sym_portable_precheck32.exe
Exécutez ensuite :
C:\Users\Public\sym_target_diag_lite.cmd
notepad C:\Users\Public\sym_target_diag_lite.log
Exécutez l'exploit uniquement sur des systèmes pour lesquels vous êtes autorisé à modifier des fichiers système protégés et pour lesquels la pré-vérification a réussi.
Copiez le stager vers un chemin accessible en écriture et exécutez-le en tant qu'utilisateur à faible privilège :
C:\Users\Public\sym_portable_reboot_stage32.exe
Consultez les journaux de préparation :
type C:\Users\Public\sym_portable_launcher.log
type C:\Users\Public\sym_portable_stage.log
Si la préparation a réussi, le journal du travailleur contient :
STAGED_OK_REBOOT_TO_TRIGGER
Redémarrez la machine. Après le redémarrage, le service Spooler devrait démarrer la charge utile en tant que LocalSystem et ouvrir une invite de commande intitulée :
SYSTEM_CMD_FROM_PORTABLE_REBOOT_LPE
Le stager crée cette sauvegarde avant d'écraser la cible :
C:\Users\Public\spoolsv.exe.orig.portable
Un mode de restauration public en un clic n'est pas inclus. Lors des tests, la restauration a été effectuée en réécrivant en brut la sauvegarde sur les mêmes secteurs mappés et en redémarrant. Un flux de restauration sécurisé devrait être ajouté et validé avant de publier les binaires.
C:\Windows\System32\spoolsv.exe.PGPwded.sys ; une simple installation de Symantec ne suffit pas.Il s'agit d'un code de recherche pour des tests autorisés et une validation défensive. Ne l'exécutez pas sur des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas l'autorisation explicite d'évaluer.