
Lokale Privilegienausweitung PoC zum Öffnen einer SYSTEM-Shell für CVE-2019-9702 in Symantec Encryption Desktop.
PGPwded.sys lokale Privilegienausweitung PoCDieses Repository enthält einen Proof-of-Concept für einen lokalen Privilegienausweitungsweg im PGPwded.sys-Speicherfilter von Symantec Encryption Desktop, basierend auf einer primitiven Schreib-/Lese-Funktion auf niedrigen Berechtigungsebenen für raw-Datenträger.
Der PoC wurde gegen Symantec Encryption Desktop Pro 10.4.2 MP3 entwickelt und getestet. Andere Versionen wurden mit dieser Implementierung nicht getestet.
Die Arbeit wurde inspiriert von und baut auf der ursprünglichen öffentlichen Forschung von Kyriakos Economou / Nettitude, jetzt LRQA Nettitude:
Ihr Beitrag beschreibt den Gerätezugriffscheck von PGPwded.sys, die Idee der Injection in vertrauenswürdige PGP-Prozesse, die raw read/write IOCTLs und NTFS-basierte Exploit-Ansätze. Dieser PoC konzentriert sich auf eine Variante, die nach einem Neustart eine Dienstbinärdatei überschreibt, und enthält ein schreibgeschütztes Vorprüfprogramm.
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
Der Exploit für die Neustartphase ist eine einzelne ausführbare 32-Bit-Windows-Datei. Auf hoher Ebene:
C:\Users\Public.%TEMP% ab.\\.\PGPwdef aus dem vertrauenswürdigen PGP-Prozess-Bildpfad.C:\Windows\System32\spoolsv.exe seinem NTFS-Extent zu und berechnet den zugrunde liegenden Datenträgersektor.\Device\000000xx PGP-Datenträgerobjekt dem C:-Sektor über den raw read IOCTL zugeordnet ist.C:\Users\Public\spoolsv.exe.orig.portable.spoolsv.exe enthalten, mit einer eingebetteten LocalSystem-Dienstnutzlast.Die schreibgeschützte Vorprüfung folgt dem gleichen Pfad des vertrauenswürdigen Prozesses, verwendet jedoch nur den raw read IOCTL. Sie überschreibt keine Dateien und stuft den Exploit nicht vor.
Build von einem Linux-Host mit installiertem MinGW-w64:
make
Erwartete Ausgaben:
bin/sym_portable_reboot_stage32.exe # exploit/stager
bin/sym_portable_precheck32.exe # read-only precheck
Führen Sie zuerst die Vorprüfung durch. Sie soll feststellen, ob die aktuellen Exploit-Bedingungen vorliegen, ohne geschützte Dateien zu verändern.
C:\Users\Public\sym_portable_precheck32.exe
notepad C:\Users\Public\sym_portable_precheck.log
Ein brauchbares Ziel sollte enden mit:
[OK] current reboot exploit conditions
Wenn das Protokoll keine lesbaren PGP-PDOs oder keine Übereinstimmung mit dem C:-Sektor anzeigt, führen Sie den Exploit nicht aus. Das bedeutet normalerweise, dass die Betriebssystemfestplatte nicht von Symantec WDE verwaltet/instrumentiert wird.
Für einen ausführlicheren Zielbericht kopieren Sie beide folgenden Dateien in dasselbe Verzeichnis und führen Sie den CMD-Wrapper aus:
sym_target_diag_lite.cmd
sym_portable_precheck32.exe
Dann führen Sie aus:
C:\Users\Public\sym_target_diag_lite.cmd
notepad C:\Users\Public\sym_target_diag_lite.log
Führen Sie den Exploit nur auf Systemen aus, auf denen Sie berechtigt sind, geschützte Systemdateien zu ändern, und die Vorprüfung bestanden wurde.
Kopieren Sie den Stager in einen beschreibbaren Pfad und führen Sie ihn als Benutzer mit niedrigen Berechtigungen aus:
C:\Users\Public\sym_portable_reboot_stage32.exe
Überprüfen Sie die Staging-Protokolle:
type C:\Users\Public\sym_portable_launcher.log
type C:\Users\Public\sym_portable_stage.log
Wenn das Staging erfolgreich war, enthält das Worker-Protokoll:
STAGED_OK_REBOOT_TO_TRIGGER
Starten Sie den Rechner neu. Nach dem Neustart sollte der Spoolerdienst die Nutzlast als LocalSystem starten und eine Eingabeaufforderung mit dem Titel öffnen:
SYSTEM_CMD_FROM_PORTABLE_REBOOT_LPE
Der Stager erstellt diese Sicherung, bevor er das Ziel überschreibt:
C:\Users\Public\spoolsv.exe.orig.portable
Ein öffentlicher Ein-Klick-Wiederherstellungsmodus ist nicht enthalten. In Tests wurde die Wiederherstellung durchgeführt, indem die Sicherung raw über dieselben zugeordneten Sektoren geschrieben und neu gestartet wurde. Vor der Veröffentlichung von Binärdateien sollte ein sicherer Wiederherstellungsablauf hinzugefügt und validiert werden.
C:\Windows\System32\spoolsv.exe als Ziel.PGPwded.sys exponiert sein; eine alleinige Symantec-Installation ist nicht ausreichend.Dies ist Forschungscode für autorisierte Tests und defensive Validierung. Führen Sie ihn nicht auf Systemen aus, die Ihnen nicht gehören oder für deren Bewertung Sie keine ausdrückliche Genehmigung haben.