微软7号发布了PrintNightmare的安全漏洞补丁,PrintNightmare漏洞的CVE编号为CVE-2021-1675和CVE-2021-34527。这是Windows打印假脱机程序中的一个严重漏洞,微软将其评为关键漏洞。在Microsoft为其发布补丁之前,漏洞利用代码已在公共领域泄漏。微软建议系统管理员在补丁可用之前禁用Print Spooler服务。当Windows Print Spooler服务错误地执行特权文件操作时,远程代码执行漏洞就会出现。由于 Windows Print Spooler 服务在Windows上默认运行,微软不得不为 Windows Server 2019、Windows Server 2012 R2、Windows Server 2008、Windows 8.1、Windows RT 8.1 以及 Windows 10 的各种支持版本发布补丁。
微软表示:
- 2021年7月6日及之后发布的安全更新包含对Windows Print Spooler服务中名为PrintNightmare的远程代码执行漏洞的保护,记录在CVE-2021-34527以及CVE-2021-1675中。我们建议用户立即安装这些更新。
该漏洞是微软近年来面临的一个较为严重的问题,因为微软甚至为Windows 7也发布了补丁,而早在2020年1月14日微软就已经终止了对Windows 7的技术支持。虽然漏洞发布了,但PrintNightmare漏洞所带来的影响尚未完全结束,因为某些版本的Windows补丁尚未发布。据了解,Windows 10版本1607、Windows Server 2016和Windows Server 2012的更新尚不可用。这些Windows版本的安全更新或将在近期发布。
CVE-2021-1675和CVE-2021-34527(也称为PrintNightmare)的技术分析
具有普通用户帐户的攻击者可以利用这两个漏洞来控制运行Windows Print Spooler服务的易受攻击的服务器或客户端机器。该服务在所有Windows客户机和服务器(包括域控制器)上默认启用。
HEUR:Exploit.Win32.CVE-2021-1675.*
HEUR:Exploit.Win32.CVE-2021-34527.*
HEUR:Exploit.MSIL.CVE-2021-34527.*
HEUR:Exploit.Script.CVE-2021-34527.*
HEUR:Trojan-Dropper.Win32.Pegazus.gen
PDM:Exploit.Win32.Generic
PDM:Trojan.Win32.Generic
Exploit.Win32.CVE-2021-1675.*
Exploit.Win64.CVE-2021-1675.*
卡巴斯基的安全检测工具检测逻辑也成功阻止了来自最新 Mimikatz 框架 v. 2.2.0-20210707 的攻击技术。
目前卡巴斯基正在密切监控这些情况,并使用行为检测和漏洞利用防护组件改进对这些漏洞的通用检测。作为托管检测和响应服务的一部分,卡巴斯基 SOC 专家能够检测对这些漏洞的利用、调查此类攻击并向客户报告。
CVE-2021-34527
当使用 RPC 协议添加新打印机(RpcAsyncAddPrinterDriver [MS-PAR] 或 RpcAddPrinterDriverEx [MS-RPRN])时,客户端必须向 Print Spooler 服务提供多个参数:
pDataFile——此打印机的数据文件的路径;
pConfigFile—— 此打印机的配置文件的路径;
pDriverPath——此打印机在工作时使用的驱动程序文件的路径;
该服务进行了多次检查以确保 pDataFile 和 pDriverPath 不是 UNC 路径,但是没有对 pConfigFile 进行相应的检查,这意味着该服务会将配置 DLL 复制到文件夹 %SYSTEMROOT%\system32\spool\drivers\x64\3\ (在 x64 版本的操作系统上)。
现在,如果 Windows Print Spooler 服务尝试再次添加打印机,但这次将 pDataFile 设置为复制的 DLL 路径(来自上一步),则打印服务将加载此 DLL,因为它的路径不是 UNC 路径,并且检查将成功通过。这些方法可由低权限帐户使用,并且 DLL 由 NT AUTHORITY\SYSTEM 组进程加载。
CVE-2021-1675
PrintNightmare 的本地版本使用与 CVE-2021-34527 相同的方法进行漏洞利用,但入口点函数(AddPrinterDriverEx)有所不同,这意味着攻击者可以将恶意 DLL 放在任何本地可访问的目录中以运行漏洞利用。
缓解措施
卡巴斯基的专家们预计,试图获取公司内部资源的黑客攻击将会越来越多,同时还存在着感染勒索软件和窃取数据的高风险。
因此,强烈建议你遵循微软的指导方针,应用最新的Windows安全更新。
虽然漏洞发布了,但PrintNightmare漏洞所带来的影响尚未完全结束,PrintNightmare是Windows打印假脱机程序中的一个漏洞,它是由AddPrinterDriverEx()、RpcAddPrinterDriver()和RpcAsyncAddPrinterDriver()用于安装本地或远程打印机驱动程序的Windows API函数中缺少ACL(访问控制列表)检查引起的。
这些函数都可以通过不同的Windows API 使用,如下所示:
AddPrinterDriverEx (SDK)
RpcAddPrinterDriver (MS-RPRN)
RpcAsyncAddPrinterDriver (MS-PAR)
使用 PrintNightmare,可以绕过权限检查,将恶意 DLL 安装到 C:\Windows\System32\spool\drivers 文件夹中,然后利用漏洞将其作为打印驱动程序加载,以实现远程代码执行或本地权限提升。
当测试是否允许将文件安装到具有SYSTEM权限的文件夹中时,API将用户提供的参数作为权限检查的一部分。
这与文件夹上的ACL无关,它是软件SDK内部的一个检查,可以通过API调用为函数提供额外的参数来绕过它。
为了利用该漏洞,攻击者可以通过 RPC 或 LRPC 将请求直接发送到本地服务。虽然微软的 OOB 补丁专注于阻止远程利用漏洞,但 Hickey 表示他们没有解决底层 ACL 检查问题,允许创建修改后的漏洞利用。微软最近发布的补丁专注于解决 RCE 漏洞利用向量,似乎解决了普遍存在的 PoC,但是你也可以通过 LRPC 和本地 API 来实现这一点,具体取决于主机和环境,看来补丁确实没有正确解决 ACL 检查中的潜在问题,这允许在完全修补的主机上仍然利用 LPE。
另外,在更新发布后,CERT/CC 漏洞分析师 Will Dormann 警告说,该补丁似乎只解决了 PrintNightmare 的远程代码执行(通过 SMB 和 RPC 的 RCE)变体,而不是本地提权(LPE)变体,因此允许攻击者滥用后者以获取易受攻击系统的 SYSTEM 权限。
现在,对更新补丁的进一步测试表明,针对该漏洞的利用可以完全绕过补救措施,从而获得本地权限提升和远程代码执行。但是,要实现这一点,必须启用名为“Point and Print限制”的 Windows 策略(计算机配置\策略\管理模板\打印机:Point and Print限制),该策略可能用于安装恶意打印机驱动程序。请注意,针对 CVE-2021-34527 的 Microsoft 更新并不能有效防止对 Point and Print NoWarningNoElevationOnInstall 设置为 1 的系统的利用。就微软而言,它在其公告中解释说,Point and Print 与此漏洞没有直接关系,但该技术削弱了本地安全态势,从而使漏洞利用成为可能。
虽然 Microsoft 已推荐停止和禁用 Print Spooler 服务的核心选项,但另一种解决方法是启用Point and Print的安全提示,并通过配置“RestrictDriverInstallationToAdministrators”注册表值来将打印机驱动程序安装权限限制给管理员,以防止普通用户在打印服务器上安装打印机驱动程序。
关于如何安装这些带外安全更新的详细步骤,请参阅以下链接的支持文档:
Windows 10,版本21H1 (KB5004945)
Windows 10,版本20H1 (KB5004945)
Windows 10,版本2004 (KB5004945)
Windows 10 1909版本(KB5004946)
Windows 10,版本1809和Windows Server 2019 (KB5004947)
Windows 10,版本1803 (KB5004949)
Windows 10,版本1607和Windows Server 2016 (KB5004948)
Windows 10,版本1507 (KB5004950)
Windows Server 2012 (Monthly Rollup KB5004956 / Security only KB5004960)
Windows 8.1和Windows Server 2012 R2 (Monthly Rollup KB5004954 / Security only KB5004958)
Windows 7 SP1、Windows Server 2008 R2 SP1 (Monthly Rollup KB5004953 / Security only KB5004951)
Windows Server 2008 SP2 (Monthly Rollup KB5004955 / Security only KB5004959)
除了立即在所有受支持的 Windows 客户端和服务器操作系统上安装此更新外,你还可以选择配置 RestrictDriverInstallationToAdministrators 注册表设置,以防止非管理员在打印服务器上安装已签名的打印机驱动程序。有关详细信息,请参阅 KB5005010。
根据 Mimikatz 的创建者 Benjamin Delpy 的说法,当启用Point and Print策略时,可以绕过补丁来实现远程代码执行。
要绕过 PrintNightmare 补丁并实现 RCE 和 LPE,必须启用名为“Point and Print限制”的 Windows 策略,并将“为新连接安装驱动程序时”设置配置为“在提升提示时不显示警告”。
Point and Print限制政策
此策略位于计算机配置 > 管理模板 > 打印机 > Point and Print限制下。
启用后,“NoWarningNoElevationOnInstall”值将在 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint 项下设置为 1。
Benjamin Delpy 仍建议管理员和用户先暂时禁用 Print Spooler 服务以保护他们的 Windows 服务器和工作站,直到新的补丁发布。0patch 还为 PrintNightmare 发布了一个免费的微补丁https://www.bleepingcomputer.com/news/security/actively-exploited-printnightmare-zero-day-gets-unofficial-patch/,迄今为止已经能够阻止利用该漏洞的所有尝试。
但是,Benjamin Delpy警告不要安装微软 7 月 6 日的补丁,因为它不仅不能防止漏洞,而且会修改“localspl.dll”文件,因此 0Patch 的补丁不再有效。
建议 Windows 用户和管理员执行以下操作之一:
1.在微软发布工作补丁之前,不要安装 7 月 6 日的补丁,而是安装 0Patch 的微补丁。
2.使用此处的说明禁用打印后台处理程序。
微软表示,如果调查表明他们发布的补丁存在问题,他们将采取适当措施保护客户。
本文翻译自:https://www.bleepingcomputer.com/news/microsoft/microsofts-incomplete-printnightmare-patch-fails-to-fix-vulnerability/如若转载,请注明原文地址。