微软针对PrintNightmare漏洞发布了补丁,但并未对其进行全面防护。这是Windows打印后台处理程序中的一个严重漏洞,Microsoft已将其评为严重漏洞。在微软为其发布补丁之前,漏洞利用代码已在公共领域泄露。Microsoft建议系统管理员在补丁可用之前禁用PrintSpooler服务。当WindowsPrintSpooler服务错误地执行特权文件操作时,存在远程代码执行漏洞。由于WindowsPrintSpooler服务默认在Windows上运行,因此微软不得不为WindowsServer2019、WindowsServer2012R2、WindowsServer2008、Windows8.1、WindowsRT8.1以及Windows10的各种受支持版本发布补丁。微软表示:安全2021年7月6日及之后发布的更新包括对WindowsPrintSpooler服务中名为PrintNightmare的远程代码执行漏洞的保护,该漏洞记录在CVE-2021-34527和CVE-2021-1675中。我们建议用户立即安装这些更新。这个漏洞是微软近年来面临的一个比较严重的问题,因为微软甚至已经发布了Windows7的补丁,并且微软早在2020年1月14日就已经终止了对Windows7的技术支持。虽然该漏洞已经发布,但是影响PrintNightmare漏洞的研究还没有完全结束,因为一些版本的Windows还没有发布补丁。据我们所知,Windows10版本1607、WindowsServer2016和WindowsServer2012的更新尚不可用。这些Windows版本的安全更新可能会在不久的将来发布。CVE-2021-1675和CVE-2021-34527(也称为PrintNightmare)的技术分析具有普通用户帐户的攻击者可以利用这两个漏洞来控制运行WindowsPrintSpooler服务的易受攻击的服务器或客户端计算机。该服务默认在所有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.genPDM:Exploit.Win32.GenericPDM:Trojan.Win32.GenericExploit.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])添加新打印机时,客户端必须向后台打印程序服务提供多个参数:pDataFile-此打印机的数据文件小路;pConfigFile-此打印机配置文件的路径;pDriverPath-此打印机在工作时将使用的驱动程序文件的路径;该服务执行多项检查以确保pDataFile和pDriverPath不是UNC路径,但pConfigFile未进行相应检查,这意味着该服务将配置DLL复制到文件夹%SYSTEMROOT%\system32\spool\drivers\x64\3\(在x64版本的操作系统上)。现在,如果WindowsPrintSpooler服务再次尝试添加打印机,但这次将pDataFile设置为复制的DLL路径(来自上一步),打印服务将加载此DLL,因为它的路径不是UNC路径,并且检查将顺利通过。这些方法可由低权限帐户使用,并且DLL由NTAUTHORITY\SYSTEM组进程加载。CVE-2021-1675PrintNightmare本地版本使用与CVE-2021-34527相同的利用方法,但入口点函数(AddPrinterDriverEx)不同,这意味着攻击者可以将恶意DLL依次放置在本地可访问的任意目录中运行漏洞。缓解措施卡巴斯基专家预计,黑客试图获取公司内部资源的次数会增加,勒索软件感染和数据盗窃的风险也会增加。因此,强烈建议您遵循Microsoft的指南并应用最新的Windows安全更新。虽然该漏洞已经发布,但PrintNightmare漏洞的影响是Windows打印后台处理程序中的一个漏洞,AddPrinterDriverEx()、RpcAddPrinterDriver()和RpcAsyncAddPrinterDriver()用于安装本地或远程是由于缺少ACL(访问控制列表)签入造成的打印机驱动程序的WindowsAPI函数。这些功能都可以通过不同的WindowsAPI获得,如下所示:\drivers文件夹,然后利用该漏洞将其加载为打印驱动程序,用于远程代码执行或本地提权。在测试是否允许将文件安装到具有SYSTEM权限的文件夹中时,API将用户提供的参数作为权限检查的一部分。这与文件夹上的ACL无关,它是软件SDK的内部检查,可以通过API调用为函数提供额外参数来绕过该检查。要利用此漏洞,攻击者可以通过RPC或LRPC直接向本地服务发送请求。虽然微软的OOB补丁专注于防止远程利用该漏洞,但Hickey表示他们没有解决允许创建修改后的漏洞利用的底层ACL检查。微软最近的补丁专注于解决RCE漏洞利用向量,似乎解决了无处不在的PoC,但是您也可以通过LRPC和本机API来执行此操作,具体取决于主机和环境,看来该补丁没有正确解决ACL检查中的潜在问题,这允许LPE仍然在完全修补的主机上被利用。此外,在更新发布后,CERT/CC漏洞分析师WillDormann警告说,该补丁似乎只针对PrintNightmare的远程代码执行(RCEoverSMB和RPC)变体,而不是本地提权(LPE)变体,因此允许攻击者滥用后者在易受攻击的系统上获得SYSTEM权限。现在,对更新补丁的进一步测试表明,针对该漏洞的攻击可以完全绕过修复,从而导致本地权限提升和远程代码执行。但是,要使其生效,必须启用名为“指向和打印限制”的Windows策略(计算机配置\策略\管理模板\打印机:指向和打印限制),该策略可能用于安装恶意打印机驱动程序。请注意,针对CVE-2021-34527的Microsoft更新无法有效防止利用PointandPrintNoWarningNoElevationOnInstall设置为1的系统。Microsoft在其公告中解释说,PointandPrint与该漏洞没有直接关系,但该技术削弱了本地安全态势,使利用成为可能。虽然微软已经推荐了停止和禁用PrintSpooler服务的核心选项,但另一种解决方法是启用指向和打印安全提示,并通过配置“RestrictDriverInstallationToAdministrators”注册表值将打印机驱动程序安装权限限制给管理员,以防止普通用户安装打印服务器上的打印机驱动程序。有关如何安装这些带外安全更新的详细步骤,请参阅以下链接中的支持文档:Windows10,版本21H1(KB5004945)Windows10,版本20H1(KB5004945)Windows10,版本2004(KB5004945)Windows10,版本1909(KB5004946)Windows10,版本1809和WindowsServer2019(KB5004947)Windows10,版本1803(KB5004949)Windows10,版本1607和WindowsServer2016(KB5004948)Windows10,版本1507(KB5004920)Windows12(月度汇总KB5004956/仅安全性KB5004960)Windows8.1和WindowsServer2012R2(月度汇总KB5004954/仅安全性KB5004958)Windows7SP1、WindowsServer2008R2SP1(月度汇总KB5004953/仅安全性KB5004951)Windows8ServerSP2(2004951月度汇总)KB5004955/仅安全KB5004959)除了立即在所有受支持的Windows客户端和服务器操作系统上安装此更新之外,您还可以选择将RestrictDriverInstallationToAdministrators注册表设置配置为p阻止非管理员在打印服务器上安装签名的打印机驱动程序。有关详细信息,请参阅KB5005010。根据Mimikatz的创建者BenjaminDelpy的说法,当启用PointandPrint策略时,可以绕过补丁以实现远程代码执行。要绕过PrintNightmare补丁并实施RCE和LPE,必须启用名为“指向和打印限制”的Windows策略,并且必须将“为新连接安装驱动程序时”设置配置为“不在提升提示时显示警告”。指向和打印限制策略此策略位于计算机配置>管理模板>打印机>指向和打印限制下。启用后,HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsNT\Printers\PointAndPrint键下的“NoWarningNoElevationOnInstall”值将设置为1。BenjaminDelpy仍然建议管理员和用户暂时禁用PrintSpooler服务以保护他们的Windows服务器和工作站,直到发布新补丁。0patch还为PrintNightmare发布了一个免费的微补丁https://www.bleepingcomputer.com/news/security/actively-exploited-printnightmare-zero-day-gets-unofficial-patch/到目前为止,它已经能够阻止利用所有尝试.然而,BenjaminDelpy警告不要安装微软7月6日的补丁,因为它不仅不能阻止漏洞,反而修改了“localspl.dll”文件,因此0Patch的补丁不再有效。建议Windows用户和管理员执行以下操作之一:1.在Microsoft发布工作补丁之前不要安装7月6日的补丁,而是从0Patch安装微补丁。2.使用此处的说明禁用后台打印程序。微软表示,如果调查显示他们发布的补丁存在问题,它将采取适当措施保护客户。本文翻译自:https://www.bleepingcomputer.com/news/microsoft/microsofts-incomplete-printnightmare-patch-fails-to-fix-vulnerability/如有转载请注明出处。
